¿Cuál será la forma recomendada de garantizar que una instancia de Tomcat7 se ejecute como usuario de Tomcat7 (o cualquier otro)?
Supongo que puedo modificar tomcat7-instance/bin/startup.sh
y tomcat7-instance/bin/shutdown.sh
agregar 'su tomcat7' en la parte superior.
En Tomcat6 creo que era la variable de entorno TOMCAT6_USER
.
Respuesta1
La forma más común es instalar el tomcat7
paquete estándar apt-get
e iniciarlo usando:
sudo service tomcat7 start
El usuario y el grupo predeterminados están configurados /etc/default/tomcat7
como puede ver en este extracto:
# Run Tomcat as this user ID. Not setting this or leaving it blank will use the
# default of tomcat7.
TOMCAT7_USER=tomcat7
# Run Tomcat as this group ID. Not setting this or leaving it blank will use
# the default of tomcat7.
TOMCAT7_GROUP=tomcat7
Respuesta2
EDITAR: ¡Lea los comentarios a continuación! Es posible que esta solución no sea aplicable a todas las situaciones.
La respuesta aceptada es excelente, pero desde que ejecuté Tomcat 7 en Ubuntu 14.04, tuve que hacer algunas cosas adicionales para que todo funcionara:
- Debe detener el servicio Tomcat antes de editar el archivo
/etc/default/tomcat7
. Una vez que cambie el usuario y el grupo, ya no será posible detener un servicio utilizando el usuario anterior. Cambiar el usuario y grupo en el archivo.
/etc/default/tomcat7
Debe cambiar la propiedad de la carpeta
/var/log/tomcat7
y de todos sus archivos. Tenga en cuenta que es una ventaja mantener el grupo adm para que todos los usuarios adm puedan leer los registros.sudo chown -R newuser:adm /var/log/tomcat7
Cambiar la propiedad de la carpeta
/var/lib/tomcat7/webapps
sudo chown -R newuser:newgroup /var/lib/tomcat7/webapps
Si se ejecuta en el puerto 80/443 en Ubuntu 14.04, debe cambiar la propiedad de los archivos de autenticación:
sudo chown newuser /etc/authbind/byport/80
sudo chown newuser /etc/authbind/byport/443
Cambiar la propiedad de la carpeta de trabajo
sudo chown newuser:adm /var/cache/tomcat7
sudo chown -R newuser:newgroup /var/cache/tomcat7/Catalina
Haga que los archivos de configuración sean legibles. Aquí tiene dos opciones: agregue su nuevo usuario al grupo tomcat7 de la siguiente manera:
sudo usermod -a -G tomcat7 newuser
...o cambiar la propiedad de los archivos de configuración:
sudo chown -R :newgroup /var/lib/tomcat7/conf/*
Si tiene otros archivos a los que acceden sus aplicaciones web, como archivos de configuración de archivos de registro, etc., también debe cambiar la propiedad de esos archivos.
- Ahora todo debería estar listo para reactivar el servicio con el nuevo usuario.
EDITAR 2: Después de actualizar a Tomcat 8 y Ubuntu 18.04, apareció otro problema al ejecutar Tomcat como un usuario diferente. En el script, /etc/init.d/tomcat8
la siguiente línea parece alterar la carpeta de inicio del usuario de Tomcat, pero el resultado no es el deseado si está utilizando un usuario diferente.
usermod --home /var/lib/tomcat8 $TOMCAT8_USER > /dev/null 2>&1 || true
Al eliminar o comentar esta línea, puede evitar que se modifique la carpeta de inicio para el nuevo usuario de Tomcat.