Запустите 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();

Спасибо.


person Welite    schedule 19.12.2014    source источник
comment
возможный дубликат Выполнение команд UNIX от имени другого пользователя из Java   -  person Kenster    schedule 20.12.2014
comment
Я хотел бы решить это без использования сторонних программ.   -  person Welite    schedule 20.12.2014
comment
@Welite, ты смог сделать это без использования сторонних программ?   -  person HyperioN    schedule 12.07.2017


Ответы (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» и увидеть введенный список пользовательских процессов.

person Welite    schedule 10.08.2017
comment
Это решение зависит от системы. - person Jezor; 18.07.2020