ルートアクセスでuserA
としてスクリプトを実行しています。このスクリプトから、popen()
呼び出しを行い、userB
として別のプロセスを実行します。
os.setuid()はこれでは機能しないようです(これを間違って行っていない限り)。su -userB -c <command>
などのLinuxベースのソリューションは避けたいと思います。
スクリプトがuserB
として実行されているときに、プロセスをuserA
として実行するPythonの方法はありますか?
次の答えはこれに対して本当に素晴らしいアプローチを持っています: https://stackoverflow.com/a/6037494/505154
そこには実用的なコード例がありますが、要約すると、subprocess.Popen()
をpreexec_fn
サブプロセスの環境をセットアップして、別のユーザーとして実行されるようにします。