Heim >Java >javaLernprogramm >Wie führe ich Bash-Befehle mit Sudo-Berechtigungen in Java trotz ProcessBuilder-Einschränkungen aus?
Ausführen von Bash-Befehlen mit Sudo-Berechtigungen in Java
ProcessBuilder bietet eine praktische Methode zum Ausführen von Bash-Befehlen. Wenn Sie jedoch versuchen, Befehle auszuführen, die Superuser-Rechte erfordern, reicht dies möglicherweise nicht aus. In diesem Artikel wird erläutert, wie Sie mithilfe von Java effektiv ein Superuser-Passwort an Bash-Befehle übergeben.
Im bereitgestellten Code-Snippet besteht die Absicht darin, den Befehl „gedit“ mit sudo-Berechtigungen auszuführen. Obwohl der Ansatz mit „gksudo“ aufgrund seiner veralteten Funktion möglicherweise nicht durchführbar ist, wird eine alternative Lösung vorgestellt.
Vorstellung des vorgeschlagenen Ansatzes
Hinweis: Dieser Ansatz ist nicht möglich Aus Sicherheitsgründen für den Produktionseinsatz empfohlen.
Die vorgeschlagene Lösung beinhaltet die Ausführung einer Reihe von Befehlen mit Runtime.getRuntime().exec():
Beispielcode
<code class="java">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>
Verwendung und Vorsichtshinweise
Dieser Ansatz geht davon aus Das angegebene „Passwort“ ist das korrekte Sudo-Passwort. Aufgrund möglicher Sicherheitsrisiken ist bei der Verwendung dieser Technik unbedingt Vorsicht geboten. Vermeiden Sie das Speichern von Passwörtern im Klartext und ziehen Sie alternative Lösungen für sensible Vorgänge in Betracht.
Das obige ist der detaillierte Inhalt vonWie führe ich Bash-Befehle mit Sudo-Berechtigungen in Java trotz ProcessBuilder-Einschränkungen aus?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!