“memberOf” in OpenLDAP unter Debian aktivieren
Da ich derzeit mit LDAP rumspiele und ein paar Probleme habe, wollte ich dieses hier für die Nachwelt dokumentieren.
Problem
In LDAP möchte ich Personen und Gruppen haben. Die Personen sollen Mitglieder der Gruppen sein. Für die Personen benutze ich objectClass=“inetOrgPerson” und für Gruppen objectClass=“groupOfNames”. Bei einer Suchabfrage möchte ich Personen filtern, die in einer bestimmten Gruppe sind. Der Teil dafür lautet “memberOf=cn=testgruppe,ou=groups,dc=example,dc=com”. Leider funktioniert dies out-of-the-box nicht.
Bei einer Suche habe ich immer Anleitungen für “/etc/ldap/slap.conf” gefunden. Leider benutzt Debian diese Config nicht (mehr).
Lösung
Zuerst benötigt man einen Adminuser für die Configs. Da reicht der am Anfang eingerichtete Admin nicht, sondern man braucht einen weiteren.
Hierzu ändern man die Datei /etc/ldap/slapd.d/cn=config/olcDatabase={0}config.ldif und fügt nach der Zeile:
olcRootDN: cn=admin,cn=config
die Zeile
olcRootPW: meinpasswort
ein. Das Passwort muss entsprechend geändert werden. Danach muss OpenLDAP neugestartet werden.
Dann eine Datei (irgendwo) mit dem Namen memberof_add.ldif anlegen:
dn: cn=module,cn=config
objectClass: olcModuleList
cn: module
olcModulePath: /usr/lib/ldap
olcModuleLoad: memberof
sowie die Datei mit dem Namen memberof_config.ldif:
dn: olcOverlay=memberof,olcDatabase={1}hdb,cn=config
objectClass: olcMemberOf
objectClass: olcOverlayConfig
objectClass: olcConfig
objectClass: top
olcOverlay: memberof
olcMemberOfDangling: ignore
olcMemberOfRefInt: TRUE
olcMemberOfGroupOC: groupOfNames
olcMemberOfMemberAD: member
olcMemberOfMemberOfAD: memberOf
Anschließend fügt man in LDAP diese configs hinzu:
ldapadd -D cn=admin,cn=config -W -h localhost -f memberof\_add.ldif
ldapadd -D cn=admin,cn=config -W -h localhost -f memberof\_config.ldif
Dort gibt man jeweils das gerade eben angelegte Passwort an.
Jetzt muss man noch wissen, dass der Filter erst bei neuen Gruppen funktioniert. Alte Gruppen müssen gelöscht und neuangelegt werden.