miércoles, agosto 03, 2011

Directorios de usuario en Tomcat

Los conozco desde hace ya tiempo, pero nunca tuve la necesidad de usarlos. Estoy hablando de una funcionalidad que los servidores web tienen y consiste en hacer "visible", a través de un navegador Web, el contenido de un directorio de usuario del sistema.

Esta configuración se hace a nivel del elemento host del fichero server.xml, por lo que la configuración aplica para todo el servidor. En este fichero se añade una de las siguientes configuraciones:


<Listener className="org.apache.catalina.startup.UserConfig"
    directoryName="public_html"
    userClass="org.apache.catalina.startup.PasswdUserDatabase" />

El atributo className debería ser org.apache.catalina.startup.UserConfig y el atributo userClass, una de las clases que Tomcat tiene de asignación.

Si usamos un sistema Linux y se dispone de un archivo estándar /etc/passwd legible por la cuenta que ejecuta Tomcat, y ese archivo especifíca el directorio de inicio del usuario, se puede utilizar la clase PasswdUserDatabase.

Se puede cambiar el nombre del directorio (atributo directoryName) por cualquier otro, pero entonces el nombre del directorio debe ser el mismo para todos los usuarios dentro del mismo servidor.

También podemos establecer un directorio base del que colgarán el resto de directorios de usuario. Esto es muy útil para entornos que usan sistemas operativos Windows (donde seguramente colgarán de c:\home):


<Listener className="org.apache.catalina.startup.UserConfig"
    directoryName="public_html"
    homeBase="/home"
    serClass="org.apache.catalina.startup.HomesUserDatabase" />

Una vez arrancado el servidor, deberíamos poder acceder al directorio de los usuarios definidos en el sistema a través de la url:

http://nombre_servidor/~nombre_usuario

Más información en el libro Tomcat 6.0 La guía definitiva.

No hay comentarios: