【发布时间】:2011-10-03 18:33:23
【问题描述】:
我想从 Django(www 用户)调用的 python 脚本中有一个快速的一次性任务,这将需要 root 权限。
起初我以为我可以使用 Python 的 os.seteuid() 并在脚本上设置 setuid 位,但后来我意识到我必须在 Python 本身上设置 setuid 位,我认为这是很大的不不.据我所知,如果使用 sudo 也会出现这种情况,我真的很想避免这种情况。
此时,我正在考虑编写一个使用 seteuid 的 C 包装器,并以 root 身份调用我的 python 脚本,并将必要的参数传递给它。
这是正确的做法还是我应该看其他东西?
【问题讨论】:
-
为什么不直接使用
subprocess和sudo作为外部进程执行它,尽管这一切都闻起来很烂。 -
因为这需要授予 www 权限才能以 root 身份运行 Python :(
-
这里的主要问题是 setuid 和常见的 sudo 操作不适用于单个 python 脚本,因为它们适用于二进制文件,而是适用于 Python 解释器本身。