Warum benötigt Ping das setuid-Bit?

9

In der Jessie-Version für den Raspberry Pi pingmuss das setuidBit gesetzt sein. Was ist der Grund dafür?

Alte Knacker
quelle

Antworten:

15

ping muss ICMP-Pakete generieren und empfangen, und dies geschieht normalerweise über "Raw Sockets" - eine Funktion, die auf root (cap_net_raw) beschränkt ist, da sie auch dazu missbraucht werden kann, anderen Datenverkehr im System aufzuspüren und zu stören.

Viele Distributionen vergeben jetzt nur noch das Privileg cap_net_raw (siehe capabilities(7)und getcap(8)Handbuchseiten) anstelle von setuid root. Dies erfordert jedoch sowohl den Kernel als auch das Dateisystem, um erweiterte Attribute (xattrs) zu unterstützen, und einige "minimale" Systeme deaktivieren diese.

Außerdem wurde kürzlich ein spezieller "ICMP" -Socket-Typ hinzugefügt, mit dem nur ICMP-Echo-Nachrichten ohne zusätzliche Berechtigungen gesendet werden können. Der Ping-Befehl wurde jedoch noch nicht aktualisiert.

Grawity
quelle
Ich denke, Capabilities (7) verwendet keine xattrs.
ggg
2
@ggg: Aber das tut es. Versuchen Sie es getfattr --dump --match=.* /sbin/ping.
Grawity