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.
1 Kommentar