Android

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

How to setup Samba for File Sharing in Linux

How to setup Samba for File Sharing in Linux

Inhaltsverzeichnis:

Anonim

Network File System (NFS) ist ein verteiltes Dateisystemprotokoll, mit dem Sie Remoteverzeichnisse über ein Netzwerk freigeben können. Mit NFS können Sie Remoteverzeichnisse auf Ihrem System bereitstellen und mit den Dateien auf dem Remotecomputer arbeiten, als wären sie lokale Dateien.

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

In diesem Tutorial erfahren Sie, wie Sie einen NFSv4-Server unter Ubuntu 18.04 einrichten. Wir zeigen Ihnen auch, wie Sie ein NFS-Dateisystem auf dem Client mounten.

Voraussetzungen

In diesem Beispiel wird davon ausgegangen, dass auf einem Server Ubuntu 18.04 und auf einem anderen Server eine andere Linux-Distribution ausgeführt wird. Der Server und die Clients sollten über ein privates Netzwerk miteinander kommunizieren können. Wenn Ihr Hosting-Provider keine privaten IP-Adressen anbietet, können Sie die öffentlichen IP-Adressen verwenden und die Server-Firewall so konfigurieren, dass nur Datenverkehr von vertrauenswürdigen Quellen auf Port 2049 .

Die Maschinen in diesem Beispiel haben die folgenden IPs:

NFS Server IP: 192.168.33.10 NFS Clients IPs: From the 192.168.33.0/24 range

Richten Sie den NFS-Server ein

Zunächst installieren und konfigurieren wir den NFS-Server.

NFS-Server installieren

Aktualisieren Sie den Paketindex und installieren Sie das NFS-Serverpaket:

sudo apt update sudo apt install nfs-kernel-server

Nach Abschluss der Installation werden die NFS-Dienste automatisch gestartet.

Standardmäßig ist unter Ubuntu 18.04 NFS Version 2 deaktiviert. Die Versionen 3 und 4 sind aktiviert. Sie können dies überprüfen, indem Sie den folgenden Befehl cat ausführen:

sudo cat /proc/fs/nfsd/versions

-2 +3 +4 +4.1 +4.2

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

Die Konfigurationsoptionen für den NFS-Server werden in den Dateien /etc/default/nfs-kernel-server und /etc/default/nfs-common . Die Standardeinstellungen sind in unserem Fall ausreichend.

Dateisysteme erstellen

Bei der Konfiguration eines NFSv4-Servers empfiehlt es sich, ein globales NFS-Stammverzeichnis zu verwenden und die tatsächlichen Verzeichnisse an den Bereitstellungspunkt für die Freigabe zu binden. In diesem Beispiel wird der /srv/nfs4 als NFS-Root verwendet.

Wir werden zwei Verzeichnisse ( /var/www und /opt/backups ) mit unterschiedlichen Konfigurationseinstellungen freigeben, um besser zu erklären, wie die NFS-Bereitstellungen konfiguriert werden können.

Das /var/www/ gehört dem Benutzer und die Gruppe www-data und /opt/backups gehört root .

Erstellen Sie das Export-Dateisystem mit dem Befehl mkdir :

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

Hängen Sie die aktuellen Verzeichnisse ein:

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

Öffnen Sie die Datei /etc/fstab um die Bindungsbereitstellungen dauerhaft zu machen:

sudo nano /etc/fstab

und füge die folgenden Zeilen hinzu:

/ etc / fstab

/opt/backups /srv/nfs4/backups none bind 0 0 /var/www /srv/nfs4/www none bind 0 0

Exportieren der Dateisysteme

Im nächsten Schritt definieren Sie die Dateisysteme, die vom NFS-Server exportiert werden, die Freigabeoptionen und die Clients, die auf diese Dateisysteme zugreifen dürfen. Öffnen Sie dazu die Datei /etc/exports :

sudo nano /etc/exports Die Datei /etc/exports enthält auch Kommentare, die beschreiben, wie ein Verzeichnis exportiert wird.

In unserem Fall müssen wir die Verzeichnisse www und backups exportieren und den Zugriff nur von Clients im 192.168.33.0/24 zulassen:

/ etc / exports

/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.110(rw, sync, no_subtree_check)

Die erste Zeile enthält fsid=0 wodurch das NFS-Stammverzeichnis /srv/nfs definiert wird. Der Zugriff auf dieses NFS-Volume ist nur für Clients aus dem Subnetz 192.168.33.0/24 zulässig. Die Option crossmnt ist erforderlich, um Verzeichnisse crossmnt , die Unterverzeichnisse eines exportierten Verzeichnisses sind.

In der zweiten Zeile wird gezeigt, wie Sie mehrere Exportregeln für ein Dateisystem festlegen. Es exportiert das /srv/nfs4/backups und ermöglicht nur Lesezugriff auf den gesamten Bereich 192.168.33.0/24 sowie Lese- und Schreibzugriff auf 192.168.33.3 . Die sync weist NFS an, Änderungen vor dem Antworten auf die Festplatte zu schreiben.

Die letzte Zeile sollte selbsterklärend sein. Für weitere Informationen zu allen verfügbaren Optionen geben Sie man exports in Ihr Terminal ein.

Speichern Sie die Datei und exportieren Sie die Freigaben:

sudo exportfs -ra

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

Verwenden Sie zum Anzeigen der aktuell aktiven Exporte und ihres Status Folgendes:

sudo exportfs -v

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

/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.110(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)

Unter Ubuntu ist root_squash standardmäßig aktiviert. Dies ist eine der wichtigsten Optionen für die NFS-Sicherheit. Es verhindert, dass Root-Benutzer, die mit den Clients verbunden sind, Root-Berechtigungen für die bereitgestellten Freigaben haben. Es nogroup Root- UID und GID nobody / nogroup 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 weitere Option ist die Verwendung der NFSv4-ID-Zuordnungsfunktion, mit der Benutzer- und Gruppen-IDs in Namen übersetzt werden und umgekehrt.

Das ist es. Zu diesem Zeitpunkt haben Sie einen NFS-Server auf Ihrem Ubuntu-Server eingerichtet. Sie können jetzt mit dem nächsten Schritt fortfahren, die Clients konfigurieren und eine Verbindung zum NFS-Server herstellen.

Firewall-Konfiguration

Angenommen, Sie verwenden UFW zum Verwalten Ihrer Firewall, um den Zugriff über das Subnetz 192.168.33.0/24 zuzulassen, müssen Sie den folgenden Befehl ausführen:

sudo ufw allow from 192.168.33.0/24 to any port nfs

So überprüfen Sie den Änderungslauf:

sudo ufw status

Die Ausgabe sollte zeigen, dass der Datenverkehr auf Port 2049 zulässig ist:

To Action From -- ------ ---- 2049 ALLOW 192.168.33.0/24 22/tcp ALLOW Anywhere 22/tcp (v6) ALLOW Anywhere (v6)

Richten Sie die NFS-Clients ein

Nachdem der NFS-Server eingerichtet und Freigaben exportiert wurden, konfigurieren Sie im nächsten Schritt die Clients und hängen Sie die Remote-Dateisysteme ein.

Sie können die NFS-Freigabe auch auf MacOS- und Windows-Computern bereitstellen, wir konzentrieren uns jedoch auf Linux-Systeme.

NFS-Client installieren

Auf den Client-Computern müssen nur die Tools installiert werden, die zum Mounten eines Remote-NFS-Dateisystems erforderlich sind.

  • Installieren Sie den NFS-Client unter Debian und Ubuntu

    Der Name des Pakets, das Programme zum Mounten von NFS-Dateisystemen auf Debian-basierten Distributionen enthält, ist nfs-common . So installieren Sie es:

    sudo apt update sudo apt install nfs-common

    Installieren Sie den NFS-Client unter CentOS und Fedora

    Installieren Sie auf Red Hat und seinen Derivaten das Paket nfs-utils :

    sudo yum install nfs-utils

Dateisysteme mounten

Wir arbeiten auf dem Client-Computer mit der IP- /srv/nfs4/www 192.168.33.110 die Lese- und Schreibzugriff auf das Dateisystem /srv/nfs4/www und nur Lesezugriff auf das /srv/nfs4/backups hat.

Erstellen Sie zwei neue Verzeichnisse für die Einhängepunkte. Sie können diese Verzeichnisse an einem beliebigen Ort erstellen.

sudo mkdir -p /backups sudo mkdir -p /srv/www

Hängen Sie die exportierten Dateisysteme mit dem Befehl mount :

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

Wobei 192.168.33.10 die IP des NFS-Servers ist. Sie können auch den Hostnamen anstelle der IP-Adresse verwenden, dieser muss jedoch vom Client-Computer aufgelöst werden können. Dies geschieht normalerweise, indem der Hostname der IP in der Datei /etc/hosts wird.

Wenn Sie ein NFSv4-Dateisystem bereitstellen, müssen Sie das NFS-Stammverzeichnis /srv/nfs4/backups Sie daher anstelle von /srv/nfs4/backups .

Stellen Sie mit dem Befehl mount oder df sicher, dass die fernen Dateisysteme erfolgreich gemountet wurden:

df -h

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

Filesystem Size Used Avail Use% Mounted on /dev/mapper/VolGroup00-LogVol00 38G 1.7G 36G 5% / devtmpfs 236M 0 236M 0% /dev tmpfs 244M 0 244M 0% /dev/shm tmpfs 244M 4.5M 240M 2% /run tmpfs 244M 0 244M 0% /sys/fs/cgroup /dev/sda2 1014M 87M 928M 9% /boot tmpfs 49M 0 49M 0% /run/user/1000 192.168.33.10:/backups 9.7G 1.2G 8.5G 13% /backups 192.168.33.10:/www 9.7G 1.2G 8.5G 13% /srv/www

Öffnen Sie die Datei /etc/fstab um die Bereitstellungen beim Neustart dauerhaft zu machen:

sudo nano /etc/fstab

und füge die folgenden Zeilen hinzu:

/ 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 defaults, timeo=900, retrans=5, _netdev 0 0

Um weitere Informationen zu den verfügbaren Optionen beim Mounten eines NFS-Dateisystems zu erhalten, geben Sie man nfs in Ihr Terminal ein.

Eine andere Option zum Mounten der Remote-Dateisysteme besteht darin, entweder das autofs Tool zu verwenden oder eine systemd-Einheit zu erstellen.

Testen des NFS-Zugriffs

Testen Sie den Zugriff auf die Freigaben, indem Sie für jede Freigabe eine neue Datei erstellen.

Versuchen Sie zunächst, mit dem Befehl touch eine Testdatei im Verzeichnis /backups zu erstellen:

sudo touch /backups/test.txt

Das Dateisystem /backup wird schreibgeschützt exportiert. Wie erwartet wird Permission denied Fehlermeldung " Permission denied angezeigt:

touch: cannot touch '/backups/test': Permission denied

Versuchen Sie als Nächstes, mit dem Befehl sudo eine Testdatei im /srv/www als Root zu erstellen:

sudo touch /srv/www/test.txt

Erneut wird Permission denied Meldung " Permission denied angezeigt.

touch: cannot touch '/srv/www': Permission denied

Angenommen, Sie haben eine www-data auf dem Client-Computer mit derselben UID und GID wie auf dem Remote-Server (was der Fall sein sollte, wenn Sie beispielsweise nginx auf beiden Computern installiert haben), können Sie testen, um eine Datei als Benutzer zu erstellen www-data mit:

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

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

So überprüfen Sie, ob die Dateien im Verzeichnis /srv/www :

ls -la /srv/www

Die Ausgabe sollte die neu erstellte Datei zeigen:

drwxr-xr-x 3 www-data www-data 4096 Jun 23 22:18. drwxr-xr-x 3 root root 4096 Jun 23 22:29.. -rw-r--r-- 1 www-data www-data 0 Jun 23 21:58 index.html -rw-r--r-- 1 www-data www-data 0 Jun 23 22:18 test.txt

Deinstallation des NFS-Dateisystems

sudo umount /backups

Wenn der /etc/fstab Datei /etc/fstab definiert ist, müssen Sie die Zeile entfernen oder auskommentieren, indem Sie am Zeilenanfang ein # einfügen.

Fazit

In diesem Lernprogramm haben wir Ihnen gezeigt, wie Sie einen NFS-Server einrichten und die Remote-Dateisysteme auf den Client-Computern bereitstellen. Wenn Sie NFS in der Produktion implementieren und sensible Daten gemeinsam nutzen, empfiehlt es sich, die Kerberos-Authentifizierung zu aktivieren.

Alternativ zu NFS können Sie mithilfe von SSHFS Remoteverzeichnisse über eine SSH-Verbindung bereitstellen. SSHFS ist standardmäßig verschlüsselt und viel einfacher zu konfigurieren und zu verwenden.

Fühlen Sie sich frei, einen Kommentar zu hinterlassen, wenn Sie Fragen haben.

Ubuntu NFS-Mount-Terminal