Разрешение файла .desktop

10

Нужны некоторые разъяснения о разрешениях .desktopфайлов. Я вижу, что все .desktopфайлы, /usr/share/applications/принадлежащие root, имеют разрешение,

-rw-r--r--

Также examples.desktopу $HOMEвладельца есть такое же разрешение. Все они работают правильно.

Но когда я собираюсь создать собственный .desktopфайл с таким же разрешением, он выдает следующее сообщение об ошибке:


Ненадежное средство запуска приложений Средство запуска приложений "myapp.desktop" не помечено как надежное. Если вы не знаете источник этого файла, запуск его может быть небезопасным.

Но добавление разрешения на выполнение позволяет ему работать без каких-либо проблем.

Вопрос: Почему пользовательские .desktopфайлы должны иметь +xразрешения на запуск или как некоторые .desktopфайлы могут запускаться без разрешения на выполнение? Можно ли запустить пользовательский .desktopфайл без разрешения на выполнение?

souravc
источник
Связано , но не отвечает на вопрос.
Олли

Ответы:

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/), но не запускается из каждого каталога вне / home, только из XDG_DATA_DIRS. Поэтому я думаю, что поведение Наутилуса не совсем соответствует политике. [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 плз оставить комментарий для конструктивной критики. @ 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