Isso indica que ping
tem recursos extras:
$ getcap /usr/bin/ping
/usr/bin/ping = cap_net_raw+ep
ou até mesmo (no Fedora):
$ getcap /usr/bin/ping
/usr/bin/ping = cap_net_admin,cap_net_raw+ep
Isso permite que ping
abra um soquete bruto (e envie e receba pacotes ICMP) sem executar como root
.
setcap(8)
e capabilities(7)
forneça mais detalhes.
Historicamente, ping
foi instalado como setuid para que fosse executado como root
e pudesse usar soquetes brutos; uma vez que os recursos se tornaram utilizáveis, muitas distribuições passaram a utilizá-los, já que o controle mais refinado que eles oferecem sobre permissões parece preferível. No Ubuntu, porém, existem problemas aparentemente com o instalador , então ping
ainda está instalado setuid root
(o código de recursos está desativado em o script de mantenedor relevante , que vem do Debian, onde ping
está configurado usando recursos se possível).
A ping
manpage descreve seus requisitos , portanto:
ping
requiresCAP_NET_RAW
capability to be executed 1) if the program is used for non-echo queries (See-N
option), or 2) if kernel does not support non-raw ICMP sockets, or 3) if the user is not allowed to create an ICMP echo socket. The program may be used as set-uid root.