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
Die Datei
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.
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.
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)