gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 13:32:48 25 4
gpt4 key购买 nike

我正在尝试如下运行我的脚本,并希望访问运行此脚本的 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]:

请在这里帮忙。找不到任何现有的问题或解决方案。

最佳答案

您需要使用 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', ...)

访问 pwd.getpwuid()pw_name 属性(或 [0])以获取有效用户的用户名。

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

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

>>> grp.getgrgid(os.getegid())
grp.struct_group(gr_name='root', gr_passwd='x', gr_gid=0, gr_mem=[])
>>> grp.getgrgid(os.getegid()).gr_name
'root'

关于python - 如何在python中获取sudo用户名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43929714/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com