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