web-dev-qa-db-ja.com

Linuxで別のユーザーとしてコマンドを実行するにはどうすればよいですか?

パスワードなしで次のように「foo」にSudoできるLinuxサーバーにアクセスできます。

Sudo su - foo

'foo'ユーザーになると、次のようなスクリプトを実行できます。

/dir/foo_user_script.sh

'foo_user_script'は、fooユーザーのみが実行可能であり、私のユーザーは実行できません。したがって、最初に「foo」ユーザーに変更してからスクリプトを実行することで、スクリプトを実行できます。

ただし、Java SSHクライアント ganymed を使用していくつかのプロセスを自動化しようとしています。Ganymedのよくある質問では、複数のコマンドを実行するには、次のような構造を使用する必要があります。

Session.execCommand("echo Hello && echo again")

このようなことを試しましたが、2番目のコマンド(foo_user_script)が実行されませんでした。

Session.execCommand("Sudo su - foo && /dir/foo_user_script.sh")

Suが新しいシェルを起動するため、これは機能しないと思います。

/dir/foo_user_script.shスクリプトを1つのコマンドで実行する方法はありますか?

注:
"Sudo -l"はこれを示しています:

(root) NOPASSWD: /bin/su - foo

助けてくれてありがとう!

3
George

Sudo -u foo /dir/foo_user_script.sh

5
Srikanth K.