La finalidad principal de este documento es permitirle configurar y utilizar un Servidor de directorio LDAP (Protocolo Ligero de Acceso a Directorios) en su máquina Linux. Aprenderá cómo instalar, configurar, ejecutar y mantener el servidor LDAP. Después, aprenderá también cómo almacenar, recuperar y actualizar información en su Directorio, utilizando las utilidades y clientes LDAP. El demonio o programa servidor para el directorio LDAP se llama slapd y puede ejecutarse sobre muchas plataformas UNIX diferentes.
Hay otro demonio o programa servidor que se encarga de la replicación
entre servidores. Su nombre es slurpd
y por el momento no
necesitará preocuparse de él. En este documento, ejecutaremos un
slapd que proporciona servicio de directorio para su dominio
local únicamente, es decir, sin slurpd.
He aquí una configuración sencilla del servidor, válida para empezar, pero fácil también de actualizar a una configuración distinta más adelante, si lo desea. La información que se presenta en este documento representa una buena forma de iniciarse en el uso del protocolo LDAP. Es probable que tras la lectura del documento se sienta con fuerzas para ampliar las capacidades de su servidor, e incluso con ganas de escribir sus propios clientes, usando los entornos de desarrollo ya existentes para C, C++ y Java.
LDAP (``Lightweight Directory Access Protocol'', «Protocolo Ligero de Acceso a Directorios») es un protocolo de tipo cliente-servidor para acceder a un servicio de directorio. Se usó inicialmente como un front-end o interfaz final para X.500, pero también puede usarse con servidores de directorio únicos y con otros tipos de servidores de directorio.
Un directorio es como una base de datos, pero en general contiene información más descriptiva y más basada en atributos. La información contenida en un directorio normalmente es lee mucho más de lo que se escribe. Como consecuencia los directorios no implementan normalmente los complicados esquemas para transacciones o esquemas de reducción (rollback) que las bases de datos utilizan para llevar a cabo actualizaciones complejas de grandes volúmenes de datos. Por contra, las actualizaciones en un directorio son usualmente cambios sencillos de «todo o nada», si es que se permiten en algo.
Los directorios están afinados para proporcionar una repuesta rápida a operaciones de búsqueda o consulta. Pueden tener la capacidad de replicar información de forma amplia, con el fin de aumentar la disponibilidad y la fiabilidad, y a la vez reducir el tiempo de respuesta. Cuando se duplica (o se replica) la información del directorio, pueden aceptarse inconsistencias temporales entre la información que hay en las réplicas, siempre que finalmente exista una sincronización.
Existen muchas maneras distintas de proporcionar un servicio de
directorio. Los diferentes métodos permiten almacenar en el directorio
diferentes tipos de información, establecer requisitos diferentes para
hacer referencias a la información, consultarla y actualizarla,
la forma en que protege al directorio de accesos no autorizados, etc.
Algunos servicios de directorio son locales, proporcionando servicios
a un contexto restringido (por ejemplo, el servicio de finger
en una
única máquina). Otros servicios son globales, proporcionando servicio
en un contexto mucho más amplio.
El servicio de directorio LDAP se basa en un modelo cliente-servidor. Uno o más servidores LDAP contienen los datos que conforman el árbol del directorio LDAP o base de datos troncal. el cliente ldap se conecta con el servidor LDAP y le hace una consulta. El servidor contesta con la respuesta correspondiente, o bien con una indicación de dónde puede el cliente hallar más información (normalmente otro servidor LDAP). No importa con qué servidor LDAP se conecte el cliente: siempre observará la misma vista del directorio; el nombre que se le presenta a un servidor LDAP hace referencia a la misma entrada a la que haría referencia en otro servidor LDAP. Es ésta una característica importante de un servicio de directorios universal como LDAP.
slapd se suministra con tres diferentes bases de datos de backend (dorsal, o base de datos de segundo plano) entre las que elegir. Se trata de LDBM, una base de datos de gran rendimiento basada en disco: SHELL, una interfaz de base de datos para órdenes arbitrarias de UNIX o guiones (scripts) del intérprete de órdenes (shell); y PASSWD, una sencilla base de datos de contraseñas.
En el desarrollo de este documento, se da por supuesto que ha elegido la base de datos LDBM.
La base de datos LDBM funciona asignando un identificador compacto de
cuatro bytes, único para cada entrada de la base de datos. La base de
datos utiliza este identificador para hacer referencia a entradas en
los índices. La base de datos está compuesta de un fichero índice
principal, llamado id2entry
, que mapea el identificador único de una
entrada en la representación en texto de esa misma entrada. También se
da mantenimiento a otros ficheros índice.
Para importar y exportar información de directorio entre servidores de directorios basados en LDAP, o para describir una serie de cambios que han de aplicarse al directorio, se usa en general del fichero de formato conocido como LDIF (siglas de "LDAP interchange format", «formato de intercambio de LDAP»). Un fichero LDIF almacena información en jerarquías de entradas orientadas a objeto. El paquete de software LDAP que va a utilizar incluye una utilidad para convertir ficheros LDIF a formato LDBM.
Un fichero LDIF corriente tiene este aspecto:
dn: o=Insflug, c=ES
o: Insflug
objectclass: organization
dn: cn=Luiz Malere, o=Insflug, c=ES
cn: Luiz Malere
sn: Malere
mail: malere@yahoo.com
objectclass: person
Como puede comprobar, cada entrada está identificada unívocamente por
un nombre distintivo (DN
, "distinguished name"). El DN
(nombre distintivo) está compuesto por el nombre de la entrada en
cuestión, más la ruta de nombres que permiten rastrear la entrada
hacia atrás hasta la parte superior de la jerarquía del directorio.
En LDAP, una clase de objetos define la colección de atributos que pueden usarse para definir una entrada. El estándar LDAP proporciona estos tipos básicos para las clases de objetos:
Una entrada determinada puede pertenecer a más de una clase de
objetos. Por ejemplo, la entrada para personas se define mediante la
clase de objetos person
, pero también puede definirse mediante
atributos en las clases de objetos inetOrgPerson
,
groupOfNames
y organization
. La estructura de clases de
objetos del servidor (su esquema) determina la lista total de
atributos requeridos y permitidos para una entrada concreta.
Los datos del directorio se representan mediante pares de atributo y su valor. Cualquier pieza de información específica se asocia con un atributo descriptivo.
Por ejemplo el atributo commonName
, o cn
(«nombre de pila»), se
usa para almacenar el nombre de una persona. Puede representarse en el
directorio a una persona llamada Jonás Saqueiro mediante
cn: Jonás Saqueiro
Cada persona que se introduzca en el directorio se define mediante la colección de atributos que hay en la clase de objetos person. Otros atributos que se usan para definir esta entrada serán:
givenname: Jonás
surname: Saqueiro
mail: jonass@midominio.com
Los atributos requeridos son aquellos que deben estar presentes en las
entradas que utilicen la clase de objetos. Todas las entradas precisan
del atributo objectClass
, que lista las clases de objeto a las que
pertenece una entrada.
Los atributos permitidos son aquellos que pueden estar presentes en
las entradas que utilicen la clase de objetos. Por ejemplo, en la
clase de objetos person
, se requieren los atributos cn
y
sn
. Los atributos description
(«descripción»),
telephoneNumber
(«número de teléfono»), seeAlso
(«véase
también»), y userpassword
(«contraseña del usuario») se permiten
pero no se requieren.
Cada atributo tiene la definición de sintaxis que le corresponde. La definición de sintaxis describe el tipo de información que proporciona ese atributo:
bin
binarioces
cadena con mayúsculas y minúsculas exactas (las mayúsculas y
minúsculas son significativas durante las comparaciones)cis
cadena con mayúsculas y minúsculas ignoradas (las mayúsculas
y minúsculas no son significativas durante las comparaciones)tel
cadena de número de teléfono (como cis
, pero durante las
comparaciones se ignoran los espacios en blanco y los guiones "-")dn
"distinguished name" («nombre distintivo»)
Para conocer en qué lugar de su sistema se emplazan las definiciones de clases de objetos y de atributos, véase el primer párrafo de la sección 3.
Este documento puede experimentar actualizaciones y correcciones en razón de la respuesta que suscite entre sus lectores. Por favor busque nuevas versiones del original inglés en:
http://www.ddtc.dimes.tudelft.nl/~malere/LDAP-Linux-HOWTO.html
(y nuevas versiones de la traducción castellana de este Cómo en http://www.insflug.org/, N. del T.)
Si tiene alguna duda sobre cualquier información disponible en este documento, por favor contacte con nosotros en la siguiente dirección de correo electrónico:
Si tiene algún comentario o sugerencia, no dude en comunicármelo.
Este Cómo es el resultado de unas prácticas que hemos realizado en la universidad de TUDelft, en Holanda. Queremos dar las gracias a las personas que nos animaron a escribir este documento: Rene van Leuken y Wim Tiwon. Muchísimas gracias. También ellos son entusiastas del Linux como nosotros.
El LDAP-Linux-Cómo es Copyright 1999 de Luiz Ernesto Pinheiro Malere. Puede redistribuirse libremente. No puede modificarse. Si tiene cualquier tipo de sugerencia, por favor envíeme un correo electrónico (actualizaré el documento si la sugerencia es adecuada).
Si desea una traducción, por ejemplo al Portugués, puede enviarme también un correo sobre el particular.
No liability for the contents of this document can be accepted. I have no responsability about the consequences of following the Steps provided in this document.
Si tiene preguntas, por favor contacte con el coordinador de Linux HOWTO en