у меня есть этот простой питон скрипт, запустить как корень, но будет выполнять подпроцессы, как какой-то другой пользователь:неправильной среда при использовании питона подпроцесс как другой пользователь
#!/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
Если ЦМД «сон 60», то скрипт Призывает спать как пользователь:
# ps -ef | grep sleep
dave 17812 17811 0 17:05 pts/5 00:00:00 /usr/bin/sleep 60
Однако, если ЦМД 'эхо $ USER', то Outout является "корнем". Есть ли кто-то, что мне нужно сделать, чтобы получить env пользователя, если я создаю подпроцесс как более простой пользователь?