我尝试使用django构建一个api,它应该使用POST参数来改变iptables。我使用的是django1.4,djangorestframework,python-iptables。我面临的问题是python iptables需要根访问权限来更改iptables规则。我可以通过执行$ sudo python
来更改iptables规则,并且可以在pythonshell中更改这些规则。我还可以通过使用接受iptables参数的iptdump模块来更改这些规则,并创建这些规则,稍后可以将这些规则保存到文件中(iptables.rules.txt)并使用织物的local('sudo iptables-restore < iptables.rules.txt')
。但这将始终提示用户输入根密码。有没有办法可以给django应用程序根权限,这样我就可以绕过sudo密码提示了。在
如果您确实需要应用程序的一部分以root身份运行,可以将其重写为守护程序,并按照this answer中的建议从主Django应用程序与它通信。我只会建议如果下面的选择不适合你的要求。在
替代方案
sudo iptables-restore < iptables.rules.txt
要简单得多,只需告诉sudo不要只为这个命令请求密码,方法是将此命令添加到/etc/sudoers文件中:其中
djangouser
是运行Django进程的用户。在编辑:通过将新的iptables直接发送到
^{pr2}$iptables-restore
进程,可以避免编写中间文件:相关问题 更多 >
编程相关推荐