Java で Sudo 権限を使用して Bash コマンドを実行する
bash コマンドを使用する場合、次のように特定のコマンドを実行する必要がある状況が発生することがあります。スーパーユーザー。 Java の ProcessBuilder クラスは、bash コマンドを実行する便利な方法を提供しますが、デフォルトではスーパーユーザー権限を渡すことはできません。
ProcessBuilder を使用して sudo 権限でコマンドを実行するには、次のアプローチを採用できます (注意してください)セキュリティへの影響):
<br>import java.io.*;</p> <p>public class Main {</p> <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">public static void main(String[] args) throws IOException { // Prepare the command with "sudo" and the desired command String[] cmd = {"/bin/bash", "-c", "echo password| sudo -S ls"}; // Execute the command using Runtime.getRuntime().exec() Process pb = Runtime.getRuntime().exec(cmd); // Process the output and print the result BufferedReader input = new BufferedReader(new InputStreamReader(pb.getInputStream())); String line; while ((line = input.readLine()) != null) { System.out.println(line); } input.close(); }
}
pre>
このアプローチでは、「sudo」コマンドを「-S」オプションと一緒に使用し、標準入力経由でパスワードを入力できるようにします。次に、パスワードは「ls」コマンドにパイプされ、昇格された特権で実行されます。
注: この方法では、コマンド ラインからパスワードを入力する必要があるため、潜在的なセキュリティ リスクが発生します。 。必要な場合にのみ、注意して使用してください。状況によっては、専用のコマンドライン ツールや sudo をサポートする Java ライブラリを使用するなどの代替アプローチの方が適切な場合があります。
以上がJava で Sudo 権限を使用して Bash コマンドを実行するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。