I am trying to run my script as below and want access to sudo user running this script.
:$sudo -u usergroup script.py
So here I am expecting 'usergroup' as output. What I have tried is,
.
:$ sudo -u usergroup ipython
In [1]: import getpass
In [2]: getpass.getuser()
Out[2]: 'akshay'
.
In [4]: os.getenv("SUDO_USER")
Out[4]: 'akshay'
In [5]: os.getenv("USER")
Out[5]: 'akshay'
I am using below python version.
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]:
Kindly help here. Could not came across any existing question or solution for it.
You need to use os.geteuid
to get effective user id (euid, used for most access checks).
>>> import os
>>> os.geteuid()
0
Then, pass the return value to pwd.getpwuid
to get information about the uid returned:
>>> import pwd
>>> pwd.getpwuid(os.geteuid())
pwd.struct_passwd(pw_name='root', pw_passwd='x', ...)
Access pw_name
attribute (or [0]) of the pwd.getpwuid()
to get username of the effective user.
>>> pwd.getpwuid(os.geteuid()).pw_name
'root'
>>> pwd.getpwuid(os.geteuid())[0]
'root'
To get effective group information, use 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'
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With