ping
precisa da raiz para poder abrir um soquete no modo raw. Isso é literalmente a primeira coisa que faz quando é iniciado:
icmp_sock = socket(AF_INET, SOCK_RAW, IPPROTO_ICMP);
socket_errno = errno;
Essa é a única coisa pela qual ele precisa de root, assim como muitos programas, ele imediatamente coloca seu nível de privilégio de volta na sua conta de usuário normal:
uid = getuid();
if (setuid(uid)) {
perror("ping: setuid");
exit(-1);
}