繁体   English   中英

python:sudo上下文管理器?

[英]python: sudo context manager?

是否有任何可能的方法来实现sudo上下文管理器,它使用sudoers系统作为另一个用户运行封闭范围?

system('whoami')  # same result as echo $USER
with sudo():
    system('whoami')  # root

我怀疑sudo(8)可执行文件在这里对我有帮助,但也许我可以绑定一些C级接口?


动机:我几乎可以将这个shell脚本完全移植到python,甚至没有任何子进程,除了我目前需要system('sudo sh -c "echo %i > /dev/thatfile"' % value) 如果我可以with sudo(), open('/dev/thatfile', 'w') as thatfile: thatfile.write(str(value))那将是如此优雅。

我怀疑这是不可能以任何简单的方式。 升级其权限的程序(如sudo必须在其文件系统权限中设置一个标志(即“setuid”位),以告诉操作系统将其作为与启动它们的用户不同的用户运行。 除非你希望你的整个Python解释器都是setuid root,否则没有直接的方法来为Python代码的一小部分做同等的事情。

可以想象,实现sudo样式的上下文管理器可能不是通过使常规Python代码运行特权,而是通过临时替换使用某种连接的代理进行各种OS调用(例如open文件)的库代码它是一个setuid帮助程序。 但要让这样的东西起作用会有很多工作要做,还有很多工作要确保它足够安全,可以在生产中的任何地方使用。

一个想法,如果您不喜欢当前使用system调用中的shell脚本的解决方案:使用常规Python代码和常规用户权限编写文件。 然后用sudo调用将其chown (并在必要时移动它)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM