为什么 ping 需要 setuid 位?

为什么 ping 需要 setuid 位?

在 Raspberry Pi 的 Jessie 版本中,ping需要setuid设置位。这样做的理由是什么?

答案1

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

现在许多发行版只给 pingcap_net_raw特权(请参阅capabilities(7)手册getcap(8)页)而不是完整的 setuid root。但是,这需要内核和文件系统都支持扩展属性 (xattrs),而一些“最小”系统会禁用这些属性。

此外,最近有一个特别的“ICMP”套接字类型已添加,仅允许发送 ICMP Echo 消息,无需任何额外权限。不过 ping 命令尚未更新。

相关内容