Como você executa um comando como outro usuário no Linux?

3

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!

    
por George 25.03.2014 / 23:18

1 resposta

4

sudo -u foo /dir/foo_user_script.sh

    
por 25.03.2014 / 23:31