2011-12-07 6 views
1

Linuxシステムでは、Pythonで子プロセスを生成するプログラムを作成しています。私は "マルチプロセッシング"ライブラリを使用していますが、現在のものとは異なるユーザーでサブプロセスを呼び出す方法があるのだろうかと思います。私は別のユーザー(例えば、Postfixのような)で各サブプロセスを実行できるようにしたいと考えています。Pythonでは、別のユーザーの下でサブプロセスを呼び出す方法は?

アイデアやポインターはありますか?

+0

をsedeuidあなたは使っていますか? Popenでpreexec_fn = lambda:os.setuid(100) – sherpya

+0

のようなものを使うことができます。私はマルチプロセッシングを使います。 uid/gid継ぎ目をAPIの不足に設定する。 – edomaur

答えて

3

修正Pythonドキュメントの例で、私は呼び出される関数でのsetuidを追加しました、私はそれはあなたのニーズに合うかわからないと、あなたもsetgidの必要があるかもしれない正確であるかをコール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() 
+0

ああ、そうです!ありがとう!私はあまりにも複雑なものを探していて、あなたの例はトリックをうまくやってくれるでしょう:D – edomaur

1

os.setpgid(pid、pgrp)の方向を見ることができます。

関連する問題