O sudo realmente faz você torcer por um tempo?

1

No Linux, em que tipo de situações, se houver, executar um comando como não- root para acessar um arquivo / pasta ou criar / excluir um arquivo / pasta usando sudo pode resultar em "permissão negada" durante a execução do mesmo comando que root user teria sucesso? O usuário é considerado um sudoer, é claro.

Exemplo prático no Ubuntu 12: Eu tenho esse diretório em / com root:root ownership e drwxr-xr-x permissions e tentei sudo date > file enquanto estava nele, assim como sudo date | tee file mas recebi o mesmo

-bash: file: Permission denied

em ambos os casos. Com certeza, não haverá problemas se eu for root . Isso é muito frustrante.

    
por Desmond Hume 13.11.2012 / 23:55

2 respostas

7

sudo só faz o comando sudo'ed rodar como root. Uma diferença prática ocasional é que, em

sudo echo mem > /sys/power/state

(que informa ao kernel para suspender-para-RAM)

não funciona porque o shell no qual você está executando (como um usuário comum) tenta configurar o redirecionamento para / sys / power / state, para o qual não tem permissão de gravação. Você pode fazer isso com sucesso executando um sub-shell como root

sudo sh -c 'echo mem > /sys/power/state'

ou usando um programa que abre arquivos, como o dd:

echo mem | sudo dd of=/sys/power/state

ou obtendo uma casca de raiz primeiro, usando, e. 'su' ou 'sudo -s'.

    
por 14.11.2012 / 00:14
3

O sudo realmente faz você torcer por um tempo?

A página de manual para sudo explica:

There is no easy way to prevent a user from gaining a root shell if that user is allowed to run arbitrary commands via sudo.

Assim, se você executar sudo something e digitar sua senha; então, se você não bloquear seu terminal, outro usuário poderá executar sudo su - dentro de 5 minutos, o que lhe dará acesso ao shell root, se seu sudo permitir que você execute comandos arbitrários. Para mais informações sobre o tempo limite, citarei esta seção relevante da página de manual acima:

The sudoers policy caches credentials for 5 minutes, unless overridden in sudoers. By running sudo with the -v option, a user can update the cached credentials without running a command.

Por que recebo permissão negada?

sudo can não interfere no funcionamento do bash, por isso não consegue lidar bem com recursos como redirecionamento de arquivos e outros recursos que funcionam fora do comando. Para evitar isso, você terá que pedir a um shell de root para executar o comando completo, de modo que ele encaminhe o caractere de redirecionamento para um ambiente com raiz, em vez de analisá-lo.

Como mostrado pelo outro usuário, isso é tão simples quanto executar

sudo bash -c 'date > file'

ou reescrevê-lo de tal forma que você não precisa que o parâmetro de redirecionamento seja executado como root, assim:

date | sudo tee file
    
por 14.11.2012 / 00:59