Eu regularmente faço login no boxen via SSH e executo a atualização e assim por diante como root, usando sudo
.
Agradeço que sudo
peça senha após certo tempo, caso me afaste de terminais ou afins. Mas como já inseri a senha de login ou a frase-chave SSH, prefiro sudo
não solicitar uma senha nos primeiros n minutos após o login, mas me comporto como se o sudo tivesse sido executado com sucesso imediatamente após o login.
É possível configurar para que nenhuma senha seja necessária para a primeira chamada após o login?
Para fazer um exemplo do comportamento desejado
ssh [email protected]
[~]$ sudo somecommand
[~]$ #no password asked.
[~]$ sudo somecommand #n minutes later
[sudo] password for foo:
Aqui está uma ideia de como isso poderia ser feito. NOTA: este é um hack; use apenas se as palavras sudo sem senha fizerem suas sobrancelhas quererem rastejar até o crânio.
A premissa é: não podemos passar credenciais de login para
sudo
. Portanto, a questão é como ter umNOPASSWD
sudo apenas nos primeiros minutos de um login. Podemos fazer isso iniciando o shell de login noNOPASSWD
modo e gerando um processo em segundo plano no.bashrc
qual, após alguns minutos, desfaz o arquivoNOPASSWD
.É claro que o próprio script deve ser iniciado com
NOPASSWD
sudo, ou ainda seríamos solicitados a fornecer uma senha. E o script deve restabelecer aNOPASSWD
regra quando a sessão bash terminar, para queNOPASSWD
seja definida para o próximo login.Aqui está o script
$HOME/nopasswd-sudo
que fará isso:Em sua primeira execução (que deve ser feita a partir da linha de comando, não de
.bashrc
), o script cria o arquivo/etc/sudoers.d/nopasswd-sudo-$USER
contendo umNOPASSWD
curinga para o logado$USER
:Em seguida, a cada login, ele inicia e aguarda em segundo plano até que o tempo sem senha acabe, após o qual remove o arquivo e o próximo
sudo
exigirá uma senha.Depois disso, ele espera indefinidamente (na verdade, até 12h, para evitar órfãos que perderam o sinal HUP de seus pais) ou até que seu pai, o shell de login, termine. Pouco antes de sair, sua interceptação EXIT recria o
NOPASSWD
arquivo.Dica para os aventureiros: lembre-se de sempre manter um shell root separado aberto enquanto você mexer com scripts ou
sudo
regras de login. Você não seria o primeiro a se trancar.