我想在Linux中(使用Python)打开一个原始套接字而不给Python cap_net_raw功能。我希望用户拥有这个能力,而不是程序。我使用的是Ubuntu 12.4。在没有setcap的情况下在Linux中打开原始套接字cap_net_raw
2
A
回答
0
我一直在为此而苦苦挣扎。似乎没有任何好的解决方法,至少对于像Python这样的解释性语言来说。以root运行或不捕获原始数据包:)。我唯一能想到的就是将脚本作为守护进程来执行。
须藤服务启动snifferd
其中snifferd是一样的东西:
PATH=/sbin:/bin:/usr/sbin:/usr/bin
DAEMON=/home/<user>/projects/sniffer.py
DAEMON_NAME=snifferd
case "$1" in
start)
log_daemon_msg "Starting $DAEMON_NAME"
setcap cap_net_raw=+ep /usr/bin/python2.7
start-stop-daemon --start --background --pidfile $PIDFILE --make-pid --user $DAEMON_USER --chuid $DAEMON_USER --startas $DAEMON
setcap cap_net_raw=-ep /usr/bin/python2.7
log_end_msg $?
;;
...
我已经试过正确初始化的插座,并在之后取下盖子之前执行我的代码setcap但似乎蟒蛇在实例启动之前需要权限。
还有http://www.subspacefield.org/security/privilege/code/privilege/ privelege下降,但我没有真正看过它。
编辑1 刚刚尝试过。它可以工作,但是如果deamon在程序需要之前删除它的功能,它将会失败。猜测,它需要某种暂停在那里等
+0
在Linux 4.3及更高版本上可以设置Ambient功能。这些将始终添加到非根进程允许的和有效的集合中。这样python的文件集不需要改变。 – wheredidthatnamecomefrom
0
功能与流程(线程是精确的),而不是用户。
正如@wheredidthatnamecomefrom指出的那样,您可以利用环境功能仅用cap_net_raw
执行python脚本,而不需要为python
二进制文件设置任何文件功能。
你可以看看the following question关于如何做到这一点的一般想法。
相关问题
- 1. 在没有管理员帐户的情况下捕获原始套接字(SOCK_RAW)
- 2. 如何在没有库的情况下在C++中初始化套接字
- 3. 如何在没有打开cmd的情况下打开steam/etc?
- 4. 在没有套接字监听的情况下创建UDP客户套接字
- 5. MySQL在没有套接字文件的情况下运行
- 6. 在没有WiFi的情况下使用套接字
- 7. 如何在java中打开第2层原始套接字?
- 8. 在没有jQuery的情况下在新标签页中打开外部链接
- 9. 在没有Childbrowser插件的情况下在iOS中打开外部链接
- 10. 如何在没有引用信息的情况下在jQuery中打开链接
- 11. 套接字在未连接的情况下为同一个套接字开始连接
- 12. 开关的情况下没有在JavaScript
- 13. 使用setcap在linux
- 14. 如何在没有原始推荐链接的情况下进行重定向?
- 15. 在没有明确打开连接的情况下连接到数据库
- 16. 没有正确的数据正在接收原始套接字
- 17. Linux C原始套接字TCP握手
- 18. 听取套接字 - 连接套接字在没有调试中断的情况下EndAccept
- 19. 防止在没有密码的情况下打开硬盘。
- 20. 如何在没有NavgationController的情况下打开UIViewControllers和Keepstate
- 21. iOS:SWRevealViewController在没有导航栏的情况下打开WebView控件
- 22. 在没有AutoCAD的情况下打开并编辑DWG文件
- 23. 如何在没有动画的情况下打开Android活动
- 24. iOS在没有打开Dropbox应用的情况下授权Dropbox
- 25. 在没有用户交互的情况下自动打开GPS
- 26. 为什么不在没有Application.Run()的情况下打开winform?
- 27. 防止在没有登录的情况下打开页面
- 28. 在没有终端的情况下打开kivy小部件?
- 29. 如何在没有终端的情况下打开WebStorm
- 30. 在Linux C应用程序中的原始套接字VS Libpcap
欢迎来到stackoverflow.com。请花些时间阅读[帮助页面](http://stackoverflow.com/help),尤其是名为[“我可以问些什么话题?”]的章节(http://stackoverflow.com/help/)讨论话题)和[“我应该避免问什么类型的问题?”](http://stackoverflow.com/help/dont-ask)。更重要的是,请阅读[Stack Overflow问题清单](http://meta.stackoverflow.com/questions/156810/stack-overflow-question-checklist)。您可能还想了解如何创建[最小化,完整和可验证的示例](http://stackoverflow.com/help/mcve)。 –