Fork y suelte privilegios con Java

Estoy escribiendo un programa de servidor en Java que permitirá a los usuarios enviar trabajos utilizando DRMAA. Aunque el proceso del servidor principal se ejecuta comoroot, todo lo que hace es autenticar al usuario, luego inicia otro programa Java que se ejecuta como ese usuario y que realmente hace el trabajo para cumplir con el principio de minimizar los privilegios. Inicialmente, estaba haciendo esto conRuntime.exec() ysudo (ejemplo a continuación) que funciona bien hasta que se damonice el proceso, momento en el quesudo se molesta porque no tiene una terminal.

String[] command = {"sudo", "-i", "-u", username, java, theOtherJavaProgram};
Runtime.getRuntime().exec(command, null, getHomeDirectory(username));

¿Cuál es la mejor manera de hacer este patrón de privilegios de fork y drop en Java cuando se ejecuta como daemon? ¿Hay alguna manera? ¿Voy a tener que romper la C y aprender a crear JVM con JNI?

Respuestas a la pregunta(3)

Su respuesta a la pregunta