Para que o ping
funcione, ele precisa ser capaz de criar um soquete de rede raw . Isso é tipicamente uma ação privilegiada.
Em um sistema Linux moderno, isso pode ser concedido com "recursos"
por exemplo, no CentOS 7:
$ ls -l /bin/ping
-rwxr-xr-x 1 root root 62088 Nov 7 2016 /bin/ping*
$ getcap /bin/ping
/bin/ping = cap_net_admin,cap_net_raw+p
No Debian 9.1 (Stretch):
$ getcap /bin/ping
/bin/ping = cap_net_raw+ep
Os recursos são uma maneira mais recente de executar uma forma mais refinada de escalonamento de privilégio sem conceder o conjunto de "raiz" que é concedido a programas setuid.
Sem recursos, então ping
precisará ser setuid root, para criar o soquete de rede bruto.