OpenLDAP soll verwendet um die Benutzerdaten zentral zu verwalten. Dazu gehören unter anderem User-ID, Gruppen-ID, Adresse, Telefonnummer, Login-Name, Home-Verzeichnis,...
Die Passwörter werden bei uns nicht mit LDAP verwaltet, obwohl das mölich wäre, sondern mit Kerberos weil AFS auf Kerberos ausgerichtet ist.
Der OpenLDAP Server befindet sich im Debian-Paket slapd.
apt-get install slapd
In /etc/ldap/slapd.conf müssen folgende Zeilen eingefügt oder angepasst werden:
# The base of your directory in database #1 suffix "dc=sed,dc=ethz.ch,dc=ch" rootdn "cn=Manager,dc=sed,dc=ethz,dc=ch" rootpw "geheimnis"
Der Eintrag rootpw ist das ``Hauptpasswort'' für den LDAP-Server. Anstatt dem Klartextpasswort kann auch ein verschlüsseltes verwendet werden. Dies ist in der OpenLDAP-Dokumentation beschrieben und wird hier der Einfachheit halber weggelassen.
Nun muss die Datenbank für die Posix-Accounts vorbereitet werden. Eine Datei mit dem Namen posix_init.ldif und folgendem Inhalt erstellen:
dn: ou=People,dc=sed,dc=ethz,dc=ch ou: People objectClass: top objectClass: organizationalUnit description: Parent object of all UNIX accounts dn: ou=Groups,dc=sed,dc=ethz,dc=ch ou: Groups objectClass: top objectClass: organizationalUnit description: Parent object of all UNIX groups
Diese wird nun mit folgendem Befehl in die LDAP-Datenbank eingetragen:
ldapadd -x -D "cn=Manager,dc=sed,dc=ethz,dc=ch" -W -f posix_init.ldif
Zuerst muss ldap so konfiguriert werden, dass es Anfragen an den richtigen Server stellt. Dies geschieht in der Datei /etc/ldap/ldap.conf die wie folgt aussehen soll:
# ldap.conf BASE dc=sed,dc=ethz,dc=ch URI ldap://ldap1.seismo.ethz.ch ldap://ldap2.seismo.ethz.ch ldap://ldap3.seismo.ethz.ch
Danach muss das System so eingerichtet werden, dass es Benutzerdaten für Benutzer die in /etc/passwd nicht eingetragen sind auf dem LDAP-Server sucht. Dazu dienen die Dateien /etc/libnss-ldap.conf und /etc/nsswitch.conf die wie folgt aussehen:
# /etc/libnss-ldap.conf host ldap1.seismo.ethz.ch ldap2.seismo.ethz.ch ldap3.seismo.ethz.ch base dc=sed,dc=ethz,dc=ch # ... (den Rest wie in der Beispieldatei lassen)
# /etc/nsswitch.conf # # Example configuration of GNU Name Service Switch functionality. # If you have the `glibc-doc' and `info' packages installed, try: # `info libc "Name Service Switch"' for information about this file. passwd: compat ldap group: compat ldap shadow: compat ldap hosts: files ldap dns networks: files protocols: db files services: db files ethers: db files rpc: db files netgroup: ldap [NOTFOUND=return] files
Stefan Heimers 2011-02-25