Дозвіл файлу .desktop


10

Потрібні роз'яснення щодо прав доступу до .desktopфайлів. Я бачу, що всі .desktopфайли, що /usr/share/applications/належать root, мають дозвіл,

-rw-r--r--

також examples.desktopу $HOMEвласника користувача є такий самий дозвіл. Усі вони працюють належним чином.

Але коли я збираюся створити спеціальний .desktopфайл із таким же дозволом, він видає таке повідомлення про помилку,

Ненадійний запуск програми Запуск
програми "myapp.desktop" не позначений як надійний. Якщо ви не знаєте джерело цього файлу, його запуск може бути небезпечним.

Але додавання дозволу на виконання дозволяє йому працювати без жодних проблем.

Питання: Чому користувацькі .desktopфайли повинні мати +xдозволи на запуск або як деякі .desktopфайли можуть працювати без дозволу на виконання? Чи можливо запустити спеціальний .desktopфайл без дозволу на виконання?


Пов’язаний , але не відповідає на питання.
Оллі

Відповіді:


12

Це з політики безпеки Ubuntu :

Потрібно виконати дозвіл

  • Програми, включаючи настільні та оболонки, не повинні запускати виконуваний код з файлів, коли вони обидва:

    • не вистачає виконуваного біта
    • розташований у домашньому довіднику користувача або тимчасовому каталозі.
  • Сюди входять файли * .desktop, * .jar та * .exe.

  • Ніщо не може забезпечити вирішення способу їх автоматичного запуску ...

Так, так, згідно з цією політикою, слід запускати файл .desktop без встановленого виконуваного біта. У відповідності з цією політикою ви б тільки , щоб перемістити файл з тих /home/і /tmp/каталогів , а потім ви можете запустити його без виконуваного набору біт. Це теоретично / відповідно до політики.

На практиці nautilus дозволить запускати файли .desktop без виконуваного біта, встановленого з каталогів XDG_DATA_DIR та з ~/.gnome2/каталогу. Ви можете перевірити XDG_DATA_DIRS за допомогою echo $XDG_DATA_DIRSкоманди. Отже, якщо ви помістите файл .desktop в XDG_DATA_DIR або в нього, ~/.gnome2/ви зможете запустити його з nautilus без встановленого виконуваного біта. Принаймні, 12.04 це працює так. Як це відповідає вищезгаданій політиці, я не знаю.


Для examples.desktopзгаданих у питанні: .desktop-файл - це інший вид .desktop-файлу. Це "Посилання", воно не хоче нічого виконувати, воно в основному працює як симпосилання. Ці види .desktop файлів працюють скрізь.


1
Дякую за вашу відповідь. Він охоплює майже все, що я хотів знати. Ще дві речі. [i] Я також використовую 12.04, але .desktopфайл зовні /homeбез виконуваного біта для мене не працював. [ii] Чи можу я додати будь-яку папку в $XDG_DATA_DIRS?, я намагався export XDG_DATA_DIRS=$XDG_DATA_DIRS:~/.local/share/applications/без успіху.
souravc

@souravc [i] Як я вже говорив, це відповідає політиці, яка повинна працювати поза /home/каталогом. Як я писав, на практиці nautilus поводиться по-різному і навіть запускає деякі .desktop з домашнього каталогу ( ~/.gnome2/), але не працює з кожного dir за межами / home, тільки з XDG_DATA_DIRS. Тому я вважаю, що поведінка nautilus не ідеально відповідає політиці. [ii] Про те, як додати каталог, ознайомтеся з цією публікацією в блозі .
сокольниця

1

Ви можете створити і розмістити .desktopфайл ~/.local/share/applications- тоді він з’явиться у тире / меню / будь-якому іншому.

Потрібно буде виглядати приблизно так:

[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

Це пояснюється тим, що файли ~/.local/share/applicationsпрацюють так само, як і файли в /usr/share/applications- обидва в більшості систем працюють нормально без дозволів на виконання, також коли вони належать користувачу, окрім root. Однак це не завжди буває так.

Щоб насправді отримати файл, який потрібно натиснути та відкрити, йому знадобляться права на виконання.


1
@ downvoter plz залиште коментар для конструктивної критики. @wilf Я думаю, що ваша відповідь точно не відповідає на моє запитання. Я не міг запустити .desktopфайл, ~/.local/share/applicationsякщо він не має дозволу на виконання.
souravc

Я знаю, що це не відповідь як така. У мене ніколи не було проблем, я просто створив текстові файли в Gedit із подібним вмістом до вищевказаного, виходу з системи та входу в систему, і це працює чудово .... Я це зробив на Ubuntu 10, 12.04, 13.04, 13.10 та будь-якому іншому версія Fedora, починаючи з Fedora 12. Деякі і на Debian. Перевірка показує, що вони в основному мають дозволи -rw-r--r--....
Вільф,

0

Здається, ні, ви не можете без зміни GNOME. Звіт про помилку на панелі запуску , який підтверджено, але не застосовується з цього приводу.

Коли ви створюєте власний .desktopфайл у розділі /usr/share/applications/з власником root, він не потребує дозволу на виконання.


Цей звіт про помилки справді старий (на Ubuntu 10.04). Я не зустрічав жодного такого звіту для Ubuntu 12.04. Ви щось знайшли?
souravc
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.