通过 pkexec 执行时缺少环境变量

ans*_*ker 2 python linux

如果我print os.environ在没有 pkexec 的情况下执行,我会得到很多有用的系统环境变量,但是,一旦我使用 pkexec 执行,其中大部分都会消失。我如何使用 pkexec 找回它们?我知道有一种使用 sudo 的解决方法,但尚未找到 pkexec 的解决方法

Mat*_*ole 5

简而言之,你不能。从pkexec手册页

PROGRAM 将运行的环境将设置为最小的已知安全环境,以避免通过 LD_LIBRARY_PATH 或类似机制注入代码。此外,PKEXEC_UID 环境变量设置为调用 pkexec 的进程的用户 ID。

您可以使用注释来pkexec保留一些环境变量(即允许 X11 程序通过保留$DISPLAY和来工作$XAUTHORITYorg.freedesktop.policykit.exec.allow_gui。然而,保留所有环境变量似乎是一个被故意拒绝的决定。

  • 顺便说一句,如果有人感兴趣的话,我使用需要 UI 访问的“pkexec”应用程序,如下所示:“pkexec env DISPLAY=$DISPLAY WAYLAND_DISPLAY=$WAYLAND_DISPLAY XDG_SESSION_TYPE=$XDG_SESSION_TYPE XDG_RUNTIME_DIR=$XDG_RUNTIME_DIR myapp” (2认同)