Apache: Servir ficheros a usuarios mediante autenticación básica

Hola compañeros de la shell,

En esta entrada vamos a revisar las modificaciones que requiere un servidor apache recién instalado para ser capaces de servir ficheros bajo directorios definidos en el fichero de configuración conf/httpd.conf

La versión Apache que hemos utilizado es la 2.4.41.

Antes de nada, siempre es recomendable leer la documentación que ofrece Apache:

https://httpd.apache.org/docs/2.4/configuring.html

Como se indica en la documentación, es importante destacar que, en caso de que quisiéramos usar variables de entorno en las directivas de configuración, podremos hacerlo mediante la sintaxis:

${VAR}

Antes de arrancar httpd, procedermos a generar el usuario y las credenciales de autenticación que utilizará apache para servir el contenido del directorio que deseamos compartir:

htpasswd -bc /tmp/httpd-2.4.41/htpasswd_prueba prueba passprueba

En caso de error al ejecutar el comando htpasswd revisar el apéndice al final de la entrada.

La ejecución de este comando generará un fichero htpasswd_prueba en la ruta /tmp/httpd-2.4.41 que contendrá el usuario prueba y la password passprueba encriptada:

cat htpasswd_prueba
prueba:$dofur1$cCODrM38$yCQlbdtAHv8M/T3zKdhR81

A continuación indicamos las directivas a modificar en el fichero conf/httpd.conf para permitir el acceso al usuario prueba al directorio /tmp/httpd-2.4.41/prueba:

ServerRoot "/tmp/httpd-2.4.41"

Listen HOST_EN_QUE_TENEMOS_APACHE:PUERTO_LIBRE

ServerName HOST_EN_QUE_TENEMOS_APACHE

DocumentRoot "/tmp/httpd-2.4.41/htdocs"
<Directory "/tmp/httpd-2.4.41/htdocs">

# Directorio a compartir con el usuario prueba

<Directory /tmp/httpd-2.4.41/prueba/>
    Options +Indexes +FollowSymLinks
    IndexOptions +FancyIndexing +HTMLTable +SuppressDescription +NameWidth=*
    IndexOrderDefault Descending Date
    AllowOverride Limit
    #Autenticacion usuario prueba
    AuthName "Usuario prueba"
    AuthType Basic
    AuthUserFile /tmp/httpd-2.4.41/htpasswd_prueba
    Require valid-user
</Directory>

Una vez realizadas las modificaciones en conf/httpd.conf (siempre que se realicen cambios en el fichero de configuración es necesario reiniciar los servicios httpd), arrancamos apache mediante:

httpd -k start -f /tmp/httpd-2.4.41/conf/httpd.conf

En caso de error al ejecutar el comando httpd revisar el apéndice al final de la entrada.

Finalmente, para comprobar que tenemos acceso al directorio /tmp/httpd-2.4.41/prueba pegaremos en nuestro navegador la URL (siendo HOST_EN_QUE_TENEMOS_APACHE:PUERTO_LIBRE los definidos anteriormente en el fichero conf/httpd.conf)

http://HOST_EN_QUE_TENEMOS_APACHE:PUERTO_LIBRE/prueba/

Una vez realizado este paso, nuestro navegador nos mostrará la ventana en la que nos solicitarán usuario y password para poder acceder al contenido del directorio /tmp/prueba

Apéndice:

Puede darse el caso de que al ejecutar httpd o htpasswd nos encontremos errores del tipo:

httpd -k stop -f /tmp/httpd-2.4.41/httpd.conf
httpd: error while loading shared libraries: libpcre.so.0: cannot open shared object file: No such file or directory


En estos casos, el origen del problema se encuentra en que hay librerías de apache que no están incluidas en la variable LD_LIBRARY_PATH.

Para solucionar este tipo de problemas es necesario añadir los paths que contienen estas librerías, sea incluyendo las rutas en el .profile del usuario o mediante un script intermedio a modo de wrapper que las añada antes de ejecutar el comando deseado. A modo de ejemplo:

APACHE_BINS=/tmp/httpd-2.4.41/bin
APACHE_LIBS=/tmp/httpd-2.4.41/lib

PATH=$APACHE_BINS:$PATH
LD_LIBRARY_PATH=$APACHE_LIBS:$LD_LIBRARY_PATH
export PATH LD_LIBRARY_PATH

Espero que os sirva.

Nos vemos al otro lado de la pantalla negra.

Publicado en Software | Deja un comentario