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

edo*_*aur 1 python subprocess multiprocessing

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

有什么想法或指示吗?

she*_*pya 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()
Run Code Online (Sandbox Code Playgroud)