3

Javaからsudoを実行する必要があり、次のオプションを試しました。

  • Runtime.exec(「echopassword | sudo-S」のすべての形式)。コマンドのすべての形式は、ターミナルから直接正常に実行できますが、プログラムへのパスを正しく指定しているにもかかわらず、Javaからは正常に実行できません。
  • ここに見られるように、ThreadExecutorのProcessBuilder

sudoerを編集し、Javaプロセスをrootとして実行するオプションは、私の場合は実行できません。非標準のライブラリの使用を本当に避けようとしているので、これは本当に私の唯一の選択肢ですか?

編集:これを回避する方法は、ユーザーにSUDO GUI(kdesudo、gksu、cocoasudoなど)を排他的にダウンロードしてから、javaへのパスを提供するように要求する以外にないようです。

4

3 に答える 3

1

root パスワードを Java アプリケーションに保存することは、非常に恐ろしいことであり、良いことでも悪いことでもありません。別の sudo 構成 (したがって、どのアカウントからのパスワードも必要ありません)、SUID バイナリ ラッパー、または同様のものを使用するなど、この問題に別の方法でアプローチすることをお勧めします。

于 2012-11-14T21:27:26.097 に答える
0

「すべてのフォーム」に「bash -c 'echo password | sudo -S'」が含まれていましたか?

于 2012-11-14T21:18:39.387 に答える
0

Process取得したオブジェクトを使用して、プロセスの標準出力、入力、およびエラーに接続された入力、出力、およびエラー ストリームにアクセスできます。

このようにして、子プロセスに入力を送信し、その出力を読み返すことができます。

于 2012-11-14T21:29:35.777 に答える