ping
é setuid porque, embora bastante "seguro", requer a capacidade de abrir sockets não processados. Consequentemente, precisa do recurso CAP_NET_RAW
ou ser root.
nethogs
é diferente por alguns motivos: notavelmente, ele não apenas requer acesso privilegiado à pilha de rede, mas também mostra informações sobre outros usuários. Em um sistema multiusuário, você pode não querer que apenas um usuário possa ver quem está usando o quê.
Outra razão é que nethogs
é um programa bastante complicado. Os programas que executam o setuid precisam ser extra-seguros : um estouro de buffer, por exemplo, pode levar à elevação arbitrária de privilégios. O ping
toma bastante cuidado para ser seguro, e até detecta quem o está realmente executando para se comportar de maneira diferente ( ping -f
só funciona se você for realmente root, por exemplo). É mais fácil ter certeza sobre isso em um pequeno programa não interativo do que em uma ferramenta maior como nethogs
.
Exigir que o usuário tenha acesso raiz já evita esse tipo de problema ou o delega a sudo
. Não há nenhuma preocupação com a elevação de privilégio quando você já está root. Em geral, os programas não são feitos setuid-by-default a menos que seja vitalmente necessário para sua função, como passwd
.
Dito isso, em um sistema de usuário único ou em um local em que você não está preocupado com esses problemas, configurá-lo para sua própria conveniência não é um problema significativo.