executa um comando como usuário diferente com permissões sudo disponíveis

1

Eu quero executar o comando abaixo

echo 1000 > /sys/class/backlight/intel_backlight/brightness

Eu não posso fazer isso como abaixo, porque o bash é o processo que realmente direciona a saída para o arquivo de brilho de propriedade da raiz.

sudo echo 1000 > /sys/class/backlight/intel_backlight/brightness

Então, como eu iria executar este comando, mas eu

  • não deseja ser solicitado a fornecer senha de root
  • não deseja efetuar login como root, executar o comando e sair
  • deve usar as permissões disponíveis do sudo disponíveis para o usuário atual executar o comando
por rag 24.02.2013 / 13:32

2 respostas

3

O que você está pedindo é impossível. Seu processo atual não está sendo executado pelo root e somente o usuário root pode emitir setuid . Como tal, outro processo deve ser iniciado como o usuário root primeiro (usando um executável setuid, neste caso, sudo ).

Aqui está a coisa mais próxima do que você está perguntando, com o impossível removido:

echo 1000 | sudo tee /sys/class/backlight/intel_backlight/brightness

Se você não quiser que esta peça uma senha, adicione uma linha em /etc/sudoers (usando visudo ), assim (substitua rag pelo seu nome de usuário):

Cmnd_Alias BACKLIGHT = /usr/bin/tee /sys/class/backlight/intel_backlight/brightness, ! /usr/bin/tee /sys/class/backlight/intel_backlight/brightness *
rag ALL=(root) NOPASSWD: BACKLIGHT
    
por 24.02.2013 / 13:36
1

isso também funciona. Não me importo de ser solicitado pela minha própria senha

sudo bash -c "echo 1000 > /sys/class/backlight/intel_backlight/brightness" .

    
por 24.02.2013 / 14:25