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.
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.
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» <>.
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.
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:
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
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.
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> [ 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.
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
).
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
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
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
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
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.
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.
Esta opción controla si slapd mantendrá automáticamente para cada
entrada los atributos modifiersName
, modifyTimestamp
,
creatorsName
y createTimestamp
.
Valor predeterminado: lastmod 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>] "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
.
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.
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"
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
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í
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.
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.
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"
.
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
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
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 /
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.
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
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).