Por que o ping precisa de permissão setuid? [duplicado]

6

Estou vendo um punhado de arquivos no meu sistema com permissão setuid em meu sistema, executando:

sudo find / -perm -4000

Percebi que /bin/ping aparece na lista.

Alguém pode explicar por que o ping requer permissão setuid?

    
por Philip Kirkbride 30.07.2017 / 18:54

1 resposta

10

Para que o ping funcione, ele precisa ser capaz de criar um soquete de rede raw . Isso é tipicamente uma ação privilegiada.

Em um sistema Linux moderno, isso pode ser concedido com "recursos"

por exemplo, no CentOS 7:

$ ls -l /bin/ping
-rwxr-xr-x 1 root root 62088 Nov  7  2016 /bin/ping*

$ getcap /bin/ping
/bin/ping = cap_net_admin,cap_net_raw+p

No Debian 9.1 (Stretch):

$ getcap /bin/ping
/bin/ping = cap_net_raw+ep

Os recursos são uma maneira mais recente de executar uma forma mais refinada de escalonamento de privilégio sem conceder o conjunto de "raiz" que é concedido a programas setuid.

Sem recursos, então ping precisará ser setuid root, para criar o soquete de rede bruto.

    
por 30.07.2017 / 19:13

Tags