Linux

So installieren und konfigurieren Sie einen NFS-Server unter Ubuntu 20.04

So installieren und konfigurieren Sie einen NFS-Server unter Ubuntu 20.04

NFS oder Network File System ist ein verteiltes Dateisystemprotokoll, mit dem Sie Verzeichnisse über ein Netzwerk freigeben können. Mit NFS können Sie Remote-Verzeichnisse auf Ihrem System mounten und mit den Dateien auf dem Remote-Rechner arbeiten, als wären es lokale Dateien.

Standardmäßig ist das NFS-Protokoll nicht verschlüsselt und bietet keine Benutzerauthentifizierung. Der Zugriff auf den Server wird durch die IP-Adressen oder Hostnamen des Clients eingeschränkt.

Dieser Artikel erklärt, wie Sie einen NFSv4-Server unter Ubuntu 20 einrichten.04. Wir zeigen Ihnen auch, wie Sie ein NFS-Dateisystem auf dem Client-Rechner mounten.

Voraussetzungen #

Wir werden zwei Computer verwenden, einen mit Ubuntu 20.04, der als NFS-Server fungiert, und ein anderer, auf dem eine andere Linux-Distribution ausgeführt wird, auf der wir die Freigabe mounten. Der Server und die Clients sollen über ein privates Netzwerk miteinander kommunizieren können. Sie können öffentliche IP-Adressen verwenden und die Server-Firewall so konfigurieren, dass Datenverkehr auf Port . zugelassen wird 2049 nur aus vertrauenswürdigen Quellen.

Die Maschinen in diesem Beispiel haben die folgenden IPs:

NFS-Server-IP: 192.168.33.10 NFS-Client-IPs: Ab 192.168.33.0/24-Bereich 

Einrichten des NFS-Servers #

Der erste Schritt besteht darin, den NFS-Server einzurichten. Wir installieren die notwendigen Pakete, erstellen und exportieren die NFS-Verzeichnisse und konfigurieren die Firewall.

Installieren des NFS-Servers #

Das NFS-Serverpaket bietet User-Space-Unterstützung, die zum Ausführen des NFS-Kernel-Servers erforderlich ist. Um das Paket zu installieren, führen Sie Folgendes aus:

sudo apt-Updatesudo apt installieren nfs-kernel-server

Sobald die Installation abgeschlossen ist, werden die NFS-Dienste automatisch gestartet.

Unter Ubuntu 20.04, NFS-Version 2 ist deaktiviert. Version 3 und 4 sind aktiviert. Sie können dies überprüfen, indem Sie Folgendes ausführen Katze Befehl :

sudo cat /proc/fs/nfsd/versions
-2 +3 +4 +4.1 +4.2 

NFSv2 ist jetzt ziemlich alt und es gibt keinen Grund, es zu aktivieren.

Die Konfiguration des NFS-Servers ist definiert in /etc/default/nfs-kernel-server und /etc/default/nfs-common Dateien. Die Standardeinstellungen sind für die meisten Situationen ausreichend.

Erstellen der Dateisysteme #

Der NFSv4-Server verwendet ein globales Stammverzeichnis und die exportierten Verzeichnisse sind relativ zu diesem Verzeichnis. Sie können den Freigabe-Mount-Punkt mit den Verzeichnissen verknüpfen, die Sie exportieren möchten, indem Sie bind-Mounts verwenden.

In diesem Beispiel setzen wir die /srv/nfs4 Verzeichnis als NFS-Root. Um besser zu erklären, wie die NFS-Mounts konfiguriert werden können, teilen wir uns zwei Verzeichnisse (/var/www und /opt/backups) mit unterschiedlichen Konfigurationseinstellungen. Das /var/www/ ist Eigentum des Benutzers www-daten, und /opt/backups gehört Wurzel.

Erstellen Sie zuerst das Root-Verzeichnis und die Share-Mount-Punkte:

sudo mkdir -p /srv/nfs4/backupssudo mkdir -p /srv/nfs4/www

Binden Sie die Verzeichnisse an die Freigabe-Mount-Punkte:

sudo mount --bind /opt/backups /srv/nfs4/backupssudo mount --bind /var/www /srv/nfs4/www

Um die Bindungsmounts über Neustarts hinweg permanent zu machen, öffnen Sie das /etc/fstab Datei:

sudo nano /etc/fstab

und füge die folgenden Zeilen hinzu:

/etc/fstab
/opt/backups /srv/nfs4/backups keine binden 0 0 /var/www /srv/nfs4/www keine binden 0 0 

Exportieren der Dateisysteme #

Der nächste Schritt besteht darin, die Dateisysteme, die exportiert werden sollen, und die Clients, die auf diese Freigaben zugreifen dürfen, zur Datei hinzuzufügen /etc/export Datei.

Jede Zeile für ein exportiertes Dateisystem hat die folgende Form:

Host exportieren (Optionen) 

Wo Export ist das exportierte Verzeichnis, Gastgeber ein Hostname oder eine IP-Adresse/ein Bereich ist, der/die auf den Export zugreifen kann, und Optionen sind die Host-Optionen.

Öffne das /etc/export Datei und fügen Sie die folgenden Zeilen hinzu:

sudo nano /etc/exports
/etc/export
/srv/nfs4 192.168.33.0/24(rw,sync,no_subtree_check,crossmnt,fsid=0) /srv/nfs4/backups 192.168.33.0/24(ro,sync,no_subtree_check) 192.168.33.3(rw,sync,no_subtree_check) /srv/nfs4/www 192.168.33.20(rw,sync,no_subtree_check) 

Die erste Zeile enthält die fsid=0 Option, die das NFS-Root-Verzeichnis (/srv/nfs4). Der Zugriff auf dieses NFS-Volume ist nur den Clients aus dem 192.168.33.0/24 Subnetz. Das crossmnt Option ist erforderlich, um Verzeichnisse freizugeben, die Unterverzeichnisse eines exportierten Verzeichnisses sind.

Die zweite Zeile zeigt, wie Sie mehrere Exportregeln für ein Dateisystem festlegen. Der Lesezugriff ist auf das Ganze erlaubt 192.168.33.0/24 Bereich und sowohl Lese- als auch Schreibzugriff nur auf die 192.168.33.3 IP Adresse. Das synchronisieren Option weist NFS an, Änderungen auf die Festplatte zu schreiben, bevor sie antwortet.

Die letzte Zeile ist selbsterklärend. Weitere Informationen zu allen verfügbaren Optionen Typ Mann exportiert in deinem Terminal.

Speichern Sie die Datei und exportieren Sie die Freigaben:

sudo exportfs -ar

Sie müssen den obigen Befehl jedes Mal ausführen, wenn Sie die ändern /etc/export Datei. Bei Fehlern oder Warnungen werden diese auf dem Terminal angezeigt.

Um die aktuell aktiven Exporte und ihren Status anzuzeigen, verwenden Sie:

sudo exportfs -v

Die Ausgabe enthält alle Aktien mit ihren Optionen. Wie Sie sehen, gibt es auch Optionen, die wir nicht in der definiert haben /etc/export Datei. Dies sind Standardoptionen und wenn Sie sie ändern möchten, müssen Sie diese Optionen explizit festlegen set.

/srv/nfs4/backups 192.168.33.3(rw,wdelay,root_squash,no_subtree_check,sec=sys,rw,secure,root_squash,no_all_squash) /srv/nfs4/www 192.168.33.20(rw,wdelay,root_squash,no_subtree_check,sec=sys,rw,secure,root_squash,no_all_squash) /srv/nfs4 192.168.33.0/24(rw,wdelay,crossmnt,root_squash,no_subtree_check,fsid=0,sec=sys,rw,secure,root_squash,no_all_squash) /srv/nfs4/backups 192.168.33.0/24(ro,wdelay,root_squash,no_subtree_check,sec=sys,ro,secure,root_squash,no_all_squash) 

Auf Ubuntu, root_squash ist standardmäßig aktiviert. Dies ist eine der wichtigsten Optionen in Bezug auf die NFS-Sicherheit. Es verhindert, dass Root-Benutzer, die von den Clients aus verbunden sind, Root-Rechte auf den gemounteten Freigaben haben, indem es Root zuordnet UID und GID zu niemand/keine Gruppe UID/GID.

Damit die Benutzer auf den Clientcomputern Zugriff haben, erwartet NFS, dass die Benutzer- und Gruppen-IDs des Clients mit denen auf dem Server übereinstimmen. Eine andere Möglichkeit ist die Verwendung der NFSv4-Idmapping-Funktion, die Benutzer- und Gruppen-IDs in Namen übersetzt und umgekehrt the.

Das ist es. An dieser Stelle haben Sie einen NFS-Server auf Ihrem Ubuntu-Server eingerichtet. Sie können nun zum nächsten Schritt übergehen und die Clients konfigurieren und eine Verbindung zum NFS-Server herstellen.

Firewall-Konfiguration #

Wenn Sie Jenkins auf einem entfernten Ubuntu-Server installieren, der durch eine Firewall geschützt ist, müssen Sie den Datenverkehr auf dem NFS-Port aktivieren:

sudo ufw erlauben ab 192.168.33.0/24 zu jedem Port nfs

Überprüfen Sie die Änderung:

sudo ufw-Status

Die Ausgabe sollte zeigen, dass der Verkehr auf Port 2049 ist erlaubt:

Zur Aktion Von -- ------ ---- 2049 ERLAUBEN 192.168.33.0/24 22/tcp ERLAUBEN Überall 22/tcp (v6) ERLAUBEN Überall (v6) 

Einrichten der NFS-Clients #

Nachdem der NFS-Server eingerichtet und die Freigaben exportiert wurden, müssen im nächsten Schritt die Clients konfiguriert und die Remote-Dateisysteme gemountet werden.

Wir konzentrieren uns auf Linux-Systeme, aber Sie können die NFS-Freigabe auch auf macOS- und Windows-Computern mounten.

Installieren des NFS-Clients #

Auf den Client-Rechnern müssen wir nur die Tools installieren, die zum Mounten eines Remote-NFS-Dateisystems erforderlich sind.

Mounten von Dateisystemen #

Wir arbeiten auf dem Client-Rechner mit IP 192.168.33.20, die Lese- und Schreibzugriff auf die /srv/nfs4/www Dateisystem und schreibgeschützter Zugriff auf die /srv/nfs4/backups Dateisystem.

Erstellen Sie zwei neue Verzeichnisse für die Mount-Punkte:

sudo mkdir -p /backupssudo mkdir -p /srv/www

Sie können die Verzeichnisse an jedem beliebigen Ort erstellen.

Mounten Sie die exportierten Dateisysteme mit dem montieren Befehl:

sudo mount -t nfs -o vers=4 192.168.33.10:/Backups/Backupssudo mount -t nfs -o vers=4 192.168.33.10:/www/srv/www

Wo 192.168.33.10 ist die IP des NFS-Servers. Sie können statt der IP-Adresse auch den Hostnamen verwenden, dieser muss jedoch vom Client-Rechner auflösbar sein. Dies geschieht normalerweise, indem Sie den Hostnamen der IP im /etc/hosts Datei.

Lassen Sie beim Mounten eines NFSv4-Dateisystems das NFS-Stammverzeichnis weg. Benutzen /Sicherungen, Anstatt von /srv/nfs4/backups.

Stellen Sie sicher, dass die Remote-Dateisysteme erfolgreich gemountet wurden, indem Sie entweder mount oder df Befehl:

df -h

Der Befehl druckt alle gemounteten Dateisysteme. Die letzten beiden Zeilen sind die gemounteten Freigaben:

Verwendete Dateisystemgröße Verfügbare Verwendung% Eingehängt auf udev 951M 0 951M 0% /dev tmpfs 199M 676K 199M 1% /run /dev/sda3 124G 2.8G 115G 3% / tmpfs 994M 0 994M 0% /dev/shm tmpfs 5.0M 0 5.0M 0% /run/lock tmpfs 994M 0 994M 0% /sys/fs/cgroup /dev/sda1 456M 197M 226M 47% /boot tmpfs 199M 0 199M 0% /run/user/1000 192.168.33.10:/Sicherungen 124G 2.8G 115G 3% /Sicherungen 192.168.33.10:/www 124G 2.8G 115G 3% /srv/www

Um die Mounts beim Neustart dauerhaft zu machen, öffnen Sie das /etc/fstab Datei und fügen Sie die folgenden Zeilen hinzu:

sudo nano /etc/fstab
/etc/fstab
192.168.33.10:/backups /backups nfs defaults,timeo=900,retrans=5,_netdev 0 0 192.168.33.10:/www /srv/www nfs-Standardeinstellungen,timeo=900,retrans=5,_netdev 0 0 

Um Informationen zu den verfügbaren Optionen beim Mounten eines NFS-Dateisystems zu erhalten, geben Sie Mann nfs in deinem Terminal.

Eine andere Möglichkeit, entfernte Dateisysteme zu mounten, besteht darin, entweder die autofs Tool oder zum Erstellen einer Systemd-Unit.

Testen des NFS-Zugriffs #

Lassen Sie uns den Zugriff auf die Freigaben testen, indem Sie auf jeder von ihnen eine neue Datei erstellen.

Versuchen Sie zunächst, eine Testdatei für die /Sicherungen Verzeichnis mit dem berühren Befehl:

sudo touch /backups/test.TXT

Das /sicherung Dateisystem wird als schreibgeschützt exportiert und wie erwartet sehen Sie a Zugriff verweigert Fehlermeldung:

touch: kann '/backups/test' nicht berühren: Berechtigung verweigert 

Versuchen Sie als Nächstes, eine Testdatei für die /srv/www Verzeichnis als Root mit dem sudo Befehl:

sudo touch /srv/www/test.TXT

Du wirst wieder sehen Zugriff verweigert Botschaft.

touch: kann '/srv/www' nicht berühren: Berechtigung verweigert 

Wenn Sie sich erinnern, die, /var/www Verzeichnis ist im Besitz der www-daten Benutzer, und diese Freigabe hat root_squash Optionssatz, der den Root-Benutzer dem niemand Benutzer und keine Gruppe Gruppe, die keine Schreibberechtigung für die Remote-Freigabe hat.

Angenommen, Sie haben ein www-daten auf dem Client-Rechner mit demselben verwenden UID und GID wie auf dem Remote-Server (was beispielsweise der Fall sein sollte, wenn Sie nginx auf beiden Maschinen installiert haben), können Sie versuchen, eine Datei als Benutzer zu erstellen www-daten:

sudo -u www-data touch /srv/www/test.TXT

Der Befehl zeigt keine Ausgabe an, was bedeutet, dass die Datei erfolgreich erstellt wurde.

Um dies zu überprüfen, listen Sie die Dateien im /srv/www Verzeichnis:

ls -la /srv/www

Die Ausgabe sollte die neu erstellte Datei anzeigen:

drwxr-xr-x 3 www-data www-data 4096 Apr 10 22:18 . drwxr-xr-x 3 root root 4096 Apr 10 22:29… -rw-r--r-- 1 www-data www-data 0 Apr 10 21:58 Index.html -rw-r--r-- 1 www-data www-data 0 Apr 10 22:18 test.TXT 

Unmounten des NFS-Dateisystems #

Wenn die Remote-NFS-Freigabe nicht mehr benötigt wird, können Sie sie wie jedes andere eingehängte Dateisystem mit der ummount Befehl.

Um zum Beispiel die /sicherung teilen, würden Sie ausführen:

sudo umount /backups

Wenn der Mount-Punkt im /etc/fstab stellen Sie sicher, dass Sie die Zeile entfernen oder auskommentieren, indem Sie hinzufügen # am Anfang der Zeile.

Fazit #

Wir haben Ihnen gezeigt, wie Sie einen NFS-Server einrichten und die Remote-Dateisysteme auf den Client-Rechnern mounten. Wenn Sie NFS in der Produktion implementieren und sensible Daten teilen, ist es eine gute Idee, die Kerberos-Authentifizierung zu aktivieren.

Als Alternative zu NFS können Sie SSHFS verwenden, um Remote-Verzeichnisse über eine SSH-Verbindung zu mounten. SSHFS ist standardmäßig verschlüsselt und viel einfacher zu konfigurieren und zu verwenden.

Bei Fragen gerne einen Kommentar hinterlassen.

Fügen Sie mit diesen kostenlosen Tools Mausgesten zu Windows 10 hinzu
In den letzten Jahren haben sich Computer und Betriebssysteme stark weiterentwickelt. Es gab eine Zeit, in der Benutzer Befehle verwenden mussten, um ...
Steuern und verwalten Sie Mausbewegungen zwischen mehreren Monitoren in Windows 10
Dual-Display-Maus-Manager lässt Sie die Mausbewegung zwischen mehreren Monitoren steuern und konfigurieren, indem Sie ihre Bewegungen in der Nähe der ...
Mit WinMouse können Sie die Mauszeigerbewegung auf einem Windows-PC anpassen und verbessern improve
Wenn Sie die Standardfunktionen Ihres Mauszeigers verbessern möchten, verwenden Sie Freeware WinMouse. Es fügt weitere Funktionen hinzu, damit Sie das...