我有这个以root身份运行的简单python脚本,但将以其他用户身份执行子进程:
#!/usr/bin/env python2
import subprocess
import os
def demote(user_uid):
def result():
os.setuid(user_uid)
return result
cmd = "echo $USER"
proc = subprocess.Popen(cmd, preexec_fn=demote(1000), stdout=subprocess.PIPE, shell=True)
output = proc.communicate()[0]
print output
如果 cmd 为“sleep 60”,则脚本以用户身份生成 sleep:
# ps -ef | grep sleep
dave 17812 17811 0 17:05 pts/5 00:00:00 /usr/bin/sleep 60
但是,如果 cmd 是“echo $USER”,则输出为“root”。如果我将子进程作为另一个用户生成,我需要做些什么来获取用户的环境吗?