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