在Python中如何在不同的用户下调用子进程?

时间:2011-12-07 17:17:05

标签: python subprocess multiprocessing

对于Linux系统,我正在编写一个用Python生成子程序的程序。我正在使用“多处理”库,我想知道是否有一种方法可以使用与当前用户不同的用户调用子进程。我希望能够使用不同的用户运行每个子进程(例如Postfix)。

任何想法或指示?

2 个答案:

答案 0 :(得分:4)

修改了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()

答案 1 :(得分:1)

你可以查看os.setpgid(pid,pgrp)方向。