2014-07-02 20 views
1

我需要編寫一個用於操作iptables的小型wsgi應用程序。我在Debian上使用了nginx + uwsgi,包含python-iptables包。從wsgi應用程序執行特權任務的正確方法

uwsgi默認運行爲www-data用戶,所以如果我嘗試從我的應用程序訪問iptables,我得到iptc.ip4tc.IPTCError: can't initialize filter: Permission denied (you must be root)

除了以root身份運行整個wsgi應用程序之外,是否有解決此問題的任何解決方法?如果我想將應用程序與Django集成(我絕對不想以root身份運行所有的Django內容),該怎麼辦?

回答

0

你可以嘗試exctract所有需要超級用戶權限到單獨的腳本中的功能(例如script.py)由根(chown root script.py)所擁有,允許它(chmod u+x script.py)exectution,然後設置setuid允許在與該文件的執行權對其他用戶的root權限(chmod u+s script.py)。

然後,您應該能夠使用子進程和www-data權限從您的wsgi應用程序調用該腳本。

相關問題