我的GUI将以用户身份启动。程序中有一个更新机制,它使用root权限调用包装脚本。为此,我使用 gksudo ,直到我意识到它被 pkexec 取代。
如果我只是用pkexec替换了gksudo它的效果非常好。但我想给用户留下自己的信息。因此,我必须在 / usr / share / polkit-1 / actions
中修改或生成xml-policy文件我的问题是,当我打电话
pkexec <my-program>
我会收到此提示,其中详细信息 - &gt;操作指向 org.freedesktop.policykit.exec 。
我是否必须将操作ID -entry放入此xml文件( org.freedesktop.policykit.exec ),或者我必须创建自己的。将 com.myStuff.updater.policy 中的策略文件导入 / usr / share / polkit-1 / actions ?
<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 文件中调用我的整个应用程序?
答案 0 :(得分:1)
我强烈建议您创建自己的.policy
文件并单独留下org.freedesktop.policykit.exec
,原因如下:
pkexec
在某些情况下,在终端,.desktop
文件等中无法按预期工作。这实际上是关于双叉的Gnome错误。
使用您自己的.policy
文件,您可以随意编辑它,甚至可以为脚本配置无密码的root权限!这是一个非常有趣的功能!
您可以像使用其他任何命令一样使用 name 调用脚本,无需在pkexec
或sudo
之前添加任何内容,在任何地方工作。
您可以将gparted
的政策文件用作模板。