Encerramento programado com o Gnome-scheduler - como inserir o psw raiz

2

Estou tentando agendar meu servidor do Ubuntu 14 para desligar todas as noites às 12:01 usando o / sbin / poweroff.

Como você precisa do root para desligar, o comando não funciona. Se eu colocar 'sudo' na frente do comando, ele solicitará a senha, mas eu não estou no servidor, então não posso inseri-la.

Como posso agendar um desligamento usando o gnome-scheduler para que ele insira a senha automaticamente?

    
por user288048 03.06.2014 / 16:05

2 respostas

1

Acho que a melhor maneira de fazer isso é um processo de duas etapas:

1) adicionando o comando que você quer executar como root em sudoers para que seu usuário normal possa executá-lo sem senha. Para fazer isso, crie um arquivo em /etc/sudoers.d/ ; você pode chamá-lo como quiser, por exemplo my-settings (1) (2):

sudo gedit /etc/sudoers.d/my-settings

com conteúdo:

romano ALL=NOPASSWD: /usr/sbin/pm-suspend
romano ALL=NOPASSWD: /sbin/poweroff

(obviamente, altere romano com seu usuário normal; se você não precisa suspender também, pode omitir a primeira linha). Agora você precisa tornar o arquivo legível apenas pelo root:

sudo chmod 440 /etc/sudoers.d/my-settings

... e você está pronto. Agora você poderá executar sudo /sbin/poweroff para desligar a máquina e não será solicitada uma senha.

2) Adicione o comando sudo /sbin/poweroff ao seu agendador gnome ou use-o em seus scripts.

Eu uso bastante para fazer um backup noturno com uma linha de comando do estilo "my_backup_script; sudo / usr / sbin / pm-suspend" ou depois de comandos longos (digamos, convertendo um formato de vídeo e depois desligando). / p>

Existe uma página do Ubuntu sobre o arquivo sudoers , mas ela não está realmente atualizada (foi escrito antes que o utilitário sudo tivesse a capacidade de analisar o diretório /etc/sudoers.d ), embora as informações ainda sejam válidas.

Notas de Rodapé

(1) note que este trabalho na versão recente de sudo (quero dizer, a disponibilidade do diretório /etc/sudoers.d ). Você pode verificar se funcionará olhando o arquivo '/ etc / sudoers; se tiver a linha (perto do final)

#includedir /etc/sudoers.d

funcionará. Caso contrário, você precisa adicionar as linhas acima mencionadas diretamente a /etc/sudoers files; tenha cuidado e use visudo para isso, porque um arquivo /etc/sudoers quebrado é uma das coisas mais difíceis de recuperar nos sistemas Ubuntu.

Se você editar os arquivos principais diretamente, saiba que ele pode ser substituído nas atualizações.

(2) Sem pontos permitidos, por isso não use uma extensão! Veja /etc/sudoers.d/README para mais informações.

    
por Rmano 03.06.2014 / 19:00
0

Se você não está entediado com a segurança, pode preparar um script de desligamento com:

echo <the_password_in_clear> |sudo -S /sbin/shutdown -P now

Em seguida, agende-o no cron (por exemplo, via gnome-schedule). A linha acima irá injetar a senha (em formato legível) na sessão sudo para o desligamento. Use a opção -P para manter o computador ligado por meio da programação do BIOS (suponho que você gostaria de desligar o computador em modo totalmente automático).

Além disso, controlar o desligamento por meio do script do usuário permite incluir ações adicionais antes do desligamento real, sem mexer nos arquivos do sistema.

    
por Hydra Starmaster 18.11.2015 / 16:36