使用单个消息将gksudo替换为pkexec

时间:2014-02-24 14:11:57

标签: ubuntu debian root gksudo

我的GUI将以用户身份启动。程序中有一个更新机制,它使用root权限调用包装脚本。为此,我使用 gksudo ,直到我意识到它被 pkexec 取代。

如果我只是用pkexec替换了gksudo它的效果非常好。但我想给用户留下自己的信息。因此,我必须在 / usr / share / polkit-1 / actions

中修改或生成xml-policy文件

我的问题是,当我打电话

pkexec <my-program>

我会收到此提示,其中详细信息 - &gt;操作指向 org.freedesktop.policykit.exec

enter image description here

我是否必须将操作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 文件中调用我的整个应用程序?

1 个答案:

答案 0 :(得分:1)

我强烈建议您创建自己的.policy文件并单独留下org.freedesktop.policykit.exec,原因如下:

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

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

  • 您可以像使用其他任何命令一样使用 name 调用脚本,无需在pkexecsudo之前添加任何内容,在任何地方工作。

您可以将gparted的政策文件用作模板。