Saltar la navegación

Directiva Require

Esta directiva sirve para que Apache pueda permitir o denegar el acceso a determinados recursos en función de varios requisitos. Se usa junto con las directivas contenedoras <Directory> y <Files>.

Directiva Require

Sintaxis: Require [not] condición

Contexto: directory, .htaccess

Esta directiva puede aplicarse sola o puede necesitar otras según los casos, que iremos viendo.

Algunos casos de uso son los siguientes:

  • Require all granted: Se permite el acceso al recurso.
  • Require all denied: Se deniega el acceso al recurso.
  • Require user usuario... : Solo se permite el acceso al recurso a los usuarios especificados.
  • Require group grupo... : Solo se permite el acceso al recurso a los grupos especificados.
  • Require valid-user: Solo se permite el acceso al recurso si el usuario es válido.
  • Require ip dirección-IP... : Solo se permite el acceso al recurso si la petición proviene de la dirección IP especificada. Se permiten varias notaciones, entre ellas la notación CIDR para indicar un rango.

Otra posibilidad interesante de autorización de un recurso es a través de la evaluación expresiones de Apache, sobre las cuales podemos obtener información aquí. La sintaxis sería:

  • Require expr expresión

En las expresiones se pueden utilizar variables, que se pueden consultar en la documentación, expandiendo su valor con así: %{VARIABLE}. Por ejemplo, tenemos la fecha y hora actual del servidor en las variables: TIME_YEAR, TIME_MON, TIME_DAY, TIME_HOUR, TIME_MIN, TIME_SEC, TIME_WDAY y TIME, podríamos utilizarlas para establecer la autorización de un recurso solo si la petición se hace en horario de mañana:

Require expr %{TIME_HOUR} -gt 8 && %{TIME_HOUR} -lt 15

Las directivas Require pueden agruparse en las directivas contenedoras <RequireAll>,<RequireAny> y <RequireNone>.

Directiva <RequireAll>

Sintaxis: <RequireAll> ... </RequireAll>

Contexto: directory, .htaccess

Esta directiva se utiliza para exigir que se tienen que cumplir todas las directivas Require que contiene. No puede contener solo Require not.

Directiva <RequireAny>

Sintaxis: <RequireAny> ... </RequireAny>

Contexto: directory, .htaccess

Esta directiva se utiliza para exigir que se tiene que cumplir al menos una de las directivas Require que contiene. Si se ponen varias Require sin ningún contenedor, por defecto, es como si estuvieran dentro de <RequireAny>. No puede contener Require not.

Directiva <RequireNone>

Sintaxis: <RequireNone> ... </RequireNone>

Contexto: directory, .htaccess

Esta directiva se utiliza para exigir que no se cumplan ninguna de las directivas Require que contiene. No puede contener Require not.

El siguiente ejemplo permite acceder al directorio a los usuarios de los grupos asir y daw, pero no a los del grupo sri que pertenecen también a asir y/o daw.

<Directory /var/www/mdc/informacion>
<RequireAll>
Require group asir daw
Require not group sri
</RequireAll>
</Directory>