如何获得启动`sudo`的用户名


12

我的问题:我有一个Python程序,用户使用来启动它sudo。有时我必须要到用户的家,而我只能知道它的名字才能做到这一点:

import pwd

pwd.getpwnam(username)

那么:如何获得启动该程序的用户名?


1
因德尔大多数配置,sudo树叶HOME环境变量不变(这可以在编译期或运行时被覆盖)。但是您可能无法使用环境变量,这取决于用户指定不同值HOME(如果bob运行时是HOME=/home/joe sudo your_script什么?)时要发生的情况。在进行任何文件系统访问之前(除了实际需要脚本中的root许可的用户之外),您可能应该将euid设置为调用用户(由给予SUDO_UID)。
吉尔(Gilles)'所以

谢谢你的建议。好的,我将设置euidSUDO_UID
rubik 2011年

Answers:


22

当您使用sudo几个环境变量设置触发条件时,特别是我认为您正在寻找SUDO_UID。通过访问环境变量的常规通道运行的任何程序都应可以访问这些文件。

您可以通过从外壳进行如下欺骗来查看其他设置: sudo env | grep SUDO


1
+1哇!非常感谢你!那正是我想要的。我想我会用SUDO_UIDSUDO_USER。再次感谢你。
rubik 2011年

1
SUDO_USER正是我想要的。
凤凰城,
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.