SSH: usuário do comutador remoto e comando de execução sob este novo usuário

2

Eu consigo me conectar a uma máquina remota usando chaves públicas / privadas (sem senha) como usuário wakatana . Na máquina remota eu sou capaz de emitir: sudo /usr/bin/rootsh -i -u root então eu digito a senha do root e recebo as permissões do root. Agora eu gostaria de "semi-automatizar" esse processo. Por semi-automação eu quero dizer que ainda precisarei da senha do root, mas também poderei passar outros comandos que serão executados sob permissões de root, por exemplo. cat /etc/shadow

Eu tentei seguir o comando: ssh -t targetmachine "sudo /usr/bin/rootsh -i -u root; cat /etc/shadow" , mas isso me fornece o prompt da raiz interativa (depois que eu digito a senha), e eu pude usar a máquina remota como se eu estivesse logado como root. Só depois de pressionar ctrl+d parece que ele tenta abrir /etc/shadow porque recebo a mensagem:

cat: /etc/shadow: Permission denied
Connection to targetmachine closed.

O que eu preciso é de alguma forma passar o comando cat /etc/shadow para rootsh . Mas o problema é que eu não sou capaz de soduo qualquer outro comando do que /usr/bin/rootsh -i -u root

Por exemplo, quando tentei sudo /usr/bin/rootsh -i -u root -- cat /etc/shadow , obtenho o:

Sorry, user wakatana is not allowed to execute '/usr/bin/rootsh -i -u root -- cat /etc/shadow' as root on targetmachine.

Para resumir, o que preciso é

  1. acesse a máquina de destino:
  2. alterna usuário para root no servidor remoto (digite senha)
  3. execute o comando sob este usuário comutado
  4. fechar a conexão ao servidor remoto

Por favor, note que não tenho permissão para:

  1. edite o arquivo sudoers
  2. adicionando chaves públicas / privadas à raiz
  3. permitindo o login root direto

Obrigado

EDITAR:

também já tentei sugerido:

echo date | sudo /usr/bin/rootsh -i -u root

mas retorna:

no tty/pty on stdin: Invalid argument
    
por Wakan Tanka 14.10.2013 / 12:20

1 resposta

1

A maioria das shells lê a partir de entrada padrão , mesmo que não seja um teclado. Veja se isso funciona em targetmachine :

$ echo date | sudo /usr/bin/rootsh -i -u root
[sudo] password for you: 
Mon Oct 14 13:29:09 EDT 2013

Nesse caso, você pode ver se o uso de stdin funciona em ssh:

$ echo 'date ; whoami ; cat /etc/shadow' | ssh -t targetmachine 'sudo /usr/bin/rootsh -i -u root'

Ou talvez envie os comandos diretamente para o controle remoto sudo :

$ ssh -t targetmachine "echo 'date ; whoami ; cat /etc/shadow' | sudo /usr/bin/rootsh -i -u root"

Tenha o cuidado de colocar as aspas simples / duplas corretamente. (Meus testes mostram que sudo não funciona nos exemplos acima porque ele não pode ler meu tty local para obter uma senha.

    
por 14.10.2013 / 19:41