14.9. NFS – verteilte Dateisysteme

Wie bereits in Abschnitt 14.8. “NIS – Network Information Service” erwähnt, dient NFS neben NIS dazu, ein Netzwerk für Anwender transparent zu machen. Durch NFS lassen sich Dateisysteme im Netz verteilen. Unabhängig davon, an welchem Rechner im Netz ein Anwender arbeitet, findet er so stets die gleiche Umgebung vor.

Wie NIS ist auch NFS ein asymmetrischer Dienst. Es gibt NFS–Server und NFS–Clients. Allerdings kann ein Rechner beides sein, d.h. gleichzeitig Dateisysteme dem Netz zur Verfügung stellen („exportieren“) und Dateisysteme anderer Rechner mounten („importieren“). Im Regelfall jedoch benutzt man dafür Server mit großer Festplattenkapazität, deren Dateisysteme von Clients gemountet werden.

14.9.1. Importieren von Dateisystemen mit YaST

Jeder Benutzer (der die Rechte dazu erteilt bekommt), kann NFS-Verzeichnisse von NFS-Servern in seinen eigenen Dateibaum einhängen. Dies lässt sich am einfachsten mit dem Modul NFS-Client in YaST erledigen. Dort muss lediglich der Hostname des als NFS-Server fungierenden Rechners eingetragen werden, das Verzeichnis, das von dem Server exportiert wird und den Mountpunkt, unter dem es auf dem eigenen Computer eingehängt werden soll. Wählen Sie dazu im ersten Dialogfenster Hinzufügen und tragen Sie dann die genannten Angaben ein (s. Abb. 14.9. “Konfiguration des NFS-Clients”).

Abbildung 14.9. Konfiguration des NFS-Clients

Konfiguration des NFS-Clients

14.9.2. Manuelles Importieren von Dateisystemen

Dateisysteme von einem NFS–Server manuell zu importieren, ist sehr einfach. Einzige Voraussetzung ist, dass der RPC–Portmapper läuft. Das Starten erledigen Sie durch Aufruf des Befehls rcportmap start als Benutzer root. Ist diese Voraussetzung erfüllt, können fremde Dateisysteme, sofern sie von den entsprechenden Maschinen exportiert werden, analog zu lokalen Platten mit dem Befehl mount in das Dateisystem eingebunden werden. Die Syntax ist wie folgt:

mount Rechner:Remote-Pfad Lokaler-Pfad

Sollen also z.B. die Benutzerverzeichnisse vom Rechner sun importiert werden, so kann dies mit folgendem Befehl erreicht werden:

mount sun:/home /home

14.9.3. Exportieren von Dateisystemen mit YaST

Mit YaST können Sie einen Rechner Ihres Netzwerks zu einem NFS-Server machen. Das ist ein Server, der Verzeichnisse und Dateien für alle Rechner, denen Sie Zugang gewähren, bereitstellt. Viele Anwendungsprogramme können so z.B. für Mitarbeiter zur Verfügung gestellt werden, ohne dass sie lokal auf deren Rechnern installiert werden müssen.

Zur Installation wählen Sie in YaST Netzwerkdienste und dort NFS-Server (Abb. 14.10. “NFS-Server Konfigurationstool”).

Abbildung 14.10. NFS-Server Konfigurationstool

NFS-Server Konfigurationstool

Im nächsten Schritt aktivieren Sie NFS-Server starten und klicken auf Weiter. Jetzt ist nur noch ein Schritt zu tun: Sie müssen im oberen Feld die Verzeichnisse eintragen, die exportiert werden sollen und im unteren die Rechner Ihres Netzwerks, die darauf Zugriff erhalten (Abb.14.11. “NFS-Server: Exportverzeichnisse und Hosts eintragen”). Zu den Rechnern sind jeweils vier Optionen einstellbar, single host, netgroups, wildcards und IP networks. Nähere Erläuterungen zu diesen Optionen finden Sie in den Man-Pages zu exports.

Abbildung 14.11. NFS-Server: Exportverzeichnisse und Hosts eintragen

NFS-Server: Exportverzeichnisse und Hosts eintragen

Mit Beenden schließen Sie die Konfiguration ab.

14.9.4. Manuelles Exportieren von Dateisystemen

Wenn Sie auf die Unterstützung durch YaST verzichten, müssen Sie dafür sorgen, dass die folgenden Dienste auf dem NFS-Server laufen:

  • RPC-Portmapper (portmap)

  • RPC-Mount-Daemon (rpc.mountd)

  • RPC-NFS-Daemon (rpc.nfsd)

Damit diese beim Hochfahren des Systems von den Skripten /etc/init.d/portmap und /etc/init.d/nfsserver gestartet werden, geben Sie bitte die Befehle insserv /etc/init.d/nfsserver und insserv /etc/init.d/portmap ein.

Neben dem Start dieser Daemonen muss noch festgelegt werden, welche Dateisysteme an welche Rechner exportiert werden sollen. Dies geschieht in der Datei /etc/exports.

Je Verzeichnis, das exportiert werden soll, wird eine Zeile für die Information benötigt, welche Rechner wie darauf zugreifen dürfen. Alle Unterverzeichnisse eines exportierten Verzeichnisses werden ebenfalls automatisch exportiert. Die berechtigten Rechner werden üblicherweise mit ihren Namen (inklusive Domainname) angegeben, es ist aber auch möglich, mit den Jokerzeichen * und ? zu arbeiten, die die aus der bash bekannte Funktion haben. Wird kein Rechnername angegeben, hat jeder Rechner die Erlaubnis, auf dieses Verzeichnis (mit den angegebenen Rechten) zuzugreifen.

Die Rechte, mit denen das Verzeichnis exportiert wird, werden in einer von Klammern umgebenen Liste nach dem Rechnernamen angegeben. Die wichtigsten Optionen für die Zugriffsrechte sind in der folgenden Tabelle beschrieben.

Tabelle 14.12. Zugriffsrechte für exportierte Verzeichnisse

OptionenBedeutung
roDateisystem wird nur mit Leserechten exportiert (Vorgabe).
rwDateisystem wird mit Schreib- und Leserechten exportiert.
root_squashDiese Option bewirkt, dass der Benutzer root des angegebenen Rechners keine für root typischen Sonderrechte auf diesem Dateisystem hat. Erreicht wird dies, indem Zugriffe mit der User–ID 0 auf die User–ID 65534 (-2) umgesetzt werden. Diese User-ID sollte dem Benutzer nobody zugewiesen sein (Vorgabe).
no_root_squashRootzugriffe nicht umsetzen; Root-rechte bleiben also erhalten.
link_relativeUmsetzen von absoluten, symbolischen Links (solche, die mit / beginnen) in eine entsprechende Folge von ../. Diese Option ist nur dann sinnvoll, wenn das gesamte Dateisystem eines Rechners gemountet wird (Vorgabe).
link_absoluteSymbolische Links bleiben unverändert.
map_identityAuf dem Client werden die gleichen User–IDs wie auf dem Server verwendet (Vorgabe).
map_daemonClient und Server haben keine übereinstimmenden User–IDs. Durch diese Option wird der nfsd angewiesen, eine Umsetztabelle für die User–IDs zu erstellen. Voraussetzung dafür ist jedoch die Aktivierung des Daemons ugidd.

Die exports–Datei kann beispielsweise aussehen wie Datei 14.27. “/etc/exports”.

Beispiel 14.27. /etc/exports

#
# /etc/exports
#
/home            sonne(rw)   venus(rw)
/usr/X11         sonne(ro)   venus(ro)
/usr/lib/texmf   sonne(ro)   venus(rw)
/                erde(ro,root_squash)
/home/ftp        (ro)
# End of exports

Die Datei /etc/exports wird von mountd und nfsd gelesen. Wird also eine Änderung daran vorgenommen, so müssen mountd und nfsd neu gestartet werden, damit diese Änderung berücksichtigt wird! Erreicht wird dies am einfachsten mit dem Befehl:

rcnfsserver restart