ホームページ  >  記事  >  Java  >  Java で Sudo 権限を使用して Bash コマンドを実行するにはどうすればよいですか?

Java で Sudo 権限を使用して Bash コマンドを実行するにはどうすればよいですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-10-25 00:49:30905ブラウズ

How to Execute Bash Commands with Sudo Privileges in Java?

Java で Sudo 権限を使用して Bash コマンドを実行する

bash コマンドを使用する場合、次のように特定のコマンドを実行する必要がある状況が発生することがあります。スーパーユーザー。 Java の ProcessBuilder クラスは、bash コマンドを実行する便利な方法を提供しますが、デフォルトではスーパーユーザー権限を渡すことはできません。

ProcessBuilder を使用して sudo 権限でコマンドを実行するには、次のアプローチを採用できます (注意してください)セキュリティへの影響):

<br>import java.io.*;</p>
<p>public class Main {</p>
<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();
}

}

このアプローチでは、「sudo」コマンドを「-S」オプションと一緒に使用し、標準入力経由でパスワードを入力できるようにします。次に、パスワードは「ls」コマンドにパイプされ、昇格された特権で実行されます。

注: この方法では、コマンド ラインからパスワードを入力する必要があるため、潜在的なセキュリティ リスクが発生します。 。必要な場合にのみ、注意して使用してください。状況によっては、専用のコマンドライン ツールや sudo をサポートする Java ライブラリを使用するなどの代替アプローチの方が適切な場合があります。

以上がJava で Sudo 権限を使用して Bash コマンドを実行するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。