Por que o ping requer o bit setuid?

8

Na versão Jessie para o Raspberry Pi, ping requer que o setuid bit seja definido. Qual é a razão para isso?

    
por Old Geezer 05.02.2016 / 10:02

1 resposta

13

ping precisa gerar e receber pacotes ICMP, e normalmente isso é feito usando "raw sockets" - um recurso limitado ao root (cap_net_raw), porque ele também pode ser usado para farejar e interromper outros tráfegos no sistema.

Muitas distribuições agora dão ping ao privilégio cap_net_raw (veja capabilities(7) e getcap(8) páginas de manual) em vez de root setuid completo. No entanto, isso precisa do kernel e do sistema de arquivos para suportar atributos estendidos (xattrs), e alguns sistemas "mínimos" os desativam.

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

    
por 05.02.2016 / 10:23