La llamada al sistema subyacente que necesita es setuid(2)
, pero no está expuesta por ninguna de las API de Java.
No es difícil escribir un envoltorio de JNI que daría acceso a él sin embargo, aunque incluso entonces que había necesidad de encontrar un lugar adecuado en el código de inicio de Tomcat para invocar setuid
después de los bind(2)
llamadas se han hecho (los que están siendo los que normalmente requieren los privilegios de root).
Según lo recomendado por geocar puede usar authbind
para que Tomcat nunca tenga que ejecutar como root.
Alternativamente, como presumiblemente tiene acceso de root en el servidor en cuestión, simplemente ejecute Tomcat en un puerto no privilegiado y luego use trucos iptables
para reenviar las solicitudes entrantes desde el puerto privilegiado al que Tomcat está realmente escuchando en. Consulte this SO post para obtener información sobre cómo hacer esto.
probablemente porque quiere escuchar en un puerto privilegiado (<1024)! – Alnitak