对于Linux系统,我正在编写一个用Python生成子程序的程序。我正在使用“多处理”库,我想知道是否有一种方法可以使用与当前用户不同的用户调用子进程。我希望能够使用不同的用户运行每个子进程(例如Postfix)。
任何想法或指示?
答案 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)方向。