使用Python以不同的用户身份运行进程

21

我正在以root权限运行一个脚本,用户名为userA,从这个脚本中,我想要使用popen()函数调用并以userB身份运行另一个进程。

看起来os.setuid()无法实现这一点(除非我做错了?),我希望避免使用基于Linux的解决方案,例如su -userB -c <command>

是否有一种Pythonic的方法在脚本作为userA运行时以userB身份运行进程?


2
以下答案对此有一个非常好的方法:https://dev59.com/R3I-5IYBdhLWcg3wm5pH#6037494 - Andrew Clark
+1 给 @F.J. 我在自己的代码中也使用相同的方法。 - jdi
1
+1 也适用于 @F.J,非常好!如果您想在此处总结答案,我很乐意为您提供一些声望和答案信用。 - EEP
1个回答

15
下面的答案提供了一个非常好的解决方法:https://dev59.com/R3I-5IYBdhLWcg3wm5pH#6037494 那里有一个可行的代码示例,但总结就是使用subprocess.Popen()preexec_fn来设置子进程的环境,使其以另一个用户身份执行。

2
在Python 3的新版本中,只需将用户参数添加到任何子进程方法中即可。https://dev59.com/R3I-5IYBdhLWcg3wm5pH#69560149 - Pavin Joseph

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接