python - 在没有root的情况下在Python中实现UDP traceroute

标签 python sockets permissions udp traceroute

我正在尝试在 Python 2.6 中实现 UDP traceroute 解决方案,但我无法理解为什么我需要 root 权限来执行与我的操作系统附带的 traceroute 实用程序相同的操作。

这段代码运行的环境很可能会有 root 权限,所以我是否更有可能不得不放弃 python 实现并编写一些东西来解析 UDP 模式下 OS traceroute 的输出?或者我在打开一个配置为 self.rx = socket.socket(socket.AF_INET, socket.SOCK_RAW, socket.IPPROTO_UDP) 的套接字时遗漏了什么。似乎 socket.SOCK_RAW 在没有 root 权限的情况下无法访问,这有效地阻止了我使用在 python 中实现它所需的数据。

最佳答案

我得出的结论是,我仅限于使用 subprocess 解析 traceroute 的输出。 traceroute 能够通过对部分代码使用 setuid 来克服 root 要求,有效地允许该部分代码以 root 身份运行。由于我无法在没有 root 权限的情况下建立这些权限,因此我不得不依赖 traceroute 的存在,因为这是两种情况中更有可能发生的情况。

关于python - 在没有root的情况下在Python中实现UDP traceroute,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17027970/

相关文章:

python正则表达式用一条命令代替两种情况

C++ iptables 重定向形成单独的数据包

python - 触发和更新停靠窗口

python - Pip 1.5 和 setup.py 中设置的 git 依赖项不能一起工作

python - 从 Python 和 sh 模块运行命令时,LXD 容器上的百万次关闭系统调用

sockets - 简单的非阻塞 Web 服务器

Linux 非阻塞套接字 : how much data can be read before blocking?

android - Linux 授予 Android Studio (AVD) 权限/dev/kvm(权限被拒绝)

c - syslog的openlog()应该在seteuid/setegid之前还是之后调用

ubuntu - Hadoop命令权限