sudo permissão negada mas su concede permissão

11

esta é a primeira ocorrência em que o su foi necessário para mim.

Eu li um artigo sobre como alterar o valor em / sys / devices / virtual / backlight / acpi_video0 / brightness para alterar o brilho da tela do meu laptop.

Primeiramente, notei que quando eu%% perderia a permissão,

Eu mudei para root usando su e $ sudo echo 10 > brightness mudou meu brilho quase instantaneamente.

A última coisa esquisita para mim aconteceu quando tentei # echo 10 > brightness (o arquivo maxbrightness contém o valor 15) e recebi um erro de gravação

Alguém poderia explicar essa diferença entre sudo e su para mim? Entender o erro de gravação seria um bônus adicional. Qualquer ajuda, ponteiros e / ou links seriam muito apreciados.

    
por flumpb 31.01.2011 / 18:07

4 respostas

17

O redirecionamento não funciona dessa maneira. Acrescentar > a um comando executará esse redirecionamento como usuário de chamada (você) e não como raiz. Faça isso com tee :

echo 20 | sudo tee /sys/devices/virtual/backlight/acpi_video0/brightness

ou invocando o comando em um shell privilegiado separado:

sudo bash -c "echo 20 > /sys/devices/virtual/backlight/acpi_video0/brightness"
    
por 31.01.2011 / 18:15
8

Isso não é por causa de sudo , é por causa da maneira como seu comando é processado; Na verdade, eu o expliquei em this question . Quando você faz

$ sudo echo 10 > brightness

o shell executa o comando sudo echo 10 , que executa echo 10 como root. O shell então tenta abrir brightness para que ele possa redirecionar a saída de echo 10 para ele, mas não pode - seu shell está executando com suas permissões, não com root. Existem soluções postadas como respostas na pergunta à qual eu me vinculei; uma boa é:

$ echo 10 | sudo tee brightness

Agora, tee é o único a abrir brightness e, como está sendo executado como root, ele é bem-sucedido

    
por 31.01.2011 / 18:17
3

su = s u ser: Use o shell como um usuário diferente

sudo = s uper u ser do : executa o seguinte comando como usuário root.

No seu caso, o seguinte comando é apenas echo 20 , portanto, apenas o echo 20 é executado como root (como foi dito antes). O redirecionamento é executado como você novamente.

    
por 08.10.2013 / 09:12
2

Você pode querer dar uma olhada no arquivo /etc/sudoers . Se o seu a / c não estiver listado, você não poderá sudo .

    
por 31.01.2011 / 23:02