NFS-Server unter Linux einrichten: Verzeichnis freigeben | INTROSERV
EUR
european

EUR

usa

USD

German De
Ex. VAT Ex. VAT 0%

NFS-Server unter Linux einrichten: Verzeichnis per NFS freigeben

Niveau: Fortgeschritten
Geschätzte Dauer: ~30 Minuten
Ziel: Einen NFS-Server unter Linux konfigurieren, um ein Verzeichnis für mehrere Clients freizugeben und so die Automatisierung routinemäßiger Aufgaben sowie proaktive Sicherheitsaudits zu erleichtern.

Einführung

Die Verwaltung von gemeinsam genutztem Speicher über eine Serverflotte hinweg ist eine grundlegende Voraussetzung für den Betrieb von Produktivumgebungen mit hohen Verfügbarkeitsanforderungen. Das NFS-Protokoll (Network File System) ermöglicht es einem System, ein Verzeichnis über NFS freizugeben und im Netzwerk wie ein NAS (Network Attached Storage) bereitzustellen. Mit einem NFS-Server unter Linux können Sie mehreren NFS-Clients gleichzeitig zentralen Dateizugriff bieten. Diese Anleitung zeigt, wie Sie einen NFS-Server unter Linux einrichten, standardmäßig mit NFSv4.2.

Warning

Diese Anleitung verwendet das Sicherheitsverfahren sec=sys (AUTH_SYS). In diesem Modus vertraut der Server den Angaben des Clients zur Benutzeridentifikation (UID/GID) grundsätzlich ohne jegliche kryptografische Authentifizierung. Die Zugriffskontrolle beruht ausschließlich auf der IP-Adressfilterung in /etc/exports und auf den üblichen UNIX-Berechtigungen der Dateien. Diese Konfiguration eignet sich hervorragend für vertrauenswürdige interne Netzwerke (z. B. innerhalb einer virtuellen Proxmox-Umgebung), wird für nicht vertrauenswürdige Netzwerke jedoch nicht empfohlen. Für zusätzliche Sicherheit sollten Sie die Kerberos-Authentifizierung einsetzen (z. B. sec=krb5, sec=krb5i oder sec=krb5p).

Voraussetzungen

Stellen Sie vor dem Start sicher, dass die folgenden Bedingungen erfüllt sind:

  • Betriebssystem: Ubuntu 22.04/24.04 LTS, Debian 12/13 oder CentOS/RHEL 9/AlmaLinux 10
  • Erforderliche Software: nfs-kernel-server (2.6+) für Ubuntu/Debian bzw. nfs-utils (2.x+) für CentOS/RHEL/AlmaLinux
  • Zugriff: sudo- oder root-Zugriff auf allen Rechnern
  • Netzwerk: Die Server müssen über ein privates Netzwerk miteinander kommunizieren können.
  • Erforderliche Kenntnisse: Sicherer Umgang mit der Linux-Befehlszeile.

Terminologie

Machen Sie sich vor dem Fortfahren mit den folgenden grundlegenden Begriffen vertraut:

  • NFS (Network File System): Ein Protokoll, das den Zugriff auf Dateien über ein Netzwerk ermöglicht, als wären sie lokal gespeichert.
  • NFS-Server: Der zentrale Rechner, der die Dateien hostet und im Netzwerk bereitstellt.
  • NFS-Client: Der entfernte Rechner, der sich mit dem Server verbindet, um auf die freigegebenen Dateien zuzugreifen.
  • Freigegebenes Verzeichnis (Shared Directory): Der lokale Ordner auf dem Server, der den Clients zur Verfügung gestellt wird.
  • Export: Der Vorgang, ein lokales Verzeichnis im Netzwerk für Clients verfügbar zu machen.
  • /etc/exports: Die zentrale Konfigurationsdatei, anhand derer der NFS-Daemon bestimmt, welche Verzeichnisse exportiert werden und welche Zugriffsregeln gelten.
  • Einhängen (Mounting): Der Vorgang, eine entfernte Netzwerkfreigabe in die lokale Verzeichnisstruktur einzubinden.
  • Einhängepunkt (Mount Point): Das lokale Verzeichnis auf dem Client, in das das entfernte Dateisystem eingebunden wird.
  • nfs-utils: Das Softwarepaket mit den erforderlichen Werkzeugen und Daemons für NFS-Client und -Server.
  • RPC (Remote Procedure Call): Ein Protokoll, mit dem ein Programm einen Dienst eines Programms auf einem anderen Rechner anfordern kann.
  • Portmapper / rpcbind: Ein Dienst, der RPC-Programmnummern auf Netzwerkports abbildet und den NFS für den Verbindungsaufbau benötigt.
  • Berechtigungen (Permissions): Zugriffsrechte, die festlegen, wer Dateien lesen, schreiben oder ausführen darf.
  • Schreibgeschützter Zugriff (RO): Ein Berechtigungsstatus, der Clients erlaubt, Dateien anzuzeigen, aber nicht zu ändern.
  • Lese-/Schreibzugriff (RW): Ein Berechtigungsstatus, der Clients erlaubt, die freigegebenen Dateien zu ändern.
  • root_squash: Eine Sicherheitsfunktion, die Anfragen des entfernten Benutzers root auf einen nicht privilegierten Benutzer (nobody) abbildet, um unbefugten Root-Zugriff zu verhindern.
  • Firewall: Ein Netzwerksicherheitssystem, das den ein- und ausgehenden Netzwerkverkehr überwacht und steuert.
  • Linux-Dateisystem: Die strukturierte Methode, mit der Linux Dateien auf dem Datenträger speichert und organisiert.
  • Hostname: Eine für Menschen lesbare Bezeichnung für ein mit einem Computernetzwerk verbundenes Gerät.
  • IP-Adresse: Eine eindeutige numerische Kennung, die jedem Gerät in einem Netzwerk zugewiesen wird.
  • Automount: Das automatische Einhängen von Dateisystemen beim Systemstart.
  • NAS (Network Attached Storage): Eine dateibasierte Speicherarchitektur, die Daten über ein Netzwerk zugänglich macht.

Schritt 1: Erforderliche Pakete installieren

Installieren Sie zunächst die erforderliche Software auf dem Server und den Clients. Das Paket nfs-utils stellt die Daemons und Werkzeuge zur Verwaltung des Dateisystems bereit. Moderne Setups sollten standardmäßig NFSv4.2 verwenden, das zustandsbehaftet (stateful) ist und die Firewall-Regeln vereinfacht.

Auf dem NFS-Server (Debian/Ubuntu):

sudo apt update sudo apt install nfs-kernel-server

Auf dem NFS-Server (CentOS/RHEL/AlmaLinux):

sudo dnf install nfs-utils sudo systemctl enable --now rpcbind nfs-server

Info

Für ein reines NFSv4-Setup ist der Dienst rpcbind für das Einhängen selbst technisch nicht erforderlich. Er wird jedoch benötigt, wenn Sie den Befehl showmount (siehe Schritt 5) zum Auffinden von Exporten verwenden oder ältere NFSv3-Clients unterstützen müssen.

Auf dem NFS-Client (Debian/Ubuntu):

sudo apt update sudo apt install nfs-common

Auf dem NFS-Client (CentOS/RHEL/AlmaLinux):

sudo dnf install nfs-utils

Die Installation sollte erfolgreich abgeschlossen werden. Die erforderlichen RPC- und NFS-Dienste sind nun installiert und laufen.

Schritt 2: Freigegebenes Verzeichnis erstellen und NFS-Berechtigungen festlegen

Erstellen Sie auf dem Server das Verzeichnis, das Sie exportieren möchten:

sudo mkdir -p /mnt/nfs_share

Legen Sie die passenden NFS-Berechtigungen fest, damit Clients auf die Dateien zugreifen können. In dieser Anleitung weisen wir den Besitz dem dedizierten, nicht privilegierten Dienstbenutzer zu und vergeben geeignete Gruppenberechtigungen.

Debian/Ubuntu:

sudo chown nobody:nogroup /mnt/nfs_share sudo chmod 2775 /mnt/nfs_share

CentOS/RHEL/AlmaLinux:

sudo chown nobody:nobody /mnt/nfs_share sudo chmod 2775 /mnt/nfs_share

Diese Konfiguration umgeht das lokale Linux-Berechtigungsmodell nicht, sodass die NFS-Zugriffskontrolle nicht Ihre einzige Sicherheitsebene ist. Die Berechtigung 2775 ermöglicht die Zusammenarbeit in der Gruppe auf sichere Weise, ohne das Prinzip der minimalen Rechte (Least Privilege) zu verletzen.

Schritt 3: NFS-Server unter Linux konfigurieren

Um die Exportregeln festzulegen, müssen Sie die Datei /etc/exports auf dem Server bearbeiten.

Öffnen Sie die Datei:

sudo nano /etc/exports

Fügen Sie die folgende Zeile hinzu, um einem bestimmten Client-Subnetz Zugriff zu gewähren (z. B. <CLIENT_SUBNET>):

/mnt/nfs_share <CLIENT_SUBNET>(rw,sync,no_subtree_check,root_squash)

Damit exportiert der Server das Verzeichnis mit den folgenden Optionen:

  • rw: Gewährt Lese-/Schreibzugriff (RW). Verwenden Sie ro für schreibgeschützten Zugriff (RO).
  • sync: Erzwingt, dass Änderungen auf den Datenträger geschrieben werden, bevor der Server dem Client antwortet.
  • no_subtree_check: Deaktiviert die Subtree-Prüfung, was die Zuverlässigkeit verbessert.
  • root_squash: Bildet Anfragen des entfernten Benutzers root ausdrücklich auf einen nicht privilegierten Benutzer (nobody) ab. Dies ist das Standardverhalten, sollte aber für Audits stets explizit angegeben werden. Verwenden Sie no_root_squash nur in streng kontrollierten Umgebungen.

Info

Sie können mehrere Clients angeben, indem Sie in derselben Zeile weitere IP-Adressen oder Subnetze durch Leerzeichen getrennt hinzufügen. So lässt sich der Zugriff für mehrere Rechner freigeben.

Wenden Sie die Export-Konfiguration an:

Debian/Ubuntu:

sudo exportfs -a sudo systemctl restart nfs-kernel-server

CentOS/RHEL/AlmaLinux:

sudo exportfs -a sudo systemctl restart nfs-server

Der Server exportiert das Verzeichnis nun aktiv im Netzwerk.

Schritt 4: Firewall konfigurieren

Sie müssen NFS-Datenverkehr in der Firewall des Servers zulassen, damit Clients sich verbinden können.

Mit UFW (Debian/Ubuntu):

Bei einer frischen Ubuntu-Installation ist UFW standardmäßig inaktiv. Auf einem frischen Debian-13-System ist es möglicherweise nicht einmal installiert. Wenn Sie UFW verwenden möchten, stellen Sie sicher, dass es installiert ist (sudo apt install ufw) und ausdrücklich aktiviert wurde, bevor Sie Ihre Regeln hinzufügen:

sudo ufw enable sudo ufw allow from <CLIENT_SUBNET> to any port nfs

Mit Firewalld (CentOS/RHEL/AlmaLinux):

sudo firewall-cmd --permanent --zone=public --add-service=nfs sudo firewall-cmd --permanent --zone=public --add-service=rpc-bind sudo firewall-cmd --permanent --zone=public --add-service=mountd sudo firewall-cmd --reload

Info

AlmaLinux/RHEL (SELinux): Bei einer frischen AlmaLinux-Installation steht SELinux auf Enforcing. Für den in dieser Anleitung verwendeten Standardpfad /mnt/nfs_share ist der vorhandene Kontext mnt_t mit dem Daemon nfsd kompatibel. Wenn Sie jedoch nicht standardmäßige Pfade exportieren möchten (z. B. /srv, /data oder /home/...), kann NFS dort nicht schreiben, solange SELinux nicht entsprechend konfiguriert ist. Sie können entweder den globalen Boolean-Wert setzen (sudo setsebool -P nfs_export_all_rw 1) oder mit semanage den passenden fcontext festlegen.

Clients aus dem zugelassenen Subnetz können die NFS-Dienste nun erreichen.

Schritt 5: Export mit dem Befehl showmount überprüfen

Überprüfen Sie auf dem Server proaktiv die aktiven Exporte und den internen Audit-Status, um die Einhaltung der Sicherheitsvorgaben sicherzustellen. Führen Sie den folgenden Befehl aus, um die vom NFS-Daemon tatsächlich angewendeten Export-Optionen zu prüfen:

sudo cat /var/lib/nfs/etab

Alternativ können Sie mit sudo exportfs -v die ausführliche Exportliste anzeigen.

Verwenden Sie anschließend auf dem Client den Befehl showmount, um zu prüfen, ob der Export im Netzwerk sichtbar ist. Ersetzen Sie <SERVER_IP> durch die tatsächliche IP-Adresse Ihres NFS-Servers.

Info

showmount erfordert, dass Port 111 (rpcbind) auf dem Server geöffnet ist. Wenn Sie ein reines NFSv4-Setup betreiben und diesen Port nicht geöffnet haben, überspringen Sie diesen Schritt: Prüfen Sie die Exporte auf dem Server mit sudo exportfs -v und testen Sie die Erreichbarkeit vom Client, indem Sie in Schritt 6 die Freigabe einhängen.

showmount -e <SERVER_IP>

Erwartete Ausgabe:

Export list for <SERVER_IP>: /mnt/nfs_share <CLIENT_SUBNET>

Wenn der Export aufgeführt wird, ist die Serverkonfiguration korrekt und vom Client aus erreichbar.

Schritt 6: NFS-Dateisystem auf dem Client einhängen

Um die Freigabe zu nutzen, müssen Sie das NFS-Dateisystem einhängen, und zwar in einen lokalen Einhängepunkt auf dem Client.

Erstellen Sie den Einhängepunkt:

sudo mkdir -p /mnt/client_share

Hängen Sie das Verzeichnis ein:

sudo mount -t nfs -o vers=4.2 <SERVER_IP>:/mnt/nfs_share /mnt/client_share

Die Freigabe ist nun eingehängt. Mit df -h können Sie prüfen, ob das Netzlaufwerk angebunden ist. Die Angabe vers=4.2 stellt sicher, dass der Client ausdrücklich die neueste Protokollversion verwendet und nicht stillschweigend auf NFSv3 oder NFSv4.0 zurückfällt.

Tip

Damit der Client das NFS-Dateisystem beim Start automatisch einhängt, können Sie einen statischen Mount konfigurieren, indem Sie einen Eintrag in /etc/fstab hinzufügen. Beachten Sie, dass dies ein statischer Mount ist; echte, dynamische Automount-Konfigurationen werden in Produktivumgebungen üblicherweise über autofs (/etc/auto.master) umgesetzt.

Öffnen Sie /etc/fstab:

sudo nano /etc/fstab

Fügen Sie die folgende Zeile hinzu:

<SERVER_IP>:/mnt/nfs_share /mnt/client_share nfs auto,nofail,noatime,_netdev,hard,vers=4.2,timeo=600 0 0

Dadurch wird verhindert, dass der Client den Bootvorgang blockiert, wenn der Server vorübergehend nicht erreichbar ist.

Überprüfung

Um zu bestätigen, dass die NFS-Berechtigungen und Netzwerkeinstellungen korrekt sind, führen Sie auf dem Client einen Lese-/Schreibtest durch:

touch /mnt/client_share/test_file.txt ls -l /mnt/client_share/

Erwartete Ausgabe:

-rw-r--r-- 1 nobody nogroup 0 May 24 12:00 test_file.txt

Info

Je nach Betriebssystem des Clients wird als Dateibesitzer nobody nogroup (Debian/Ubuntu) oder nobody nobody (RHEL/AlmaLinux) angezeigt. Dies ist das erwartete Verhalten des NFSv4-Idmappings, wenn Anfragen korrekt auf einen nicht privilegierten Benutzer abgebildet werden. Falls Abweichungen auftreten, prüfen Sie, ob der Parameter Domain in /etc/idmapd.conf auf Server und Client übereinstimmt.

Wenn die Datei erfolgreich erstellt wird, können Ihre Clients mit dem Server kommunizieren und wie vorgesehen Daten schreiben.

Änderungen rückgängig machen

So hängen Sie die Freigabe auf dem Client aus:

sudo umount /mnt/client_share

Entfernen Sie den Eintrag in /etc/fstab auf dem Client, falls Sie einen hinzugefügt haben.

Um die Freigabe des Verzeichnisses auf dem Server zu beenden, entfernen Sie die entsprechende Zeile aus /etc/exports und wenden Sie die Änderungen an:

Debian/Ubuntu:

sudo exportfs -a sudo systemctl restart nfs-kernel-server

CentOS/RHEL/AlmaLinux:

sudo exportfs -a sudo systemctl restart nfs-server

So entfernen Sie die installierten Pakete vollständig:

Debian/Ubuntu:

sudo apt remove nfs-kernel-server nfs-common

CentOS/RHEL/AlmaLinux:

sudo dnf remove nfs-utils

Dadurch wird die NFS-Funktionalität auf Ihren Rechnern vollständig deaktiviert.

Fazit

Sie haben erfolgreich gelernt, wie Sie einen NFS-Server unter Linux einrichten. Mit der richtigen Konfiguration können Sie ein Verzeichnis sicher über NFS freigeben und mehreren NFS-Clients zur Verfügung stellen. Dieses Setup bildet eine zuverlässige Grundlage, um routinemäßige Administrationsaufgaben zu automatisieren und Protokolle für proaktive Sicherheitsaudits zu zentralisieren.

Dokumentversion: 1.0
Zuletzt aktualisiert: Mai 2026
Verantwortlich: Team für technische Dokumentation

VAT

  • Other

    Ex. VAT

    0%
  • austria

    Austria

    20%
  • Belgium

    Belgium

    21%
  • Bulgaria

    Bulgaria

    20%
  • Croatia

    Croatia

    25%
  • Cyprus

    Cyprus

    19%
  • Czech Republic

    Czech Republic

    21%
  • Denmark

    Denmark

    25%
  • Estonia

    Estonia

    22%
  • France

    France

    20%
  • Finland

    Finland

    24%
  • Germany

    Germany

    19%
  • Greece

    Greece

    24%
  • Hungary

    Hungary

    27%
  • Ireland

    Ireland

    23%
  • Italy

    Italy

    22%
  • Latvia

    Latvia

    21%
  • Lithuania

    Lithuania

    21%
  • Luxembourg

    Luxembourg

    17%
  • Malta

    Malta

    18%
  • Netherlands

    Netherlands

    21%
  • Poland

    Poland

    23%
  • Portugal

    Portugal

    23%
  • Romania

    Romania

    19%
  • Slovakia

    Slovakia

    20%
  • Slovenia

    Slovenia

    22%
  • Spain

    Spain

    21%
  • Sweden

    Sweden

    25%
  • USA

    USA

    0%
european
states
  • germany
  • Español
  • Italiano
  • Poland
  • Русский
  • Slovenski
  • Türkçe
  • ukraine
  • kingdom
  • French
  • Hrvatska
  • Other
  • Austria
  • Belgium
  • Bulgaria
  • Croatia
  • Cyprus
  • Czech Republic
  • Denmark
  • Estonia
  • Finland
  • France
  • Germany
  • Greece
  • Hungary
  • Ireland
  • Italy
  • Latvia
  • Lithuania
  • Luxembourg
  • Malta
  • Netherlands
  • Poland
  • Portugal
  • Romania
  • Slovakia
  • Slovenia
  • Spain
  • Sweden
  • USA