Administratorhandbuch:LDAP
Nach Meinung des Autors ist diese Seite fertig. Es wäre schön, wenn ausgiebige Tests durch viele Nutzer eventuell noch vorhandene Fehler beseitigen helfen. |
Die zentrale Dienste- und Nutzerverwaltung mit LDAP
Dieses Kapitel ist etwas umfangreicher, da die Einführung von LDAP in den Arktur-Schulserver eine wesentliche Neuerung der Version 4 darstellt. |
Grundlagen des LDAP
Was ist LDAP
Das Lightweight Directory Access Protocol (LDAP) ist in der Lage, die Benutzer- und Diensteverwaltung für unterschiedliche Betriebssysteme in einer zentralen Datenbasis zu übernehmen. LDAP schafft damit die Voraussetzung für die Realisierung von "Single Sign-On", der einmaligen, netzweit gültigen Anmeldung von Benutzern für die verschiedensten Dienste.
Ein Verzeichnisdienst
LDAP ist ein Verzeichnisdienst, aber keine relationale Datenbank. Worin besteht der Unterschied?
- Auf ein Verzeichnis wird sehr oft lesend, aber nur selten schreibend zugegriffen.
- Ein Verzeichnis ist baumartig organisiert.
- Teilbereiche können jederzeit auf verschiedene Server verteilt werden. Damit ist auch deren Administration wesentlich leichter zu verteilen.
- Verzeichnisse ermöglichen von vorn herein ein objektorientiertes Datenmodell.
Ein Beispiel: Das DNS (Domain Name System) ist schon seit vielen Jahren als Verzeichnis organisiert. Damit ist unter anderem gewährleistet, dass jedes Land seine eigene Zone selbst verwalten kann.
Ein weiterer Anwendungsfall für Verzeichnisse ist die Abbildung von Organisationen. Organisationen sind meist hierarchisch aufgebaut. So können Abteilungen ihre eigenen Verzeichnisse aufbauen und verwalten, ohne das in der Spitze der Organisation der Überblick verloren geht. Die Administration kann bis zur untersten Ebene delegiert werden. Damit ist es Beispielsweise sogar einem einzelnen Benutzer erlaubt, sein eigenes Adressbuch direkt im LDAP selbst zu administrieren.
Objektorientierung
Objektmodell: Bitte lesen Sie in entsprechender Fachliteratur nach, denn eine Beschreibung des Objektmodells würde diese Anleitung sprengen. Hier kann also nur auf die Umsetzung des Objektmodells im LDAP eingegangen werden.
Objekte: Verzeichnisse bilden Objekte ab und setzen diese miteinander in Beziehung. Objekte verfügen über einen Satz von Eigenschaften, den Attributen.
Ein ganz besonderes Attribut ist der Name des Objektes. Jedes Objekt hat aber eine Vielzahl weiterer Eigenschaften (Attribute).
Ein Attribut wiederum besteht aus einem Namen und (keinem, genau einem oder mehreren) Attributwerten.
Objektklassen: Bei Verzeichnisdiensten werden Objektklassen verwendet, um die Struktur der Daten zu beschreiben. Wenn also zum Beispiel die E-Mailadresse der Benutzer um einen kryptografische Schlüssel erweitert werden soll, wird durch Vererbung einfach eine neue Objektklasse erzeugt, die um das Feld "kryptografischer Schlüssel" erweitert wird.
Attribute: Um die Wiederverwendbarkeit der Attribute gewährleisten zu können, werden diese getrennt von den Objekten definiert. Das geschieht in "Attribute Type", also den Attributtypen.
Was kann LDAP verwalten
LDAP kann die Dienste- und Nutzerverwaltung in einem Verzeichnis vereinen.
- Benutzer und Gruppen, aus ehemals:
/etc/passwd /etc/shadow /etc/groups
- IP-Dienste (Zuordnung zwischen Diensten und Portnummern)
- IP-Protokolle, aus ehemals:
/etc/protocols
- RPCs, aus ehemals:
/etc/rpc
- NIS-Informationen
- Boot-Informationen (MAC-Adressen und Boot-Parameter)
- Mountpoints, aus ehemals:
/etc/fstab
- Mail-Aliase
Hinweis: Der Arktur-Schulserver Version 4.0 verwaltet nicht alle hier genannten Dienste im LDAP.
Wo wird dem Server denn gesagt, das er auf LDAP zugreifen muss
- Zum einen beim Kompilieren der Pakete. Fehlt die LDAP-Unterstützung beim Übersetzen, wird er nie mit einem LDAP-Server kommunizieren können.
- Zum anderen müssen die Zugriffsdaten auf LDAP in der jeweiligen Konfigurationsdatei, beim DHCP-Server beispielsweise in "/etc/dhcpd.conf" stehen.
- Die eigentliche Datenbasis von LDAP liegt im Verzeichnis "/var/lib/ldap". Versuchen Sie nie, dort direkt Änderungen durchzuführen.
LDIF-Dateien
Das LDAP Data Interchange Format (kurz LDIF) dient zum ein- und auslesen von Daten in/aus LDAP mittels einer Textdatei. Eine LDIF-Datei enthält eine Versionsnummer, eine Anweisung (add, delete, modify...) zur Behandlung des folgenden Datensatzes und einen (oder viele) Datensätze.
Wo liegen diese LDIF-Dateien
Wenn Sie als Nutzer sysadm eine Änderung veranlassen, dann wird im Hintergrund mit echo-Befehlen aus Ihren Eingaben eine LDIF-Datei erzeugt. Wenn Sie dann auf "Aktivieren" gehen, wird diese LDIF-Datei in den LDAP eingelesen und danach weggeworfen, also gelöscht.
Beispiel: Sie können die LDIF-Dateien der Ersteinrichtung (Serverinstallation) in "/var/adm/setup/done" nachlesen.
Hinweis: Der Arktur-Schulserver 4 hat einen cron-Job, der täglich in der Nacht eine gesamt.ldif Datei erstellt und diese im Verzeichnis "/etc/ods" ablegt. Wenn Sie also "/etc" immer komplett sichern, sind die Daten aus Ihrem LDAP später wiederherstellbar.
LDAP nutzen
Suche im LDAP
Wenn Sie Daten im LDAP finden möchten, dann ist das mit dem Befehl "ldapsearch" jeder Zeit möglich. Eine komplette Beschreibung kann hier aber nicht erfolgen, lesen Sie mit "man ldapsearch" bitte selbst nach.
Beispiele: So liefert der folgende Befehl die Realnamen aller Schüler der Klasse 7a:
ldapsearch -x -LLL "(gecos=*,7a)" gecos
Verknüpfungen mit UND bzw. ODER sind ebenfalls möglich. So liefert also der folgende Befehl die Daten aller Gruppen, die mit "zeit" beginnen (Zeitung, Zeitformen,...):
ldapsearch -x -LLL "(&(objectclass=posixGroup)(cn=zeit*))"
LDAP-Daten auslesen
Die man-page von slapcat verrät,...
/usr/sbin/slapcat [-v] [-c] [-d level] [-b suffix] [-n dbnum] [-f slapd.conf] [-l ldif-file]
...dass die Ausgabe auf dem Bildschirm erfolgt, wenn nicht die Option -l mitgegeben wird.
-l ldif-file Write LDIF to specified file instead of standard output.
Jede Nacht legt Arktur genau diese Ausgabe in "/etc/ods" als Datei "gesamt.ldif" ab.
LDAP-Daten einlesen
Slapadd liest mit der gleichen Option aus einer Datei die Daten wieder in das LDAP ein.
Wichtig: slapadd sollte nur ausgeführt werden, wenn LDAP nicht aktiv ist. Also vorher immer den Befehl "/etc/init.d/ldap stop" ausführen, erst dann
slapadd -l /etc/ods/gesamt.ldif
LDAP-Administration
Der Nutzer root
Der Nutzer root hat auf dem LDAP nur Gastrechte. Sie müssen also erst als sysadm eine Nutzerkennung als Hauptadmin festlegen und können sich dann mit dieser Nutzerkennung anmelden. Eine Beschreibung finden Sie unter Teiladmin und Hauptadmin einrichten im Installationshandbuch.
Verwaltung des LDAP
Starten Sie einen Browser und geben Sie die Adresse "https://Arktur/ldapadmin" ein.
Sie werden nach Benutzername und Passwort gefragt. Geben Sie Ihre normalen Nutzerdaten ein.
Hinweis: An "https://Arktur/ldapadmin" können Sie sich mit Nutzername und Passwort anmelden. Bei "https://Arktur/phpldapadmin" müssen Sie die vollständige dn angeben. Da Sie sich an ldapadmin nicht als "cn=admin, dc=meine_schule,c=de" anmelden können, wurden einfach beide Varianten integriert. Der Unterschied ist minimal, da es bis auf die config-Datei nur Hardlinks sind.
Vorsicht: Versuchen Sie nicht, auf eine neuere Version von phpLDAPadmin upzudaten. Seit Version 0.9.4 werden Attribute, die einen Binärtyp haben, nicht mehr angezeigt. Damit können Sie Beispielsweise die MAC-Adressen im DHCP-Baum nicht mehr per ldapadmin anpassen. Neben DHCP trifft das auch auf einige Samba-Attribute zu.