以不同的用户身份运行多个python子进程,只升级一次权限

时间:2018-01-25 21:38:53

标签: python linux subprocess su

我有一个需要以特定用户身份运行的python脚本。因此,它首先要做的是在继续之前检查用户并su给适当的用户。但是,subprocess.run的未来使用仍将作为原始用户运行。

在控制台中,用户已切换,但在我切换到用户的exit之前,其他内容无法显示。

这是python代码:

#!/usr/bin/env python3
import subprocess

REQD_USER = "someuser"

user = subprocess.run(['whoami'], stdout=subprocess.PIPE, universal_newlines=True)
if user.stdout != REQD_USER:
    print("Changing user to: " + REQD_USER)
    subprocess.run(['su', REQD_USER], stdout=subprocess.PIPE, universal_newlines=True)
    # successfully switches users here
    subprocess.run(['whoami'], stdout=subprocess.PIPE)

最后subprocess行不会打印到控制台,直到我切换到用户的exit并返回原始用户,然后打印原始用户。

如何切换到其他用户(假设我有密码)并继续以新用户身份在shell中运行命令,而不使用sudo?

0 个答案:

没有答案