Supongamos que hemos compilado un servidor OpenLDAP con mbd (LMDB) como backend; hemos realizado un montón de pruebas para comprender su funcionamiento y configurarlo correctamente; y finalmente deseamos hacer "borrón y cuenta nueva" para comenzar con una instancia fresca del servidor (por ejemplo, pasamos el servidor OpenLDAP desde testing o desarrollo hacia producción). Este artículo explica entonces cómo reinicializar la base de datos mdb de un servidor OpenLDAP, para comenzar con una base de datos limpia.



Veamos entonces cómo hacer la limpieza de la instalación de OpenLDAP.

Para comenzar, detener el demonio slapd:

root@debian8:~# service slapd stop
slapd: [INFO] Using built-in configuration - this may cause some problems
slapd: [INFO] Halting OpenLDAP...
slapd: [OK] OpenLDAP stopped after 1 seconds

Por defecto, si hemos seleccionado /usr/local como directorio de instalación al momento de compilar OpenLDAP, los archivos correspondientes a la base de datos LMDB de OpenLDAP se encuentran en el directorio /usr/local/var/openldap-data/:

root@debian8:~# ll /usr/local/var/openldap-data/
total 144
drwx--S--- 2 ldap ldap   4096 mar 15 13:16 .
drwxr-sr-x 4 root ldap   4096 dic  4 09:49 ..
-rw------- 1 ldap ldap 131072 mar 22 11:06 data.mdb
-rw------- 1 ldap ldap   8192 mar 22 11:07 lock.mdb

Para limpiar todos los datos de OpenLDAP, simplemente borrar todos los archivos dentro de dicho directorio:

root@debian8:~# rm /usr/local/var/openldap-data/*

E iniciar nuevamente el demonio slapd:

root@debian8:~# service slapd start
slapd: [INFO] Using built-in configuration - this may cause some problems
slapd: [INFO] Launching OpenLDAP configuration test...
slapd: [OK] OpenLDAP configuration test successful
slapd: [INFO] Launching OpenLDAP...
slapd: [OK] File descriptor limit set to 2048
slapd: [OK] OpenLDAP started

Se observa que el demonio crea una nueva base limpia:

root@debian8:~# ll /usr/local/var/openldap-data/
total 24
drwx--S--- 2 ldap ldap  4096 mar 22 11:08 .
drwxr-sr-x 4 root ldap  4096 dic  4 09:49 ..
-rw------- 1 ldap ldap 12288 mar 22 11:08 data.mdb
-rw------- 1 ldap ldap  8192 mar 22 11:08 lock.mdb

A continuación se procede con la limpieza de la configuración dinámica. Detener nuevamente el servicio:

root@debian8:~# service slapd stop
slapd: [INFO] Using built-in configuration - this may cause some problems
slapd: [INFO] Halting OpenLDAP...
slapd: [OK] OpenLDAP stopped after 1 seconds

Cambiar al directorio de configuración de OpenLDAP y eliminar el subdirectorio slapd.d. Luego crear una nueva configuración utilizando la herramienta slaptest y cambiar el ownership del directorio slapd.d y todo su contenido:

root@debian8:~# cd /usr/local/etc/openldap/
root@debian8:/usr/local/etc/openldap# rm -fr slapd.d/*
root@debian8:/usr/local/etc/openldap# slaptest -f slapd.conf -F /usr/local/etc/openldap/slapd.d
config file testing succeeded
root@debian8:/usr/local/etc/openldap# chown -R ldap:ldap slapd.d/

Iniciar nuevamente el servicio:

root@debian8:/usr/local/etc/openldap# service slapd start
slapd: [INFO] Using built-in configuration - this may cause some problems
slapd: [INFO] Launching OpenLDAP configuration test...
slapd: [OK] OpenLDAP configuration test successful
slapd: [INFO] Launching OpenLDAP...
slapd: [OK] File descriptor limit set to 2048
slapd: [OK] OpenLDAP started

Por supuesto se asume que se está trabajando con una configuración dinámica definida en la variable SLAPD_CONF_DIR (en lugar de SLAPD_CONF) en el script de inicio de OpenLDAP /etc/init.d/slapd.

Finalmente, es posible comprobar que el directorio LDAP está completamente vacío ejecutando la siguiente consulta:

root@debian8:/usr/local/etc/openldap# ldapsearch -z 0 -H ldap://localhost:389 -w 1234 -D "cn=root,dc=linuxito,dc=com" -b "dc=linuxito,dc=com" "(objectClass=*)"
# extended LDIF
#
# LDAPv3
# base <dc=linuxito,dc=com> with scope subtree
# filter: (objectClass=*)
# requesting: ALL
#

# search result
search: 2
result: 32 No such object

# numResponses: 1


Tal vez pueda interesarte


Compartí este artículo