需要澄清一些有关文件权限的问题.desktop
。我可以看到root 拥有的所有.desktop
文件都有权限,/usr/share/applications/
-rw-r--r--
examples.desktop
用户所拥有的也$HOME
具有相同的权限。所有这些都运行正常。
但是,当我要创建.desktop
具有相同权限的自定义文件时,它会引发以下错误消息,
不受信任的应用程序启动器
应用程序启动器“myapp.desktop”尚未被标记为受信任。如果您不知道此文件的来源,则启动它可能不安全。
但添加执行权限可以让它运行而不出现任何问题。
问:为什么自定义
.desktop
文件需要有+x
权限才能运行,或者为什么有些.desktop
文件可以在没有执行权限的情况下运行?是否可以.desktop
在没有执行权限的情况下运行自定义文件?
答案1
这是来自Ubuntu 的安全政策:
需要执行权限位
应用程序(包括桌面和 shell)在满足以下条件时不得运行文件中的可执行代码:
- 缺少可执行位
- 位于用户的主目录或临时目录中。
这包括*.desktop、*.jar 和*.exe 文件。
没有什么可以提供解决方法来自动运行它们......
所以是的,根据此政策,应该可以运行 .desktop 文件而无需设置可执行位。根据此政策,您只需将该文件从和/home/
目录中移出/tmp/
,然后就可以在不设置可执行位的情况下启动它。这是理论上/根据政策。
实际上,nautilus 允许您从 XDG_DATA_DIR 目录和目录中启动 .desktop 文件,而无需设置可执行位~/.gnome2/
。您可以使用命令检查 XDG_DATA_DIRS echo $XDG_DATA_DIRS
。因此,如果您将 .desktop 文件放在 XDG_DATA_DIR 或 中,~/.gnome2/
您将能够从 nautilus 启动它,而无需设置可执行位。至少在 12.04 上它是这样的。我不知道这与上述政策如何一致。
对于examples.desktop
问题中提到的:那个 .desktop 文件是另一种 .desktop 文件。它是一个“链接”,它不想执行任何操作,它基本上充当符号链接。这些类型的 .desktop 文件在任何地方都可以使用。
答案2
您可以创建并放置文件.desktop
-~/.local/share/applications
然后它将出现在 dash/menu/whatever 中。
它需要看起来像这样:
[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 以外的用户拥有也是如此。然而,情况似乎并不总是如此。
要真正单击并打开文件,它需要可执行权限。
答案3
似乎不行,如果不修改 GNOME 就不行。有一个启动板错误报告,针对这一确切问题,已确认,但尚未采取行动。
.desktop
当您以所有者 root 身份在下创建自定义文件时/usr/share/applications/
,它不需要执行权限。