kubuntu - 为什么pkexec能用root用户启动基于Qt的应用程序?

分享于 

2分钟阅读

ubuntu

  繁體

问题:

我以前被告知,使用sudo启动GUI应用程序不太好,应该使用pkexec

我尝试在Kubuntu 20.04上启动Kubuntu驱动程序管理器,使用终端


pkexec kubuntu-driver-manager



但是此命令不能工作,输出以下崩溃信息:


qt.qpa.xcb: could not connect to display


qt.qpa.plugin: Could not load the Qt platform plugin "xcb" in "" even though it was found.


This application failed to start because no Qt platform plugin could be initialized. Reinstalling the application may fix this problem.



Available platform plugins are: wayland-org.kde.kwin.qpa, dxcb, eglfs, linuxfb, minimal, minimalegl, offscreen, vnc, wayland-egl, wayland, wayland-xcomposite-egl, wayland-xcomposite-glx, xcb.



Aborted (core dumped)




答案1:

要用pkexec启动程序,这个程序的.policy文件必须出现在/usr/share/polkit-1/actions目录中,这与使用图形Toolkit (Gtk或Qt )无关。


答案2:

我们需要指定缺少的环境变量,如下所示:


pkexec env DISPLAY=$DISPLAY XAUTHORITY=$XAUTHORITY kubuntu-driver-manager



它只需要一个/usr/share/polkit-1/actions/org.freedesktop.policykit.policy 文件。



BASE  USE  用户  运行  roo  ROOT  
相关文章