python os.fork() 用于在降级凭据下执行操作

我正在寻找在 python 中实现以下命令。

su ${USER} -c "whoami"

它只是创建在不同权限下运行的子进程,并将结果返回whoami给父进程。

os.fork()当 bash 工作时,一旦 Chile 进程终止其工作,应该使用 while 将结果检索到父进程来完成。

def runWhoamiOtherUser(self):
    pid = os.fork()    if pid == 0:
        os.setuid(getpwnam(os.environ['USER'])[2])
        x = getpass.getuser()
                return x

    pid, status = os.waitpid(pid, 0)

这是正确的方法吗?


慕姐8265434
浏览 111回答 1
1回答

慕尼黑的夜晚无繁华

它已作为新功能添加到 Python 3.9 中的 subprocess 模块中的 subprocess.Popen 构造函数中:3.9 版本中的新功能。如果 user 不是 None,则在执行子进程之前,将在子进程中进行 setreuid() 系统调用。如果提供的值是字符串,则将通过 pwd.getpwnam() 查找该值,并使用 pw_uid 中的值。如果该值是整数,则将逐字传递。(仅限 POSIX)在 3.9 之前,可能最好使用相同的 setreuid() 调用。如果您更喜欢用户的话,也可以使用相同的工具来更改组。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python