Ping es un programa propiedad de root con el bit de identificación de usuario establecido.
$ ls -l `which ping`
-rwsr-xr-x 1 root root 35752 Nov 4 2011 /bin/ping
Según tengo entendido, si un usuario ejecuta el proceso de ping, la identificación de usuario efectiva cambiará de la identificación de usuario real (es decir, la identificación de usuario de la persona que inició el proceso) a la raíz de identificación de usuario. Sin embargo, cuando intento esto y miro la salida de ps para ver si el proceso de ping se está ejecutando como usuario root, sigo mostrando la identificación de usuario real.
ps -e -o user,ruser,euser,cmd,args | grep ping
sashan sashan sashan ping -i 10 -c 1000 www.goog ping -i 10 -c 1000 www.google.com
Respuestas:
ping
necesita root para poder abrir un socket en modo raw. Eso es literalmente lo primero que hace cuando se inicia:Eso es lo único para lo que necesita root, por lo que, como muchos programas, inmediatamente baja su nivel de privilegio a su cuenta de usuario normal:
fuente