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.

Esta entrada fue publicada en Software. Guarda el enlace permanente.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *