3

我的 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文件中调用我的整个应用程序吗?

4

1 回答 1

1

我强烈建议您创建自己的.policy文件并不org.freedesktop.policykit.exec要理会,原因如下:

  • pkexec在某些情况下,在终端、文件等中无法按预期工作.desktop。这实际上是关于双叉的 Gnome 错误。

  • 使用您自己的.policy文件,您可以随意编辑它,甚至将其配置为您的脚本的无密码 root 权限!这是一个非常有趣的功能!

  • 您可以简单地使用它的名称调用您的脚本,就像任何其他命令一样,不需要在它前面加上pkexecorsudo或任何东西,这样它就可以在任何地方工作。

您可以使用gparted的策略文件作为模板。

于 2014-06-17T07:18:57.940 回答