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。

synapticlubuntu-desktop元数据包的依赖项,因此它默认安装在我的最小安装中。 policykit-1-gnome应该是lubuntu-desktop的依赖项,因为如果没有它,Synaptic将无法运行吗? 你认为我应该报告错误吗?

我正在使用替代解决方案来接受答案。 我更喜欢使用lxpolkit而不是policykit-1-gnome因为它是为LXDE设计的。

pkexec未启动身份validation屏幕的这个问题非常常见。 首先要检查的是你是否为LXDE安装和配置了图形策略工具包接口( lxpolkitpolicykit-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-gnomelxsession现在将使用lxpolkit用于LXDE。

LXPolkit截图

为什么使用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-pkexecgksudo 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正常工作。