sudo trava quando executado no host remoto por ssh em um script sem tty (-t)

2

Eu tenho um servidor AIX 6.1 em que preciso executar um comando sudo remoto em um script bash.

Aqui está meu script bash simplificado:

testSudo.sh

#!/usr/bin/bash
set -x

sudo env

Eu posso executar o comando sudo localmente sem senha:

[user@server]$ sudo env
VAR=VAL
...

Eu posso executar o script localmente:

[user@server]$ /tmp/testSudo.sh
+ sudo env
VAR=VAL
...

Eu posso executar sudo no host remoto:

[user@client]$ ssh user@server sudo env
VAR=VAL
...

Eu posso executar o script no host remoto com tty:

[user@client]$ ssh -t user@server /tmp/testSudo.sh
+ sudo env
VAR=VAL
...

Não consigo executar o script no host remoto sem tty (e não posso adicionar a opção -t no meu contexto):

[user@client]$ ssh user@server /tmp/testSudo.sh
+ sudo env

Ele paira lá.

    
por Pilou 17.07.2013 / 18:00

1 resposta

1

Sudo quando executado sem o terminal requer um programa auxiliar para lidar com a consulta de senha:

SUDO_ASKPASS    Specifies the path to a helper program used to read the
password if no terminal is available or if the -A option is specified.

Normalmente, quando você se conecta via ssh e sudo precisará de uma senha, mas o terminal não está alocado, isso causará um erro - no AIX, isso pode se comportar de maneira diferente.

Verifique suas configurações do sudo e habilite o NOPASSWD de todas as máquinas remotas, a regra correta deve ficar assim (adicione no final do / etc / sudoers):

user ALL= NOPASSWD:/tmp/testSudo.sh

    
por 17.07.2013 / 19:55

Tags