Permissões para Ping sobre uma interface

3

Meu servidor está executando o CentOS 6. Eu tenho um dispositivo de banda larga da Sprint conectado como ppp0. Essa conexão tem a tendência de precisar ser reiniciada, então estou tentando monitorá-la com o Nagios (isso já é usado para outras monitorações da minha rede). Eu tenho um script nagios escrito que tenta pingar por essa interface usando este comando:

enter ping -c 1 -I ppp0 google.com | grep ttl

Executando isso como o usuário root funciona bem, e me dê a resposta de uma única resposta de ping, ou nada se a conexão estiver morta. No entanto, se eu executar este mesmo comando como o usuário "nagios", recebo o seguinte erro:

Warning: cannot bind to specified iface, falling back: Operation not permitted

O ping volta à minha interface eth0 para o ping.

Parece que as permissões da interface não permitem que o usuário nagios o use. Não tenho certeza do que alterar para permitir que esse usuário faça ping nessa interface. Alguma sugestão? Obrigado

    
por dw.emplod 10.07.2012 / 17:55

2 respostas

2

Como o ping precisa escrever pacotes brutos, ele precisa de acesso root. Normalmente, o ping teria o bit setuid configurado para fazer isso. Se você verificar a permissão do ping com, por exemplo: stat -c %a $(which ping) . A maioria dos sistemas retornaria 4775 . O líder 4 é o bit setuid, que diz que ao executar este programa ele é executado sob o uid do usuário que possui o arquivo. Se isso estiver retornando 755 . Você pode adicionar o bit setuid executando chmod u+s $(which ping)

    
por 10.07.2012 / 18:00
1

No Linux, a maneira preferida é fornecer recursos especiais a ping (ou outras coisas semelhantes). Isso evita as armadilhas de executar com permissões de root através de um bit setuid (leia abaixo).

setcap cap_net_raw+ep /bin/ping

Do Wiki do Archlinux :

Capabilities (POSIX 1003.1e, capabilities(7)) provide fine-grained control over superuser permissions, allowing use of the root user to be avoided. Software developers are encouraged to replace uses of the powerful setuid attribute in a system binary with a more minimal set of capabilities. Many packages make use of capabilities, such as CAP_NET_RAW being used for the ping binary provided by iputils. This enables e.g. ping to be run by a normal user (as with the setuid method), while at the same time limiting the security consequences of a potential vulnerability in ping.

    
por 22.07.2016 / 20:40