Subsections

OpenLDAP

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.


Einrichtung des LDAP-Servers

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

Einrichtung von LDAP auf den Clients

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