Jan*_*dae 5 ethernet raw-ethernet
我必须在 Linux 上编写一个应用程序,该应用程序需要与具有自定义以太网类型的设备进行通信。即使在如何编写这样的应用程序的SO中也有很多解决方案。缺点是需要 root 访问权限(据我所知)。之后释放 root 权限可能是一种选择,但这会带来一个问题,即该程序是在 IDE 中开发的,我不喜欢以 root 身份运行它。在我的特殊情况下,主应用程序是用 Python 编写的,这意味着授予对整个 Python 解释器的 root 访问权限。我正在寻找可能的替代方案。例如
编写一个微型 UDP/TCP 服务器,通过 TCP/UDP 重定向每个原始数据包。这也可以用 Python 编写。只有这个小应用程序需要 root 权限。
使用 socat 进行重定向,不幸的是我无法找到一个选项来只关心一种以太网类型而不被 IP 数据包溢出。
还有其他想法吗?
我认为你只需要成为root,或者有CAP_NET_RAW,就可以打开套接字。一旦套接字打开,您就可以成为您喜欢的任何用户。
所以有:
一个 setuid 帮助器,它将使用另一种机制(例如 unix 套接字)传递打开的文件描述符
根拥有的守护进程,根据请求将此类打开的套接字描述符传递给其他程序