Я пишу серверную программу на Java, которая позволит пользователям отправлять задания с использованием DRMAA.Хотя основной процесс сервера выполняется как root
, все, что он делает, - это аутентифицирует пользователя, затем запускает другую программу Java, которая запускается от имени этого пользователя и фактически выполняет эту работу, чтобы соответствовать принципу минимизации привилегий.Первоначально я делал это с Runtime.exec()
и sudo
(пример ниже), который работает нормально до тех пор, пока процесс не будет демонтирован, и в этот момент sudo
расстраивается, потому что у него нет терминала.
String[] command = {"sudo", "-i", "-u", username, java, theOtherJavaProgram};
Runtime.getRuntime().exec(command, null, getHomeDirectory(username));
Каков наилучший способ использовать этот шаблон привилегий «отбрасывать и отбрасывать» в Java при работе в качестве демона?Есть ли способ?Я собираюсь разобраться с C и научиться создавать JVM с JNI?