Suchen Sie nach einer Anwendung, mit der Sie Dateien und Verzeichnisse über das Netzwerk gemeinsam nutzen können? Für mehrere Kunden? Sie benötigen wahrscheinlich NFS (Network File System)! Ein Ubuntu NFS-Server ermöglicht es Ihnen, gemeinsam genutzte Verzeichnisse für verschiedene Clients mit zusätzlicher Zugriffskontrolle zu erstellen.
Kein Leser? Sehen Sie sich dieses zugehörige Video-Tutorial an! Sie sehen das Video nicht? Stellen Sie sicher, dass Ihr Werbeblocker deaktiviert ist.In diesem Lernprogramm erfahren Sie, wie Sie einen NFS-Server einrichten und Dateien sicher zwischen mehreren Computern freigeben.
Bereit? Lesen Sie weiter und starten Sie Ihre sichere Dateifreigabe!
Voraussetzungen
Dieses Tutorial wird eine praktische Demonstration sein. Um mitzumachen, stellen Sie sicher, dass Sie die folgenden Voraussetzungen erfüllen:
- Ein Linux-Server und -Client im selben Netzwerk – Diese Demo verwendet einen Ubuntu 20.04-Server mit dem Hostnamen
nfs-server
und ein Ubuntu 20.04-Client mit dem Hostnamenclient
. Sie können aber auch eine andere Linux-Distribution wie Debian, CentOS oder Fedora verwenden.
- Ein Nicht-Root-Benutzer mit sudo-Berechtigungen.
Installieren eines Ubuntu-NFS-Servers
NFS ermöglicht Benutzern einen sicheren Dateizugriff auf entfernten Systemen, als wären es nur lokal gespeicherte Dateien. Bevor Sie jedoch Dateien und Verzeichnisse freigeben, installieren Sie zunächst einen Ubuntu NFS-Server. Unter Ubuntu installieren Sie den nfs-kernel-server
Paket auf nfs-server
Maschine.
Einige Befehle im gesamten Tutorial haben keine Ausgaben. Aber ein Ergebnis der gesammelten Schritte, die Sie unternommen haben, wird beim letzten Schritt jedes Abschnitts angezeigt.
1. Melden Sie sich bei Ihrem Linux-Server an und führen Sie sudo su
aus Befehl unten, um die Root-Rechte zu erhalten.
sudo su
2. Führen Sie die folgenden Befehle zu update
aus den Paketindex für Ihr Repository und installieren Sie das Ubuntu NFS-Serverpaket (nfs-kernel-server
).
sudo apt update
sudo apt install nfs-kernel-server -y
3. Führen Sie zuletzt den systemctl
aus Befehle unten, um den NFS-Dienst nfs-kernel-server
zu starten und zu aktivieren , überprüfen Sie dann nfs-kernel-server
Dienststatus ist aktiv.
# start and enable NFS service
sudo systemctl enable --now nfs-kernel-server.service
# verify status NFS service
sudo systemctl status nfs-kernel-server.service
Wie Sie unten sehen, ist das aktiv (beendet) status zeigt an, dass der NFS-Dienst ausgeführt wird. Die beendet Nachricht teilt Ihnen mit, dass der systemd-Manager keinen Daemon zum Überwachen finden kann.
Einrichten des freigegebenen NFS-Verzeichnisses
Nach der Installation des NFS-Serverpakets richten Sie nun das freigegebene NFS-Verzeichnis ein, indem Sie neue Verzeichnisse erstellen. Sie teilen diese Verzeichnisse mit Kunden und fügen neue Konfigurationen zu /etc/exports hinzu Datei.
1. Führen Sie den folgenden Befehl aus, um ein neues freigegebenes NFS-Verzeichnis zu erstellen. In diesem Beispiel teilen Sie den /srv/data
Verzeichnis und /srv/test
an Kunden.
sudo mkdir -p /srv/{data,test}
2. Führen Sie als Nächstes chown
aus Befehl unten, um den Besitz des freigegebenen NFS-Verzeichnisses /srv/data
zu ändern und /srv/test
an den Benutzer nobody
und Gruppe nogroup
. Dieser Befehl stellt sicher, dass das freigegebene NFS-Verzeichnis von Clients beschreibbar ist. sudo chown -R nobody:nogroup /srv/{data,test}
Dieser Befehl stellt sicher, dass das freigegebene NFS-Verzeichnis von Clients beschreibbar ist.
sudo chown -R nobody:nogroup /srv/{data,test}
3. Bearbeiten Sie die NFS-Konfiguration /etc/exports
Verwenden Sie Ihren bevorzugten Editor und füllen Sie die Datei mit der folgenden Konfiguration.
Die folgende Konfiguration ermöglicht Client-Rechnern den Zugriff auf das freigegebene NFS-Verzeichnis mit angegebenem Benutzerzugriff, entweder lesend oder schreibend (rw
) oder schreibgeschützt (ro
). Stellen Sie sicher, dass Sie die IP-Adressen ändern (172.16.1.25
und 172.16.1.0/24
) mit den IP-Adressen der Client-Rechner.
# sync - forces NFS to write change from the shared directory to disk immediately.
# no_subtree_check - disabling the subtree checking to get more performance.
# rw - set read/write access to NFS shared directory for clients.
# share /srv/data to client 172.16.1.25 with read and write access.
/srv/data 172.16.1.25(rw,sync,no_subtree_check,root_squash)
# r0 - set read-only access to NFS shared directory for clients.
# share /srv/test to network 172.16.1.0/24 with read only access.
/srv/test 172.16.1.0/24(ro,sync,no_subtree_check)
4. Führen Sie den folgenden Befehl aus, um das freigegebene Verzeichnis anzuwenden, und überprüfen Sie den /etc/exports
Konfigurationsdatei. Wenn Sie keine Ausgabemeldungen erhalten, ist die NFS-Konfiguration korrekt.
sudo exportfs -a
5. Führen Sie nun den systemctl
aus Befehl unten, um den nfs-kernel-server
neu zu starten Service.
sudo systemctl restart nfs-kernel-server
6. Führen Sie zuletzt den showmount
aus Befehl unten, um die freigegebenen Verzeichnisse auf dem Ubuntu NFS-Server aufzulisten. Achten Sie darauf, die IP-Adresse zu ändern (172.16.1.20
) durch die IP-Adresse des NFS-Servers.
showmount --exports 172.16.1.20
Jetzt sollten Sie die freigegebene Verzeichnisliste auf dem NFS-Server mit der IP-Adresse sehen, die Ihnen den Zugriff auf den Ubuntu-NFS-Server ermöglicht hat.
Sichern des freigegebenen NFS-Verzeichnisses mit der UFW-Firewall
Sie haben das freigegebene NFS-Verzeichnis konfiguriert, aber normalerweise möchten Sie verhindern, dass zufällige Benutzer auf das freigegebene Verzeichnis zugreifen.
Stellen Sie sicher, dass nur die zugelassene IP-Adresse auf das freigegebene Verzeichnis zugreifen kann. Wie? Durch Einrichten der UFW-Firewall und Angabe der IP-Adresse zum NFS-Port.
1. Führen Sie die folgenden Befehle aus, um den NFS-Port (2049
) und Clients auf den IP-Adressen 172.16.1.25
zulassen und 172.16.1.0/24
Zugriff auf den Ubuntu NFS-Server. Stellen Sie sicher, dass Sie die IP-Adresse durch die IP-Adresse Ihres Clients ersetzen.
# allow client IP 172.16.1.25 to access NFS server
sudo ufw allow from 172.16.1.25 to any port nfs
# allow network 172.16.1.0/24 to access NFS server
sudo ufw allow from 172.16.1.0/24 to any port nfs
2. Als nächstes führen Sie ufw
aus Befehl unten, um die UFW-Firewall neu zu laden und eine neue Konfiguration anzuwenden.
sudo ufw reload
3. Führen Sie zuletzt den ufw
aus Befehl unten, um den Status der UFW-Firewall zu überprüfen.
sudo ufw status
Unten sehen Sie, dass der NFS-Serverport 2049 zur Firewall hinzugefügt wurde und nur über die Client-IP-Adresse 172.16.1.25 und das Netzwerk 172.16.1.0/24 zugänglich ist.
Mounten des freigegebenen NFS-Verzeichnisses auf dem Client-Rechner
An diesem Punkt haben Sie den Ubuntu NFS-Server vollständig konfiguriert. Aber wie können Client-Rechner auf das freigegebene NFS-Verzeichnis zugreifen? Ausführen von mount
Der Befehl zum Zugriff auf das freigegebene NFS-Verzeichnis reicht aus. Aber zuerst installieren Sie nfs-common
(für die Debian-Linux-Distribution) oder nfs-utils
(für RHEL, CentOS-Distribution) auf den Clientcomputer.
1. Melden Sie sich bei Ihrem Client-Rechner an, öffnen Sie das Terminal und führen Sie den sudo su
aus Befehl, um die Root-Rechte zu erhalten.
sudo su
2. Führen Sie als Nächstes je nach Betriebssystem einen der folgenden Befehle aus, um NFS-Pakete auf dem Clientcomputer zu installieren.
# for Ubuntu/Debian based distribution
sudo apt install nfs-common -y
# for RHEL/CentOS/Fedora Linux distribution
sudo dnf install nfs-utils -y
3. Führen Sie den folgenden Befehl aus, um das Ziel-Mount-Verzeichnis zu erstellen. Das freigegebene NFS-Verzeichnis wird auf dem Client-Rechner /data
gemountet und /test
Verzeichnisse in diesem Beispiel.
mkdir -p /{data,test}
4. Führen Sie jeden mount
aus Befehlen unten, um auf das freigegebene NFS-Verzeichnis zuzugreifen.
Der -t nfs
Option gibt den Typ des Dateisystems als NFS-Server an. Dieser Befehl hängt den /srv/data
ein freigegebenes Verzeichnis auf dem Ubuntu-NFS-Server zum lokalen Clientverzeichnis (/data
). Und die /srv/test
freigegebenes Verzeichnis in das lokale Verzeichnis des Klicks /test
.
# mount shared directory `/srv/data on the nfs server 172.16.1.20
# to the local client directory /data
sudo mount -t nfs 172.16.1.20:/srv/data /data
# mount shared directory `/srv/test on the nfs server 172.16.1.20
# to the local client directory /test
sudo mount -t nfs 172.16.1.20:/srv/test /test
5. Führen Sie df
aus Befehl unten, um die Liste der gemounteten Dateisysteme auf dem Client-Rechner zu überprüfen.
sudo df -h
In der Ausgabe unten sehen Sie, dass das freigegebene NFS-Verzeichnis /srv/data im /data -Verzeichnis auf dem Client-Computer gemountet ist. Gleichzeitig wird das freigegebene Verzeichnis (/srv/test) in das lokale Verzeichnis (/test) auf dem Clientcomputer eingebunden.
6. Führen Sie als Nächstes die folgenden Befehle aus, um zum Ziel-Mount-Verzeichnis (/data
) und erstellen Sie eine Datei mit dem Namen file.txt
.
Da das freigegebene Verzeichnis (
/srv/data
) Lese- und Schreibrechte hat, können Sie eine neue Datei erstellen.
# navigate to /data directory
cd /data
# create a new file with "This file from client machine!" as content
echo "This file from client machine!" > file.txt
7. Führen Sie ls
aus und cat
Befehle unten, um zu überprüfen, ob die Datei im Mount-Verzeichnis /data
verfügbar ist .
# list files on the current directory
ls -lah
# showing the content of the file.txt
cat file.txt
8. Führen Sie abschließend jeden der folgenden Befehle aus, um zum Mount-Verzeichnis zu navigieren (/test)
und erstellen Sie eine Datei namens file.txt
. Mit diesem Befehl können Sie Schreibzugriffsbeschränkungen auf dem Nur-Lese-Dateisystem testen.
# navigate to /test directory
cd /test
# create new file
echo "Test create a file on Read-only filesystem" > file.txt
Wie in der Ausgabe unten erhalten Sie eine Fehlermeldung, weil das freigegebene Verzeichnis (/srv/test) nur schreibgeschützt ist.
NFS Shared Directory permanent mounten
Jetzt haben Sie das freigegebene NFS-Verzeichnis erfolgreich auf dem Client-Computer gemountet, aber es wird nach dem Neustart des Systems verschwunden sein. Wie kann ich das freigegebene NFS-Verzeichnis dauerhaft mounten? Durch Definieren des freigegebenen NFS-Verzeichnisses in /etc/fstab Datei.
1. Bearbeiten Sie die /etc/fstab Konfigurationsdatei mit Ihrem bevorzugten Editor und fügen Sie die folgende Konfiguration hinzu. Ändern Sie die IP-Adresse mit der IP-Adresse des NFS-Servers, dem freigegebenen Verzeichnis und dem Mount-Zielverzeichnis.
# rw/ro - allow read and write or read-only to the target mount.
# hard - enable client machine to always try to connect to the NFS whenever fail.
# noexec - disable binary file execution on the file system.
# rsize - maximum READ requests that client machine can handle.
# wzise - maximum WRITE requests that client machine can handle.
# timeo - timeout for NFS client before retries requests to the NFS server.
# NFS Shared Directory - target - type - options - dump - pass
172.16.1.20:/srv/data /data nfs rw,hard,noexec,rsize=8192,wsize=8192,timeo=14 0 0
172.16.1.20:/srv/test /test nfs ro,hard,noexec,rsize=8192,wsize=8192,timeo=14 0 0
2. Führen Sie als Nächstes mount
aus Befehl unten, um das gesamte Dateisystem auf /etc/fstab
zu mounten Datei und verifizieren Sie den /etc/fstab
Aufbau. Wenn keine Fehlermeldung angezeigt wird, ist die Konfiguration korrekt.
sudo mount -a
3. Führen Sie df
aus Befehl unten, um das gemountete Dateisystem auf dem Client-Rechner zu überprüfen.
sudo df -h
Ähnlich wie in der Ausgabe unten sollten Sie sehen, dass das freigegebene NFS-Verzeichnis automatisch auf Ihrem Client-Rechner gemountet wird.
4. Führen Sie zuletzt den reboot
aus Befehl zum Neustarten des Clientcomputers. Melden Sie sich nach dem Neustart an und führen Sie den df
erneut aus Befehl, wie Sie es in Schritt drei getan haben, um das freigegebene NFS-Verzeichnis zu überprüfen.
sudo df -h
Wie Sie unten sehen, ist das freigegebene NFS-Verzeichnis immer noch dauerhaft auf dem Client-Rechner eingehängt.
Schlussfolgerung
In diesem Lernprogramm haben Sie gelernt, wie Sie einen NFS-Server auf einem Linux-Server einrichten, um ein Verzeichnis sicher freizugeben. Sie haben auch das permanente Mounten des freigegebenen NFS-Verzeichnisses angesprochen, sodass Sie das freigegebene Verzeichnis nicht bei jedem Neustart Ihres Computers manuell mounten müssen.
An diesem Punkt haben Sie einen voll funktionsfähigen NFS-Server. Was kommt als nächstes? Vielleicht erfahren Sie, wie Sie mithilfe der Kerberos-Authentifizierung eine Sicherheitsebene für NFS hinzufügen?