如何在python中获取sudo用户名?

时间:2017-05-12 05:10:42

标签: python unix

我正在尝试运行下面的脚本,并希望访问运行此脚本的sudo用户。

:$sudo -u usergroup script.py

所以我在这里期待'用户组'作为输出。 我试过的是,

  • getpass:这为您提供了实际用户,而不是sudo用户

:$ sudo -u usergroup ipython

In [1]: import getpass

In [2]: getpass.getuser()
Out[2]: 'akshay'
  • os.getenv

In [4]: os.getenv("SUDO_USER")
Out[4]: 'akshay'

In [5]: os.getenv("USER")
Out[5]: 'akshay'

我在python版本下使用。

In [7]: sys.version
Out[7]: '2.7.11 (default, Apr 25 2016, 09:27:56) \n[GCC 5.2.1 20150902 (Red Hat 5.2.1-2)]'

In [8]: 

请在此帮助。无法遇到任何现有问题或解决方案。

1 个答案:

答案 0 :(得分:6)

您需要使用os.geteuid来获取effective user id(euid,用于大多数访问检查)。

>>> import os
>>> os.geteuid()
0

然后,将返回值传递给pwd.getpwuid以获取有关返回的uid的信息:

>>> import pwd
>>> pwd.getpwuid(os.geteuid())
pwd.struct_passwd(pw_name='root', pw_passwd='x', ...)

访问pw_name的{​​{1}}属性(或[0])以获取有效用户的用户名。

pwd.getpwuid()

要获得有效的群组信息,请使用os.getegid + grp.getgrgid

>>> pwd.getpwuid(os.geteuid()).pw_name
'root'
>>> pwd.getpwuid(os.geteuid())[0]
'root'