¿Por qué el ping requiere el bit setuid?

Respuestas:

15

ping necesita generar y recibir paquetes ICMP, y por lo general se hace usando "sockets sin procesar", una característica limitada a root (cap_net_raw) porque también se puede abusar para detectar e interrumpir otro tráfico en el sistema.

Muchas distribuciones ahora sólo dan ping a la CAP_NET_RAW privilegio (ver capabilities(7)y getcap(8)páginas de manual) en lugar de la plena setuid root. Sin embargo, esto necesita tanto el núcleo como el sistema de archivos para admitir atributos extendidos (xattrs), y algunos sistemas "mínimos" los desactivan.

Además, recientemente se agregó un tipo de socket especial "ICMP" que permite enviar mensajes de eco ICMP solamente, sin ningún privilegio adicional. Sin embargo, el comando ping aún no se ha actualizado.

usuario1686
fuente
Creo que las capacidades (7) no usan xattrs.
ggg
2
@ggg: Pero lo hace. Tratar getfattr --dump --match=.* /sbin/ping.
user1686