Запустите ProcessBuilder под другим пользователем в Linux
Мне нужно запустить другое приложение Java в системе Debian, но мне нужно запустить его под другим пользователем. Основное Java-приложение работает под root. Теперь я использую это, чтобы запустить другое приложение Java, но мне нужно запустить все это как другой пользователь, это как-то возможно?
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();
Благодарю.
1 ответ
Решение
Решено:
ProcessBuilder processBuilder = new ProcessBuilder(new String[] { "su", "-
s", "/bin/sh", "myuser", "-c", "java -jar myjar.jar" });,
Process p = processBuilder.start();
Этот код запустит приложение "myjar.jar" под пользователем "myuser". Вы можете подтвердить это с помощью команды unix "top" и увидеть введенный пользователем список процессов.