Java에서 수퍼유저 권한으로 Bash 명령 실행
Java에서 ProcessBuilder를 사용하여 bash 명령을 실행할 때 사용자는 다음과 같이 명령을 실행해야 할 수도 있습니다. sudo 권한이 있는 루트. 이를 달성하기 위해 다양한 옵션을 사용할 수 있습니다.
한 가지 방법은 이전 버전의 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>
이 코드 조각에는 두 가지 중요한 측면이 있습니다.
이 솔루션은 다음을 사용하여 명령을 실행하는 수단을 제공합니다. sudo 권한을 사용하려면 주의해서 사용해야 한다는 점을 강조하는 것이 중요합니다. 개발자는 최상의 보안 관행에 더욱 부합하는 대체 메커니즘을 모색해야 합니다.
위 내용은 Java에서 Sudo 권한을 사용하여 Bash 명령을 실행하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!