Página siguiente Página anterior Índice general

3. Configuración del servidor LDAP

Cuando el software se haya compilado e instalado, ya puede configurarlo para utilizarlo en su servidor. Toda la configuración en tiempo de ejecución de slapd se realiza mediante el fichero slapd.conf, que se instala en el directorio que haya especificado en --prefix en el guión de configuración, o bien, si no especificó ninguno, en /usr/local/etc/openldap de forma predeterminada.

En este directorio hallará asimismo los ficheros slapd.oc.conf y slapd.at.conf que se incluyen en el fichero slad.conf (véase la opción include en la sección 3.2) y que incluyen, respectivamente, las definiciones de clases de objetos (objectclasses) y atributos para la base de datos de segundo plano de LDAP (backend). Lo que sigue es una descripción del formato general del fichero de configuración, y continuaremos con una descripción detallada de cada opción del fichero de configuración.

3.1 Formato del fichero de configuración

El fichero slapd.conf está compuesto por una serie de opciones globales de configuración que afectan a slapd en su conjunto (incluyendo todas las bases de datos de segundo plano o backends), seguido por cero o más definiciones de backends, las cuales contienen información específica de una instancia de backend.

Las opciones globales de configuración pueden anularse en un backend determinado (para opciones que aparecen más de una vez, se usa la última aparición en el fichero de configuración slapd.conf). Se ignoran las líneas en blanco y las líneas de comentario que comienzan por el carácter de «#». Si una línea comienza por un espacio en blanco, se considera una continuación de la línea anterior. El formato general del fichero slapd.conf es el siguiente:

     # comentario - estas opciones se aplican a cualquier base de datos
     <opciones de configuración globales> 
     # definición de la base de datos y opciones de configuración
     database <backend tipo 1>
     <opciones de configuración específicas del backend tipo 1> 
     #definición de la segunda base de datos y opciones de configuración
     database <backend tipo 2>
     <opciones de configuración específicas del backend tipo 2> 
     # definiciones subsiguientes de bases de datos y opciones de configuración 
     ... 

Los argumentos de la línea de configuración están separados por espacios en blanco. Si un argumento contiene espacios en blanco, el argumento debe encerrarse entre comillas dobles "de esta manera". Si un argumento contiene unas dobles comillas o una barra invertida `\', el carácter ha de ir precedido de una barra invertida `\', (p. ej. `\\d').

La distribución de OpenLDAP contiene un fichero de configuración de ejemplo que se instalará en el directorio de configuración especificado en --prefix. También se proporcionan un slapd.at.conf, que contiene muchas definiciones de atributos utilizadas a menudo, y slapd.oc.conf, que contiene muchas definiciones de clases usadas con frecuencia.

3.2 Opciones globales

Las opciones que se describen en esta sección se aplican a todos los backends, a menos que se sobreescriban o anulen específicamente en la definición de un backend concreto. Los argumentos de opción que han de sustituirse por texto de verdad se muestran entre signos de «mayor que» y «menor que» <>.

access to <algo> [ by <quién> <niveldeacceso> ]+

Esta opción concede acceso (especificado en <niveldeacceso>) a una serie de entradas o atributos (especificados por <algo>) para uno o más peticionarios (especificados en <quién>). Véanse los ejemplos de control de acceso para más detalles.

attribute <nombre> [<nombre2>] { bin | ces | cis | tel | dn }

Esta opción asocia a una sintaxis con un nombre de atributo. Por defecto se supone que un atributo tiene sintaxis «cis». Se le puede proporcionar a un atributo un nombre alternativo opcional. Las posibles reglas de sintaxis y su significado son éstas:

defaultaccess { none | compare | search | read | write }

Esta opción especifica el acceso por defecto que se concederá a los solicitantes que no coincidan con ninguna otra línea de acceso (véanse los ejemplos de control de acceso más abajo). Nótese que un nivel de acceso implica en sí también los niveles de acceso inferiores a él. Por ejemplo, el acceso a escritura implica el acceso a lectura, el acceso a búsqueda y el acceso a comparación.

Valor predeterminado: defaultaccess read

include <nombrefichero>

Esta opción ordena a slapd que lea información adicional de configuración desde el fichero especificado, antes de continuar con la línea siguiente del fichero actual. El fichero que se especifica ha de seguir el formato normal de configuración de slapd. Utilice esta opción para incluir ficheros que contengan las clases de objetos (objectclass) y definiciones de atributo (attribute definitions) de su base de datos de segundo plano o backend. El paquete de software de LDAP viene con los ficheros slapd.oc.conf y slapd.at.conf.

Nota: Tenga cuidado al utilizar esta opción. No hay límite mínimo en el número de opciones include anidadas, ni tampoco se hace una detección de anidamiento para el caso de bucles sin fin.

loglevel <numeroentero>

Esta opción especifica el nivel de detalle con el que el sistema debe registrar en un archivo de registro (syslog) las informaciones de depuración y las estadísticas de funcionamiento (en este caso se registran mediante el servicio LOCAL4 de syslogd(8). Para que esta característica esté habilitada, es necesario haber compilado slapd con la opción de compilación -DLDAP_DEBUG, excepto para los dos niveles de estadísticas, que están siempre habilitados. Los niveles de registro son acumulativos. Para visualizar qué números corresponden a cada tipo de depuración, ejecute slapd con la opción -? o consulte la tabla de más abajo. Los valores posibles para <numeroentero> son:

Ejemplo: loglevel 255 hará que grandes cantidades de información vayan a un archivo de registro a través de syslog.

Valor predeterminado: loglevel 256

objectclass <nombre>

objectclass <nombre>
[ requires <atributos> ] 
[ allows <atributos> ]

Esta opción define las reglas de estructura o esquema para la clase de objetos (objectclass) especificada. Se usa junto con la opción schemacheck.

referral <url>

Esta opción especifica la autoridad en la que basarse cuando slapd no pueda hallar una base de datos local para gestionar una petición.

Ejemplo: referral ldap://ldap.itd.umich.edu

Esto remitirá las consultas no locales al servidor LDAP de la Universidad de Michigan. Algunos clientes LDAP con capacidades inteligentes podrán redirigir su consulta a dicho servidor, pero tenga en cuanta que la mayoría de esos clientes no gestionarán URLs sencillas de LDAP que contengan una parte de nombre de máquina y, como opción, una parte de nombre distintivo (dn).

schemacheck { on | off }

Esta opción activa (on) o desactiva (off) la verificación de estructura. Si la verificación de estructura está activada, se comprobarán las entradas que se añadan o modifiquen, con el fin de garantizar que obedecen a las reglas de estructura o esquema que implica la clase de objetos (objectclass) a la que pertenecen, tal y como las definen las correspondientes opciones de la clase de objetos correspondiente. Si la verificación de estructura está desactivada (off), esta verificación no se realiza.

Valor predeterminado: schemacheck off

sizelimit <numeroentero>

Esta opción especifica el número máximo de entradas que hay que devolver de una operación de búsqueda.

Valor predeterminado: sizelimit 500

srvtab <nombrefichero>

Esta opción especifica el fichero srvtab en el que slapd puede encontrar las claves kerberos necesarias para autentificar a los clientes que usen kerberos. Esto opción es significativa únicamente si Usted utiliza autentificación por kerberos, que ha de activarse en el momento de la compilación incluyendo las definiciones apropiadas en el fichero Make-common.

Valor predeterminado: srvtab /etc/srvtab

timelimit <numeroentero>

Esta opción especifica el número máximo de segundos (en tiempo real) que slapd pasará contestando una petición de búsqueda. Si pasado ese tiempo no se ha contestado una petición, se devolverá un resultado que indicará exceeding time, «tiempo sobrepasado».

Valor predeterminado: timelimit 3600

3.3 Opciones generales del backend

Las opciones de esta sección sólo se aplican al backend en el que estén definidas. Estas opciones están soportadas para todos los tipos de backend.

database <tipobasededatos>

Esta opción marca el comienzo de la definición de una nueva instancia de base de datos. <tipobasededatos> debe ser una de las siguientes: ldbm, shell, o passwd dependiendo del backend sobre el que servirá la base de datos.

Ejemplo: database ldbm marca el comienzo de la definición de una nueva instancia de una base de datos con backend LDBM.

lastmod { on | off }

Esta opción controla si slapd mantendrá automáticamente para cada entrada los atributos modifiersName, modifyTimestamp, creatorsName y createTimestamp.

Valor predeterminado: lastmod off

readonly { on | off }

Esta opción pone a la base de datos en modo «sólo lectura». Cualquier intento de modificar la base de datos devolverá un error de "unwilling to perform" («no se llevará a cabo la operación»).

Valor predeterminado: readonly off

replica host=<nombredemaquina>[:<puerto>]

replica host=<nombredemaquina>[:<puerto>]
"binddn=<DN>" 
bindmethod={ simple | kerberos } 
[credentials=<contraseña>] 
[srvtab=<nombrefichero>]

Esta opción especifica una dirección para la duplicación o réplica esta base de datos. El parámetro host= especifica en qué máquina (y opcionalmente, en qué puerto) puede encontrarse la instancia del slapd esclavo. para <nombremáquina> puede usarse lo mismo un nombre que una dirección IP. Si no se proporciona el parámetro <puerto> se usará el puerto estándar de LDAP, el 389.

El parámetro binddn proporciona el DN al que se vinculará el slapd esclavo para sus actualizaciones. Ha de tratarse de un DN que tenga acceso de lectura y escritura a la base de datos del esclavo, que normalmente aparece como rootdn en el fichero de configuración del esclavo. También tiene que coincidir con la opción updatedn en el fichero de configuración del slapd esclavo. Puesto que los DN son proclives a contener espacios incrustados, la cadena completa "binddn=<DN>" ha de estar encerrada entre comillas.

bindmethod puede ser o bien simple o bien kerberos, dependiendo de si se usa autentificación sencilla basada en contraseñas o bien kerberos cuando se conecte con el slapd esclavo. La autentificación sencilla precisa que se proporcione una contraseña válida. La autentificación mediante kerberos precisa de un fichero srvtab válido.

El parámetro credentials=, que sólo se precisa si se usa autentificación sencilla, proporciona la contraseña para binddn en el slapd esclavo.

El parámetro srvtab=, que sólo se precisa si se usa autentificación mediante kerberos, especifica el nombre de fichero que aloja la llave kerberos para el slapd esclavo. Si se omite, se utiliza el fichero /etc/srvtab.

replogfile <nombrefichero>

Esta opción especifica el nombre del fichero de registro de duplicación (registro de réplica) en el cual slapd registrará los cambios. El registro de duplicación generalmente lo escribe slapd y lo lee slurpd. Esta opción normalmente sólo tiene efecto si se usa slurpd para duplicar la base de datos. Sin embargo, puede utilizarla también para generar un registro de transacciones, si slurpd no se está ejecutando. En este caso, necesitará truncar periódicamente el fichero, pues de otra manera crecería indefinidamente.

rootdn <dn>

Esta opción identifica al DN de una entrada no sujeta a control de acceso o a restricciones en los permisos de administración para las operaciones en esta base de datos.

Ejemplo: rootdn "cn=Manager, o=U of M, c=US"

rootkrbname <nombrekerberos>

Esta opción especifica un nombre kerberos que funcionará en todos los casos para el DN dado anteriormente, con independencia de que exista una entrada con el DN especificado o de que tenga el atributo krbName. Esta opción es útil al crear una base de datos y también cuando se utilice slurpd para proporcionar servicios de duplicación (servicios de réplica).

Ejemplo: rootkrbname admin@umich.edu

rootpw <password>

Esta opción especifica una contraseña, que funcionará en todos los casos, para el DN dado anteriormente, con independencia de que el DN en cuestión exista o ya tenga contraseña. Esta opción es útil al crear una base de datos y también cuando se utilice slurpd para proporcionar servicios de duplicación (servicios de réplica). Evite tener una contraseña de texto sencillo acompañando a esta opción. Proporcione una contraseña cifrada (puede usar una entrada del fichero de Unix /etc/passwd/). slapd soporta también otros métodos de cifrado.

Ejemplos: rootpw secret rootpw {crypto}contraseña_cifrada_va_aquí

suffix <dn sufijo>

Esta opción especifica el sufijo DN de consultas que se le pasará a la base de datos de backend. Pueden proporcionarse múltiples líneas de sufijo, y se requiere al menos una para cada definición de base de datos.

Ejemplo: suffix "o=University of Michigan, c=US"

Las consultas que tengan un DN terminado en "o=University of Michigan, c=US" se le pasarán a este backend de base de datos.

Nota: cuando se selecciona el backend al que hay que pasarle la consulta, slapd examina la línea o líneas de sufijo en cada definición de base de datos en el orden en que aparecen en el fichero. De esta manera, si el sufijo de una base de datos es el prefijo de otra, dicho sufijo debe aparecer después que el prefijo en el fichero de configuración.

updatedn <dn>

Esta opción sólo se aplica a un slapd esclavo. Especifica el DN al que se le permite hacer cambios en la duplicación. Generalmente se trata del DN al que slurpd se vincula cuando hace cambios a la duplicación o réplica.

3.4 Opciones específicas del backend LDBM

Las opciones de esta categoría sólo se aplican a la base de datos de backend LDBM. Es decir, tienen que ir después de una línea "database ldbm" y antes de otra línea de "database".

cachesize <numeroentero>

Esta opción especifica a instancia de la base de datos de backend LDBM el número de entradas en la memoria caché interna que ha de mantener.

Valor predeterminado: cachesize 1000

dbcachesize <numeroentero>

Esta opción especifica el tamaño en bytes de la memoria caché interna asociada con cada fichero de índice abierto. En caso de no estar soportada por el método de base de datos subyacente, esta opción se ignora sin mayores avisos. El incremento de este número utilizará más memoria, pero también causará un aumento espectacular del rendimiento, especialmente durante las modificaciones o a la hora de construir los índices.

Valor predeterminado: dbcachesize 100000

directory <directorio>

Esta opción especifica el directorio donde residen los ficheros LDBM que contienen la base de datos y sus ficheros asociados.

Valor predeterminado: directory usr/tmp /

index {<listadeatributos> | default} [pres,eq,approx,sub,none]

Esta opción especifica qué índices hay que mantener para un atributo especificado. Si se proporciona únicamente una <listadeatributos> se mantendrán todos los índices posibles.

Ejemplos: index cn index sn,uid eq,sub,approx index default none

Este ejemplo hará que se dé mantenimiento a todos los índices para el atributo cn: que se mantengan índices de igualdad, subcadenas y cadenas aproximadas en el caso de los atributos sn y uid; y que no se mantengan índices para todos los demás atributos.

mode <numeroentero>

Esta opción especifica qué permisos de ficheros (modo de protección) debe tener el índice de la base de datos recién creada.

Valor predeterminado: mode 0600

3.5 Access Control Examples

La característica de control de acceso presentada en la sección 3.2 es bastante potente. En esta sección se muestran varios ejemplos de su uso. Primeramente, algunos ejemplos sencillos:

access to * by * read 

Esta directiva de acceso concede acceso de lectura a todo el mundo. Si aparece en solitario tiene el mismo efecto que la siguiente línea de defaultaccess:

defaultaccess read 

El siguiente ejemplo muestra el uso de una expresión regular para seleccionar las entradas por DN en dos directivas de acceso en las que el orden es significativo.

access to dn=".*, o=U of M, c=US" 
by * search 
access to dn=".*, c=US" 
by * read 

El acceso en modo lectura se concede a las entradas que están bajo el sub-árbol "o=University of Michigan, c=US", al que se permite el acceso en modo lectura. Si su hubiera invertido el orden de las directivas de acceso, la directiva específica de la Universidad de Michigan nunca hubiera coincidido, puesto que todas las entradas de la U. de M. son también entradas de c=US.

El próximo ejemplo vuelve a mostrar la importancia del orden, tanto en lo que se refiere a las directivas de acceso como a las cláusulas "by". También muestra el uso de un selector de atributos para conceder acceso a un atributo específico y a varios selectores <quién> (<who>).

access to dn=".*, o=U of M, c=US" attr=homePhone 
by self write 
by dn=".*, o=U of M, c=US" search 
by domain=.*\.umich\.edu read 
by * compare 
access to dn=".*, o=U of M, c=US" 
by self write 
by dn=".*, o=U of M, c=US" search 
by * none 

Este ejemplo se aplica a las entradas en el sub-árbol "o=U of M, c=US". Para todos los atributos excepto homePhone, la propia entrada tiene puede escribirlos, otras entradas de "U of M" pueden buscar por ellas, y nadie más tiene acceso. La entrada tiene permisos de escritura sobre el atributo homePhone, permisos de búsqueda para otras entradas de la "U of M", permisos de lectura para otros clientes que conecten desde algún lugar del dominio umich.edu, y permisos de comparación para el resto del mundo.

A veces es útil permitir que un DN particular se añada o elimine a sí mismo de un atributo. Por ejemplo, si se desea crear un grupo y permitir que los usuarios lo añadan y eliminen de su atributo member en su propio DN, puede lograrse con una directiva de acceso como la siguiente:

access to attr=member,entry 
by dnattr=member selfwrite 

El selector dnattr <quién> nos dice que el acceso se aplica a entradas listadas en el atributo member. El selector selfwrite access especifica que tales miembros sólo pueden añadir o eliminar del atributo su propio DN y no otros valores. El añadido del atributo entry es necesario, ya que se requiere el access de la entrada para acceder a alguno de los atributos de esa entrada.

Observe que la construcción attr=member en la cláusula <qué> es un atajo para la cláusula "dn=* attr=member" (es decir, que coincide con el atributo member en todas las entradas).


Página siguiente Página anterior Índice general