pkexec不会在Lubuntu / LXDE中启动polkit GUI
如此处所述,我使用最少的桌面执行了全新安装的Lubuntu 12.04。
为了澄清,我从Lubuntu替代安装光盘进行了命令行安装,然后我做了一个apt-get install --no-install-recommends lubuntu-desktop
。
一切都运行正常,除了Synaptic不会从面板中的菜单项运行。 我没有被提示输入密码,单击菜单项后没有出现任何类型的窗口。 我安装了lxshortcut来查看正在运行的快捷方式,命令是synaptic-pkexec
。 如果我在“运行”菜单中输入此命令,我会得到相同的行为(或缺乏行为)。
通过在“运行”菜单中键入gksudo synaptic
,我可以让Synaptic打开。 此外,如果我从终端运行“synaptic-pkexec”,则会在终端内提示我输入密码,然后Synaptic正常打开。
有人可以建议正确的方法让Synaptic工作吗? 我可以将菜单条目更改为“gksudo synaptic”,但我猜它是设置为synaptic-pkexec
的原因。 我有一个模糊的理解,这个pkexec
业务与PolicyKit有关,但我真的不知道什么是PolicyKit或如何判断是否有什么东西被破坏了。
事实certificate,我需要安装policykit-1-gnome
软件包。 安装此软件包并重新启动后,Synaptic正常工作。
我在VM中安装了完整的Lubuntu桌面,以便与我的最小安装进行比较,这就是我发现缺少的内容。 根据包装说明:
PolicyKit-gnome提供D-Bus会话总线服务,用于显示用于获取权限的身份validation对话框。
显然,如果没有所描述的function,我永远不会得到一个GUI身份validation提示来打开Synaptic。
synaptic
是lubuntu-desktop
元数据包的依赖项,因此它默认安装在我的最小安装中。 policykit-1-gnome
应该是lubuntu-desktop
的依赖项,因为如果没有它,Synaptic将无法运行吗? 你认为我应该报告错误吗?
我正在使用替代解决方案来接受答案。 我更喜欢使用lxpolkit
而不是policykit-1-gnome
因为它是为LXDE设计的。
pkexec
未启动身份validation屏幕的这个问题非常常见。 首先要检查的是你是否为LXDE安装和配置了图形策略工具包接口( lxpolkit
或policykit-1-gnome
),因为这些软件包被标记为在lubuntu的主要升级期间被删除。 显然安装发行版时都不包含这些内容。
解
-
安装
lxpolkit
。
sudo apt-get install lxpolkit
-
注销并登录。
-
将
lxpolkit
设置为默认策略代理
在菜单中,转到Preferences > Default applications for LXSession
(或在终端中运行lxsession-default-apps
)。 在第一部分“运行应用程序”( 更新:默认应用程序管理器14.10不同。使用Core applications
选项卡。 ),转到Polkit agent
选项并确保选中lxpolkit。
而不是使用包policykit-1-gnome
, lxsession
现在将使用lxpolkit
用于LXDE。
为什么使用pkexec
启动应用程序不要从LXDE菜单运行
它归结为X11系统中的应用程序与pkexec一起启动的方式 。
lxpanel菜单中显示的应用程序在/usr/share/applications
(全局菜单项)或~/.local/share/applications
(用户特定)中存储和配置。 请参阅LXDE Wiki – 主菜单
在这些目录中,您将找到菜单中出现的每个应用程序的.desktop文件。 以下是/usr/share/applications/synaptic.desktop
的示例:
[Desktop Entry] Name=Synaptic Package Manager GenericName=Package Manager Comment=Install, remove and upgrade software packages Exec=synaptic-pkexec Icon=synaptic Terminal=false Type=Application Categories=PackageManager;GTK;System;Settings; NotShowIn=KDE; X-Ubuntu-Gettext-Domain=synaptic
注意线Exec=synaptic-pkexec
。
如果没有策略工具包界面,通常会在命令行中要求用户输入密码。 由于这是一个菜单项,因此在后台启动,并且没有命令行输入密码。 因此,您需要确保使用lxpolkit
。 或者如果您更喜欢gnome polkit,请安装policykit-1-gnome
软件包,它会在每次使用pkexec
时启动登录菜单。 我已经删除了包policykit-1-gnome
并且使用lxpolkit
适用于所有应用程序。
替代方案
使用gksudo而不是pkexec
您可以右键单击菜单中的synaptic等应用程序,单击“属性”,然后将命令字段从synaptic-pkexec
为gksudo synaptic
。 或者通过命令行,使用sudo cp /usr/share/applications/synaptic.desktop ${HOME}/.local/share/applications/synaptic.desktop
将原始文件复制到用户的应用程序目录中
然后编辑行Exec=synaptic-pkexec
并将其替换为Exec=gksudo synaptic
gksudo的“主要目的是运行需要root的图形命令,而无需运行X终端模拟器并直接使用su。” – GKSU(1)
并且有充分的理由! 请参阅以图形方式运行Sudo 。
这当然要求编辑依赖于pkexec的每个应用程序以使用gksudo启动,如果您使用lxpanel,则需要更多工作。 可以在比较权限授权function中找到gksudo和PolicyKit的安全性和可用性function的良好比较。
为个人申请编写自己的pkexec
政策
这比我想做的更多,但在某些情况下可能会有用。 如果没有对编写PolicyKit Actions的强烈理解,我不建议这样做。
您可以通过polkit使用的操作取决于您安装的软件包。 有些用于多个桌面环境(org.freedesktop。 ),有些是特定于DE的(org.gnome。 ),有些是特定于单个程序(org.archlinux.pkexec.gparted.policy)。 命令pkaction列出了/ usr / share / polkit-1 / actions中定义的所有操作,以便快速参考。
这是一个我没有测试的例子,来自City-busz -Using’pkexec’命令而不是’gksu’ :
例如,如果你想以root身份运行gparted
$ pkexec gparted
命令,然后创建一个新文件
/usr/share/polkit-1/actions/org.freedesktop.policykit.pkexec.policy
具有以下内容:
Run GParted Authentication is required to run GParted no no auth_admin_keep /usr/sbin/gparted TRUE 可以将更多操作添加到同一文件中。
帽子提示在archlinux.org上重新编译,以编译相关LXDE和PolicyKit文档的相关摘录,最终使我使用LXPolkit作为首选解决方案。
使用建议右键单击系统工具下菜单中的突触条目,选择属性,然后选择桌面条目选项卡,并将synaptic-pkexec更改为gksudo synaptic。
那没用,所以我通过终端运行synaptic(gksudo synaptic)进行调查。
对我来说,尝试使用gksudo会产生一条消息,告诉我如何安装gksu。 当我尝试安装时,它会显示一条消息,说gksu已经安装(但仍然无法正常工作)。 我卸载了gksu并重新安装,现在synaptic正常工作。