Por que o ping requer o bit setuid?


Respostas:


15

o ping precisa gerar e receber pacotes ICMP, e geralmente isso é feito usando "soquetes brutos" - um recurso limitado ao root (cap_net_raw) porque também pode ser usado para detectar e atrapalhar outro tráfego no sistema.

Muitas distribuições agora oferecem apenas o privilégio cap_net_raw (consulte as páginas de manual capabilities(7)e getcap(8)manual) em vez da raiz setuid completa. No entanto, isso precisa do kernel e do sistema de arquivos para suportar atributos estendidos (xattrs), e alguns sistemas "mínimos" os desabilitam.

Além disso, recentemente foi adicionado um tipo de soquete "ICMP" especial que permite enviar apenas mensagens de eco ICMP, sem privilégios adicionais. O comando ping ainda não foi atualizado para ele.


Eu acho que os recursos (7) não usam xattrs.
Ggg #

2
@ggg: Mas faz. Tente getfattr --dump --match=.* /sbin/ping.
user1686
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.