passe uma senha para sudo su

3

Eu queria sudo para usuário diferente depois de ssh'ing em servidor remoto, por isso eu tentei o seguinte:

cat remote-test.sh
ssh -t -t [email protected] 'bash -s' << EOF
  /tmp/test.sh
EOF

quando eu executo o remote-test.sh de development-server.net, eu queria ssh para test-server.net como abcuser e então sudo como xyzuser.

cat /tmp/test.sh

echo "password" | sudo -S su - xyzuser
cd /tmp/some/directory

Alguém por favor pode aconselhar como passar uma senha enquanto faz sudo su em um script.

    
por phani 19.07.2012 / 22:22

3 respostas

3

Você configura ssh sem senha para localhost como usuário xyzuser para abcuser para alcançar o que você está tentando. Você precisará adicionar a chave pública de abcuser como um authorized_key para xyzuser .

Então, quando você estiver logado como abcuser , você pode fazer:

ssh xyzuser@localhost do_something_as_xyzuser

Se você tiver bloqueado o acesso ssh a xyzuser , permita-o somente por meio de loopback. Se você está no linux, veja seu /etc/security/access.conf ou equivalente sobre como fazer isso.

    
por 20.07.2012 / 02:13
2

Descarte usando su e configure o sudo com as permissões corretas. Isso envolve editar /etc/sudoers e adicionar entrada para permitir que um usuário execute um comando sem fornecer uma senha.

Você pode torná-lo um pouco avançado

User_Alias SCRIPT_USER johndoe
Cmnd_Alias SCRIPT_PATH /usr/local/bin/myscript.sh

SCRIPT_USER ALL = NOPASSWD: SCRIPT_PATH

Ou adquira a mesma coisa com uma única linha.

johndoe ALL = NOPASSWD: /usr/local/bin/myscript.sh
    
por 20.07.2012 / 13:44
1

Eu altamente sugiro que você use a solução proposta por @pkhamre (arquivo sudoers configurado corretamente). É a melhor opção e dá ao administrador o máximo controle.

Se isso não for possível, sugiro que você use a solução @skjaidev (ssh authorized_keys). Isso não exige que você tenha permissões de administrador, apenas acesso a ambas as contas, portanto, pode ser adequado para mais casos.

Mas, se por algum motivo nenhuma dessas soluções funcionar para você ...

Então você quer usar espera para isso. Provavelmente já está na sua máquina. É a ferramenta padrão para qualquer tipo de automação de linha de comando interativa.

    
por 01.08.2012 / 20:42