【发布时间】:2017-08-04 04:37:27
【问题描述】:
我使用pkexec 以root 身份执行python 脚本,我使用working_dir = os.getenv('HOME') 获取用户名,但它总是返回root 而不是当前用户的test1。
如何获取运行 pkexec 的用户?
如果该信息有任何用途,脚本位于 /usr/bin 中。
【问题讨论】:
-
root是用户。 “以 root 身份执行”意味着“以用户root身份运行”。这并不意味着“以用户 test1 的身份运行,但具有额外的特权”。如果进程通过 suid 以 root 身份运行,请使用getuid。如果它通过 sudo 运行,请使用SUDO_USER。如果它通过 su 运行,请尝试父进程。如果它通过 cron 运行,则没有其他用户参与。 -
我已经按照建议的答案使用了它,但我不确定它是否适用于 python 2.7。它通过 pkexec 运行
-
我尝试使用
pwd.getpwuid(os.getuid()).pw_name获取它,但它仍然返回 root。我不确定如何获取 pkexec_uid -
PKEXEC_UID是一个环境变量。使用os.environ["PKEXEC_UID"]
标签: python linux python-2.7