Con un servidor LDAP configurado y funcionado, el siguiente paso es crear una estructura consistente que soporte las necesidades que la organización tiene. Para ello, una de las principales formas el el uso de archivos .ldif (LDAP Data Interchange Format), formados por un conjunto de par atributo – valor para cada uno de los objetos. La estructura básica de este tipo de archivos es la siguiente:
# objeto1 dn: <distinguished name> <attrdesc>: <attrvalue> <attrdesc>: <attrvalue> # objeto2 dn: <distinguished name> <attrdesc>: <attrvalue> <attrdesc>: <attrvalue>
Dependiendo de cual el tipo del objeto deberá incluir unos atributos u otros. Los más comunes son:
- dn: distinguished name
- cn: common name
- gn: given name
- sn: surname
- userPassword
- uid: user identifier
- gid: group identifier
- displayName
- ou: organizationalUnit
- o: organization
- uidNumeber: user number
- gidNumber: group number
- objectClass: depende del tipo de objeto que queramos crear las clases podrán ser account, posixAccount, posixGroup, top, organizationalUnit, inetOrgPerson, etc… Hay que tener en cuenta que poner una clase concreta conlleva el uso obligatorio de determinados atributos.
La lista completa de atributos y clases con sus dependencias se puede ver pinchando este link. Una vez creado el archivo con los pares atributo – valor se ejecutará el comando del paquete ldap-utils. A continuación se detalla el procedimiento para crear / modificar / borrar y buscar objetos en OpenLdap
Crear objetos
La creación de objetos está marcada por el archivo .ldif con atributos asignados. Para todos los ejemplos el dominio utilizado será develop.local
Unidades organizativas
El atributo clave sera objectClass: organizationalUnit, lo que marcará el tipo de objeto y el único atributo obligatorio ser el de ou
# tras haber ejecutado un nano uorganizativa.ldif cn: ou=sistemas,dc=develop,dc=local ou: sistemas objectClass: top objectclass: organizationalunit
Usuarios
Los atributos a tener en cuenta son:
- El atributo uidNumber será el número asignado al usuario. Hay que tener en cuenta que este número no exista.
- El gidNumber será el número de grupo asignado. Hay que tener en cuenta que este grupo exista.
- El uid será el nombre de inicio de sesión
- El userPassword se podrá expresar en texto plano o en SSHA
# tras haber ejecutado un nano user.ldif dn: uid=develop,ou=sistemas,dc=develop,dc=local cn: usuario ejemplo givenName: Develop sn: develop uid: develop uidNumber: 5000 gidNumber: 5000 homeDirectory: /home/develop loginShell: /bin/bash objectClass: top objectClass: inetOrgPerson objectClass: posixAccount objectClass: shadowAccount userPassword: {SSHA}x
Grupos
# tras haber ejecutado un nano gropo.ldif dn: cn=grupo1,ou=sistemas,dc=develop,dc=local objectClass: posixGroup cn: grupo1 gidNumber: 5000
Importación
Una vez se ha creado el fichero (hay que tener en cuenta que se pueden juntar objetos dentro del mismo fichero .ldif) se debe ejecutar el comando ldapadd con las siguientes opciones:
- x: para la autenticación simple del usuario con privilegios
- D: distinguishedName del usuario administrador
- W: para pedir el pass del usuario administrador
- f: ruta del fichero ldif que contiene el objeto u objetos a importar
sudo ldapadd -x -D cn=admin,dc=develop,dc=local -W -f archivo.ldif
Tras esto el objeto u objetos quedarían agregados, pudiéndoselas comprobar con el comando slapcat
Borrar objetos
Se debe ejecutar el comando ldapdelete con las siguientes opciones:
- D: distinguishedName del objeto que se quiera borrar
- W: para pedir el pass del usuario administrador
ldapdelete -W -D "cn=admin,dc=develop,dc=local" "uid=develop,ou=sistemas,dc=develop,dc=local"
Buscar objetos
Se debe ejecutar el comando ldapsearch con las siguientes opciones:
- x: para la autenticación simple del usuario con privilegios
- LLL: para una salida estándar
- b: base de la búsqieda
- Filtros de búsqueda
- atributos a mostrar
ldapsearch -x -LLL -b "dc=develop,dc=local" objectClass=posixAccount sn givenName mail distinguisedName
Modificar objetos
Se debe ejecutar el comando ldapmodify, indicando el fichero que guarda las modificaciones. Este fichero tendrá como atributo clave el de changeType: modify y el de realce: atributo , el cual identificará como un cambio el atributo correspondiente
# tras ejecutar nano cambio.ldif dn: uid=develop,ou=sistemas,dc=develop,dc=local changetype: modify replace: mail mail: sistemas@develop.local
ldapmodify -x -D cn=admin,dc=develop,dc=local -W -f cambio.ldif
Se ejecutará con las siguientes opciones:
- x: para la autenticación simple del usuario con privilegios
- D: distinguishedName del usuario administrador
- W: para pedir el pass del usuario administrador
- f: ruta del fichero ldif que contiene el objeto u objetos a importar