OpenLDAP 2.1.25
Nacho D(cid:19)(cid:16)az Asenjo
[email protected]
Universidad Carlos III de Madrid
18 de diciembre de 2003
1.
Instalaci(cid:19)on de OpenLDAP 2.1.25 en Linux
En este documento intentar(cid:19)e explicar los pasos (de forma muy esquem(cid:19)atica y
breve) que hay que dar a la hora de instalar cualquier versi(cid:19)on Openldap 2.1.x. No es
mi intenci(cid:19)on escribir algo bien redactado, (cid:19)unicamente son unos ligeros apuntes que
tom(cid:19)e mientras trabajaba en la instalaci(cid:19)on.
>Qu(cid:19)e vamos a utilizar para poner en marcha esta nueva versi(cid:19)on de OpenLDAP?.
Lo normal es utilizar la (cid:19)ultima versi(cid:19)on a d(cid:19)(cid:16)a de hoy.
Berkeley DB 4.2.52
Cyrus-SASL 2.1.17
OpenSSL 0.9.6 (asumimos que est(cid:19)a instalada por defecto en el sistema). En
apt-get install libssl0.9.6 instalar(cid:19)a el paquete libssl0.9.6c-2woody.4.
OpenLDAP 2.1.25
1.1. Compilando Berkeley DB
Obtenemos el paquete correspondiente a la versi(cid:19)on 4.2.52 de la siguiente direcci(cid:19)on
http://www.sleepycat.com/update/snapshot/db-4.2.52.tar.gz.
# tar xvzf db-4.2.52.tar.gz
# cd db-4.2.52
# cd build_unix
# ../dist/configure --prefix=/usr/local/BerkeleyDB-4.2.5/
# make
# make install
1
1.2. Compilando cyrus-sasl
El paquete de Cyrus lo obtuve de ftp://ftp.andrew.cmu.edu/pub/cyrus-mail/cyrus-
sasl-2.1.17.tar.gz. Para compilar este paquete y asegurarte de que lo enlazas real-
mente con las nuevas BerkeleyDB 4.2, introduce en el (cid:12)chero /etc/ld.so.conf
la
l(cid:19)(cid:16)nea correspondiente al path donde residen las librer(cid:19)(cid:16)as DB que acabas de compilar
/usr/local/BerkeleyDB-4.2.5/lib.
# cd cyrus-sasl-2.1.17
# ./configure --enable-krb4=no --with-bdb-libdir=/usr/local/BerkeleyDB-4.2.52/lib/
--with-bdb-incdir=/usr/local/BerkeleyDB-4.2.52/include
--prefix=/usr/local/Cyrus-SASL-2.1.17
# make
# make install
1.3. Compilando OpenLDAP 2.1.25
Respecto a OpenSSL, en mi caso no ha sido necesario compilarlo porque ya ten(cid:19)(cid:16)a
instalado la versi(cid:19)on 0.9.6c (en Woody apt-get install libssl0.9.6 libssl-dev ).
Lo siguiente que debemos conseguir es la distribuci(cid:19)on de LDAP que deseamos ins-
talar. En la siguiente URL ftp://ftp.openldap.org/pub/OpenLDAP/openldap-release.tgz
se encuentra la (cid:19)ultima release de OpenLDAP (en la actualidad la versi(cid:19)on 2.1.25).
# tar xvzf openldap-release.tgz
# cd openldap-2.1.25
A continuaci(cid:19)on tendr(cid:19)as que teclear la l(cid:19)(cid:16)nea m(cid:19)as importante.
# CPPFLAGS="-I/usr/local/BerkeleyDB-4.2.52/include
-I/usr/local/Cyrus-SASL-2.1.15/include/sasl/"
LDFLAGS="-L/usr/local/BerkeleyDB-4.2.52/lib
-L/usr/local/Cyrus-SASL-2.1.17/lib/sasl2"
-L/usr/local/Cyrus-SASL-2.1.17/lib"
./configure --enable-threads --enable-tls --prefix=/usr/local/openldap-2.1.25
--enable-ldbm --enable-bdb --enable-monitor --enable-crypt
Tal vez est(cid:19)es interesado en incluir m(cid:19)as cosas como por ejemplo: {enable-referrals
o {enable-wrappers. Ojo con el {enable-crypt ya que si no lo habilitas tu servidor
ser(cid:19)a incapaz de hacer BIND con usuarios que tengan en el userPassword claves de
este tipo. El {enable-ldbm se debe a que es el (cid:19)unico backend que entiende alias.
Finalmente ejecuta:
2
# make depend
# make
# make install
Podemos veri(cid:12)car cuales son las librer(cid:19)(cid:16)as din(cid:19)amicas de nuestro servidor LDAP.
# ldd /usr/local/openldap-2.1.25/libexec/slapd
libsasl2.so.2 => /usr/local/Cyrus-SASL-2.1.17/lib/libsasl2.so.2 (0x40014000)
libssl.so.0.9.6 => /usr/lib/libssl.so.0.9.6 (0x4002b000)
libcrypto.so.0.9.6 => /usr/lib/libcrypto.so.0.9.6 (0x40059000)
libresolv.so.2 => /lib/libresolv.so.2 (0x40119000)
libdl.so.2 => /lib/libdl.so.2 (0x40129000)
libpthread.so.0 => /lib/libpthread.so.0 (0x4012c000)
libc.so.6 => /lib/libc.so.6 (0x40140000)
/lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000
1.3.1. Problemas
La ejecuci(cid:19)on del make me dio algunos problemillas debido a peque~nas cosas (li-
brer(cid:19)(cid:16)as) de las que mi m(cid:19)aquina carec(cid:19)(cid:16)a.
1.
2.
cannot (cid:12)nd -lpam
Soluci(cid:19)on: apt-get install libpam0g-dev
/usr/lib/libsasl.a db berkeley: unde(cid:12)ned reference to ’db open’
Soluci(cid:19)on: Necesitaba tener instalada la versi(cid:19)on adecuada de SASL.
3. No me arranca el demonio con un (cid:12)chero de con(cid:12)guraci(cid:19)on de OpenLDAP 2.0.x
Soluci(cid:19)on: Hay algunas directivas que han cambiado de nombre o no est(cid:19)an so-
portadas. Aseg(cid:19)urate que la ejecuci(cid:19)on de ./libexec/slapd -t te devuelve que la
sintaxis de (cid:12)chero es correcta.
4. Problema con los esquemas personales que utilizaba en OpenLDAP 2.0.x
Soluci(cid:19)on: Es posible que a la hora de cargar datos el directorio se queje porque
tu esquema no es correcto, aunque sea el mismo que llevabas usando todas la
vida. Por ejemplo, los objectos que crees necesitan tener SUP en el que indiques
cual es la clase superior. Con la sintaxis de los atributos tambi(cid:19)en puedes tener
problemillas.
5. Error con comillas dobles en DN (\)
Soluci(cid:19)on: Cargando un LDIF he tenido problemas con algunos DN’s que ten(cid:19)(cid:16)an
comillas dobles, cuando en mi antiguo directorio OpenLDAP 2.0.x, s(cid:19)(cid:16) que me
lo aceptaba.
6. DBD no soporta aliasedObjectName
Soluci(cid:19)on: Quer(cid:19)(cid:16)a s(cid:19)olo probar si lo que hab(cid:19)(cid:16)a le(cid:19)(cid:16)do era cierto. Pues s(cid:19)(cid:16) lo es. Si
tu directorio tiene alias deberas utilizar bases de datos ldbm.
3
7. No me arranca y acabo de poner las opciones de TLS en mi (cid:12)chero de con(cid:12)-
guracion
Soluci(cid:19)on: Comentar la l(cid:19)(cid:16)nea TLSClientVerify porque la opci(cid:19)on false ya no fun-
ciona y provoca que el servidor no arranque.
8. Tengo un error con un schema que antes me funcionaba con OpenLDAP 2.0.x
Soluci(cid:19)on: Para los attributetype he cambiado las sintaxis de cadena terminada
en .40 por .15, ya que la .40 ya no aceptaba EQUALITY caseIgnoreMatch.
Adem(cid:19)as para nuevos objectclass de(cid:12)nidos en el schema antes los soportaba
sin SUP y ahora en uc3mGrupo se debe a~nadir SUP organizationalUnit y en
uc3mPersona SUP inetOrgPerson.
9. Fallo al realizar el bind’s como un usuario
Soluci(cid:19)on: Posiblemente el {enable-crypt est(cid:19)a a no es necesario compilarlo con
esta opci(cid:19)on si deseamos utilizar el esquema Crypt. La opci(cid:19)on por defecto en
password-hash ahora es fSHAg.
10. Directiva dbcachesize desconocida
Soluci(cid:19)on: Eliminar este directiva del (cid:12)chero de con(cid:12)guraci(cid:19)on.
11. Permitir conexiones Versi(cid:19)on 2. Soluci(cid:19)on: Por defecto la versi(cid:19)on 2.1 de OpenL-
DAP ya no soporta conexiones V.2, si quieres a~nadir esta funcionalidad a~nade
la siguiente opcion allow bind v2 en tu (cid:12)chero de con(cid:12)guraci(cid:19)on.
1.4. Fichero /etc/syslog.conf
A~nade una nueva l(cid:19)(cid:16)nea al (cid:12)nal del (cid:12)chero de con(cid:12)guraci(cid:19)on de logs
LOCAL6.*
-/usr/local/openldap-2.1.25/var/log/openldap.log
y manda una se~nal -HUP al proceso syslogd
# ps -e | grep syslogd
250 ?
00:13:31 syslogd
#kill -HUP 250
A partir de ese momento nuestro LDAP arrancado con la opci(cid:19)on -l LOCAL6, en-
viar(cid:19)a los log’s del directorio a ese (cid:12)chero.
1.4.1. Fichero /etc/init.d/openldap-2.1.25
Este es el script que utilizo para arrancar y parar el servicio.
#!/bin/bash
HOME=/usr/local/openldap-2.1.25
DAEMON=$HOME/libexec/slapd
4
SLURPD=$HOME/libexec/slurpd
CONFIG=$HOME/etc/openldap/slapd.conf
case "$1" in
’start’)
if [ -f /usr/local/openldap-2.1.25/etc/openldap/slapd.conf -a -f
/usr/local/openldap-2.1.25/libexec/slapd ]; then
echo "Arrancando Servicio de Directorio OPENLDAP."
ulimit -n 4096
/usr/local/openldap-2.1.25/libexec/slapd
-f /usr/local/openldap-2.1.25/etc/openldap/slapd.conf
-h "ldap://:389/ ldaps://:636/" -l LOCAL6
echo "Arrancando Servicio de Replica [slurpd]"
replicas=‘grep ^replica $CONFIG‘
test -z "$replicas" ||
(echo -n " slurpd" && start-stop-daemon --start
--quiet --name slurpd --exec $SLURPD)
echo "."
fi
;;
’stop’)
[ ! -f /usr/local/openldap-2.1.25/var/slapd.pid ] && exit 0
slapdpid=‘cat /usr/local/openldap-2.1.25/var/slapd.pid‘
if [ "$slapdpid" -gt 0 ]; then
echo "Parando Servicio de Directorio OPENLDAP."
kill -SIGTERM $slapdpid 2>&1 |
/bin/grep -v "no existe ese proceso."
fi
replicas=‘grep ^replica $CONFIG‘
test -z "$replicas" ||
(echo -n " slurpd" && killall slurpd > /dev/null 2>&1)
;;
*)
echo "Usage: /etc/init.d/openldap-2.1.25 { start | stop }"
;;
esac
exit 0
1.5. Carga Masiva de Datos
Para realizar una carga masiva a este nuevo directorio instalado a partir de un
(cid:12)chero LDIF, el comando a ejecutar ser(cid:19)a el siguiente:
# /usr/local/openldap-2.1.25/sbin/slapadd
-f /usr/local/openldap-2.1.25/etc/openldap/slapd.conf
5
-b "o=Universidad Carlos III,c=es"
-l <DatosIniciales>.ldif
6
Comentarios de: OpenLDAP 2.1.25 (0)
No hay comentarios