从wsgi app执行特权任务的正确方法

时间:2014-07-02 13:55:32

标签: python django root wsgi iptables

我需要编写一个小的wsgi app来操作iptables。我在Debian上用python-iptables包使用nginx + uwsgi。

uwsgi默认运行为www-data用户,所以如果我尝试从我的应用程序访问iptables,我得到iptc.ip4tc.IPTCError: can't initialize filter: Permission denied (you must be root)

除了以root身份运行整个wsgi应用程序之外,是否有解决此问题的方法?如果我想将我的应用程序与Django集成,我该怎么办(我绝对不想以root身份运行所有Django的东西)?

1 个答案:

答案 0 :(得分:0)

您可以尝试将需要超级用户权限的所有功能扩展到root(script.py)所拥有的单独脚本(例如chown root script.py)中,允许其执行(chmod u+x script.py),然后设置setuid以允许该文件的执行权限具有对其他用户(chmod u+s script.py)的root权限。

然后您应该能够使用子进程和www-data权限从wsgi应用程序调用该脚本。