os.setuid不会更改当前用户

7 python linux python-3.x

我想更改当前用户的脚本执行.我这样做了

import os
newuid = pwd.getpwnam('newuser').pw_uid
os.setuid(newuid)    
print('User :' + getpass.getuser());
Run Code Online (Sandbox Code Playgroud)

我还在root.还有比这更好的方法吗?我希望切换用户一次,然后继续使用该新用户在脚本中执行其余的命令.

小智 5

getpass.getuser()不使用getuid()geteuid()获取当前用户.

http://docs.python.org/3/library/getpass.html#getpass.getuser

此函数按顺序检查环境变量LOGNAME,USER,LNAME和USERNAME,并返回设置为非空字符串的第一个值.如果未设置,则在支持pwd模块的系统上返回密码数据库的登录名,否则将引发异常.