Ordner freigeben und einbinden mit NFS für UNIX-Systeme

Für UNIX-basierte Systeme gibt es zahlreiche Werkzeuge und Möglichkeiten ein Verzeichnis über das Netzwerk mit unterschiedlichen Hosts zu teilen. Unter CentOS existieren dafür beispielsweise Samba und NFS (Network File System). Samba wird häufig in heterogenen Serverlandschaften eingesetzt. Mithilfe dieser Technologie können Verzeichnisse unterschiedlicher Betriebssysteme geteilt werden, so lange die jeweiligen Peers die Samba-Technologie unterstützen.
Das Network File System (NFS) fokussiert die Freigabe zwischen Linux- bzw. UNIX-basierten Systemen. Es wurde in den 1980ern von der Sun Microsystems Gruppe entwickelt und gilt bis heute als Standard-Mechanismus um Dateien über das Netzwerk zu teilen.
Im Folgenden werden wir betrachten wie die NFS-Utils verwendet werden können, um ein Verzeichnis unter Linux/UNIX freizugeben und einzubinden.

Installation

Als Erstes überprüfen wir, ob die NFS-Utilities bereits installiert sind. Dafür können wir den folgenden Befehl über einen Terminal ausführen:

rpm -q nfs-utils

Sollte die Ausgabe des Befehls angeben, dass die Utilities nicht installiert sind, können wir sie mit einem Package-Manager wie yum die Utilities installieren:

yum install nfs-utils

Nach der Installation sollten wir überprüfen, ob der Dienst gestartet ist. Dafür führen wir den folgenden Befehl aus:

/sbin/service nfs status

Sollte die Ausgabe darauf hinweisen, dass der Dienst nicht gestartet ist, müssen wir dies mit dem folgenden Befehl nachholen:

/sbin/service nfs start

Firewall konfigurieren

Um sicherzustellen, dass unsere Freigabe nach außen hin sichtbar wird, muss die Firewall entsprechend angepasst werden. Über den Terminal können wir den folgenden Befehl dazu verwenden, eine Ausnahme für die NFS-Funktionalität hinzuzufügen. Anschließend aktualisieren wir die Konfiguration der Firewall, um die Änderungen anzuwenden:

firewall-cmd --permanent --add-service=nfs
firewall-cmd --reload  

Ein Verzeichnis mit NFS Freigeben

Nach dem die Utilities installiert und die Firewall konfiguriert ist, können wir nun einen Ordner für die Freigabe erstellen. Dafür müssen wir lediglich eine Änderung an der Datei “/etc/exports” vornehmen. Um ein Verzeichnis freizugeben, müssen wir eine neue Zeile an die Datei anhängen. Darin bestimmen wir das Verzeichnis, das freigegeben werden soll, sowie die Restriktionen, wie und mit wem das Verzeichnis geteilt werden soll. Der Syntax für eine Zeile in dieser Datei ist folgender:

<export> <host1>(<options>) <host2>(<options>) ...

Dabei stehen

  • <export> für den vollständigen Pfad des Verzeichnisses, das wir freigeben wollen,
  • <host1>, <host2> für die Hostnames/IP-Adressen mit denen das Verzeichnis geteilt werden soll und
  • <options> repräsentiert die Restriktionen, denen die geteilten Dateien unterliegen.

Eine beispielhafte Konfiguration könnte dabei wie folgt aussehen:

/home/test 192.168.2.38(ro) 192.168.2.39(rw)

In diesem Beispiel erzeugen wir eine Freigabe für das Verzeichnis “/home/test” für die Remote-Computer mit den IP-Adressen “192.168.2.38” und “192.168.2.39”. Die IP-Adresse die auf “38” endet, darf das freigegebene Verzeichnis lediglich lesen ( ro → Read-Only), die IP-Adresse die auf “39” endet, darf dagegen Lesen und Schreiben (rw = Read-Write).

Neben der expliziten Angabe von zulässigen Hosts, können wir eine “Wildcard” verwenden, um eine Freigabe für beliebige Hosts zu erzeugen:

/home/test *(rw)

Natürlich gibt es neben den gezeigten Optionen noch viele mehr. Alle Optionen können auf den Man-Pages für export gefunden werden.

Immer wenn Änderungen an der “/etc/exports” Datei angewendet werden sollen, müssen wir dafür zunächst den folgenden Befehl ausführen:

/usr/sbin/exportfs -a

Ein Verzeichnis mit NFS einbinden

Um ein freigegebenes Verzeichnis auf einem Remote-Host einzubinden, erstellen wir zunächst über den Terminal ein neues Verzeichnis als Ziel für den Netzwerk-Ordner:

mkdir /home/remote-dir

Nun müssen wir nur noch angeben, welche Freigabe auf dem zuvor erstellen Verzeichnis eingebunden werden soll:

mount 192.168.2.39:/home/test /home/remote-dir

In diesem Beispiel binden wir also das Remote-Verzeichnis “/home/test“ vom Remote-Host mit der IP-Adresse “192.168.2.39” lokal auf dem Verzeichnis “/home/remote-dir” ein.

Verzeichnisse zum Systemstart einbinden

Wenn das System nach dem Einbinden eines Verzeichnisses neu gestartet wird, wird die Verbindung zum Remote-Verzeichnis getrennt. Damit das Verzeichnis bei jedem Neustart automatisch eingebunden wird, müssen wir nur eine kleine Änderung vornehmen.

Statt ein Verzeichnis über den Terminal einzubinden, verwenden wir eine weitere Datei: “/etc/fstab”. Hier können wir analog zu dem zuvor verwendeten Befehl eine neue Zeile einfügen:

192.168.2.39:/home/test /home/remote-dir nfs

Wenn das System das nächste mal startet, wird das Remote-Verzeichnis “/home/test” vom Host mit der IP-Adresse “192.168.2.39” automatisch auf dem lokalen Verzeichnis “/home/remote-dir” eingebunden.

Verbindung zu einem eingebundenen Verzeichnis trennen

Um die Verbindung zu einem eingebundenen Remote-Verzeichnis wieder zu trennen, können wir den Befehl umount verwenden:

unmount /home/remote-dir

In dem obigen Beispiel verwenden wir unser lokales Verzeichnis um anzugeben, zu welchem Remote-Verzeichnis die Verbindung getrennt werden soll.