Instalar y Configurar LDAP en Ubuntu Lucid 10.04

Ya en Ubuntu 9.10, en alguna actualización, se modifico la forma de configurar (de nuevo) LDAP. Volvemos al pasado y substituimos el método gráfico que tanto me gustó de la 9.04, por añadir ldifs y schemas. No hay que preocuparse… es igualmente muy sencillo de configurar, aunque para los no iniciados les supone un calvario al principio… lo lamento por ellos 🙂
Bueno, al tema, abrimos terminal, y como sudo:
# aptitude install slapd ldap-utils

Añadimos los siguientes schemas para que cargue todo bien, sino nos dará problemas al cargar el primer ldif. Temas de configuración…
# ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/cosine.ldif
# ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/nis.ldif
# ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/inetorgperson.ldif

Creamos el primer ldif (que no es más que un archivo de configuración de tipo LDAP con la configuración de nuestro dominio). Lo llamaremos config.ldif y contendrá lo siguiente:

# Load dynamic backend modules
dn: cn=module,cn=config
objectClass: olcModuleList
cn: module
olcModulepath: /usr/lib/ldap
olcModuleload: back_hdb
# Database settings
dn: olcDatabase=hdb,cn=config
objectClass: olcDatabaseConfig
objectClass: olcHdbConfig
olcDatabase: {1}hdb
olcSuffix: dc=exemple,dc=com
olcDbDirectory: /var/lib/ldap
olcRootDN: cn=admin,dc=exemple,dc=com
olcRootPW: Password
olcDbConfig: set_cachesize 0 2097152 0
olcDbConfig: set_lk_max_objects 1500
olcDbConfig: set_lk_max_locks 1500
olcDbConfig: set_lk_max_lockers 1500
olcDbIndex: objectClass eq
olcLastMod: TRUE
olcDbCheckpoint: 512 30
olcAccess: to attrs=userPassword by dn="cn=admin,dc=exemple,dc=com" write by anonymous auth by self write by * none
olcAccess: to attrs=shadowLastChange by self write by * read
olcAccess: to dn.base="" by * read
olcAccess: to * by dn="cn=admin,dc=exemple,dc=com" write by * read

Lo importante de este archivo es la parte correspondiente al dominio (dc=exemple,dc=com) donde podréis poner lo que vosotros queráis. La parte de la base de datos (puede ser hdb/bdb), el password del usuario root de nuestro dominio LDAP (olcRootPW) y bueno, el resto de opciones, si tenéis curiosidad, consultar la documentación oficial de OpenLDAP.

Añadimos el archivo config.ldap al directorio:

# ldapadd -Y EXTERNAL -H ldapi:/// -f config.ldif
Creamos un segundo archivo ldif, que llamaremos root.ldif, donde contendremos la estructura del árbol LDAP. Su contenido es el siguiente:

# dc=example
dn: dc=example,dc=com
objectClass: organization
objectClass: top
objectClass: dcObject
o: example
dc: example
description: Example
# Administrator
dn: cn=admin,dc=example,dc=com
objectClass: simpleSecurityObject
objectClass: organizationalRole
cn: admin
userPassword: Password
description: LDAP administrator
# Users
dn: ou=usuarios,dc=example,dc=com
objectClass: organizationalUnit
objectClass: top
description: Usuarios
ou: usuarios
# Groups
dn: ou=grupos,dc=example,dc=com
objectClass: organizationalUnit
objectClass: top
description: Grupos
ou: grupos

El archivo es muy simple. Indicamos en un principio la rama principal, el usuario root (fijaros que hay que volver a poner el password), y añadimos dos unidades organizacionales (usuarios y grupos). Faltaría un tercer grupo máquinas, donde añadiríamos las impresoras y similares, pero yo no lo necesitaba, así que no lo he añadido. Hacedlo si lo necesitáis.

Añadimos el archivo al directorio:

# ldapadd -x -D cn=admin,dc=example,dc=com -W -f root.ldif
Y llegados a este punto, el resto sería igual que con el anterior post sobre LDAP. Debemos instalar la herramienta “ldapscripts” y crear los grupos y usuarios ldap.

Para montar los homes podéis seguir haciéndolo con NFS. Estoy tratando de configurarlo utilizando SAMBA para dar servicio a clientes Windows, pero de momento tengo algunos problemas y prefiero no subir la configuración… Cuando lo tenga todo bien, lo subiré.

Otro problema que he detectado con esta nueva configuración es que soy incapaz de ver el árbol LDAP utilizando ldapsearch -x . Sé que el árbol está ahí (puedo crear los usuarios, y luego utilizarlos) pero supongo que hay algo que me ha quedado por configurar y cuando ejecuto la orden el resultado no me devuelve nada…

Esta configuración está cogida con pinzas. Si alguien ve caréncias, cree que faltan cosas por configurar, o lo que sea… que me lo indique y actualizo 🙂

adminInstalar y Configurar LDAP en Ubuntu Lucid 10.04

Comments 7

  1. victor

    Has seguido mejorando la instalación? Yo estoy en ello… pero lo poco que encuentro está basado en el casi obsoleto método de slapd.conf.

    gracias de todas formas. Si tienes más info, estaré encantado de escucharte 😉

  2. xavi

    Hola,

    La configuración que das es muy parecida a la que aparece en la página oficial de ubuntu 10.4, y funciona correctamente.
    Respecto al problema de visualizar el árbol o directorio almacenado en ldap, se resuelve configurando el cliente o autenticación ldap (instalando libnss-ldap)

    X.Ral

  3. Alberto

    Tras añadir el comando
    ldapadd -Y EXTERNAL -H ldapi:/// -f config.ldif
    el terminal me devuelve un error como este:


    adding new entry "uid=jrojas,ou=argentina,dc=example,dc=com"
    ldap_add: Invalid syntax (21)
    additional info: objectclass: value #2 invalid per syntax

    Sabes si hay algún manual fácil donde explique como instalarlo y como añadir usuarios? es que solo quiero eso, no me interesa saber todos los entresijos del ldap!!

    Un saludo.

  4. manu

    Si accedes a esta página http://elbauldenico.wordpress.com/2010/02/16/instalar-y-configurar-ldap-en-ubuntu-karmic-9-10/ encontrarás un manual más completo. Bajas hacía abajo hasta que encuentres la sección «CREAR USUARIOS LDAP» y ahí encontrarás un manual de como crearlos.

    De todas maneras, hay un software libre llamado Zentyal http://www.zentyal.com que simplifica muchísimo la gestión de LDAPy de otros servicios: DNS, DHCP, Jabber, etc. etc. etc.

  5. acbr

    Hola

    Tras ejecutar el comando

    ldapadd -Y EXTERNAL -H ldapi:/// -f config.ldif

    me da el siguiente error:

    adding new entry «cn=module{0},cn=config»
    ldap_add: Protocol error (2)
    additional info: no attributes provided

    A ver si me puedes ayudar, gracias

  6. Hernan Hernandez

    Buenas necesito una ayuda como resolver lo siguiente:

    *He instaldo OpenLdap y Samba asi:

    sudo apt-get install slapd ldap-utils samba samba-doc libpam-smbpass smbclient smbldap-tools

    *Luego he añadido los esquemas basicos a Ldap asi:

    sudo ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/cosine.ldif

    sudo ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/nis.ldif

    sudo ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/inetorgperson.ldif

    *Luego Cree mi archivo backend.ldif asi:

    # Load dynamic backend modules
    dn: cn=module,cn=config
    objectClass: olcModuleList
    cn: module
    olcModulepath: /usr/lib/ldap
    olcModuleload: back_hdb

    # Database settings
    dn: olcDatabase=hdb,cn=config
    objectClass: olcDatabaseConfig
    objectClass: olcHdbConfig
    olcDatabase: {1}hdb
    olcSuffix: dc:prueba,dc=local
    olcDbDirectory: /var/lib/ldap
    olcRootDN: cn=admin,dc=prueba,dc=local
    olcRootPW: hjhv2809
    olcDbConfig: set_cachesize 0 2097152 0
    olcDbConfig: set_lk_max_objects 1500
    olcDbConfig: set_lk_max_locks 1500
    olcDbConfig: set_lk_max_lockers 1500
    olcDbIndex: objectClass eq
    olcLastMod: TRUE
    olcDbCheckpoint: 512 30
    olcAccess: to attrs=userPassword by dn=»cn=admin,dc=prueba,dc=local» write by anonymous
    auth by self write by * none
    olcAccess: to attrs=shadowLastChange by self write by * read
    olcAccess: to dn.base=»» by * read
    olcAccess: to * by dn=»cn=admin,dc=prueba,dc=local» write by * read

    *Luego lo añadi a los esquemas asi:

    sudo ldapadd -Y EXTERNAL -H ldapi:/// -f backend.ldif

    y me arrojo el siguiente resultado con error:

    root@ubuntuServer:~# sudo ldapadd -Y EXTERNAL -H ldapi:/// -f backend.ldif
    SASL/EXTERNAL authentication started
    SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
    SASL SSF: 0
    adding new entry «cn=module,cn=config»

    ldapadd: invalid format (line 24) entry: «olcDatabase=hdb,cn=config»

    ¿Mi pregunta es porque se produce ese error?

    ¿Cuales son los pasos correctos?

  7. manu

    Es que la configuración de LDAP en Linux es bastante complicada, aunque poco a poco se va haciendo más sencilla gracias a productos de ayuda, como por ejemplo Zentyal: http://www.zentyal.com

    Los ficheros de configuración son muy estrictos y al copiar y pegar es posible que algo se haya hecho mal, te debes fijar que no haya ningún espacio de más, las comillas a veces es bueno borrarlas y volverlas a escribir.

    En OpenXarxes ya no realizamos las configuraciones a mano, resultaba demasiado complejo y tedioso, ahora nos ayudamos de herramientas como «phpldapadmin» o «Zentyal».

Deja un comentario