Reinicie o EC2 Amazon Linux (baseado em Redhat) do script

4

Eu gostaria de reiniciar meu Linux a partir de um script. O script não é executado como root.

Usando sudo reboot produz

sudo: sorry, you must have a tty to run sudo.

Um reboot comum indica o erro

Need to be root

Eu sei que posso editar meu arquivo sudoers , mas existe uma maneira mais fácil?

    
por Joshua Fox 03.11.2015 / 15:35

2 respostas

2

A Amazon fornece uma biblioteca para todos esses tipos de funções, para que possam ser executadas no nível do EC2, sem recorrer a idéias ruins dentro da própria máquina virtual.

Você pode usar ec2-reboot-instances instance_id para solicitar a reinicialização do EC2 qualquer instância, incluindo ela mesma. Uma instância pode buscar seu próprio ID usando:

curl -s http://169.254.169.254/latest/meta-data/instance-id

ou

ec2-metadata -i

Assim como um one-liner na linha de comando, você usaria isso:

ec2-reboot-instances -O YOURAWSKEY -W YOURAWSSECRET --region=YOURREGION $(ec2-metadata -i |cut -d':' -f 2)

A lista completa da função do EC2 é aqui .

    
por 03.11.2015 / 16:59
1

Os comandos reboot , halt e shutdown geralmente requerem raiz por motivos de segurança [ 1 ]. Escrevendo no google how to run sudo in a script ele responde com

Add your script to the /etc/sudoers file with the NOPASSWD attribute, so that it is permitted to run without prompting for a password. You can tie this down to a specific user (or set of users), or allow it to be run with sudo by anyone on your system.

É justo se você puder limitar o acima para um script de uma linha que lança apenas o comando reboot . No entanto, isso irá expor seu computador a ser reinicializado sem a senha da configuração script + usuário .

A alternativa irá expor você ao risco de que todos tenham a possibilidade de reiniciar sua máquina. Leia as respostas [ 2 , 4 , 5 ] por exemplo

... you need to add the suid-Bit [3,4,5] to those commands. But be aware, everyone on your system, that has access to the shell could then shutdown your machine.

Mas também estou convencido de que usar o suid é uma idéia ruim .
No comentário de [ 2 ] novamente é sugerido modificar com visudo ...

%sudo ALL = NOPASSWD: /sbin/reboot 

mas neste momento é melhor fazer um script de uma linha para reinicializar o seu usuário e limitar a esse apenas o recurso de reinicialização. (Então você não pode reiniciar mesmo como seu usuário sem senha, se não com esse script).

    
por 03.11.2015 / 15:55