我想建立一个使用django的API,它应该使用POST参数来改变iptables。我正在使用django 1.4,djangorestframework,python-iptables。我面临的问题是python-iptables需要root权限才能更改iptables规则。我可以通过执行$ sudo python
来更改iptables规则,并且可以从python shell中更改这些规则。另外,我可以使用iptdump模块更改这些规则,该模块接受iptables参数并创建那些稍后可以保存在文件(iptables.rules.txt)中的规则,并使用fabric的local('sudo iptables-restore < iptables.rules.txt')
。但是这总是会提示用户输入root密码。有没有一种方法可以让django应用程序根权限,以便我可以绕过sudo密码提示。给django应用程序根权限?
2
A
回答
3
如果您确实需要应用程序的一部分以root用户身份运行,您可以将其重写为守护进程,并按照this answer中的建议与主Django应用程序进行通信。如果下面的替代方案不符合您的要求,我只会推荐它。
替代sudo iptables-restore < iptables.rules.txt
要简单得多,只需添加以下内容到的/ etc/sudoers文件文件告诉须藤不要求输入密码只是此命令:
djangouser ALL=(ALL) NOPASSWD: /sbin/iptables-restore
哪里djangouser
是用户Django进程正在运行。
编辑:可避免直接发送新的iptables的iptables-restore
过程写中间文件:
import iptdump
import subprocess
ipt = iptdump.Iptables()
proc = subprocess.Popen(['sudo', '/sbin/iptables-restore'],
stdin=subprocess.PIPE)
proc.communicate(ipt.dump())
相关问题
- 1. 给Cydia应用程序根权限
- 2. 授予iPhone应用程序根权限
- 3. 根权限冻结android应用程序
- 4. 给Android应用程序的根访问权限
- 5. Django权限应用
- 6. 扎根电话:应用程序有根权限
- 7. 给程序写权限
- 8. Java应用程序权限
- 9. Android应用根权限?
- 10. 需要帮助Cydia应用程序根权限
- 11. 如何为Django应用程序配置数据库权限?
- 12. 什么是Django中行级权限的最佳应用程序?
- 13. 应用程序/用户权限问题
- 14. 如何在运行时给予应用程序管理权限?
- 15. 我如何给我的Android应用程序提供root权限?
- 16. 如何给Linux应用程序提供root权限
- 17. 应用程序被拒绝,健康应用程序权限
- 18. Facebook的权限在Flex应用程序
- 19. 在应用程序中请求权限
- 20. Rails Marketplace应用程序 - AWS权限
- 21. Android应用程序的权限访问
- 22. Facebook应用程序扩展权限
- 23. 启动ios应用程序的权限
- 24. 授予应用程序的root权限
- 25. Python应用程序权限被拒绝
- 26. Facebook应用程序权限。 JSP和RestFB
- 27. Facebook应用程序权限错误
- 28. .NET - 较低的应用程序权限
- 29. 管理权限2个应用程序
- 30. iOS应用程序的root权限
嘿感谢这个工作,但有什么办法,我可以跳过sudo的密码提示。 – Saad 2013-04-21 16:28:50
@Saad **/etc/sudoers **中的行应该防止密码提示,您确定代码是以sudoers中指定的用户身份运行的吗? – 2013-04-21 17:37:36
是的,我终于完成了,谢谢 – Saad 2013-04-22 07:36:37