ping não funciona em um chroot

2

Como posso usar o comando ping em um ambiente chroot?

$ ping 8.8.8.8
ping: icmp open socket: Operation not permitted

Atualmente estou usando o CentOs, mas idealmente deve haver uma solução que funcione em todos os ambientes chrooted.

    
por kamal 16.05.2011 / 19:58

3 respostas

4

No Linux, ping precisa ser executado como root (porque ele precisa ligar um soquete IP bruto; os usuários comuns só podem fazer UDP e TCP). Ele foi projetado para ser root setuid. Parece que sua cópia no chroot não é root setuid. Corrigir as permissões:

chown root:root /bin/ping; chmod u+srwx,go=rx /bin/ping

Note que pode haver outros comandos no chroot que precisam ser setuid (ou setgid), em particular su e sudo .

Note que esta resposta assume um chroot, não algo com mais restrições como uma cadeia.

    
por 17.05.2011 / 01:29
3

Como foi apontado, ping precisa da permissão para ligar um soquete IP bruto. Tradicionalmente, setuid foi usado para permitir que usuários normais o usem. No entanto, usando recursos (POSIX 1003.1e, recursos (7)), um conjunto mínimo de recursos pode ser ativado seletivamente, limitando as conseqüências de segurança de possíveis vulnerabilidades.

ping precisa da capacidade CAP_NET_RAW . Suponha que o caminho para o binário seja /usr/bin/ping , a capacidade possa ser definida usando a ferramenta setcap :

setcap cap_net_raw+ep /usr/bin/ping

Use getcap para verificar o resultado:

getcap /usr/bin/ping

A saída deve ser algo como

/usr/bin/ping = cap_net_raw+ep

e ping devem funcionar agora.

    
por 26.08.2015 / 13:42
0

Não deve haver um problema usando o ping ou qualquer outra parte da cadeia de ferramentas do gnu dentro de um chroot, desde que esses binários estejam presentes em seu caminho. Se esses comandos não puderem ser acessados, talvez você deva verificar suas variáveis de ambiente.

    
por 16.05.2011 / 22:18