Linuxシステムでは、Pythonで子プロセスを生成するプログラムを作成しています。私は "マルチプロセッシング"ライブラリを使用していますが、現在のものとは異なるユーザーでサブプロセスを呼び出す方法があるのだろうかと思います。私は別のユーザー(例えば、Postfixのような)で各サブプロセスを実行できるようにしたいと考えています。Pythonでは、別のユーザーの下でサブプロセスを呼び出す方法は?
アイデアやポインターはありますか?
Linuxシステムでは、Pythonで子プロセスを生成するプログラムを作成しています。私は "マルチプロセッシング"ライブラリを使用していますが、現在のものとは異なるユーザーでサブプロセスを呼び出す方法があるのだろうかと思います。私は別のユーザー(例えば、Postfixのような)で各サブプロセスを実行できるようにしたいと考えています。Pythonでは、別のユーザーの下でサブプロセスを呼び出す方法は?
アイデアやポインターはありますか?
修正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()
ああ、そうです!ありがとう!私はあまりにも複雑なものを探していて、あなたの例はトリックをうまくやってくれるでしょう:D – edomaur
os.setpgid(pid、pgrp)の方向を見ることができます。
をsedeuidあなたは使っていますか? Popenでpreexec_fn = lambda:os.setuid(100) – sherpya
のようなものを使うことができます。私はマルチプロセッシングを使います。 uid/gid継ぎ目をAPIの不足に設定する。 – edomaur