Eine übersicht über das Themengebiet gibt es in http://www.open-news-network.org/LDAP Hier geht es um die Einrichtung eines eigenen LDAP-Servers. Momentan ist nur der manuelle Import der Daten vom LDAP-Master vollständig erklärt. Das Aufsetzen eines automatisch replizierten LDAP-Slave ist noch in Arbeit.

Erste Schritte

Zuerst einmal sollte man sich http://www.openldap.org/doc/admin22/ durchlesen. Langsam. Mit Geduld. Und in Demut. Viele Begriffe in der "Administrator's Guide" bleiben undefiniert. Und einige Beispiele weichen auf subtile Weise von der Wirklichkeit ab ...

Etwas veraltet zwar aber dennoch zur Einführung lesenswert ist: http://www.linuxhaven.de/dlhp/HOWTO/DE-LDAP-HOWTO.html

Debian Sarge

Pakete:

slapd ldap-utils

Init-Skript:

/etc/init.d/slapd

Konfiguration:

/etc/ldap/slapd.conf

Die Installation:

apt-get install slapd ldap-utils

Die Fragen des Konfigurationsskripts beantwortete ich so:

Enter your DNS domain name:

open-news-network.org

Enter the name of your organization:

news.albasani.net

Allow LDAPv2 protocol:

"name of your organization" ist ein Attribut und nach http://www.faqs.org/rfcs/rfc2256.html definiert. Welche Bedeutung das hat, insbesondere für LDAP-Slaves, ist unklar.

Fedora Core

Pakete:

openldap-servers openldap-clients

Init-Skript:

/etc/init.d/ldap

Konfiguration:

/etc/openldap/slapd.conf

Konfiguration

Der Server wird durch die Datei slapd.conf konfiguriert.

Der Eintrag allow bind_v2 gehört auskommentiert das sollte so aussehen (ist bei Debian bereits der Fall):

#allow bind_v2

Der Eintrag schemacheck fehlt bei Fedora Core:

# Schema check allows for forcing entries to
# match schemas for their objectClasses's
schemacheck on

Bei Debian wird der erste Eintrag suffix bereits durch den Konfigurationsdialog erstellt, ansonsten gehört das manuell ausgebessert.

suffix "dc=open-news-network,dc=org"

Läuft der Server?

Nach /etc/init.d/slapd start bzw. /etc/init.d/ldap start sollte man überprüfen, ob der Server rein grundsätzlich läuft:

ldapsearch -x -b '' -s base '(objectclass=*)' namingContexts

Die Ausgabe sieht so aus:

# extended LDIF
#
# LDAPv3
# base <> with scope base
# filter: (objectclass=*)
# requesting: namingContexts
#

#
dn:
namingContexts: dc=open-news-network,dc=org

# search result
search: 2
result: 0 Success

# numResponses: 2
# numEntries: 1

Das Administrator-Passwort

Abweichend von Quick-Start Guide findet sich unter Debian Sarge kein Eintrag rootdn oder rootpw in /etc/ldap/slapd.conf. überprüfen lässt sich das bei der Konfiguration angegebene Administrator-Passwort so:

ldapsearch -x -D "cn=admin,dc=open-news-network,dc=org" -W '(objectclass=*)'

Die Fehlermeldung bei falschem Passwort sieht so aus:

ldap_bind: Invalid credentials (49)

Und wie wollen wir in Zukunft die verschiedenen LDAP-Datenbanken syncron halten?

Wenn das noch stimmt:

11.4.4 Copy the master slapd's database to the slave

Copy the master's database(s) to the slave. For an LDBM-based database, you must copy all index files as well as the "NEXTID" file. Index files will have a different suffix depending on the underlying database package used. The current possibilities are

* dbb Berkeley DB B-tree backend

* dbh Berkeley DB hash backend

* gdbm GNU DBM backend

* pag UNIX NBDM backend

* dir UNIX NBDM backend

You should copy all files with such a suffix that are located in the index directory specified in your slapd config file.

http://www.umich.edu/~dirsvcs/ldap/doc/guides/slapd/11.html

Müssten wir innerhalb des OpenNewsNetwork anders vorgehen, damit wir nicht lauter Master-Ldap-Server bekommen, die untereinnander nicht syncronisieren.