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

1 投票
2 回答
2597 浏览
提问于 2025-04-17 07:54

我在写一个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()

撰写回答