Warum benötigt Ping das setuid-Bit?


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.


Ich denke, Capabilities (7) verwendet keine xattrs.
ggg

2
@ggg: Aber das tut es. Versuchen Sie es getfattr --dump --match=.* /sbin/ping.
Grawity
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.