Automount über LDAP
Vorwort
Automatisches Mounten von Datenträgern und NFS-Volumes ist eine praktische Sache. Der Artikel »Automatisches Mounten/Unmounten mit autofs« zeigt, wie man es einrichtet. Aber in einem Netz mit mehreren Rechnern ist der Verwaltungsaufwand erheblich. Eine zentrale Verwaltung wie NIS ist gefordert. Doch NIS ist unsicher und obsolet. LDAP ist heute der Verzeichnisdienst der Wahl. Folglich war mein Ziel, Automount über LDAP einzurichten. Dies ist aber recht spärlich dokumentiert und erfordert einiges Geschick, um es zum Laufen zu bringen. Hier sind meine Erfahrungen zu dem Thema.
Einrichten des Automount-Daemons
Die meisten Distributionen liefern den Automount-Daemon automount mit, freilich hat keine einzige die Option vorgesehen, mit LDAP zusammenzuarbeiten. Handarbeit ist angesagt, die im Ersetzen des Init-Skripts für automount gipfelt.
Wer automount aus den Quellen compilieren will, findet diese unter www.kernel.org.
Wir müssen noch ein Verzeichnis anlegen, in dem automount seine Dateisysteme mounten kann. Red Hat hat solch ein Verzeichnis bereits, es lautet /misc. Stoppen Sie den automount-Daemon, falls Sie es noch nicht getan haben, und löschen Sie das Verzeichnis. Wir legen ein neues an mit dem Namen /.vol.
mkdir /.vol
Der Punkt vor dem Verzeichnisnamen läßt das Verzeichnis aus normalen Verzeichnis-Listings verschwinden. Das ist gut so, da niemand außer automount darin etwas zu suchen hat.
Bevor wir automount wieder starten, sollten wir erst einmal den LDAP-Server auf Vordermann bringen.
Einrichten von LDAP
Dieser Artikel kann nicht die Grundinstallation eines LDAP-Servers beschreiben. Dieser muß bereits vorhanden sein. Es empfiehlt sich der freie LDAP-Server OpenLDAP, obwohl sicher auch andere einsetzbar sind. Die weitere Beschreibung bezieht sich auf OpenLDAP.
Im Rest des Artikels gehe ich davon aus, daß der Name des LDAP-Servers »ldap1« ist. Ferner nehme ich an, daß im LDAP-Schema eine Organisation namens »org« existiert, und daß wir unsere Organizational Unit (OU) »autofs« direkt unter dieser Organisation anlegen.
Erweitern des Server-Schemas
Ich beschreibe hier nur OpenLDAP 2.x, da OpenLDAP 1 bereits obsolet ist. Erstellen Sie zunächst die Datei automount.schema im Schemaverzeichnis Ihres LDAP-Servers (je nach Installation z.B. /etc/openldap/schema), die wie folgt aussieht:
attributetype ( 1.3.6.1.1.1.1.25 NAME 'automountInformation'
DESC 'Automount information'
EQUALITY caseExactIA5Match
SUBSTR caseExactIA5SubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{1024} SINGLE-VALUE )
objectclass ( 1.3.6.1.1.1.2.13 NAME 'automount' SUP top STRUCTURAL
DESC 'Automount information'
MUST ( cn $ automountInformation )
MAY ( description ) )
objectclass ( 1.3.6.1.4.1.2312.4.2.2 NAME 'automountMap' SUP top STRUCTURAL
DESC 'An group of related automount objects'
MUST ( ou ) )
Das dritte Objekt (automountMap) verwende ich im Folgenden nicht mehr, doch es ist da und steht zu Ihrer Verfügung.
Fügen Sie folgende Zeile zu slapd.conf (je nach Installation z.B. in /etc/openldap) hinzu und starten Sie Ihren slapd neu:
include /etc/openldap/schema/automount.schema
Start des automount-Daemons
Auf jedem Rechner, der automount ausführen soll, ist jetzt noch die Datei ldap.conf anzupassen, die meist in /etc/openldap liegt. Die folgenden beiden Zeilen genügen für automount. Wenn Sie den Client bereits aus anderen Gründen für LDAP konfiguriert haben, brauchen Sie wahrscheinlich nichts zu ändern.
host ldap1 base o=org
Ersetzen Sie ldap1 durch den Namen oder die IP-Adresse Ihres LDAP-Servers und »o=org« durch den Pfad im Baum, der zu dem Eintrag »ou=autofs« führt.
Jetzt kann automount wieder gestartet werden. Sorgen Sie dafür, daß der Aufruf folgendermaßen aussieht:
automount /.vol ldap ldap1:o=org
Damit automount beim nächsten Hochfahren gleich gestartet wird, sollte man entsprechende Startskripte haben. Dafür haben die Distributionen bereits gesorgt, wenn Sie automount installiert haben. Das Problem ist nur, daß das Skript /etc/init.d/autofs nicht für unsere Zwecke gemacht ist. Das folgende Skript sollte unter jeder Distribution funktionieren und ersetzt /etc/init.d/autofs direkt. Es bietet nur die absolut minimale Funktion, daher macht es Sinn, daß Sie die Datei /etc/init.d/skeleton als Rahmen verwenden, nach /etc/init.d/autofs kopieren und die wenigen Zeilen dort hineinkopieren.
#! /bin/sh pidfile="/var/run/automount.pid" case "$1" in start) echo -n "Starting automount... " automount -p $pidfile /.vol ldap ldap1:o=hjb echo "done." ;; stop) echo -n "Stopping automount... " kill $(cat $pidfile) echo "done." ;; *) echo "Usage: $0 start|stop" exit 1 esac exit 0
/etc/init.d ist übrigens nach dem Linux-FHS das verbindliche Verzeichnis für Initdateien. Praktisch alle aktuellen Distributionen halten sich daran. Bei älteren müssen Sie in den Verzeichnissen /etc/rc.d, /etc/rc.d/init.d oder gar /sbin/init.d suchen.
Einrichten der Mountpoints
Erstellen von Einträgen
Nun ist es Zeit, die LDAP-Datenbank mit geeigneten Daten zu füllen. Diese Einträge sind unterschiedlich für NFS-Volumes und lokale Datenträger. Ich behandle sie daher nacheinander.
Wie Sie die LDAP-Daten eingeben, bleibt Ihnen überlassen. Dafür gibt es neben der Handarbeit-Methode mit LDIF-Dateien auch diverse grafische Frontends. Ich empfehle das Programm gq, mit dem die Eingabe sehr einfach vonstatten geht.
Mounten von NFS-Volumes
Für NFS-Volumes legt man am besten mit Hilfe eines LDAP-Tools einen Eintrag unterhalb der Organizational Unit autofs an. Nehmen wir an, das Volume sei auf dem Rechner mit dem Namen server und exportiert das Verzeichnis /home. Ferner sei unser Baum unter der Organisation »org« angelegt. Dann füllt man den Eintrag mit folgenden Werten:
dn cn=server_home, ou=autofs, o=org objectClass automount cn server_home automountInformation server:/home description Irgendeine Beschreibung
Hierbei verwende ich folgendes Namensschema: Der Common Name (CN) setzt sich zusammen aus dem Servernamen und dem NFS-Volume, die durch einen Unterstrich verbunden werden. Damit ergeben sich die obigen Einträge automatisch.

