在Python中如何以不同用户调用子进程?
我在写一个Linux系统上的Python程序,这个程序会生成子进程。我使用的是“multiprocessing”这个库,我想知道有没有办法让子进程以不同于当前用户的身份运行。我希望每个子进程都能用不同的用户来运行(比如Postfix这样的)。
有没有什么建议或者指引呢?
相关问题:
2 个回答
2
你可以看看 os.setpgid(pid, pgrp) 这个方向。
5
我修改了Python文档中的示例,添加了setuid这个功能。我不太确定这是否符合你的需求,你可能还需要setgid、sedeuid和setegid。
from multiprocessing import Process
import os
def info(title):
print title
print 'module name:', __name__
print 'parent process:', os.getppid()
print 'process id:', os.getpid()
def f(name):
os.setuid(1000)
info('function f')
print 'hello', name
os.system('id')
if __name__ == '__main__':
info('main line')
p = Process(target=f, args=('bob',))
p.start()
p.join()