2014-12-19 2 views
1

데비안 시스템에서 다른 Java 응용 프로그램을 실행해야하지만 다른 사용자로 실행해야합니다. 기본 Java 응용 프로그램은 루트 아래에서 실행 중입니다. 이제 다른 Java 응용 프로그램을 시작하는 데이 도구를 사용하고 있지만이 모든 것을 다른 사용자로 실행해야합니다. 어떻게 든 가능합니까?Linux의 다른 사용자로 ProcessBuilder 실행

 ProcessBuilder processBuilder = new ProcessBuilder(new String[]{"java", "-Xms256M", "-Xmx" + DataManager.getMaxMemory(server) + "M", "-XX:MaxPermSize=256M", "-jar", "/home/apps/jar/" + DataManager.getJar(server), "nogui"}); 
     File folder = new File("/home/apps/servers/" + server + "/"); 
     processBuilder.directory(folder); 
     Process p = processBuilder.start(); 

감사합니다.

+0

가능한 [Java에서 다른 사용자로 실행중인 UNIX 명령] (http://stackoverflow.com/questions/1012792/running-unix-commands-as-different-user-from-java) – Kenster

+0

가능한 복제본 타사 프로그램을 사용하지 않고도 문제를 해결할 수 있습니다. – Welite

+0

@Welite는 타사 프로그램을 사용하지 않고도 할 수있었습니다. – HyperioN

답변

0

는 해결 :

ProcessBuilder processBuilder = new ProcessBuilder(new String[] { "su", "- 
s", "/bin/sh", "myuser", "-c", "java -jar myjar.jar" });, 
Process p = processBuilder.start(); 

이 코드는 시작 사용자 "참고 MyUser"에서 "myjar.jar"응용 프로그램 것입니다. unix 명령 "top"을 사용하여이를 확인하고 입력 된 사용자 프로세스 목록을 볼 수 있습니다.

관련 문제