Java에서 Sudo 권한으로 Bash 명령 실행
ProcessBuilder는 bash 명령을 실행하는 편리한 방법을 제공합니다. 그러나 슈퍼유저 권한이 필요한 명령을 실행하려고 하면 충분하지 않을 수 있습니다. 이 기사에서는 Java를 사용하여 bash 명령에 수퍼유저 비밀번호를 효과적으로 전달하는 방법을 살펴봅니다.
제공된 코드 조각에서는 sudo 권한을 사용하여 "gedit" 명령을 실행하는 것이 목적입니다. "gksudo"를 사용하는 접근 방식은 지원 중단으로 인해 실현 가능하지 않을 수 있지만 대체 솔루션이 제시됩니다.
제안 접근 방식 소개
참고: 이 접근 방식은 보안 문제로 인해 프로덕션 용도로 권장됩니다.
제안된 솔루션에는 Runtime.getRuntime().exec()를 사용하여 일련의 명령을 실행하는 것이 포함됩니다.
샘플 코드
<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>
사용 및 주의 사항
이 접근 방식에서는 다음을 가정합니다. 제공된 "비밀번호"는 올바른 sudo 비밀번호입니다. 잠재적인 보안 위험으로 인해 이 기술을 사용할 때는 주의를 기울여야 합니다. 비밀번호를 일반 텍스트로 저장하지 말고 민감한 작업을 위한 대체 솔루션을 고려하세요.
위 내용은 ProcessBuilder 제한에도 불구하고 Java에서 Sudo 권한으로 Bash 명령을 실행하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!