Perché ping richiede il bit setuid?


Risposte:


15

ping ha bisogno di generare e ricevere pacchetti ICMP, e di solito viene fatto usando "raw socket" - una funzione limitata a root (cap_net_raw) perché potrebbe anche essere abusata per annusare e interrompere altro traffico sul sistema.

Molte distribuzioni ora solo dare ping il CAP_NET_RAW privilegio (vedi capabilities(7)e getcap(8)le pagine di manuale) invece della piena setuid root. Ciò tuttavia necessita sia del kernel che del filesystem per supportare attributi estesi (xattrs), e alcuni sistemi "minimal" disabilitano quelli.

Inoltre, recentemente è stato aggiunto uno speciale tipo di socket "ICMP" che consente di inviare solo messaggi Echo ICMP, senza alcun privilegio aggiuntivo. Tuttavia, il comando ping non è stato ancora aggiornato.


penso che le capacità (7) non usino xattrs.
ggg,

2
@ggg: Ma lo fa. Prova getfattr --dump --match=.* /sbin/ping.
user1686
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.