Ejecute Tomcat7 como usuario de Tomcat7 (o cualquier otro)

Ejecute Tomcat7 como usuario de Tomcat7 (o cualquier otro)

¿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.shy tomcat7-instance/bin/shutdown.shagregar '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 tomcat7paquete estándar apt-gete iniciarlo usando:

sudo service tomcat7 start

El usuario y el grupo predeterminados están configurados /etc/default/tomcat7como 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:

  1. 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.
  2. Cambiar el usuario y grupo en el archivo./etc/default/tomcat7

  3. Debe cambiar la propiedad de la carpeta /var/log/tomcat7y 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

  4. Cambiar la propiedad de la carpeta/var/lib/tomcat7/webapps

    sudo chown -R newuser:newgroup /var/lib/tomcat7/webapps

  5. 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

  6. Cambiar la propiedad de la carpeta de trabajo

    sudo chown newuser:adm /var/cache/tomcat7

    sudo chown -R newuser:newgroup /var/cache/tomcat7/Catalina

  7. 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/*

  8. 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.

  9. 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/tomcat8la 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.

información relacionada