Java でスーパーユーザー権限を使用して Bash コマンドを実行する
Java の ProcessBuilder で bash コマンドを実行する場合、ユーザーは次のようにコマンドを実行する必要がある場合があります。 sudo 権限を持つ root。これを実現するには、さまざまなオプションを使用できます。
1 つの方法には、以前のバージョンの Ubuntu で使用できた「gksudo」コマンドを使用する方法があります。ただし、Ubuntu 13.04 のリリースにより、このコマンドは削除されました。その結果、代替アプローチが必要になります。
Runtime.exec() の利用
堅牢なアプローチは、Runtime.exec() メソッドを利用することです。文字列の配列をコマンドとして渡すことにより、ユーザーは実行するコマンドと必要な引数を指定できます。これを実証するには、次のコードを考えてみましょう:
<code class="java">import java.io.IOException; import java.io.BufferedReader; import java.io.InputStreamReader; public class Main { public static void main(String[] args) throws IOException { String[] cmd = {"/bin/bash", "-c", "echo password| sudo -S ls"}; Process pb = Runtime.getRuntime().exec(cmd); String line; BufferedReader input = new BufferedReader(new InputStreamReader(pb.getInputStream())); while ((line = input.readLine()) != null) { System.out.println(line); } input.close(); } }</code>
このコード スニペットには 2 つの重要な側面があります:
このソリューションは、次のコマンドを使用してコマンドを実行する手段を提供します。 sudo 権限を使用する場合は、注意して使用する必要があることを強調することが重要です。開発者は、セキュリティのベストプラクティスとより調和する代替メカニズムを検討する必要があります。
以上がJava で Sudo 権限を使用して Bash コマンドを実行する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。