Answers:
ping需要生成和接收ICMP数据包,通常是使用“原始套接字”完成的-这是仅限于root(cap_net_raw)的功能,因为它也可能被滥用来嗅探和破坏系统上的其他流量。
现在,许多发行版仅授予ping cap_net_raw特权(请参阅capabilities(7)
和getcap(8)
手册页),而不是完整的setuid根目录。但是,这需要内核和文件系统都支持扩展属性(xattrs),并且某些“最小”系统会禁用这些属性。
此外,最近还添加了一种特殊的“ ICMP”套接字类型,该套接字类型仅允许发送ICMP Echo消息,而没有任何其他特权。但是ping命令尚未更新。
getfattr --dump --match=.* /sbin/ping
。