В Python как вызывать подпроцессы под другим пользователем? - PullRequest
1 голос
/ 07 декабря 2011

Для системы Linux я пишу программу на Python, которая порождает дочерние процессы.Я использую «многопроцессорную» библиотеку, и мне интересно, есть ли метод для вызова подпроцессов с другим пользователем, чем текущий.Я хотел бы иметь возможность запускать каждый подпроцесс с другим пользователем (например, Postfix.)

Есть идеи или указатели?

Ответы [ 2 ]

4 голосов
/ 09 декабря 2011

измененный пример документации по питону, я добавил 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 голос
/ 07 декабря 2011

Вы можете посмотреть в направлении os.setpgid (pid, pgrp).

...