Benutzer-Werkzeuge

Webseiten-Werkzeuge


it:ldap

Dies ist eine alte Version des Dokuments!


Bisherige Erfahrungen gibt's mit OpenLdap, der 389 Directory Server soll aber auch ganz gut sein.

OpenLDAP

Gruppenmanagement

Um LDAP-User (oder auch andere Objekte) in Gruppen zu verwalten, gibt es die Objectklassen (~GroupOfNames und ~GroupOfUniqueNames) die mit ihrem Attribut „member“ auf andere LDAP-Objekte verweisen. Wenn jetzt das Problem aufkommt, heraus zu finden, ob ein LDAP-Objekt Mitglied einer Gruppe ist bzw. in welchen Gruppen es Mitglied ist, ist das durchsuchen aller defionierten Gruppen eine Möglichkeit. Die bessere Möglichkeit ist das Overlay-Modul „~MemberOf“. Diese Modul sorgt selbstständig für die Referenz des „Member“-Attributes entsprechend der Definition im „~GroupOf(Unique)Names“-Objekt, indem es das member-Attribut virtuell erstellt. Dieses Overlay ist in der Standard-Konfiguration nicht aktiv, das kann mit folgenden Code geändert werden:

#> ldapmodify

dn: cn=module{0},cn=config
changetype: modify
add: olcModuleLoad
olcModuleLoad: memberof

jetzt muss noch separat für jede Datenbank das Overlay eingerichtet werden, wobei es einen Unterschied zwischen „~GroupOfNames“ und „~GroupOfUniqueNames“ gibt:

#> ldapadd

dn: olcOverlay=memberof,olcDatabase={__xx__}hdb,cn=config
olcMemberOfGroupOC: groupOfUniqueNames
objectClass: olcMemberOf
objectClass: olcOverlayConfig
objectClass: olcConfig
objectClass: top
olcOverlay: memberof
olcMemberOfRefInt: TRUE
# die folgenden 2 Zeilen werden nur für "GroupOfUniqueNames" benötigt
# für  "GroupOfNames" stimmen die Defaultwerte des Overlays
olcMemberOfMemberAD: uniqueMember
olcMemberOfMemberOfAD: memberOf

Wenn das alles ohne Fehler geklappt hat, werden bei Änderungen im Gruppen-Objekt die entsprechenden Member-Objekte angepast.

Berechtigungen / Access Control Lists

OpenLDAP speichert die ACLs im LDAP-baum im 'cn=config'-zweig. Unter Debian ist 'manage' Zugriff nur für den unix 'root' User zugelassen. Sollen auch reguläre LDAP-accounts Zugriff bekommen, muss mman das explizit einrichten. Folgender LDIF-schnipsel fügt eine entsprechende Zugriffsregel vor die ursprünglichen ein.

dn: olcDatabase={0}config,cn=config
changetype: modify                  
replace: olcAccess
olcAccess: {0}to * by dn=cn=admin,dc=stratoserver,dc=net manage by dn=cn=ldap-remote,ou=manager,dc=geroedel,dc=de manage
olcAccess: {1}to * by dn.exact=gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth manage by * break
modifying entry "olcDatabase={0}config,cn=config"

Das ganze kann per 'ldapmodify' ausgeführt werden. Durch die „SASL/Extern“ auth funktioniert das nur von root-account des Systems.

root:/etc# ldapmodify -Y EXTERNAL -H ldapi:///
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
it/ldap.1644111049.txt.gz · Zuletzt geändert: 2022/02/06 01:30 von sven