对于Linux系统,我正在编写一个Python程序,它产生了子进程。我正在使用“multiprocessing”库,我想知道是否有方法使用不同于当前用户的用户来调用子进程。我希望能够以不同的用户运行每个子进程(例如Postfix)。在Python中如何调用不同用户下的子进程?
任何想法或指针?
对于Linux系统,我正在编写一个Python程序,它产生了子进程。我正在使用“multiprocessing”库,我想知道是否有方法使用不同于当前用户的用户来调用子进程。我希望能够以不同的用户运行每个子进程(例如Postfix)。在Python中如何调用不同用户下的子进程?
任何想法或指针?
修改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()
啊是的!谢谢 !我在寻找一些太复杂的东西,你的例子会很好地做到这一点:D – edomaur
你可以看os.setpgid(pid,pgrp)方向。
什么叫究竟是你在用吗?与Popen你可以使用像preexec_fn = lambda:os.setuid(100) – sherpya
我使用了一个multiprocessing.Process派生。设置uid/gid接缝是缺乏其API。 – edomaur