标签: pkexec

如何使用 pkexec 以 root 身份运行 GUI 应用程序?

我正在使用Gnome3 Flashback桌面环境附带的Trisquel GNU/Linux-Libre 。

我知道我可以通过sudo&以 root 身份运行 GUI 应用程序,gksudo但我想知道如何在 的帮助下以 root 身份运行 GUI 应用程序pkexec

当我尝试运行gedit(或像任何其他应用程序:nautilus)由pkexec gedit然后,它会提示输入密码进行验证: -

截屏

输入密码后,它退出并出现错误:-

$ pkexec gedit
error: XDG_RUNTIME_DIR not set in the environment.

(gedit:6135): Gtk-WARNING **: cannot open display:
Run Code Online (Sandbox Code Playgroud)

所以,似乎显示环境出了问题。

我也试过,DISPLAY=:0 pkexec gedit但不起作用。


以下信息可从man pkexec:-

PROGRAM 将运行它的环境将设置为最小的已知和安全环境,以避免通过 LD_LIBRARY_PATH 或类似机制注入代码。此外,PKEXEC_UID 环境变量设置为调用 pkexec 的进程的用户 ID。因此,pkexec 将不允许您以其他用户身份运行 X11 应用程序,因为 $DISPLAY 和 $XAUTHORITY 环境变量未设置。如果操作上的 org.freedesktop.policykit.exec.allow_gui 注释设置为非空值,则将保留这两个变量;但是,这是不鼓励的,并且应该仅用于遗留程序。

现在我不知道该怎么做才能做到这一点。

因此,请帮助我了解如何通过pkexec. …

gnome environment-variables pkexec

19
推荐指数
2
解决办法
2万
查看次数

更换 GKSU

在 CentOS 5 的旧时代,我有一个以另一个用户身份运行的应用程序。我创建了一个 .desktop 文件,它运行如下命令:

gksu -u anotheruser someapplication
Run Code Online (Sandbox Code Playgroud)

当用户单击该图标时,弹出窗口要求输入“另一个用户”的密码,当密码正确时,“某个应用程序”启动。

现在,在 CentOS 7 的现代,我找不到这种行为的替代品。我尝试过beesu:

beesu -l -P someapplication anotheruser
Run Code Online (Sandbox Code Playgroud)

但它要求我输入 root 密码而不是“另一个用户”密码。

我也尝试过 pkexec:

pkexec --user anotheruser someapplication
Run Code Online (Sandbox Code Playgroud)

结果相同。

这两种方法在寻找正确的显示变量时也存在问题:

Failed to parse arguments: Cannot open display:
Run Code Online (Sandbox Code Playgroud)

任何帮助将不胜感激。

谢谢。

centos polkit gksu pkexec

6
推荐指数
1
解决办法
3519
查看次数

systemd 中的 sudo 等效项

如何强制“machinectl shell”或systemd-run在终端而不是对话框窗口中询问密码?

我可以使用以下命令以 root 身份运行命令:

machinectl shell --uid=root --setenv='DISPLAY=:1.0' --setenv=SHELL=/bin/bash .host /bin/bash -lc 'startxfce4'
Run Code Online (Sandbox Code Playgroud)

但它使用对话窗口要求输入密码 在此处输入图片说明

我想拥有与 sudo 相同的行为(sudo 使用终端询问密码,以便我可以轻松编写脚本)

我发现正在使用 ssh 这样的方式:

ssh -t MyActualNormalUser@localhost
Run Code Online (Sandbox Code Playgroud)

然后运行与上面相同的命令:

machinectl shell --uid=root --setenv='DISPLAY=:1.0' --setenv=SHELL=/bin/bash .host /bin/bash -lc 'thunar'
Run Code Online (Sandbox Code Playgroud)

现在 machinectl 使用终端而不是 GUI 对话框窗口询问密码! 在此处输入图片说明

如何在不使用 ssh 的情况下获得相同的结果?是否可以强制 machinectl/pkexec 在终端中询问密码?

为什么不使用sudo?sudo 不要为我运行的命令创建一个新会话,machinectl 运行一个完全分离的会话,这使脚本编写工作更轻松。当我读到 machinectl/pkexec 时,如果我没记错的话,su/sudo 将被替换...

linux sudo shell-script systemd pkexec

5
推荐指数
1
解决办法
952
查看次数

pkexec - 在编写 pkexec 策略时如何为 auth_admin_keep 设置自定义超时

我刚刚在 freedesktop.org 上阅读 David Z 为 pkexec 编写的参考手册:

https://www.freedesktop.org/software/polkit/docs/latest/polkit.8.html

https://www.freedesktop.org/software/polkit/docs/latest/pkexec.1.html

手册说,使用 auth_admin_keep 选项只会将您的密码保留 5 到 15 分钟,如果我们想设置自定义超时,我们可以编写自定义规则。

有人知道我如何编写超时的自定义规则吗?我尝试按照手册进行操作,但我不是编码员,我无法理解 Syntax,也没有提到与超时相关的 Syntax。

polkit pkexec

4
推荐指数
1
解决办法
2061
查看次数

/usr下所有文件和目录的权限

天哪..我刚刚犯了一个可怕的错误:chown -R root:root /usr。Mea [maxima] culpa..我已经修复sudopkexec,但我想确定,将来不会有“睡眠”问题等着我。

有人可以使用简单的命令找出哪些文件/目录具有“特殊”权限吗?我知道/usr/bin/sudo/usr/bin/pkexec而且/usr/lib/policykit-1只知道。谢谢..

我正在使用 Debian 11..

permissions sudo chown pkexec

3
推荐指数
1
解决办法
985
查看次数