Administrar LDAP con ldapscripts
En anteriores tutoriales vimos como administrar los datos de OpenLdap utilizando herramientas visuales, vía web con phpldapadmin o en un entorno de escritorio con Apache Directory Studio. Ahora vamos a estudiar cómo se haría usando solamente el intérprete de comandos. Para ello instalaremos el paquete ldapscript.
Como siempre, utilizaremos aptitude para instalar el paquete:
aptitude install ldapscripts
Ahora tendremos que editar el fichero de configuración para que los script puedan modificar los datos y sepan sobre qué dominio y unidades organizativas tienen que operar. A continuación enumeramos la directivas básicas del fichero /etc/ldapscripts/ldapscripts.conf que deberemos cambiar. Obviamente cada cual tendrá que poner los datos que correspondan con su servidor.
SERVER=localhost
BINDDN=”cn=admin,dc=cursea,dc=me”
BINDPWDFILE=”/etc/ldapscripts/ldapscripts.passwd”
SUFFIX=”dc=cursea,dc=me”
GSUFFIX=”ou=grupos”
USUFFIX=”ou=usuarios”
GIDSTART=10000
UIDSTART=10000
Como vemos, hay una directiva que hace referencia a la contraseña del administrador, para que pueda identificarse en el servidor y tener los permisos necesarios. Dicha clave la guardamos en un fichero, es nuestro caso ldapscripts.passwd. Lo hacemos así:
echo -n 'password-del-administrador' /etc/ldapscripts/ldapscripts.passwd" chmod 400 /etc/ldapscripts/ldapscripts.passwd
En este punto ya podríamos empezar los comandos que nos ofrece el paquete ldapscript, pero para que funcionen nos queda una tarea que realizar y es crear las unidades organizativas que le hemos especificado en el fichero de configuración. Podríamos recurrir a una de las herramientas mencionadas en tutoriales anteriores, pero como en este tutorial estamos explicando como crearlo todo mediante consola, seguiremos por este camino. Por lo tanto necesitamos un comando que pueda insertar elementos en el servidor LDAP desde la consola y para ello instalamos el paquete ldap-utils. Además, este paquete es imprescindible para que funcionen los comandos de ldapscript.
Creamos un fichero con las entradas que necesitamos introducir en formato LDIF, este formato puede ser difícil de crear para entradas complejas, pero en el caso de Unidades Organizativas es muy sencillo.
Ejecutamos nano ous.ldif e introducimos el siguiente texto:
dn: ou=grupos,dc=cursea,dc=me
objectClass: organizationalUnit
objectClass: top
ou: grupos
dn: ou=usuarios,dc=cursea,dc=me
objectClass: organizationalUnit
objectClass: top
ou: usuarios
Para insertar los datos en el servidor usamos la orden: ldapadd -f ous.ldif -D ‘cn=admin,dc=cursea,dc=me’ -xW
Nos pedirá la contraseña de administrador y añadirá dos nuevos nodos a nuestra estructura. Como siempre, podemos comprobarlo usando slapcat
Ahora creamos el grupo ‘usuarios’
ldapaddgroup usuarios
Después el usuario
ldapadduser pepito usuarios
Con esta orden creará el usuario con las opciones por defecto configuradas en ldapscript.conf. Es importante prestar atención a la creación del directorio home para que el usuario pueda utilizar el sistema sin problemas. Por defecto no lo crea, tendríamos que especificarle dicha opción. En próximos tutoriales veremos cómo utilizar estas y otras directivas
Otros comandos útiles de ldapscript son:
• ldapsetpasswd: cambiar contraseña a un usuarios
• ldapdeleteuser: borra un usuario
• ldapmodifyuser: añadir, eliminar o modificar atributos de un usuario
• ldapdeletegroup: borra un grupo
• ldapaddusertogrupo: añade un usuario a un grupo
• ldapdeleteuserfromgroup: borra un usuario de un grupo
Hay más scripts en el paquete, para ver la lista entera ejecuta:
dpkg -L ldapscripts | grep bin
Como habréis comprobado, ldapscript nos ahorra trabajo respecto a las herramientas nativas que nos ofrece el paquete ldap-utils. Pero todavía hay otra característica que nos puede resultar interesante, su sistema de plantillas. El directorio /usr/share/doc/ldapscripts/examples/ contiene unos ficheros con extensión .template.sample que se pueden utilizar para organizar la manera en la que se gestiona la información de cada uno de los atributos del elemento que estemos modificando. Por ejemplo el fichero /usr/share/doc/ldapscripts/examples/ldapadduser.template.sample tendrá estas lineas:
dn: uid=<user>,<usuffix>,<suffix>
objectClass: inetOrgPerson
objectClass: posixAccount
cn: <user>
sn: <ask>
uid: <user>
uidNumber: <uid>
gidNumber: <gid>
homeDirectory: <home>
loginShell: <shell>
gecos: <user>
description: User account
title: Employee
Podemos observar que algunas lineas indican que los atributos tendrán siempre el mismo valor, como los objectclass o description, otras utilizan variables que se han establecido en el script y por último está la opción <ask> que provoca que se le pregunte al usuario por el valor de dicho atributo.
Para usar una de estas plantillas tendremos que copiarla al directorio de configuración:
cp /usr/share/doc/ldapscripts/examples/ldapadduser.template.sample /etc/ldapscripts/ldapadduser.template
Y cambiar el ldapscript.conf:
UTEMPLATE=”/etc/ldapscripts/ldapadduser.template”
Explicaciones en video
Si te parece interesante suscríbete a mi canal de Youtube: Aprende Linux