LDAP (parte3): Añadir usuarios y grupos de forma manual
En los últimos artículos dedicados a esta temática, hemos aprendido a Instalar OpenLDAP en Ubuntu 20.04 LTS y a Iniciar la estructura del directorio.
Hoy aprenderemos a añadir nuevos usuarios y grupos a la estructura del directorio que hemos creado en los artículos anteriores. Y lo haremos de un modo muy parecido al que hemos utilizado en el artículo anterior, cuando creamos la unidad organizativa. Es decir, crearemos un nuevo archivo ldif y, a continuación, lo integraremos en la base de datos con el comando ldapadd.
Como puedes imaginar, comenzaremos por crear un grupo, y luego un usuario que forme parte de dicho grupo. Así, seguiremos el orden que establece la jerarquía de los objetos.
Para tener más información sobre la estructura de los archivos LDIF, te recomiendo consultar el Capítulo 12: Instalar y configurar OpenLDAP en Ubuntu de nuestro libro Sistemas Operativos en Red (2ª edición).
Además, puedes consultar todos los artículos prácticos publicados en SomeBooks.es sobre LDAP. haciendo clic aquí.
Así es que, si estás listo, comencemos…
Añadir un grupo
Como hemos dicho antes, para añadir un nuevo grupo, comenzaremos creando un archivo de texto, con extensión ldif. Y para lograrlo, recurriremos a un comando como este:
sudo nano grp.ldif
Para este ejemplo, llamaremos al archivo grp.ldif, pero tú puedes llamarlo como prefieras
En el área de trabajo del editor, escribiremos un contenido como este:
dn: cn=grupo,ou=unidad,dc=somebooks,dc=local
objectClass: top
objectClass: posixGroup
gidNumber: 10000
cn: grupo
Cuando hayamos terminado de escribirlo, pulsamos Ctrl + X para salir, asegurándonos de guardar los cambios.
En el ejemplo, hemos seguido la convención de comenzar los UID de los grupos a partir del valor 10000 (gidNumber: 10000). Así, los siguientes grupos que creemos de forma manual, recibirán los valores 10001, 10002, etc.
De esta forma, evitamos solaparnos con los UID que asigna el sistema de forma automática, ya que éstos comienzan de forma predeterminada en 1000.
Con esto ya estamos listos para cargar el nuevo usuario en el directorio. Sólo tenemos que escribir el siguiente comando:
sudo ldapadd -x -D cn=admin,dc=somebooks,dc=local -W -f grp.ldif
Al momento comprobaremos que el grupo se ha añadido correctamente.
Y para tener la completa certeza de que todo es correcto, solo tenemos que usar el comando slapcat, que nos permite obtener todas las entradas del directorio:
sudo slapcat
Añadir un usuario
Para añadir el grupo, repetimos el proceso anterior, pero lo primero será evitar que la contraseña del usuario se almacene en texto plano dentro del archivo ldif.
Para lograrlo, usaremos el comando slappasswd que produce, a partir de la contraseña original, un hash utilizando el algoritmo SHA-1 (aunque podríamos cambiar el algoritmo que se aplique usando el argumento -h).
Por lo tanto, comenzamos ejecutando el comando slappasswd:
sudo slappasswd
A continuación, el comando nos pide la contraseña que queremos utilizar. Es decir, la que usará inicialmente el usuario que estamos a punto de crear, cuando necesite autenticarse.
Deberemos escribirla por duplicado, como siempre, para evitar errores tipográficos.
Al momento, obtendremos la cadena, codificada con hash SHA-1, que equivale a la contraseña que hemos escrito. Debemos copiarla para utilizarla en el archivo ldif que crearemos a continuación.
Ahora sí, ha llegado el momento de crear el archivo ldif para el nuevo usuario. Recuerda que usar el nombre de archivo que prefieras:
sudo nano usr.ldif
Una vez abierto el editor, escribiremos este contenido:
dn: uid=jlopez,ou=unidad,dc=somebooks,dc=local objectClass: top objectClass: posixAccount objectClass: inetOrgPerson objectClass: person cn: jlopez uid: jlopez ou: grupo uidNumber: 2000 gidNumber: 10000 homeDirectory: /home/jlopez loginShell: /bin/bash userPassword: {SSHA}TWWnxuBaXt1Hx9ohEXqOJPqXZAgm9lwc sn: Lopez mail: juan.lopez@somebooks.com givenName: jlopez
Observa que hemos incluido al usuario como miembro del grupo que hemos creado más arriba (gidNumber: 10000) y hemos usado la contraseña que hemos generado antes (userPassword: {SSHA}TWWnxuBaXt1Hx9ohEXqOJPqXZAgm9lwc).
En este caso, seguimos la convención de comenzar los UID de los usuarios a partir del valor 2000 (uidNumber: 2000). Así, los siguientes usuarios que creemos de forma manual, recibirán los valores 2001, 2002, etc.
Recuerda que el sistema asigna UID de manera automática a partir de 1000. Si el margen no fuera suficiente, podríamos partir de un valor diferente que nos permitiera ampliar o disminuir el intervalo.
Cuando hayamos terminado de escribirlo, pulsamos Ctrl + X para salir, asegurándonos de guardar los cambios.
Con esto estamos listos para cargar el nuevo usuario en el directorio. Sólo tenemos que escribir el siguiente comando:
sudo ldapadd -x -D cn=admin,dc=somebooks,dc=local -W -f usr.ldif
Al momento comprobaremos que el usuario se ha añadido correctamente.
Como antes usaremos el comando slapcat, para obtener todas las entradas del directorio y asegurarnos de que todo es correcto:
sudo slapcat
Cuando añadas nuevos usuarios, recuerda que los valores para los atributos uidNumber y homeDirectory deben ser diferentes para cada usuario. También habrá que sustituir el texto mi_password por la contraseña adecuada para el usuario. Lo mismo ocurre con el atributo gidNumber de los grupos. Además, los valores de los campos uidNumber y gidNumber no deben coincidir con el UID y GID de ningún usuario y grupo local.
Recuperar información del usuario
Por último, podemos comprobar que el contenido anterior se recupera
correctamente. Para lograrlo podemos utilizar el comando ldapsearch, que nos permite hacer una búsqueda en el directorio.:
ldapsearch -xLLL -b "dc=somebooks,dc=local" uid=jlopez sn givenName cn
En este ejemplo buscamos un usuario con uid=jlopez y pedimos que nos muestre el contenido de los atributos sn, givenName y cn.
Aquí hemos intentado ser lo más didácticos posible, pero podríamos haber usado un solo archivo ldif que incluyese todos los grupos y usuarios que necesitemos. Bastaría con dejar una línea en blanco entre la definición de un elemento y la del siguiente.
Y hasta aquí el contenido del artículo. Espero que te resulta útil.