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 🙂
Comments 7
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 😉
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
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.
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.
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
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?
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».