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

EEP*_*EEP 11 python linux popen

我正在运行一个userA与root访问一样的脚本,从这个脚本我想popen()打电话并运行一个不同的进程userB.

os.setuid()似乎不适用于此(除非我这样做错了吗?),我想避免基于linux的解决方案,如 su -userB -c <command>

userB在脚本运行时是否有运行进程的pythonic方法userA

And*_*ark 9

以下答案有一个非常好的方法:https://stackoverflow.com/a/6037494/505154

这里有一个工作代码示例,但摘要是使用subprocess.Popen()a preexec_fn来设置子进程的环境,以便它作为另一个用户执行.

  • 在Python 3的新版本中,就像将用户参数添加到任何子进程方法一样简单:/sf/answers/4869210461/ (2认同)