Um ein tieferes Hintergrundwissen zur Funktionsweise eines LDAP-Servers und dem Speichern der Daten zu erhalten, ist es wichtig, die Art und Weise zu verstehen, in der Daten auf dem Server organisiert werden, und wie es LDAP ermöglicht wird, schnellen Zugriff auf die benötigten Daten bereitzustellen. Für eine erfolgreiche LDAP-Einrichtung müssen Sie außerdem die grundlegende LDAP-Terminologie kennen. Dieser Abschnitt erläutert das grundlegende Layout eines LDAP-Verzeichnisbaumes und stellt die im LDAP-Kontext verwendete grundlegende Terminologie bereit. Überspringen Sie diesen einführenden Abschnitt, wenn Sie bereits über LDAP-Hintergrundwissen verfügen und nur erfahren möchten, wie eine LDAP-Umgebung in openSUSE eingerichtet wird. Lesen Sie unter Abschnitt 26.3, „Konfigurieren eines LDAP-Servers mit YaST“ bzw. Abschnitt 26.7, „Manuelles Konfigurieren eines LDAP-Servers“ weiter.
Ein LDAP-Verzeichnis weist eine Baumstruktur auf. Alle Einträge (auch "Objekte" genannt) des Verzeichnisses verfügen über eine festgelegte Position innerhalb dieser Hierarchie. Diese Hierarchie wird als Verzeichnisinformationsbaum (Directory Information Tree, DIT) bezeichnet. Der vollständige Pfad zum gewünschten Eintrag, durch den der Eintrag eindeutig identifiziert wird, wird als eindeutiger Name oder DN (Distinguished Name) bezeichnet. Ein einzelner Knoten im Pfad dieses Eintrags wird relativer eindeutiger Name oder RDN (relative distinguished name) genannt. Objekte können im Allgemeinen einem von zwei möglichen Typen zugewiesen werden:
Diese Objekte können wiederum andere Objekte enthalten. Solche Objektklassen sind beispielsweise root
(das Stammelement des Verzeichnisbaums, das in der Regel nicht vorhanden ist), c
(Land), ou
(organisatorische Einheit) und dc
(Domänenkomponente). Dieses Modell ist mit Verzeichnissen (Ordnern) in einem Dateisystem vergleichbar.
Diese Objekte befinden sich am Ende einer Verzweigung und verfügen nicht über untergeordnete Objekte. Beispiele: person
, InetOrgPerson
oder groupofNames
.
Auf der obersten Ebene in der Verzeichnishierarchie steht das Stammelement root
. Hierin können die untergeordneten Elemente c
(Land), dc
(Domänenkomponente) oder o
(Organisation) enthalten sein. Die Bezüge innerhalb eines LDAP-Verzeichnisbaums werden im folgenden Beispiel verdeutlicht, das in Abbildung 26.1, „Struktur eines LDAP-Verzeichnisses“ gezeigt wird.
Das vollständige Diagramm stellt einen Beispiel-Verzeichnisbaum dar. Die Einträge auf allen drei Ebenen werden dargestellt. Jeder Eintrag entspricht einem Feld im Bild. Der vollständige, gültige eindeutige Name für den fiktiven Mitarbeiter Geeko Linux
lautet in diesem Fall cn=Geeko Linux,ou=doc,dc=example,dc=com
. Er wird zusammengesetzt, indem dem RDN cn=Geeko Linux
des DN des vorhergehenden Eintrags ou=doc,dc=example,dc=com
hinzugefügt wird.
Die Objekttypen, die im DIT gespeichert werden sollen, werden global anhand eines Schemas bestimmt. Der Objekttyp wird durch die Objektklasse bestimmt. Mit der Objektklasse wird festgelegt, welche Attribute des betreffenden Objekts zugewiesen werden müssen bzw. können. Daher muss ein Schema die Definitionen aller Objektklassen und Attribute enthalten, die im gewünschten Anwendungsszenario verwendet werden. Es gibt einige häufig verwendete Schemata (siehe RFC 2252 und 2256). In LDAP RFC werden einige häufig verwendete Schemata definiert (siehe zum Beispiel RFC4519). Zusätzlich sind Schemata für viele andere Fälle verfügbar (zum Beispiel Samba, NIS-Ersatz etc.). Es besteht jedoch die Möglichkeit, benutzerdefinierte Schemata zu erstellen oder mehrere einander ergänzende Schemata zu verwenden, sofern die Umgebung, in der der LDAP-Server verwendet werden soll, dies erfordert.
In Tabelle 26.1, „Häufig verwendete Objektklassen und Attribute“ erhalten Sie einen kurzen Überblick über die Objektklassen von core.schema
und inetorgperson.schema
, die im Beispiel verwendet werden, und über die erforderlichen Attribute und gültigen Attributswerte.
Tabelle 26.1. Häufig verwendete Objektklassen und Attribute
Object Class |
Bedeutung |
Beispieleintrag |
Obligatorische Attribute |
---|---|---|---|
dcObject |
domainComponent (Name der Domänenkomponenten) |
Beispiel |
dc |
organizationalUnit |
organizationalUnit (organisatorische Einheit) |
doc |
ou |
inetOrgPerson |
inetOrgPerson (personenbezogene Daten für das Intranet oder Internet) |
Geeko Linux |
sn und cn |
In Beispiel 26.1, „Ausschnitt aus schema.core“ wird ein Ausschnitt einer Schemadirektive mit entsprechenden Erklärungen dargestellt (die Zeilen sind für Erklärungszwecke nummeriert).
Beispiel 26.1. Ausschnitt aus schema.core
#1 attributetype (2.5.4.11 NAME ( 'ou' 'organizationalUnitName') #2 DESC 'RFC2256: organizational unit this object belongs to' #3 SUP name ) ... #4 objectclass ( 2.5.6.5 NAME 'organizationalUnit' #5 DESC 'RFC2256: an organizational unit' #6 SUP top STRUCTURAL #7 MUST ou #8 MAY (userPassword $ searchGuide $ seeAlso $ businessCategory $ x121Address $ registeredAddress $ destinationIndicator $ preferredDeliveryMethod $ telexNumber $ teletexTerminalIdentifier $ telephoneNumber $ internationaliSDNNumber $ facsimileTelephoneNumber $ street $ postOfficeBox $ postalCode $ postalAddress $ physicalDeliveryOfficeName $ st $ l $ description) ) ...
Der Attributtyp organizationalUnitName
und die entsprechende Objektklasse organizationalUnit
dienen hier als Beispiel. Zeile 1 enthält den Namen des Attributs, den eindeutigen OID (Object Identifier) (numerisch) und die Abkürzung des Attributs.
Zeile 2 enthält eine kurze, mit DESC
gekennzeichnete,, Beschreibung des Attributs. Hier wird der entsprechende RFC, auf dem die Definition basiert, erwähnt. Der Ausdruck
SUP in Zeile 3 weist auf einen untergeordneten Attributtyp an, dem das Attribut angehört.
Die Definition der Objektklasse organizationalUnit
beginnt in Zeile 4 wie die Definition des Attributs mit einem OID und dem Namen der Objektklasse. Zeile 5 enthält eine kurze Beschreibung der Objektklasse. In Zeile 6 mit dem Eintrag SUP top
wird angegeben, dass diese Objektklasse keiner anderen Objektklasse untergeordnet ist. In Zeile 7 werden, mit MUST
beginnend, alle Attributtypen aufgeführt, die in Verbindung mit einem Objekt vom Typ organizationalUnit
verwendet werden müssen. In der mit MAY
beginnenden Zeile 8 werden die Attribute aufgeführt, die im Zusammenhang mit dieser Objektklasse zulässig sind.
Eine sehr gute Einführung in die Verwendung von Schemata finden Sie in der Dokumentation zu OpenLDAP. Wenn Sie OpenLDAP installiert haben, ist sie unter /usr/share/doc/packages/openldap2/admin-guide/index.html
zu finden.