Как говорит @SLaks, сценарий будет запущен как тот же пользователь, который запустил JVM в первую очередь.
Сводка:
- виртуальная машина запускается в рамках процесса;
- этот процесс имеет множество данных, унаследованных от его родителя, по которому пользователь, который его запустил;
- Стандартный Java API не имеет возможности модифицировать пользователя;
- , даже если у него была такая мощность, изменение работы пользователя в любом случае потребует повышенных привилегий.
Итак, вот вы: процесс «раздвоения» будет работать с теми же учетными данными, что и JVM.
Теперь еще немного информации о запуске отдельного процесса в целом ...
В Java, вы действительно хотите использовать ProcessBuilder
вместо Runtime.exec()
, по следующим причинам:
- позволяет управлять выходом ввода/вывода;
- он позволяет указать аргументы командной строки «правильный путь» (подумайте: аргумент с пробелами);
- это позволяет отсрочить исполнение (
.start()
).
Но это явно не позволяет осуществлять мелкомасштабный контроль общих ресурсов и модификаций привилегий, как это делают собственные API. Тем не менее, ProcessBuilder
лучше, чем Runtime.exec()
с большим отрывом, но Java еще не испытала радикальных изменений в обработке процессов, поскольку новый java.nio.file
составляет File
: революция.
* 'владелец chrootuid' * не имеет к этому никакого отношения. Он должен работать как * newuser *, поставленный в * chrootuid. * – EJP