我的 GUI 将以用户身份启动。程序中有一个更新机制,它调用具有 root 权限的包装脚本。为此,我使用gksudo,直到我意识到它被pkexec取代。
如果我只是用 pkexec 替换了 gksudo,它工作得很好。但我想给用户一个自己的消息。因此我必须在/usr/share/polkit-1/actions中修改或生成一个 xml-policy 文件
我的问题是,当我打电话时
pkexec <my-program>
我会得到这个提示,它在Details-->Action中指向org.freedesktop.policykit.exec。
我是否必须在此 xml 文件 ( org.freedesktop.policykit.exec ) 中放置一个操作 id条目,还是必须在/usr/share/polkit中创建我自己的名为com.myStuff.updater.policy的 .policy 文件-1/行动?
<vendor>myStuff</vendor>
<vendor_url>http://myStuff.com</vendor_url>
<icon_name>myStuff</icon_name>
<action id="com.myStuff.updater">
<description>My description</description>
<message>My message</message>
<defaults>
<allow_any>no</allow_any>
<allow_inactive>no</allow_inactive>
<allow_active>auth_self_keep</allow_active>
</defaults>
<annotate key="com.myStuff.updater.exec.path">/my/path/to/wrapper.sh</annotate>
<annotate key="com.myStuff.updater.exec.allow_gui">true</annotate>
</action>
或者我应该用pkexec在我的.desktop文件中调用我的整个应用程序吗?