降级Python子流程

时间:2015-01-07 22:02:17

标签: python

是否可以以root身份运行主Python进程,但是以不同的用户身份运行Python子进程(多处理)?我还希望应用该用户的主目录和shell设置,就像Python解释器已由该用户启动一样。

现在,当使用os.setuid和gid时,权限是正确的,但主目录仍然不正确,因为你期望:

>>> import os
>>> os.setgid(1000)
>>> os.setuid(1000)
>>> print os.getuid()
1000
>>> print os.getgid()
1000
>>> f = open('/etc/shadow')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
IOError: [Errno 13] Permission denied: '/etc/shadow'
>>> os.system('echo $HOME')
/root
0

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

尝试:

os.environ['HOME'] = '/home/blah'
os.system("ls ~")

AFAIK,这和你可能会得到的一样好,因为安装了网络主目录,或者用bash配置文件将HOME设置为古怪值的用户不能在纯Python中复制,并且可能有副作用。