Por que o sudo é necessário para todo executável executado do sudo?

1

Eu rodei o sudo para o qtcreator e agora não posso fazer alterações no meu arquivo project_name.user.creator. Diz que não tem permissão. Também rodei o comando ping com o sudo e agora não consigo usá-lo sem o sudo. Você sabe como removê-lo?

ls -l /bin/ping
-rwxr-xr-x 1 root root 61240 Nov 10  2016 /bin/ping

ls -ld /usr/share/applications/*creator*
-rw-r--r-- 1 root root 354 Jul 21  2016 /usr/share/applications/qtcreator.desktop


ping 8.8.8.8
ping: socket: Operation not permitted sudo ping 8.8.8.8

sudo ping 8.8.8.8 [sudo] password for default:
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_seq=1 ttl=58 time=1.22 ms
64 bytes from 8.8.8.8: icmp_seq=2 ttl=58 time=1.38 ms
64 bytes from 8.8.8.8: icmp_seq=3 ttl=58 time=1.29 ms
^C
--- 8.8.8.8 ping statistics --- 3 packets transmitted, 3 received, 0% packet loss, time 2002ms
rtt min/avg/max/mdev = 1.229/1.301/1.380/0.074 ms
default@martin-bogdanov:/home$
    
por Martin 11.05.2018 / 12:58

1 resposta

2

Explicação

Quando você executa um comando com sudo , significa apenas que o usuário que está executando esse comando é root .

Portanto, se o comando que você está executando criar algum arquivo, ele terá os owner e group owner fileds definidos como root .

Dependendo dos privilégios dos arquivos (também dos executáveis), isso pode impedir que outros usuários os leiam / escrevam / executem.

Exemplo

Esta é a saída de ls -l /bin/ping no meu computador:

-rwxr-xr-x 1 root root 61168 Feb 11  2017 /bin/ping

Eu explicarei as partes -rwxr-xr-x e root root .

O primeiro caractere ( - ) representa o tipo do arquivo.
- Significa um arquivo normal.
d Significa um diretório.
e assim por diante.

Os próximos 3 caracteres ( rwx ) representam as ações permitidas para o owner .

r Ser capaz de ler um arquivo.
w Ser capaz de gravar em um arquivo.
x Ser capaz de executar um arquivo.

Os próximos 3 caracteres ( r-x ) representam as ações permitidas para o membro do grupo group owner .

r Ser capaz de ler um arquivo.
- Não capaz de gravar em um arquivo.
x Ser capaz de executar um arquivo.

Os últimos 3 caracteres ( r-x ) representam as ações permitidas para usuários que não são nem owner nem membros do grupo group owner .

r Ser capaz de ler um arquivo.
- Não capaz de gravar em um arquivo.
x Ser capaz de executar um arquivo.

root root Significa que owner é o usuário root e group owner é o grupo root .

Solução geral

Para alterar o owner e o group owner para sua conta de usuário, você sempre pode usar

sudo chown username:groupname file_name

( groupname é por padrão igual a username se você não alterá-lo manualmente.)

Isso alterará os campos user para username e group owner para groupname para o arquivo file_name .

Solução para problemas específicos de ping

Como ambos steeldriver e John WH Smith apontou, você também precisa de um setuid bit para que o ping funcione corretamente. As explicações podem ser encontradas aqui e here .

Portanto, isso resolverá o problema com ping :

sudo chmod u+s /bin/ping
    
por 11.05.2018 / 13:11