LDAP - allgemeine Infos zum LDAP-Protokoll

Aus ConfigWiki
Wechseln zu: Navigation, Suche

Inhaltsverzeichnis

LDAP-Server

OpenLDAP unter Linux besteht aus dem Server slapd und den Client-Utilities (unter Debian im Paket ldap-utils). Der LDAP-Server benötigt für die Verwaltung der Einträge verschiedene Attribute die in Objektklassen zusammengefaßt werden. Diese werden in Schema-Dateien definiert, die global für alle Datenbanken gelten. Da Attribute in verschiedenen Klassen verwendet, aber nur einmal definiert werden können, ist auf die Reihenfolge zu achten, in der die Dateien eingebunden werden. Gelegentlich verursachen gleichnamige Attribute in verschiedenen Dateien für Konflikte, sodaß diese nicht ohne Anpassung gemeinsam verwendet werden können.

Zur einfachen Verwaltung der LDAP-Datenbanken ist der phpldapadmin zu empfehlen.

Für die Integration der Linux-Benutzerverwaltung in LDAP wird nss-ldap für die Informations-Beschaffung und pam-ldap für die Authentifikation benötigt. Weiterhin sind die Pakete ldapscripts für die Benutzerverwaltung und die migrationtools für die Übertragung der vorhandenen Informationen ins LDAP-Verzeichnis notwendig.

Konfiguration slapd

olcConfig unter Debian Squeeze

Bei einem Update von Lenny auf Squeeze wird eine statische Konfiguration auf olc umgestellt. Ebenso wie bei einer Neuinstallation unter Squeeze wird dabei aber kein RootPW vergeben.

Am schnellsten läßt sich das wie folgt ändern:

~# echo "olcRootPW: `slappasswd -s PASSWORT`" >> /etc/ldap/slapd.d/cn=config/{0}config.ldif

Danach muß der slapd neu gestartet werden (nslcd ggf. vorher beenden):

~# invoke-rc.d nslcd stop && invoke-rc.d slapd restart && invoke-rc.d nslcd start

Alternativ ist es als root (uid=0,gid=0) auf der Konsole möglich, sich am LDAP-Server anzumelden:

~# ldapvi -Y EXTERNAL -h ldapi:/// -b cn=config

Auf diesem Weg ist es auch möglich, die Konfiguration mit

~# ldapmodify -Y EXTERNAL -H ldapi:/// -f $FILE


dn: olcOverlay=syncprov,olcDatabase={0}config,cn=config changetype: add objectClass: olcOverlayConfig objectClass: olcSyncProvConfig olcOverlay: syncprov

dn: olcOverlay=syncprov,olcDatabase={1}hdb,cn=config changetype: add objectClass: olcOverlayConfig objectClass: olcSyncProvConfig olcOverlay: syncprov

Schema-Dateien

Schemadateien liegen in den meisten Fällen leider nur in der statischen Variante vor. Für den Import müssen sie daher noch konvertiert werden. In schema-convert.conf werden die zu konvertierenden Dateien wie in einer statischen slapd.conf als include angegeben. ldapconvert.sh wandelt diese entsprechend um, damit sie zum Schluß mit ldapadd hinzugefügt werden können.

schema-convert.conf:

include    /etc/ldap/schema/dhcp.schema
include    /etc/ldap/schema/samba.schema

ldapconvert.sh:

#!/bin/bash
ldifschema=/etc/ldap/schema.convert
ldif=ldif
ldifpath=/etc/ldap/ldif
etc=/etc/ldap/schema
cn=cn\=config/cn\=schema

mkdir -p $schema
mkdir -p $ldifpath

/usr/sbin/slapcat -f schema_convert.conf -F $ldifpath -n0 || exit
cd $ldifpath/$cn
mkdir $ldif
mkdir 1
for file in *.ldif; do
  sed -n -e :a -e '1,7!{P;N;D;};N;ba' $file | sed -e '1s/{.*}//;1s/$/,cn=schema,cn=config/;3s/{.*}/cn=/' > $ldif/$file
  neu=`echo $file | sed -e 's/^.*}//g'`
  mv $ldif/$file $ldifschema/$neu
done

zum laufenden LDAP-Server hinzufügen:

~# ldapadd -xWD cn=admin,cn=config -f dhcp.ldif
Meine Werkzeuge