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

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

-rw-r--r--

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

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

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

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

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

3 ответа

Решение

Это из политики безопасности 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 работают везде.

Вы можете создать и разместить .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. Однако это не всегда так.

Чтобы на самом деле получить файл, по которому нужно щелкнуть, а затем открыть, ему понадобятся права на выполнение.

Кажется, нет, вы не можете без изменения GNOME. По этому конкретному вопросу есть отчет об ошибке панели запуска, который подтвержден, но не обработан.

Когда вы создаете пользовательский .desktop файл под /usr/share/applications/ с владельцем root не требует разрешения на выполнение.

Другие вопросы по тегам