Izin file .desktop

10

Perlu beberapa klarifikasi tentang izin .desktopfile. Saya dapat melihat semua .desktopfile yang /usr/share/applications/dimiliki oleh root memiliki izin,

-rw-r--r--

juga examples.desktopdi $HOMEmilik pengguna memiliki izin yang sama. Semua itu berjalan dengan baik.

Tetapi ketika saya akan membuat .desktopfile khusus yang memiliki izin yang sama, ia melempar pesan kesalahan berikut,

Peluncur
aplikasi tidak tepercaya Peluncur aplikasi "myapp.desktop" belum ditandai sebagai tepercaya. Jika Anda tidak tahu sumber file ini, meluncurkannya mungkin tidak aman.

Tetapi menambahkan izin eksekusi memungkinkan untuk berjalan tanpa masalah.

T: Mengapa .desktopfile khusus harus memiliki +xizin untuk menjalankan atau bagaimana beberapa .desktopfile dapat berjalan tanpa izin eksekusi? Apakah mungkin menjalankan .desktopfile khusus tanpa izin eksekusi?

souravc
sumber
Terkait , tetapi tidak menjawab pertanyaan.
Olli

Jawaban:

12

Ini dari kebijakan keamanan Ubuntu :

Bit Jalankan-Izin Diperlukan

  • Aplikasi, termasuk desktop dan shell, tidak boleh menjalankan kode yang dapat dieksekusi dari file ketika keduanya:

    • kurang bit yang dapat dieksekusi
    • terletak di direktori home atau direktori sementara pengguna.
  • Ini termasuk file * .desktop, * .jar, dan * .exe.

  • Tidak ada yang dapat memberikan solusi untuk menjalankannya secara otomatis ...

Jadi ya, sesuai dengan kebijakan ini, harus dimungkinkan untuk menjalankan file .desktop tanpa set bit yang dapat dieksekusi. Menurut kebijakan ini Anda hanya harus memindahkan file yang keluar dari /home/dan /tmp/direktori dan kemudian Anda dapat memulai tanpa bit set executable. Ini secara teori / sesuai dengan kebijakan.

Dalam praktiknya nautilus akan memungkinkan Anda untuk meluncurkan file .desktop tanpa bit yang dapat dieksekusi yang ditetapkan dari direktori XDG_DATA_DIR dan dari ~/.gnome2/direktori. Anda dapat memeriksa XDG_DATA_DIRS dengan echo $XDG_DATA_DIRSperintah. Jadi, jika Anda meletakkan file .desktop Anda di XDG_DATA_DIR atau ~/.gnome2/Anda akan dapat meluncurkannya dari nautilus tanpa set bit yang dapat dieksekusi. Setidaknya pada 12,04 berfungsi seperti itu. Bagaimana ini sejalan dengan kebijakan tersebut di atas yang saya tidak tahu.


Untuk yang examples.desktopdisebutkan dalam pertanyaan: File .desktop itu adalah jenis yang berbeda dari file .desktop. Ini adalah "Tautan", tidak ingin menjalankan apa pun, pada dasarnya berfungsi sebagai symlink. Jenis file .desktop ini berfungsi di mana-mana.

elang
sumber
1
Terima kasih atas jawaban anda. Ini mencakup hampir semua yang ingin saya ketahui. Hanya dua hal lagi. [i] Saya juga menggunakan 12,04, tetapi .desktopfile di luar /hometanpa bit yang dapat dieksekusi tidak berfungsi untuk saya. [ii] Dapatkah saya menambahkan folder apa pun di $XDG_DATA_DIRS?, Saya mencoba export XDG_DATA_DIRS=$XDG_DATA_DIRS:~/.local/share/applications/tanpa hasil.
souravc
@souravc [i] Seperti yang saya katakan, itu sesuai dengan kebijakan yang seharusnya berfungsi di luar /home/direktori. Seperti yang saya tulis, dalam praktiknya nautilus berperilaku berbeda dan bahkan menjalankan beberapa .desktop dari direktori home ( ~/.gnome2/) tetapi tidak dijalankan dari setiap dir di luar / home, hanya dari XDG_DATA_DIRS. Jadi saya pikir perilaku nautilus tidak sepenuhnya sejalan dengan kebijakan tersebut. [ii] Tentang cara menambahkan direktori, periksa posting blog ini .
Falcon
1

Anda dapat membuat dan menempatkan .desktopfile di ~/.local/share/applications- maka akan muncul di dash / menu / apa pun.

Ini akan perlu terlihat seperti ini:

[Desktop Entry]
Name=Files
Comment=Launch Nemo File manager
Keywords=folder;manager;explore;disk;filesystem;
Exec=nemo %U
Icon=system-file-manager
Terminal=false
Type=Application
StartupNotify=true
OnlyShowIn=GNOME;Unity;
Categories=GNOME;GTK;Utility;Core;
NoDisplay=false

Ini karena file dalam ~/.local/share/applicationspekerjaan sama dengan file dalam /usr/share/applications- keduanya di sebagian besar sistem berfungsi dengan baik tanpa izin yang dapat dieksekusi, juga ketika dimiliki oleh pengguna selain root. Namun ini tidak selalu terjadi.

Untuk benar-benar mendapatkan file yang akan diklik dan kemudian buka, itu akan memerlukan izin yang dapat dieksekusi.

Wilf
sumber
1
@ downvoter tlg beri komentar untuk kritik konstruktif. @wilf Saya kira jawaban Anda tidak sepenuhnya menjawab pertanyaan saya. Saya tidak dapat menjalankan .desktopfile dari ~/.local/share/applicationskecuali memiliki izin eksekusi.
souravc
Saya tahu ini bukan jawaban. Saya tidak pernah mengalami masalah, saya baru saja membuat file teks di Gedit dengan konten yang mirip dengan yang di atas, logout dan login, dan berfungsi dengan baik .... Saya telah melakukan ini dengan baik di Ubuntu 10, 12.04, 13.04, 13.10, dan apa saja versi Fedora sejak sekitar Fedora 12. Beberapa di Debian juga. Memeriksa menunjukkan bahwa mereka sebagian besar memiliki izin -rw-r--r--....
Wilf
0

Sepertinya tidak, Anda tidak bisa tanpa memodifikasi GNOME. Ada laporan bug launchpad , yang Dikonfirmasi, tetapi tidak ditindaklanjuti, tentang masalah ini.

Saat Anda membuat .desktopfile khusus di bawah /usr/share/applications/dengan root pemilik, itu tidak memerlukan izin eksekusi.

Olli
sumber
Laporan bug ini benar-benar tua (di Ubuntu 10,04). Saya tidak menemukan laporan seperti itu untuk Ubuntu 12.04. Apakah kamu menemukan sesuatu?
souravc