如何解决python os.fork用于在降级的凭证下执行操作
我希望在python中实现以下命令。
su ${USER} -c "whoami"
仅创建在不同特权下运行的子进程,然后将whoami
的结果返回给父进程。
当bash起作用时,应在智利进程终止其工作后将结果检索到父进程时使用os.fork()
完成。
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)
这是正确的方法吗?
解决方法
它已作为新功能添加到Python 3.9中的subprocess模块,subprocess.Popen构造函数中
:3.9版的新功能。
如果用户不为None,则将在以下位置进行setreuid()系统调用: 子流程执行之前的子流程。如果 提供的值是一个字符串,它将通过pwd.getpwnam()查找 并且将使用pw_uid中的值。如果值为整数,则为 将逐字通过。 (仅适用于POSIX)
https://docs.python.org/3.9/library/subprocess.html
在3.9之前,最好使用相同的setreuid()调用。如果您喜欢用户,也可以使用相同的工具来更改组。如果您想检查设置的细节,并且可能将相关部分复制粘贴到您的程序中,则会在此提交中添加代码:https://github.com/python/cpython/commit/2b2ead74382513d0bb9ef34504e283a71e6a706f
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。