Table des matières

Que faire quand le service LDAP ne marche pas

Points à vérifier

Liste non-exhaustive des points à vérifier :

et qu'il est accessible.

(On utilise pour cela le client ldapsearch installé par le paquet ldap-utils).

# -ZZ force l'utilisation de TLS, vous pouvez l'enlever pour tester en clair
ldapsearch -LLL -ZZ -x -h ldap-maitre.guim.info -b "dc=guim,dc=info" uid=mathieu uid sn
ldapsearch -LLL -ZZ -x -h replica.guim.info -b "dc=guim,dc=info" uid=mathieu uid sn

Script utile

Voici un script bash qui permet de tester la connectivité au service LDAP, il interroge le serveur désigné, puis vérifie s'il le nom d'hote est un alias DNS auquel cas il interroge les vrais serveurs :

#!/bin/bash
# check-ldap.sh - test la connexion au ldap
function connect {
	ip_addr=$1
	tls=${2:+"-ZZ"}
	cmd=$(ldapsearch -LLL -x -h ${ip_addr} ${tls} -b "dc=guim,dc=info" uid=mathieu uid 2> /dev/null)
	if [ $? -eq 0 ]; then
		echo "   Connexion en ${2:-clair} : OK"
	else
		echo "   Connexion en ${2:-clair} : ERREUR"
	fi
}
host=${1:-'ldap.guim.info'}
echo "Serveur : ${host}"
connect ${host}
connect ${host} "tls"
ping -c 1 ${host} | awk '/icmp_seq/ {print "   Ping "$8" "$9}'
if [ $(host ${host} | grep 'address' | wc -l) -gt 1 ]; then
	nslookup ${host} | awk '/Address/ && !/#/ {print $2}' | while read ip; do
		echo " "
		fqdn=$(nslookup ${ip} | awk '/name =/ {print $4}')
		echo "=> $ip = ${fqdn}"
		connect ${ip}
		connect ${fqdn%.} "tls"
		ping -c 1 ${fqdn%.} | awk '/icmp_seq/ {print "   Ping "$8" "$9}'
	done
fi

Trop de fichiers ouverts

En vérifiant le fichier /var/log/slapd.log, on voit apparaître l'erreur suivante à plusieurs reprise :

/var/log/slapd.log

Jan 24 15:05:12 ldap slapd[2102]: daemon: accept(7) failed errno=24 (Too many open files)

La commande “ulimit -a” retourne :

core file size        (blocks, -c) 0
data seg size         (kbytes, -d) unlimited
file size             (blocks, -f) unlimited
max locked memory     (kbytes, -l) unlimited
max memory size       (kbytes, -m) unlimited
open files                    (-n) 1024
pipe size          (512 bytes, -p) 8
stack size            (kbytes, -s) 8192
cpu time             (seconds, -t) unlimited
max user processes            (-u) unlimited
virtual memory        (kbytes, -v) unlimited

La commande suivante donne le nombre de fichiers ouvert par slapd :

ls -1 /proc/`pidof slapd`/fd | wc -l
40 

Modification d'un mot de passe

Création d'un ldif pour la modification d'un attribut :

dn: uid=toto,ou=people,dc=guim,dc=info
changetype: modify
replace: userpassword
userpassword: {SSHA}60aL/VKV1/5jOIBErjLvrY+rRY8ilo2n
-

Utilisation de ldapmodify pour modifier :

sudo ldapmodify -x -W -D "cn=admin,dc=guim,dc=info" -h localhost -f fichier.ldif