7.2 Network File System (NFS)
Das Network File System begegnet Ihnen im Linux-, FreeBSD- und Unix-Umfeld. Mit NFS stellen Sie Freigaben von Verzeichnissen ähnlich wie mit Samba anderen Rechnern zur Verfügung. Beim NFS-Client hängen Sie diese Freigaben in den lokalen Verzeichnisbaum ein. Die so gemounteten NFS-Freigaben (Exports) werden wie ein lokales Verzeichnis oder Plattengerät behandelt.
Mit NFS verwirklichen Sie z. B. folgende Konfigurationen:
-
zentrales Programmverzeichnis für mehrere Rechner; nur eine Programminstallation für viele zugreifende Geräte notwendig
-
Vorhalten eines kompletten Dateisystems für plattenlose Thin-Clients
-
Einrichtung eines zentralen Datensicherungsrechners
-
Vorhalten von Verzeichnissen mit von vielen gemeinsam genutzten Ressourcen, wie Vorlagen, Archivmaterial usw.
Hier im Buch beschreibe ich die aktuelle NFS-Version 4. Diese ist leichter administrierbar und sicherer als die Vorgängerversion. Sie benutzt TCP. Nachteilig bei jeder NFS-Version ist der jeweilige Umfang der Konfigurationsarbeiten. Es gibt andere, unkompliziertere und flexiblere Verfahren, um Daten für andere Rechner bereitzustellen.
Weitere Informationen finden Sie in den RFCs 7530, 7931, 8587 (NFS Version 4) und 1813 (NFS Version 3) sowie in den Manual-Seiten zu exports, nfsd und portmap.
7.2.1 Konfiguration des NFS-Servers
Vor der Installation müssen Sie in Ihrem Netz noch einige Dinge regeln:
-
Damit Sie beim Zugriff keine Probleme und Fehlermeldungen bekommen, müssen die Benutzer-IDs auf allen beteiligen Rechnern identisch sein (ausgenommen beim reinen Lesezugriff).
-
Dazu setzen Sie am besten eine zentrale Benutzerverwaltung wie LDAP, NIS oder Kerberos ein.
Legen Sie anschließend, falls es noch notwendig ist, die zu exportierenden Verzeichnisse auf dem Server an. Führen Sie die Programminstallation mit den Werkzeugen Ihrer Linux-Distribution durch.
Am Beispiel eines Debian-Linux-Servers zeige ich Ihnen die fälligen Konfigurationsschritte:
-
Editieren Sie die Datei /etc/fstab:
Fügen Sie die Zeile
/home /export/home none bind 0 0
an. Damit wird das home-Verzeichnis zusätzlich nach /export/home gemountet.
-
Editieren Sie die Datei /etc/defaults/nfs-kernel-server:
Setzen Sie die Variable (zwecks Übersicht und Ordnung):
# exports. Valid alternatives are "yes" and "no"; the default is # "no".
NEED_SVCGSSD=noSetzen Sie no, wenn Sie nicht mit Kerberos zur Benutzerauthentifizierung arbeiten.
-
Editieren Sie die Datei /etc/defaults/nfs-common:
Setzen Sie die beiden folgenden Variablen:
# Do you want to start the idmapd daemon? It is only needed for
# NFSv4.
NEED_IDMAPD=yes
# Do you want to start the gssd daemon? It is required for
# Kerberos mounts.
NEED_GSSD=noDa hier die NFS Version 4 gewünscht wird, setzen Sie die erste Variable mit yes. Nachdem hier im Beispiel Kerberos nicht verwendet wird, setzen Sie für die zweite Variable no.
-
Ergänzen Sie die Datei /etc/exports um Ihre NFS-Exports, wie im Beispiel gezeigt wird (jede Freigabe in einer Zeile):
/export 192.168.0.0/24(rw, fsid=0, insecure,
no_subtree_check, async)
/export/home 192.168.0.0/24(rw, nohide, insecure,
no_subtree_check, async)
Für die Einträge in der exports-Datei können Sie verschiedene Optionen nutzen, die in Tabelle 7.5 erläutert werden.
Option-Schlüsselwort |
|
---|---|
Lesen und Schreiben ist erlaubt. |
rw |
Nur Lesen ist erlaubt. |
ro |
Port-Nummer über 1024 verwenden |
insecure |
Datentransfer läuft im asynchronen Modus. |
async |
Das exportierte Verzeichnis gehört auf den Server root. Am Client werden diese Verzeichnisse auf den Benutzer nobody gemappt, Sie können sie deshalb nur lesen. Mit dieser Option umgehen Sie diese Sicherheitseinstellung. |
no_root_squash |
Betrachten Sie das exports-Beispiel. Hier werden die Verzeichnisse /export und /export/home als eigenständige Freigaben behandelt. Mit nohide sieht Ihr NFS-Client die beiden Freigaben nicht als verschiedene, sondern als hierarchisch miteinander verknüpft an. |
nohide |
Prüft, ob in einem einzelnen freigegebenen Verzeichnis eine angeforderte Datei liegt. |
subtree_check |
Unterlässt diese Prüfung. Dies ist eine empfehlenswerte Einstellung, wenn der gesamte Verzeichnisbaum exportiert wird. Damit steigern Sie die Zugriffsgeschwindigkeit. |
no_subtree_check |
Tabelle 7.5 Optionen in »/etc/exports«
-
Ergänzen Sie die Datei /etc/hosts.deny um folgende Einträge:
portmap: ALL
mountd: ALL
statd: ALLIn dieser Datei werden Angaben darüber gemacht, wer oder was nicht über das Netz auf den Rechner zugreifen darf.
-
Ergänzen Sie die Datei hosts.allow um diese Einträge:
portmap: 192.168.0.0/24
mountd: 192.168.0.0./24
statd: 192.168.0.0/24In dieser Datei finden Sie Angaben darüber, wer oder was über das Netzwerk auf den Rechner zugreifen darf. Zunächst wurde in hosts.deny alles verboten, und hier in der Datei hosts.allow werden Zugriffe eingeschränkt erlaubt.
-
Führen Sie das Kommando /etc/init.d/nfs-kernel-server restart aus.
Sie sollten nun die Meldungen erhalten, dass der NFS-Server und der mountd gestartet wurden.
-
Überprüfen Sie, ob NFS jetzt aktiv ist. Fragen Sie dazu die Prozesstabelle ab:
ps ax | grep nfs
sollte eine Anzeige wie in Abbildung 7.11 ergeben.
Abbildung 7.11 Prozessstatusabfrage
7.2.2 Konfiguration des NFS-Clients
Beim Client-Rechner können Sie mit der Benutzerkennung root die NFS-Freigaben im Verzeichnisbaum einhängen. Hierzu müssen Sie das Einhängeverzeichnis anlegen und anschließend die Freigabe mounten. Hier im Beispiel wurde als Einhängeverzeichnis /usr/nfszugriff gewählt:
-
Anlegen des Verzeichnisses:
mkdir /usr/nfszugriff
-
Einhängen der Freigabe in den Verzeichnisbaum:
mount ze4:/export/home /usr/nfszugriff/
Zur Verdeutlichung sehen Sie den Vorgang in Abbildung 7.12. Sie finden darin auch den (funktionierenden) Datenzugriff als normaler Benutzer dargestellt.
Abbildung 7.12 Manuelles Einhängen der Freigabe und Funktionstest
Sollen die NFS-Freigaben dauerhaft nach jedem Rechnerstart automatisch in den Verzeichnisbaum eingehängt werden, müssen Sie in der Datei /etc/fstab eine Zeile anfügen (hier auf das Beispiel bezogen):
192.168.0.34:/export/home /usr/nfszugriff nfs rw,soft 0 0
Die Option soft verhindert ein Einfrieren von Anwendungen, die auf die Freigaben zugreifen.