|
Apache: Uso de .htaccess .htpasswd para crear acceso a documentos web - Indexación
Habremos visto muchas veces URLs (sitios web) que al acceder muestran una serie de ficheros y carpetas, como si de un navegador de archivos se tratara, pero vía web. Esta forma de mostrar los datos en un servidor web con Apache es muy sencilla y es la que explicamos en este artículo. Este método se denomina indexación (indexing). Contenido del artículoUn ejemplo sencillo de fichero .htaccess Un ejemplo de fichero .htaccess con descripciones Carpeta con acceso sólo para usuarios autenticados (usuario y contraseña) con .htaccess Restringir acceso a un determinado fichero con .htaccess Conclusión del uso del fichero .htaccess Introducción.htaccess es un archivo de texto plano, oculto, que contiene una serie de directivas para el servidor Apache. Cuando un cliente solicita un archivo al servidor, este busca desde el directorio raíz hasta el subdirectorio que contiene el archivo solicitado el archivo .htaccess y tiene en cuenta estas reglas antes de proceder con la petición, es decir, se aplican las normas especificadas al directorio en el que se encuentre .htaccess y los directorios por debajo de él. Lo que vamos a explicar sólo servirá para servidores web con Apache. Su utilidad es bastante interesante, por ejemplo, para crear un directorio con ficheros para descarga directa, dando acceso a estos ficheros sólo a determinados usuarios. También servirá para mostrar el contenido de una carpeta y dejarlo disponible para todos los usuarios (público), para que puedan realizar descargas directas El listado del que hablamos quedará de esta forma, una vez configurado el fichero .htaccess correctamente:
El usuario de nuestro sitio web podrá pulsar en cualquiera de los ficheros de la carpeta pública y descargarlo. También se podrán crear subdirectorios y el usuario podrá navegar en ellos como si de un explorador de ficheros se tratara. El fichero .htaccess se puede utilizar para muchas otras cosas, por ejemplo para hacer un redirección o para impedir que se "vea" el contenido de una carpeta de nuestro sitio web (cuando no tiene fichero de índice index.html, o index.php). Un ejemplo sencillo de fichero .htaccessEn el fichero .htaccess podremos indicar todas las opciones de configuración que deseemos para el directorio que queramos hacer público o privado. Para ello crearemos un fichero con este nombre .htaccess (incluyendo el punto del principio). Este fichero es de texto plano, por lo que se podrá crear con el bloc de notas o cualquier otro editor de texto plano (sin formato). En nuestro caso, puesto que tenemos nuestro servidor web Apache alojado en Linux, abriremos una ventana de terminal y utilizaremos el editor vi para crear el fichero .htaccess: En nuestro caso, accederemos a la carpeta raíz de nuestro sitio web: cd /apache/web/www Para crear el directorio (siempre dentro de nuestro directorio raíz del sitio web): mkdir publico Accederemos a este directorio: cd publico Con el editor vi, crearemos el fichero .htaccess: vi .htaccess Escribiremos el contenido del fichero .htaccess:
Para hacer público el contenido de la carpeta "publico" de nuestro sitio web, permitiendo que cualquier usuario pueda navegar y descargar los ficheros que contenga, introduciremos el siguiente contenido:
Donde:
Es imporntante mencionar que con el contenido anterior del fichero .htaccess, el contenido de la carpeta será visible para todos los usuarios, que podrán ver y descargar el contenido de todos los ficheros de la carpeta y subcarpetas que esta contenga. También es importante que el fichero .htaccess tenga los permisos "644" (-rw-r--r--): el propietario, el usuario administrador tendrá permisos de lectura y escritura, el grupo tendrá permisos de lectura y el resto de los usuarios tendrán permisos de lectura. Para establecer estos permisos ejecutaremos el siguiente comando: chmod 644 /apache/web/www/publico/.htaccess Copiaremos o crearemos en esta carpeta los ficheros que queramos que sean públicos en nuestro sitio web para todos los usuarios. En nuestro caso hemos copiado los ficheros aa.zip, aaaf_cf.zip, abd_cf.zip. Lo que habremos conseguido con esto es que si el usuario introduce en su navegador web la dirección de nuestro sitio web, seguida de "/publico": http://www.ajpdsoft.com/publico Aparecerá algo así: Si intentásemos acceder a la carpeta "publico" sin haber puesto el fichero .htaccess correctamente mostrará esta ventana de error:
Un ejemplo de fichero .htaccess con descripcionesCon el ejemplo anterior sólo mostramos el contenido de una carpeta, ahora vamos a añadir descripciones para cada fichero, para facilitar al usuario la información mostrada. Lo que pretendemos es que en la columna "Description" del ejemplo anterior aparezca una descripción por cada fichero. Para ello volveremos a editar el fichero .htaccess y le añadiremos las siguientes líneas:
El resultado quedará de la siguiente forma, así el usuario sabrá qué contiene cada fichero:
Nota: si tuviésemos una subcarpeta dentro de "publico" con ficheros también podríamos utilizar el parámetro "AddDescription" del fichero .htaccess anterior (ubicado en "publico") para añadir la descripción a los ficheros de la subcarpeta.
Carpeta con acceso sólo para usuarios autenticados (usuario y contraseña) con .htaccessAhora complicaremos un poco más la configuración de nuestro servidor Apache con .htaccess. Supongamos que queremos que sólo dos usuarios puedan acceder a una determinada carpeta de nuestro servidor. Además, para acceder deberán introducir nombre de usuario y contraseña. Esto es posible gracias al fichero .htaccess y a un segundo fichero donde guardaremos los usuarios y contraseñas. En primer lugar deberemos crear el fichero que contendrá los usuarios y contraseñas encriptadas. Este ficheros es muy importante que esté situado siempre un nivel inferior a la carpeta raíz de nuestro sitio web. De esta forma conseguiremos que no sea público y accesible desde fuera, impidiendo que algún usuario pudiera abrirlo y obtener los usuarios y las contraseñas. Para evitar esto guardaremos el fichero, en nuestro caso, en: /apache/web/contra_priv (una carpeta inferior a la carpeta de nuestra web /apache/web/www) Para crear este fichero utilizaremos el comando Linux htpasswd, para ello accederemos a /apache/web/contra_priv con cd /apache/web/contra_priv Y ejecutaremos el comando: htpasswd -c fichero_pwd alonso (donde "alonso" será el nombre del usuario que creará el comando htpasswd y fichero_pwd será el nombre del fichero creado) Nos pedirá la contraseña para el usuario especificado, que deberemos introducir dos veces. A continuación os mostramos la ventana de terminal con los comandos a ejecutar para crear el fichero con los usuarios y contraseñas, también el contenido del fichero fichero_pwd creado:
Con el texto :
Como se puede observar, el comando htpasswd, genera el fichero y encripta las contraseñas. Una vez creado el fichero de contraseñas crearemos la carpeta que haremos privada. Para ello, como siempre, lo crearemos dentro de la carpeta raíz de nuestro servidor web, en nuestro caso: cd /apache/web/www A continuación crearemos el directorio que será privado, con el comando: mkdir privado Seguidamente crearemos el fichero .htaccess, con el comando: vi .htaccess Con el contenido:
Donde:
De esta forma, cuando un usuario intente acceder a nuestra carpeta privada: http://www.ajpdsoft.com/privado Nos mostrará una ventana de autenticación, para introducir usuario y contraseña:
Si introducimos el usuario y la contraseña correctos nos mostrará el contenido del directorio "privado":
En caso de no introducir usuario y contraseña correctos el servidor Apache mostrará una página de error con el texto:
Restringir acceso a un determinado fichero con .htaccessOs explicamos a continuación cómo restringir el acceso a un determinado fichero de una carpeta de nuestro sitio web. Sólo introduciendo usuario y contraseña se podrá descargar el fichero indicado. Para ello, como siempre, crearemos el fichero .htaccess (o modificaremos el existente) de la carpeta que contenga el fichero a proteger, añadiremos las siguientes líneas:
Con lo anterior indicaremos a Apache que para acceder al fichero "fichero_protegido.zip" será necesario introducir el usuario "alonso" y su correspondiente contraseña. Los datos del usuario y contraseña, como se ha explicado anteriormente, estarán alojados en el fichero indicado en la directiva AuthUserFile.
Conclusión del uso del fichero .htaccessComo podemos observar el uso del fichero .htaccess puede ser muy útil para determinadas circunstancias. Con el uso de este fichero evitaremos tener que dar permisos a las carpetas utilizando el propio sistema operativo. De hecho, cuando tenemos nuestra página web alojada en un servidor externo (hosting), lo normal es que no tengamos acceso a modificar los permisos de las carpetas, por ello el uso de este fichero nos puede servir para "simular" estos permisos. Y, además, como ya hemos dicho en este manual, .htaccess no sólo sirve para indexar determinadas carpetas, también se puede utilizar para otros acciones. Por ejemplo, podemos hacer que cuando un usuario acceda a una URL de nuestro sitio web sea redireccionado a otra, colocando un fichero .htaccess con el siguiente contenido: Redirect permanent carpeta_actual nueva_URL Por ejemplo: Redirect permanent /alonso http://www.ajpdsoft.com Con esta directiva colocada en el fichero .htaccess, cuando un usuario acceda a nuestro_dominio/alonso, Apache redireccionará automáticamente a la URL www.ajpdsoft.com, de forma instantánea y totalmente transparente al usuario.
ANEXO
AllowOverride All
Anuncios
Enviado el Martes, 10 junio a las 01:34:59 por ajpdsoft
|
|