允许.desktop文件

需要澄清一下.desktop文件的权限。 我可以看到root用户拥有的/usr/share/applications/所有.desktop文件都有权限,

 -rw-r--r-- 

还有用户拥有的$HOME examples.desktop具有相同的权限。 所有这些运行正常。

但是,当我要创建具有相同权限的自定义.desktop文件时,它会抛出以下错误消息,

不受信任的应用程序启动器
应用程序启动器“myapp.desktop”尚未标记为受信任。 如果您不知道此文件的来源,启动它可能是不安全的。

但添加执行权限允许它运行没有任何问题。

问:为什么自定义.desktop文件需要具有+x权限才能运行,或者某些.desktop文件如何在没有执行权限的情况下运行? 是否可以在没有执行权限的情况下运行自定义.desktop文件?

这来自Ubuntu的安全策略 :

需要执行权限位

  • 应用程序(包括桌面和shell)在以下情况下都不得从文件中运行可执行代码:

    • 缺少可执行位
    • 位于用户的主目录或临时目录中。
  • 这包括* .desktop,* .jar和* .exe文件。

  • 没有什么可以提供自动运行它们的解决方法……

所以是的,根据这个策略,应该可以在没有设置可执行位的情况下运行.desktop文件。 根据此策略,您只需要从/home//tmp/目录中移出该文件,然后可以在没有设置可执行位的情况下启动它。 这在理论上/根据政策。

在实践中,nautilus将允许您启动.desktop文件,而不从XDG_DATA_DIR目录和~/.gnome2/目录中设置可执行位。 您可以使用echo $XDG_DATA_DIRS命令检查echo $XDG_DATA_DIRS 。 因此,如果您将.desktop文件放在XDG_DATA_DIR或~/.gnome2/您将能够从nautilus启动它而不设置可执行位。 至少在12.04它就是这样的。 这与我不知道的上述政策如何一致。


对于问题中提到的examples.desktop :.desktop文件是一种不同的.desktop文件。 它是一个“链接”,它不想执行任何东西,它基本上作为符号链接。 这些.desktop文件无处不在。

您可以在~/.local/share/applications创建和放置.desktop文件 – 然后它将出现在破折号/菜单/中。

它需要看起来像这样:

 [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。 有一个启动板错误报告 ,在这个确切的问题上已经确认,但没有采取行动。

/usr/share/applications/使用所有者root创建自定义.desktop文件时,它不需要执行权限。