首页 > 解决方案 > Setcap 不适用于自定义发行版上的原始套接字

问题描述

我正在构建一个基于 Debian 的小型 linux 发行版,用于自动化网络测试。不过,我遇到了一个非常烦人的问题。许多应用程序,如 paris-traceroute、ping、dublin-traceroute 等都无法正常工作。它们返回无法打开原始 ICMP 套接字的错误。我尝试使用'setcap cap_net_raw+ep ./application',即使getcap指示已设置位,它也不起作用。

如果我尝试将它们用作 setuid root,我也会遇到同样的问题。它们只在 sudo 下工作。所以我想知道我是否搞砸了一些干预库的权限,或者是否还有其他问题。

有人遇到过这样的事情或有解决方案吗?

谢谢!

标签: linuxnetworkingpermissionssysadmin

解决方案


如果有人遇到这个问题,我会解释为什么会失败。我没有提到的是应用程序(如 ping 等)实际上安装在 /opt 中。在这个发行版中 /opt 实际上和 encfs 文件系统仅在 livecd 已获得许可类型的服务器授权后才挂载(这是有正当理由的 - 它会自动测试网络连接并将结果发送给网络工程师。我们只想要它在与用户故障单相关联的特定时间范围内运行)。所以 /opt 不是一个真正的文件系统——它是一个通过 fuse 挂载的加密文件,看起来像一个文件系统。因此 setcap 和 setuid 实际上不起作用,并且可能无法正常工作。


推荐阅读