为什么ping需要setuid位?


Answers:


15

ping需要生成和接收ICMP数据包,通常是使用“原始套接字”完成的-这是仅限于root(cap_net_raw)的功能,因为它也可能被滥用来嗅探和破坏系统上的其他流量。

现在,许多发行版仅授予ping cap_net_raw特权(请参阅capabilities(7)getcap(8)手册页),而不是完整的setuid根目录。但是,这需要内核和文件系统都支持扩展属性(xattrs),并且某些“最小”系统会禁用这些属性。

此外,最近还添加了一种特殊的“ ICMP”套接字类型,该套接字类型仅允许发送ICMP Echo消息,而没有任何其他特权。但是ping命令尚未更新。


我认为功能(7)不使用xattrs。
ggg

2
@ggg:但是可以。尝试getfattr --dump --match=.* /sbin/ping
user1686 '16
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.