在Java 中以超級使用者權限執行Bash 指令
在Java 中使用ProcessBuilder 執行bash 指令時,使用者可能會遇到需要執行以下命令的情況:具有sudo 權限的root。為了實現這一點,有多種選項可用。
一種方法是使用「gksudo」命令,該命令在早期版本的 Ubuntu 中可用。然而,隨著 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>
此程式碼片段有兩個重要面向:
雖然此解決方案提供了一種執行命令的方法sudo權限,需要強調的是要謹慎使用。開發人員應該探索更符合最佳安全實踐的替代機制。
以上是如何在 Java 中使用 Sudo 權限執行 Bash 指令的詳細內容。更多資訊請關注PHP中文網其他相關文章!