我遇到了不同的问题,polkit 在非活动会话中根本无法工作。因为我认为它们存在相同的问题,所以我将首先发布一个例子。
我有一个新的 ubuntu-server 14.04,其中安装了 lubuntu-desktop 和 xrdp 包。当我使用 xrdp 登录时,我应该有正常的限制,因为 polkit 是定义的。起初我以为我没有足够的权限执行某些操作。所以我根据自己的需要更改了一些配置。这里有一个例子:双击我想要安装的 .deb 包,软件中心打开,我在那里单击安装:
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 登录后立即出现以下错误:
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