Erreur Filter failed OpenLDAP
Lors d'une mise à jour de la machine Ubuntu, passage depuis 14.04 vers 15.04, des messages d'erreurs ont été constatés dans les logs système.
Cet article présente la cause et la solution trouvée.
Votre avis
Nobody voted on this yet
|
|
Analyse
Les messages d'erreur sont constatés dans le fichier /var/log/syslog
. Dans celle-ci, les messages suivants ont été observés:
May 5 20:44:06 etienne-server kernel: [32005.130202] audit: type=1400 audit(1430851446.537:1022): apparmor="DENIED" operation="file_perm" profile="/usr/sbin/slapd" name="/run/slapd/ldapi" pid=1576 comm="slapd" requested_mask="r" denied_mask="r" fsuid=119 ouid=0 May 5 20:44:06 etienne-server kernel: [32005.130210] audit: type=1400 audit(1430851446.537:1023): apparmor="DENIED" operation="file_perm" profile="/usr/sbin/slapd" name="/run/slapd/ldapi" pid=1576 comm="slapd" requested_mask="r" denied_mask="r" fsuid=119 ouid=0 May 5 20:44:06 etienne-server kernel: [32005.130454] audit: type=1400 audit(1430851446.537:1024): apparmor="DENIED" operation="file_perm" profile="/usr/sbin/slapd" name="/run/slapd/ldapi" pid=1576 comm="slapd" requested_mask="r" denied_mask="r" fsuid=119 ouid=0 May 5 20:44:06 etienne-server kernel: [32005.130462] audit: type=1400 audit(1430851446.537:1025): apparmor="DENIED" operation="file_perm" profile="/usr/sbin/slapd" name="/run/slapd/ldapi" pid=1576 comm="slapd" requested_mask="r" denied_mask="r" fsuid=119 ouid=0 May 5 20:44:07 etienne-server kernel: [32006.132086] audit: type=1400 audit(1430851447.537:1026): apparmor="DENIED" operation="file_perm" profile="/usr/sbin/slapd" name="/run/slapd/ldapi" pid=1583 comm="slapd" requested_mask="r" denied_mask="r" fsuid=119 ouid=0 May 5 20:44:07 etienne-server kernel: [32006.132111] audit: type=1400 audit(1430851447.537:1027): apparmor="DENIED" operation="file_perm" profile="/usr/sbin/slapd" name="/run/slapd/ldapi" pid=1583 comm="slapd" requested_mask="r" denied_mask="r" fsuid=119 ouid=0
Le message est explicite, l'application AppArmor refuse l'accès en lecture au fichier /run/slapd/ldapi
. La configuration se trouve dans le fichier /etc/apparmor.d/usr.sbin.slapd
dont le contenu est:
# vim:syntax=apparmor
# Last Modified: Fri Jan 4 15:18:13 2008
# Author: Jamie Strandboge <jamie@ubuntu.com>
#include <tunables/global>
/usr/sbin/slapd {
#include <abstractions/base>
#include <abstractions/nameservice>
#include <abstractions/p11-kit>
#include <abstractions/ssl_certs>
/etc/ssl/private/ r,
/etc/ssl/private/* r,
/etc/sasldb2 r,
capability dac_override,
capability net_bind_service,
capability setgid,
capability setuid,
/etc/gai.conf r,
/etc/hosts.allow r,
/etc/hosts.deny r,
# ldap files
/etc/ldap/** kr,
/etc/ldap/slapd.d/** rw,
# kerberos/gssapi
/dev/tty rw,
/etc/gss/mech.d/ r,
/etc/gss/mech.d/* kr,
/etc/krb5.keytab kr,
/var/tmp/ rw,
/var/tmp/** rw,
# the databases and logs
/var/lib/ldap/ r,
/var/lib/ldap/** rwk,
# lock file
/var/lib/ldap/alock kw,
# pid files and sockets
/{,var/}run/slapd/* w,
/{,var/}run/nslcd/* w,
/usr/lib/ldap/ r,
/usr/lib/ldap/* mr,
/usr/sbin/slapd mr,
# Site-specific additions and overrides. See local/README for details.
#include <local/usr.sbin.slapd>
}
Donc les restrictions mises en place ne permettent pas à l'application /usr/sbin/slapd
d'accéder au fichier /run/slapd/ldapi
.
Mais comme souvent, un point d'entrée a été mise en place afin d'étendre la configuration, à travers l'instruction #include <local/usr.sbin.slapd>
. Attention, le caractère #
devant l'instruction include
n'est pas utilisé pour démarrer un commentaire. Il ne faut pas le supprimer.
Correctif
Une fois les messages d'erreur identifié, il est aisé d'appliquer un correctif. D'après les deux messages d'erreur, OpenLDAP essaye d'accéder aux fichier:
-
/run/slapd/ldapi
en lecture uniquement.
Le fichier /etc/apparmor.d/local/usr.sbin.slapd
est donc modifié pour rajouter les droits d'accès aux fichiers:
# Site-specific additions and overrides for usr.sbin.slapd.
# For more details, please see /etc/apparmor.d/local/README.
/run/slapd/ldapi r,
Afin que cela soit pris en compte, il faut recharger le service AppArmor:
#sudo service apparmor restart