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 (DIT, Directory Information Tree) 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
Wurzelelement des Verzeichnisbaums, das nicht real 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
Wurzelelement root. Hierin können die untergeordneten
Elemente c (Land), dc
(Domänenkomponente) oder o (Organisation) enthalten sein.
Die Beziehungen innerhalb eines LDAP-Verzeichnisbaums werden im Folgenden in
Abbildung 45.1, „Struktur eines LDAP-Verzeichnisses“ dargestellten Beispiel verdeutlicht.
Das vollständige Diagramm umfasst einen Beispiel-Verzeichnisbaum. Die
Einträge auf allen drei Ebenen werden dargestellt. Jeder Eintrag entspricht
einem Kästchen im Bild. Der vollständige gültige eindeutige
Name für den fiktiven SUSE-Mitarbeiter Geeko Linux lautet in diesem Fall
cn=Geeko Linux,ou=doc,dc=suse,dc=de. Er wird
zusammengesetzt, indem dem RDN cn=Geeko Linux dem DN des
vorhergehenden Eintrags ou=doc,dc=suse,dc=de hinzugefügt
wird.
Die allgemeine Festlegung der Objekttypen, die im DIT gespeichert werden sollen, erfolgt anhand eines Schemas. 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 verwendeten Schemata (siehe RFC 2252 und 2256). 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 45.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 Attributwerte.
Tabelle 45.1. Häufig verwendete Objektklassen und Attribute
Objektklasse | Bedeutung | Beispieleintrag | Erforderliche Attribute |
|---|---|---|---|
dcObject | domainComponent (Name der Domänenkomponenten) | suse | dc |
organizationalUnit | organizationalUnit (organisatorische Einheit) | doc | ou |
inetOrgPerson | inetOrgPerson (personenbezogene Daten für das Intranet oder Internet) | Geeko Linux | sn und cn |
In Beispiel 45.1, „Ausschnitt aus schema.core “ wird ein Ausschnitt einer Schemadirektive mit entsprechenden Erklärungen dargestellt (die Zeilen sind für Erklärungszwecke nummeriert).
Beispiel 45.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
Definitition basiert, erwähnt. Der Ausdruck SUP in Zeile
3 weist auf einen übergeordneten Attributtypen hin, dem dieses 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.