polkit 非活动会话操作/规则永远不会生效

polkit 非活动会话操作/规则永远不会生效

我遇到了不同的问题,polkit 在非活动会话中根本无法工作。因为我认为它们存在相同的问题,所以我将首先发布一个例子。

我有一个新的 ubuntu-server 14.04,其中安装了 lubuntu-desktop 和 xrdp 包。当我使用 xrdp 登录时,我应该有正常的限制,因为 polkit 是定义的。起初我以为我没有足够的权限执行某些操作。所以我根据自己的需要更改了一些配置。这里有一个例子:双击我想要安装的 .deb 包,软件中心打开,我在那里单击安装:

polkit 错误消息

org.freedesktop.PolicyKit.Error.Failed:('system-bus-name',{'name':':1.121'}):org.debian.apt.install-file

(类似于:您无权执行此操作。您没有正确的权限。)

在此之前,我已将 polkit 配置为允许我的非活动会话执行此操作(但据我所知,auth_admin 就足够了)。摘录如下pkaction --verbose

org.debian.apt.install-file:
  description:       Install package file
  message:           To install this package, you need to authenticate.
  vendor:            Apt Daemon
  vendor_url:        http://launchpad.net/aptdaemon/
  icon:              package-x-generic
  implicit any:      auth_admin
  implicit inactive: auth_admin_keep
  implicit active:   auth_admin_keep

无论如何,我认为 polkit(代理?)根本没有运行,因为我使用 xrdp 登录后立即出现以下错误:

通过 xrdp 记录的 polkit 错误消息

GDBus.Error:org.freedesktop.PolicyKit1.Error.Failed:无法确定主题的用户

我猜他没有找到我这个用户?我该如何检查 policykit 代理是否在我的 xrdp 会话中运行?我可以手动启动它吗?这可能是一个错误吗?

编辑:是的,该用户属于管理员组,该用户是在安装 ubuntu 时创建的。它还具有 sudo 权限。

答案1

  • 它似乎没有从用户进程获取用户名,请检查您的环境变量。xrdp 可能与常规会话不同:

    env | grep -i "user\|logname"
    
  • 要检查 polkit 代理是否正在运行,请使用终端并运行以下命令:

    ~$ ps aux | grep polkit
    root       855  0.0  0.9 281224  7192 ?        Sl   06:34   0:00 /usr/lib/policykit-1/polkitd --no-debug
    user      2060  0.0  1.5 331764 11604 ?        Sl   06:37   0:00 /usr/lib/policykit-1-gnome/polkit-gnome-authentication-agent-1
    user      2419  0.0  0.1  15944   952 pts/12   S+   06:38   0:00 grep --color=auto polkit
    

    您应该发现两个polkitd由 root 和polkit-*-authentication-agent-1同一会话用户运行的进程。

  • 是的,你可以手动启动它们,我有 Ubuntu 桌面,所以可能有所不同。获取它的位置:

    ~$ ls /etc/xdg/autostart/polkit-*
    /etc/xdg/autostart/polkit-gnome-authentication-agent-1.desktop
    
    ~$ grep -i exec= /etc/xdg/autostart/polkit-gnome-authentication-agent-1.desktop
    Exec=/usr/lib/policykit-1-gnome/polkit-gnome-authentication-agent-1
    

    运行:

    /usr/lib/policykit-1-gnome/polkit-gnome-authentication-agent-1
    

相关内容