从 uwsgi 调用子进程 sudo

Call subprocess sudo from uwsgi

我正在 uwsgi 上执行来自 python 的 sudo 语句。我将帐户 (www-data) 配置为不需要 sudo 的密码,但它不起作用。

如果我从 shell 运行,它可以正常使用所需的帐户:

www-data@srv sudo iptables -L -n

但是在我的脚本和 uwsgi 中,它提示输入密码。

sudoers我有:

www-data ALL=(ALL) NOPASSWD: /sbin/iptables

在我的 python 脚本中:

subprocess.call(['sudo', '/sbin/iptables -L -n'])

谢谢,对不起我的英语。

你能在你的 sudo 之前做 subprocess.call('/usr/bin/id') 看看你是否将它作为 www-data 执行吗?

我在我的服务器上测试了这段代码,它可能是一个不错的选择:

subprocess.call("sudo" + " /sbin/iptables -L -n", shell=True)

https://docs.python.org/2/library/subprocess.html