Nachdem man den LDAP Server läuft, sollte man sich Gedanken über eine sinnvolle Struktur der Daten im LDAP Server machen. Das ist natürlich abhängig vom gewünschten Einsatzgebiet.
In diesem Beispiel geht es um einen Root Server, auf den ein paar Domains für Freunde (und mich selbst natürlich) gehostet werden. Auf bestimmte URLS einiger Domains soll der Zugang mit einem Passwort eingeschränkt werden. Natürlich sind sowohl die URLs als auch die User jeweils unterschiedlich. Da ich keine Zeit und Lust habe, neue User einzurichten oder vergessene Passwörter zurückzusetzen, soll das jemand anders machen, der natürlich die Admin-Rechte haben muss - aber nur für seine eigene Domain.
Einige wenige User sollen sich per FTP auf dem Server einloggen dürfen, um ihre Daten hochzuladen.
Die Verwaltung der Email-Daten sollte auch vereinheitlicht werden. Jede Domain hat einen Email-Account mit mehr oder weniger vielen Benutzern, es gibt auch hier wieder Passwörter, Account Settings usw. Die Benutzer sind natürlich nicht unbedingt dieselben wie die, die Zugriff auf o.a. Download-Verzeichnisse haben.
Für alle diese Anforderungen gibt es natürlich einzelne Lösungsmöglichkeiten, aber mit LDAP kann man alles vereinheitlichen.
Die Struktur
Folgende Struktur hat sich herauskristallisiert:
- Ganz oben ist in der Hierarchie ist der gemietete Root-Server. Also: "o=Server" (das "o" steht für "organization").
- Es folgen die einzelnen Domains: "ou=www.domainname" ("ou" steht für "organizational unit").
- Die User sind in einer "ou=people" untergebracht.
- Die gewünschten Berechtigungen werden über die Mitgliedschaft in einer entsprechenden Gruppe geregelt.
- Für Testzwecke gibt es noch eine weitere Hierarchie: "o=Test".
Die Standardkonfiguration initialisiert die Datenbank mit dem Domainnamen, im Beispiel war das "dc=schirmacher,dc=de". Wir brauchen aber "o=Server". Diese Einstellung wird in der slapd.conf vorgenommen:
####################################################################### # Specific Directives for database #1, of type bdb: # Database specific directives apply to this databasse until another # 'database' directive occurs database bdb # The base of your directory in database #1 suffix "o=Server" # Where the database file are physically stored for database #1 directory "/var/lib/ldap1"
Bei Änderung des suffix muss man auch weiter unten dieselbe Änderung bei den Berechtigungen vornehmen.
Für die gewünschte zweite Test-Hierarchie duplizieren wir den kompletten zweiten Teil der slapd.conf (ab "Specific Directives for database #1"), setzen 'suffix "o=Test"' und ersetzen jeden auftretenden Pfadnamen durch /var/lib/ldap2. Nachdem wir auch die neuen Directories /var/lib/ldap1 und /var/lib/ldap2 angelegt haben (Owner, Group und Berechtigungen genau wie /var/lib/ldap einstellen), starten wir den slapd neu. Die beiden neuen Directories sollten jetzt mit einer leeren LDAP DB initialisiert sein. Ist das nicht der Fall, gab es beim Anlegen wahrscheinlich auch entsprechende Fehlermeldungen.
Um die weitere Struktur mit JXplorer anlegen zu können, muss sich JXplorer am LDAP Server anmelden können, das erfordert wiederum einen vorhandenen User.
Den initialen Inhalt importiert man am besten mit "slapadd". Dazu erstellen wir eine Datei server.ldif:
dn: o=Server objectClass: top objectClass: organization o: Server structuralObjectClass: organization dn: cn=admin,o=Server objectClass: simpleSecurityObject objectClass: organizationalRole cn: admin description: LDAP administrator structuralObjectClass: organizationalRole userPassword:: e1NIQX0wRFBpS3VOSXJyVm1EOElVQ3V3MWhReE5xWmM9
Diese Datei wird mit folgenden Anweisungen importiert:
# /etc/init.d/slapd stop Stopping OpenLDAP: slapd. # rm /var/lib/ldap1/* # slapadd -n 1 < server.ldif # chown -R openldap.openldap /var/lib/ldap1 # /etc/init.d/slapd start Starting OpenLDAP: slapd. #
Wichtig: auf die Berechtigungen achten. Wenn man das "chown" vergisst, gehören die Datenbankfiles root, nicht openldap. Man erhält dann bei Schreibversuchen im LDAP gar wunderliche Fehlermeldungen.
Nun sollte man sich mit JXplorer, dem Benutzer-DN "cn=admin,o=Server" sowie dem Passwort "admin" anmelden können.
Die Verzeichnisstruktur kann nun manuell mit JXplorer erstellt werden. Alternativ kann man natürlich auch ein LDIF File erstellen oder generieren und importieren.
2 Comments
Anonymous
Hallo Arne,
vielen Dank für die gute Darstellung. Was ich etwas verwirrend finde ist die Aussage oben "Die Standardkonfiguration initialisiert die Datenbank mit dem Domainnamen, im Beispiel war das "dc=schirmacher,dc=de". Wir brauchen aber "o=Server"."
Heißt das, Du hast vom Prinzip her, die erste Standardkonfiguration ("dc=schirmacher,dc=de") überschrieben oder die zweite und dritte Version zusätzlich hinzugefügt (also "/var/lib/ldap", "/var/lib/ldap1" und "/var/lib/ldap2")?
Dank und Gruß
Thomas
Anonymous
Wow, schöne Website
Genau das was ich gesucht habe. Werde mich mal heute abend an meinen
Pinguin setzen und versuchen mir mal mit OpenLDAP was zu basteln
Vielen Dank!
Gruß
Marco