Liste der Konfigurationsdateien

ldap.conf               Client Konfiguration
ldapfilter.conf         Filterregeln
ldapsearchprefs.conf    Bevorzugte Suchkriterien
ldaptemplates.conf      Templates für Formulare
slapd.conf              Server Konfiguration

Konfigurieren der ldap.conf

In der Datei ldap.conf wird die Basis Domain für den Client festgelegt.

#
# ldap.conf für Structur Net
#
# Beachten Sie auch man ldap.conf
#
BASE    dc=avalaris,dc=com
HOST    ldap.avalaris.com

Was bewirkt die hier vorgestellte ldap.conf? Mit der Variable BASE wird die standardmäßig abgefragte Struktur festgelegt. Die Variable HOST gibt den Server an, der standardmäßig abgefragt wird. Über die Variable PORT kann alternativ auch ein anderer Default Port eingestellt werden.

Konfiguration der slapd.conf

Die Datei slapd.conf enthält die Einträge für die Konfiguration des slapd Standalone Server. Der slapd beantwortet die LDAP Anfragen der Clients. Für das folgende Beispiel bekommt die Datei folgenden Inhalt:

#
# slapd.conf für Structure Net (SuSE Style)
#
# Beachten Sie auch "man slapd.conf"
#
# Diese Datei sollte nicht global lesbar sein, da sie ein
# Paßwort enthält.
include /usr/local/etc/openldap/schema/core.schema

referral        ldap://ldap.infospace.com
pidfile         /var/run/slapd.pid
argsfile        /var/run/slapd.args
database        ldbm
directory       /var/openldap
suffix          "dc=avalaris,dc=com"
rootdn          "uid=admin,dc=avalaris,c=com"
rootpw          secret
index           cn,sn,uid       pres,eq,approx,sub
index           objectclass     pres,eq
index           default         none
defaultaccess   read
access to attr=userpassword
   by self write
   by dn="uid=admin,dc=avalaris,dc=com" write
   by * compare

Was bewirkt die hier vorgestellte slapd.conf? Die include Anweisungen bewirken ein Einbinden der angegebenen Dateien. In diesem Fall wird das Standard Schema eingelesen. Es gibt in /usr/local/etc/openldap/schema/ noch eine Reihe anderer Schemas die verschiedene Standard-Anwendungen abdecken. Besonders das cosine.schema und das inetorgperson.schema sind hier interessant. Inetorgperson.schema enthält Definitionen über bestimmte Personen-bezogene Datenobjekte. (Name, Telephonnummer, etc.) Ist der ldap nicht in der Lage, eine Anfrage zu beantworten, fragt er den unter referral angegebenden Server. (infospace.com sollte natürlich durch einen Server aus ihrer Organisation ersetzt werden.) Die Zeilen pidfile und argsfile sind für den laufenden Betrieb (pid=prozess id, args=argumente). Mit dem Schlüsselwort database wird festgelegt, welches Datenbankformat benutzt wird. Es sind auch Abfragen von anderen Datenbanken möglich. Im directory wird spezifiziert, wo die Datenbank zu finden ist bzw. angelegt werden soll. Da dieses Verzeichnis frei wählbar ist, muß es noch von Hand angelegt werden. Dazu reicht ein einfaches:

cd /var
mkdir openldap

Die unter suffix angegebende Struktur legt fest, welche Anfragen über die lokale Datenbank beanwortet werden können. Die rootdn und rootpw Einträge spezifizieren den Administrator der Datenbank. Mit Hilfe der index Anweisung wird der Datenbank mitgeteilt, wie sie Indexe anlegen soll. Zum Schluß werden noch die Zugriffsrechte auf den LDAP Server festgelegt. Standardmäßig erhält jeder Benutzer Lesezugriff auf die Datenbank. Verändern dürfen die Benutzer nur ihren eigenen Eintrag. Diese Aktion wird über das Attribut userpassword verifiziert. Der Benutzer admin darf alle Einträge unterhalb avalaris verändern. Ein Vergleich ist jedem gestattet.

Nach der Installation und Konfiguration des LDAP Servers muß dieser mit Daten gefüttert werden. Das folgende Beispiel erklärt den LDAP Server anhand einer fiktiven Firma mit mehreren Abteilungen. Die einzelnen Felder müssen den lokalen Gegebenheiten nur angepaßt werden, um eine simple Konfiguration aufzusetzten.

Für das folgende Beispiel wird im Verzeichnis /etc/openldap das Unterverzeichnis ldif/ angelegt. In diesem Verzeichnis kann mit jedem x-beliebigen Editor, der ASCII unterstützt, eine Datei mit dem Namen firmenstruktur.ldif erstellt werden. Der Name und das Verzeichnis für die Beispiel LDIF-Dateien sind beliebig. Es müssen für den Fall, das andere Namen oder Pfade verwendet werden, diese nur an die lokalen Gegebenheiten angepaßt werden.

Das Beispiel erstellt den DIT (Directory Information Tree) für die Firma Avalaris in Wien. Die Firma Avalaris bekommt zwei Abteilungen spendiert: Sales und Technik. Jeder Abteilung werden zwei Mitarbeiter zugeordnet. Daraus ergibt sich folgende Struktur:

COM
|
+---- Avalaris -----+
                    |
                    +-- Sales --+-- Mitarbeiter 1 (Max Mustermann)
                    |           |
                    |           +-- Mitarbeiter 2 (Hans Seller)
                    |
                    +-- Technik ---+-- Mitarbeiter 3 (Josef Superman)
                                   |
                                   +-- Mitarbeiter 4 (Georg Zupa)

Um das Beispiel übersichtlich zu gestalten und dem Nutzer zu zeigen, welche Einträge für was verantwortlich sind, habe ich die Beispiel LDIF in eine Datei für die Firmenstruktur und in eine Datei pro Abteilung aufgeteilt. Der admin Account muß natürlich schon in der Firmenstrukur angegeben werden, da sonst keine weiteren Einträge über ldapadd möglich sind; doch dazu später mehr.

Beispiel LDIF firmenstruktur.ldif

dn: dc=avalaris, dc=com
objectclass: organization
objectclass: top
o: Avalaris
l: Wien
postalcode: 1080
streetadress: Josefstaedterstr. 72

dn: ou=Sales, dc=avalaris, dc=com
objectclass: organizationalunit
ou: Sales
description: Verkauf
telephonenumber: 555 555 555
facsmiletelephonenumber: 555555 553

dn: ou=Technik, dc=avalaris, dc=com
objectclass: organizationalunit
ou: Development
description: Verkauf
telephonenumber: 555555551
facsmiletelephonenumber: 5555555552

dn: uid=admin, dc=avalaris, dc=com
objectclass: person
objectclass: organizationalperson
objectclass: inetorgperson
cn: admin
cn: Systemverwalter
cn: Josef Superman
sn: Superman
uid: admin
mail: superman@avalaris.com
l: Wien
postalcode: 1080
streetadress: josefstaedterstr. 72
telephonenumber: 555555554
facsmiletelephonenumber: 1233454

Beispiel LDIF sales.ldif


dn: uid=mustermann, ou=Sales, dc=avalaris, dc=com
objectclass: person
objectclass: organizationalperson
cn: Max Mustermann
sn: Mustermann
uid: mustermann
mail: mustermann@avalaris.com
l: Wien
postalcode: 1080
streetadress: josefstaedterstr. 72
telephonenumber: 1234354
facsmiletelephonenumber: 12434355

dn: uid=seller, ou=Sales, dc=avalaris, dc=com
objectclass: person
objectclass: organizationalperson
cn: Hans Seller
sn: Seller
uid: seller
mail: seller@avalaris.com
l: Wien
postalcode: 1080
streetadress: josefstaedterstr. 72
telephonenumber: 012345454
facsmiletelephonenumber: 098765523

Beispiel LDIF technik.ldif

dn: uid=superman, ou=technik, dc=avalaris, dc=com
objectclass: person
objectclass: organizationalperson
objectclass: inetorgperson
cn: tbendler
cn: Systemverwalter
cn: Josef Superman
sn: Superman
uid: superman
mail: superman@avalaris.com
l: Wien
postalcode: 1080
streetadress: josefstaedterstr. 72
telephonenumber: 555555554
facsmiletelephonenumber: 1233454

dn: uid=zupa, ou=technik, dc=avalaris, dc=com
objectclass: person
objectclass: organizationalperson
cn: Georg Zupa
sn: Zupa
uid: zupa
mail: zupa@avalaris.com
l: Wien
postalcode: 1080
streetadress: josefstaedterstr. 72
telephonenumber: 054321
facsmiletelephonenumber: 0123445566344

Die vorgestellte Datenbank ist natürlich weder sonderlich umfangreich noch besonders trickreich. Doppelte Datensätze wie z.B. Admin und Superman, die sich auf die selbe Person beziehen, können auch über Verweise aufgelöst werden. So kann man z.B. eine Gruppe People erstellen, in der man alle bekannten Personen unterbringt. In den Gruppen Sales, Development und Support trägt man dann Verweise auf diese Personen ein. Welche Daten man überhaupt speichern kann, wird in den Schema Files definiert die man in der slapd.conf inkludiert hat. Mit dem slapadd Befehl können wir unsere LDIF Dateien nun in unser Verzeichnis einfügen. z.B.:

slapadd -v -l firmenstruktur.ldif

Mit dem Befehl slapcat kann man sich den Inhalt des Verzeichnisses ausgeben lassen. Mit dem Befehl ldapsearch kann man einzelne Einträge aus dem Verzeichnsi auslesen. Die manpages lieferen detailierte Beschreibungen der beiden Befehle und sollten unbedingt gelesen werden!

Wer sich eingehender mit LDAP beschäftigen will sollte unbedingt den Admin - Guide unter www.openldap.org/doc lesen.

Dieser Text stammt zum Teil aus dem Deutschen Linux How-to Projekt und wurde fuer Mac-OS-X angepasst. Der Originaltext wurde unter der GPL veroeffentlicht und befindet sich hier: http://www.linuxhaven.de/dlhp (Autor des Originaltextes: Thomas Bendler, thomas.bendler@informatik.fh-hamburg.de)