Como dar privilégios de desligamento para um usuário?

9

Estou usando o Ubuntu 11.04. Eu quero executar um script que verifica um processo em execução e desliga o sistema quando esse processo termina. Para fazer isso, o usuário requer acesso ao desligamento para que o script possa ser executado sem exigir uma senha.

Eu me referi a esta página e adicionei o texto em meu arquivo sudoers. No entanto, ele ainda está me pedindo a senha sempre que eu executar sudo shutdown -h now . Além disso, recebo um erro dizendo que privilégios de root são necessários, quando executo o desligamento sem sudo.

Meu arquivo sudoers é parecido com isso.

# Cmnd alias specification
Cmnd_Alias      SHUTDOWN = /sbin/shutdown

# User privilege specification
root    ALL=(ALL:ALL) ALL
myusername    ALL = NOPASSWD: SHUTDOWN

Como posso dar permissão a um usuário para executar o comando de desligamento sem ter que inserir manualmente a senha?

Obrigado.

    
por Amey Jah 19.06.2011 / 20:43

4 respostas

6

Você pode desligar ou reiniciar usando o HAL ou o ConsoleKit, o que não exigirá que você digite um nome de usuário / senha:

HAL (versões antigas do Ubuntu):

dbus-send --system --print-reply --dest=org.freedesktop.Hal /org/freedesktop/Hal/devices/computer org.freedesktop.Hal.Device.SystemPowerManagement.Shutdown

ConsoleKit (versões mais recentes do Ubuntu, testadas no Ubuntu 11.04):

dbus-send --system --print-reply --dest=org.freedesktop.ConsoleKit /org/freedesktop/ConsoleKit/Manager org.freedesktop.ConsoleKit.Manager.Stop
    
por Alin Andrei 20.06.2011 / 13:41
7

Eu fiz como em esta resposta , funciona sem falhas para mim. Talvez sua abordagem perca a parte visudo ?

Abra uma linha de comando e digite:

sudo visudo 

No arquivo que é aberto, adicione a seguinte linha no final:

yourusername ALL=NOPASSWD: /sbin/halt

Em seguida, saia do editor e proteja-o (CTRL + x).

Agora você pode desligar seu computador pela linha de comando, por exemplo depois de baixar algo:

wget UrlOfTheFileYouWantToDownload ; sudo halt
    
por Christoph 20.06.2011 / 14:40
1

Algum tempo atrás eu fiz isso configurando o suid (Set User ID). Isso faz com que o programa seja executado como o proprietário do arquivo, não o usuário que o está executando. Como o desligamento é de propriedade do root, isso deve permitir o desligamento sem o sudo.

chmod u+s /sbin/shutdown

Existem implicações de segurança, já que qualquer um pode executar o desligamento. link

    
por turbo 20.06.2011 / 02:07
0

Parece que você deseja executar o script como raiz. Se você deseja executar um script que aguarda que algo seja concluído e, em seguida, desligar seu computador, basta executar o script com o sudo. Isso pedirá sua senha quando você executar o script, mas o próprio script estará livre para encerrar o sistema sem qualquer outra intervenção.

    
por Jo-Erlend Schinstad 20.06.2011 / 09:48