Dlaczego ping wymaga bitu setuid?

Odpowiedzi:

15

ping musi generować i odbierać pakiety ICMP, i zwykle odbywa się to za pomocą „surowych gniazd” - funkcji ograniczonej do roota (cap_net_raw), ponieważ można go również wykorzystywać do wąchania i zakłócania innego ruchu w systemie.

Wiele dystrybucji teraz po prostu dać Odpytaj CAP_NET_RAW uprawnień (zob capabilities(7)i getcap(8)strony podręcznika) zamiast pełnej setuid korzeń. Jednak to wymaga zarówno jądra, jak i systemu plików do obsługi rozszerzonych atrybutów (xattrs), a niektóre „minimalne” systemy wyłączają je.

Ponadto ostatnio dodano specjalny typ gniazda „ICMP”, który umożliwia wysyłanie tylko komunikatów ICMP Echo, bez żadnych dodatkowych uprawnień. Polecenie ping nie zostało jednak dla niego zaktualizowane.

użytkownik1686
źródło
myślę, że możliwości (7) nie używają xattrs.
ggg
2
@ggg: Ale tak jest. Spróbować getfattr --dump --match=.* /sbin/ping.
user1686,