2017-04-26 3 views
0
を使用してJavaプロセスのコマンドを実行

私はTomcat7サーバーによってホストされているJSPページを介して呼び出された上記の言及コードとしてTomcat7

processBuilder = new ProcessBuilder("/bin/bash", "/opt/script.sh"); 
processBuilder.start(); 

のTomcat 7を使用してシェルスクリプトを実行するには、Java-7およびプロセスビルダを使用していますので、コマンドは実行されますが、プロセスはtomcat7ユーザー(tomcatのデフォルトユーザー)によって開始されるため、処理を続行できません。rootパスワードを知っていると仮定して、このコマンドをrootとして実行するにはどうすればいいですか?

+0

私は、Jspページから決してプロセスを実行しないことをお勧めします。 ;) – Stefan

答えて

1

実行sudoを使用してコマンド:

は事実上、sudoは別のユーザ(最も 多くの場合、rootユーザ)としてプログラムを実行するユーザーを可能にします。

ProcessBuilder b = new ProcessBuilder("/bin/sh", "-c", "echo <password> | sudo -S /opt/script.sh"); 
b.start(); 
+0

上記のコードから、ユーザーID "root"が記述されています。プロセスビルダーがユーザー名のルートを特定のパスワードに使用するのは何ですか? – Ammad

+0

私が言ったように、あなたが[sudo](https://www.linux.com/learn/linux-101-introduction-sudo)を使っているという事実は、プロセスをスーパーユーザ(root)として実行させます。 – Strelok

関連する問題