sudo -u foo /dir/foo_user_script.sh
Eu tenho acesso a um servidor linux onde posso sudo para 'foo' assim sem uma senha:
sudo su - foo
Quando eu sou o usuário 'foo', posso executar um script como este:
/dir/foo_user_script.sh
O 'foo_user_script' é somente executável pelo usuário foo e não pelo meu usuário. Assim, posso executar o script mudando primeiro para o usuário 'foo' e, em seguida, executando o script.
No entanto, estou tentando automatizar alguns processos usando o cliente Java SSH ganymed. O faq de Ganymed sugere que para executar vários comandos eu deveria usar um contrutor como:Session.execCommand("echo Hello && echo again")
Eu tentei algo assim, mas o segundo comando (o foo_user_script) não foi executado:
Session.execCommand("sudo su - foo && /dir/foo_user_script.sh")
Acho que isso não funciona porque o su lança um novo shell.
Existe alguma maneira de executar o script /dir/foo_user_script.sh em um único comando?
Nota:
"sudo -l" me mostra isso:
(root) NOPASSWD: /bin/su - foo
Obrigado pela ajuda!
sudo -u foo /dir/foo_user_script.sh
Tags command-line ssh bash linux shell