OPCIONES DE CONFIGURACIÓN 2 Sistemas de ficheros Las secciones de configuración usadas con más frecuencia son las que cambian la configuración de áreas del sistema de ficheros. Secciones relacionadas con el sistema de ficheros Las secciones <Directory> y <Files>, junto con sus contrapartes que usan expresiones regulares, aplican sus directivas a áreas del sistema de ficheros. Las directivas incluidas en una sección <Directory> se aplican al directorio del sistema de ficheros especificado y a sus subdirectorios. El mismo resultado puede obtenerse usando ficheros .htaccess. Por ejemplo, en la siguiente configuración, se activarán los índices de directorio para el directorio /var/web/dir1 y sus subdirectorios. < Directory /var/web/dir1> Options +Indexes < /Directory> Las directivas incluidas en una sección <Files> se aplicarán a cualquier fichero cuyo nombre se especifique, sin tener en cuenta en que directorio se encuentra. Por ejemplo, las siguientes directivas de configuración, cuando se colocan en la sección principal del fichero de configuración, deniegan el acceso a cualquier fichero llamado private.html sin tener en cuenta de donde se encuentre. < Files private.html> Order allow,deny Deny from all < /Files> Para referirse a archivos que se encuentren en un determinado lugar del sistema de ficheros, se pueden combinar las secciones <Files> y <Directory>. Por ejemplo, la siguiente configuración denegará el acceso a/var/web/dir1/private.html,/var/web/dir1/subdir2/private.html,/var/web/dir1/subdir3/priva te.html, y cualquier otra aparición de private.html que se encuentre en/var/web/dir1/ o cualquiera de sus subdirectorios. < Directory /var/web/dir1> < Files private.html> Order allow,deny Deny from all < /Files> < /Directory> Caracteres comodín y expresiones regulares Las secciones <Directory> y <Files> pueden usar caracteres comodín del tipo fnmatch de la librería estándar de C. El carácter "*" equivale a cualquier secuencia de caracteres, "?" equivale a cualquier carácter individual, y "[seq]" equivale a cualquier carácter en seq. Ningún carácter comodín equivale a"/", que debe siempre especificarse explícitamente. Si necesita un sistema de equivalencias más flexible, cada sección tiene una contraparte que acepta expresiones regulares compatibles con Perl: <DirectoryMatch> y. Consulte la sección sobre la fusión de secciones de configuración para ver la forma en que las secciones expresiones regulares cambian el modo en que se aplican las directivas. Abajo se muestra un ejemplo en el que una sección de configuración que usa caracteres comodín en lugar de una expresión regular modifica la configuración de todos los directorios de usuario: < Directory /home/*/public_html> Options Indexes < /Directory> Usando expresiones regulares, podemos denegar el acceso a muchos tipos ficheros de imágenes de una sola vez: < FilesMatch \.(gif|jpe?g|png)$> Order allow,deny Deny from all < /FilesMatch> Options Descripción: Configura las funcionalidades disponibles en un directorio en particular Sintaxis: Options [+|-]option [[+|-]option] ... Valor por defecto: Options All Contexto: server config, virtual host, directory, .htaccess Prevalece sobre: Options Estado: Core Módulo: core La directiva Options controla qué funcionalidades del servidor están disponibles en un directorio en particular. En option puede especificar None, en cuyo caso ninguna funcionalidad adicional estará activada, o puede especificar una o más de las siguientes opciones: All Todas las opciones excepto MultiViews. Este es el valor por defecto. Indexes Si se produce una petición a una URL que se corresponde con un directorio, y no hay DirectoryIndex (por ejemplo, index.html) en ese directorio, entonces mod_autoindex devolverá una lista con los contenidos del directorio Indexes – Personalización de los Directorios de Apache IndexOptions Estas directivas las podemos aplicar a nivel general o a nivel de Directorios. Los modificadores de esta directiva se pueden agrupar todos dentro de la misma línea o bien se pueden ir agregando uno por línea, para que el fichero quede más claro y legible y para que sea más fácil jugar (comentar/descomentar) las diferentes opciones. La primera opción en nombrar es, precisamente, la que permite activar otras opciones más avanzadas de los listados de directorios. Se llama FancyIndexing y, si está desactivada, el listado de archivos se presenta en forma de lista simple (tal y como se puede ver en la imagen del primer ejemplo). La siguiente que vamos a presentar es FoldersFirst y, como su nombre indica, independientemente del orden que escoja el usuario (las columnas nombre, última modificación, tamaño, etc), siempre aparecerán primero los directorios y después los ficheros. Otra opción relacionada con la ordenación es IgnoreCase. Si está activada, mayúsculas y minúsculas no importarán a la hora de ordenar los archivos. Adicionalmente, también vamos a añadir la opción VersionSort para que, en el caso de mostrar varios ficheros con mismo nombre pero versión diferente, se ordenen perfectamente de acuerdo a la versión y no al orden ASCII: la versión 1.12 iría después de la 1.9, por ejemplo. IconsAreLinks permite que los iconos asociados a cada fichero también sean un enlace a dicho archivo. Como las imágenes suelen ser zonas muy apetecibles para el ratón, dejaremos esta opción activada. Para nuestro ejemplo, vamos a activar la opción SuppressDescription, para no mostrar la descripción de los tipos de archivo en el listado. Aunque en un entorno real, es una funcionalidad que puede ser interesante si se listan tipos de fichero poco usuales. IndexOptions FancyIndexing IndexOptions FoldersFirst IndexOptions IgnoreCase IndexOptions VersionSort IndexOptions IconsAreLinks IndexOptions SuppressDescription Salida XHTML Antes hemos dicho que del módulo autoindex sólo queríamos que generara los listados de archivos, porque el resto de la salida la personalizaríamos nosotros. La directiva HeaderName sirve para indicar el fichero que se antepondrá al listado de mod_autoindex. Y la directiva ReadmeName, para indicar el archivo que se añadirá al final de listado generado. De esta forma, y con ayuda de la opción SuppressHTMLPreamble, tendremos control total sobre el HTML que enviaremos al navegador desde el servidor web. Si se quisieran diferentes contenidos de cabecera y pie para cada directorio a mostrar, es posible hacerlo indicando una ruta relativa a los ficheros en estas directivas. Sin embargo, para este ejemplo, vamos a usar una ruta absoluta, que debe estar (esta sí) dentro del directorio de publicación de Apache. ReadmeName "/pie.html" HeaderName "/encabezado.html" IndexIgnore Para acabar con la configuración de este ejemplo, conviene nombrar la directiva IndexIgnore. Sirve para ocultar del listado automático ciertos archivos. Por ejemplo, para evitar que se muestren las copias de seguridad (ficheros acabados en ~ en los sistemas Linux), los propios archivos usados para cabecera y pie de los listados, etcétera. IndexIgnore .??* *~ *# HEADER* README* RCS CVS *,v *,t *.shtml Allow - Deny La autentificación por nombre de usuario y contraseña es sólo parte del cuento. Frecuentemente se desea permitir el acceso a los usuarios basandose en algo más que quiénes son. Algo como de dónde vienen. Las directivas Allow y Deny posibilitan permitir y rechazar el acceso dependiendo del nombre o la dirección de la máquina que solicita un documento. La directiva Order va de la mano con estas dos, y le dice a Apache en qué orden aplicar los filtros. El uso de estas directivas es: Allow from address donde address es una dirección IP (o una dirección IP parcial) o un nombre de dominio completamente cualificado (o un nombre de dominio parcial); puede proporcionar múltiples direcciones o nombres de dominio, si lo desea. Por ejemplo, si usted tiene a alguien que manda mensajes no deseados a su foro, y quiere que no vuelva a acceder, podría hacer lo siguiente: Deny from 205.252.46.165 Los visitantes que vengan de esa dirección no podrán ver el contenido afectado por esta directiva. Si, por el contrario, usted tiene un nombre de máquina pero no una dirección IP, también puede usarlo. Deny from host.example.com Y, si le gustaría bloquear el acceso de un dominio entero, puede especificar sólo parte de una dirección o nombre de dominio: Deny from 192.101.205 Deny from cyberthugs.com moreidiots.com Deny from ke Usar Order le permitirá estar seguro de que efectivamente está restringiendo el acceso al grupo al que quiere permitir el acceso, combinando una directiva Deny y una Allow: Order deny,allow Deny from all Allow from dev.example.com Usando sólo la directiva Allow no haría lo que desea, porque le permitiría entrar a la gente proveniente de esa máquina, y adicionalmente a cualquier persona. Lo que usted quiere es dejar entrar sólo aquellos.