NFS-Client-Zugriff in RHEL konfigurieren

Red Hat Enterprise LinuxRed Hat Enterprise LinuxBeginner
Jetzt üben

💡 Dieser Artikel wurde von AI-Assistenten übersetzt. Um die englische Version anzuzeigen, können Sie hier klicken

Einführung

In diesem Lab lernen Sie die wesentlichen Fähigkeiten zur Konfiguration des NFS-Client-Zugriffs auf einem Red Hat Enterprise Linux (RHEL)-System. Sie beginnen damit, eine Netzwerkfreigabe manuell mit dem Befehl mount einzubinden, um den grundlegenden Prozess zu verstehen. Anschließend konfigurieren Sie eine persistente Einbindung in /etc/fstab, um sicherzustellen, dass die NFS-Freigabe nach einem Systemneustart automatisch verfügbar ist, was ein grundlegendes Verständnis der statischen Netzwerk-Dateisystem-Integration vermittelt.

Aufbauend auf diesen Kernkonzepten werden Sie zu einer dynamischeren und effizienteren Methode übergehen, indem Sie den Automounter einrichten. Dies beinhaltet die Installation und Aktivierung des autofs-Dienstes sowie die Erstellung sowohl indirekter Maps für die On-Demand-Verzeichnis-Einbindung als auch direkter Maps für statische Mount-Points. Sie schließen das Lab ab, indem Sie überprüfen, ob sowohl direkte als auch indirekte Automounts für verschiedene Benutzer korrekt funktionieren, wodurch Ihre Fähigkeit zur Verwaltung robuster NFS-Client-Konfigurationen gefestigt wird.

Manuelles Einbinden einer NFS-Freigabe mit dem Befehl mount

In diesem Schritt lernen Sie, wie Sie manuell auf ein netzwerkfreigegebenes Verzeichnis mit dem Network File System (NFS)-Protokoll zugreifen. NFS ermöglicht es einem Clientsystem, auf Dateien über ein Computernetzwerk zuzugreifen, ähnlich wie beim Zugriff auf lokalen Speicher. Für diese Übung simulieren wir sowohl einen NFS-Server als auch einen Client auf Ihrem lokalen Rechner, um die notwendigen Befehle zu üben.

Ein NFS-Server wurde auf Ihrem System vorkonfiguriert, um das Verzeichnis /srv/nfs/shared_data zu exportieren (freizugeben). Ihre Aufgabe ist es, dieses freigegebene Verzeichnis in einen lokalen Ordner einzubinden, den Zugriff zu überprüfen und es dann auszuhängen.

Schritt 1.1: Verfügbare NFS-Exporte ermitteln

Bevor Sie eine Freigabe einbinden, ist es eine gute Praxis, zu bestätigen, welche Verzeichnisse der NFS-Server exportiert. Sie können den Befehl showmount mit der Option -e (für Exporte) verwenden, gefolgt vom Hostnamen oder der IP-Adresse des Servers. Da sich der Server auf Ihrem lokalen Rechner befindet, können Sie localhost verwenden.

Führen Sie den folgenden Befehl aus, um die Liste der exportierten Verzeichnisse vom lokalen NFS-Server anzuzeigen:

showmount -e localhost

Sie sollten das Verzeichnis sehen, das für die Freigabe konfiguriert wurde.

Export list for localhost:
/srv/nfs/shared_data *

Die Ausgabe zeigt, dass das Verzeichnis /srv/nfs/shared_data an alle (*) exportiert wird.

Schritt 1.2: Einen lokalen Mount-Point erstellen

Um auf das freigegebene NFS-Verzeichnis zuzugreifen, benötigen Sie ein lokales Verzeichnis, das als "Mount-Point" dient. Dies ist im Wesentlichen ein leerer Ordner auf Ihrem Clientsystem, in dem die Inhalte der Remote-Freigabe nach dem Einbinden angezeigt werden. Alle Operationen werden in Ihrem Verzeichnis ~/project durchgeführt.

Erstellen Sie ein Verzeichnis namens nfs_mount in Ihrem Projektordner:

mkdir ~/project/nfs_mount

Sie können überprüfen, ob das Verzeichnis erstellt wurde, indem Sie den Inhalt Ihres Projektordners auflisten:

ls -F ~/project
nfs_mount/

Schritt 1.3: Die NFS-Freigabe einbinden

Nun können Sie den Befehl mount verwenden, um die Remote-NFS-Freigabe an Ihren neu erstellten Mount-Point anzuhängen. Der Befehl benötigt sudo-Rechte, da das Einbinden von Dateisystemen eine Operation auf Systemebene ist.

Die grundlegende Syntax lautet mount -t nfs <server>:<remote_directory> <local_mount_point>.

  • -t nfs: Gibt an, dass der Dateisystemtyp NFS ist.
  • localhost:/srv/nfs/shared_data: Die Quelle, also der Server und der Pfad, den er exportiert.
  • ~/project/nfs_mount: Das Ziel, also Ihr lokaler Mount-Point.

Führen Sie den folgenden Befehl aus, um die Freigabe einzubinden:

sudo mount -t nfs localhost:/srv/nfs/shared_data ~/project/nfs_mount

Dieser Befehl erzeugt keine Ausgabe, wenn er erfolgreich ist.

Schritt 1.4: Die Einbindung überprüfen und mit der Freigabe interagieren

Nachdem Sie den Befehl mount ausgeführt haben, sollten Sie überprüfen, ob die Freigabe korrekt eingebunden wurde. Dies können Sie auf verschiedene Weise tun.

Verwenden Sie zunächst den Befehl mount, der an grep weitergeleitet wird, um nach NFS-Einbindungen zu filtern:

mount | grep nfs
localhost:/srv/nfs/shared_data on /home/labex/project/nfs_mount type nfs4 (rw,relatime,vers=4.2,rsize=...,wsize=...,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,clientaddr=...,local_lock=none,addr=...)

Als Nächstes überprüfen Sie den Inhalt Ihres Mount-Points. Es sollten jetzt die Dateien aus dem Remote-Verzeichnis /srv/nfs/shared_data angezeigt werden.

ls -l ~/project/nfs_mount
total 4
-rw-r--r--. 1 root root 32 Nov 10 14:30 welcome.txt

Sie können jetzt mit diesem Verzeichnis interagieren, als wäre es ein lokaler Ordner. Beachten Sie, dass in dieser Lab-Umgebung die Dateien dem Benutzer root gehören, was auf die NFS-Serverkonfiguration mit no_root_squash zurückzuführen ist. In Produktionsumgebungen sehen Sie möglicherweise nobody als Eigentümer, abhängig von den NFS-Servereinstellungen. Erstellen wir eine neue Datei innerhalb der eingebundenen Freigabe. Da die NFS-Freigabe möglicherweise dem Benutzer root gehört, müssen Sie sudo mit dem Befehl tee verwenden, um Dateien zu schreiben:

echo "My test file" | sudo tee ~/project/nfs_mount/my_file.txt > /dev/null

Überprüfen Sie, ob Ihre neue Datei neben der ursprünglichen Datei existiert:

ls -l ~/project/nfs_mount
total 8
-rw-r--r--. 1 root  root  13 Nov 10 14:35 my_file.txt
-rw-r--r--. 1 root  root  32 Nov 10 14:30 welcome.txt

Schritt 1.5: Die NFS-Freigabe aushängen

Wenn Sie eine Netzwerkfreigabe nicht mehr verwenden, ist es wichtig, sie sauber mit dem Befehl umount auszuhängen. Dadurch wird sichergestellt, dass alle Daten synchronisiert und die Verbindung ordnungsgemäß geschlossen wird. Sie müssen nur den Mount-Point angeben.

sudo umount ~/project/nfs_mount

Um zu bestätigen, dass die Freigabe ausgehängt wurde, listen Sie den Inhalt des Verzeichnisses ~/project/nfs_mount auf. Es sollte jetzt wieder leer sein.

ls -l ~/project/nfs_mount
total 0

Eine persistente NFS-Einbindung in /etc/fstab konfigurieren

Im vorherigen Schritt haben Sie gelernt, wie man eine NFS-Freigabe manuell mit dem Befehl mount einbindet. Solche Einbindungen sind jedoch temporär und überleben keinen Systemneustart. Um eine Einbindung permanent zu machen, müssen Sie einen Eintrag in die Datei /etc/fstab (kurz für "file systems table") hinzufügen. Diese Datei enthält eine Liste von Dateisystemen und Geräten, die beim Systemstart automatisch eingebunden werden.

In diesem Schritt konfigurieren Sie dieselbe NFS-Freigabe so, dass sie persistent eingebunden wird, indem Sie einen Eintrag in /etc/fstab hinzufügen.

Schritt 2.1: Die Umgebung vorbereiten

Stellen Sie zunächst sicher, dass der Mount-Point aus dem vorherigen Schritt, ~/project/nfs_mount, existiert und leer ist. Wenn Sie direkt vom letzten Schritt fortfahren, sollte er bereits vorhanden sein.

Wenn das Verzeichnis nicht existiert, erstellen Sie es jetzt:

mkdir -p ~/project/nfs_mount

Stellen Sie außerdem sicher, dass derzeit nichts in dieses Verzeichnis eingebunden ist. Sie können den Befehl umount ausführen, der einen Fehler meldet, wenn es nicht eingebunden ist, und das ist völlig in Ordnung.

sudo umount ~/project/nfs_mount

Schritt 2.2: Die Datei /etc/fstab bearbeiten

Nun fügen Sie der Datei /etc/fstab eine neue Zeile hinzu, um die persistente NFS-Einbindung zu definieren. Sie müssen sudo verwenden, um diese Systemkonfigurationsdatei zu bearbeiten. Wir verwenden den Editor nano.

Öffnen Sie die Datei mit dem folgenden Befehl:

sudo nano /etc/fstab

Navigieren Sie zum Ende der Datei und fügen Sie die folgende Zeile hinzu. Seien Sie sehr vorsichtig mit der Syntax, da Fehler in dieser Datei zu Problemen beim Systemstart führen können.

localhost:/srv/nfs/shared_data /home/labex/project/nfs_mount nfs defaults,_netdev 0 0

Lassen Sie uns diese Zeile aufschlüsseln:

  • localhost:/srv/nfs/shared_data: Dies ist das Gerät, das eingebunden werden soll. Es gibt den NFS-Server (localhost) und das exportierte Verzeichnis (/srv/nfs/shared_data) an.
  • /home/labex/project/nfs_mount: Dies ist der lokale Mount-Point, auf dem die Freigabe zugänglich sein wird.
  • nfs: Dies gibt den Dateisystemtyp an.
  • defaults,_netdev: Dies sind die Mount-Optionen. defaults enthält eine Standardmenge an Optionen (wie rw für Read-Write). _netdev ist für Netzwerkdateisysteme entscheidend; es weist das System an, zu warten, bis das Netzwerk aktiv ist, bevor versucht wird, diese Freigabe einzubinden.
  • 0: Dies ist das Feld dump, das vom Sicherungsprogramm dump verwendet wird. Ein Wert von 0 deaktiviert es.
  • 0: Dies ist das Feld pass, das vom Dienstprogramm fsck verwendet wird, um die Reihenfolge der Dateisystemprüfungen beim Booten zu bestimmen. Ein Wert von 0 bedeutet, dass das Dateisystem nicht geprüft wird.

Nachdem Sie die Zeile hinzugefügt haben, speichern Sie die Datei und beenden Sie nano durch Drücken von Strg+X, dann Y und dann Enter.

Schritt 2.3: Den /etc/fstab-Eintrag testen

Sie müssen nicht neu starten, um Ihren neuen /etc/fstab-Eintrag zu testen. Der Befehl mount ist intelligent genug, um /etc/fstab zu lesen. Wenn Sie nur den Mount-Point angeben, sucht mount den entsprechenden Eintrag in /etc/fstab und verwendet die dort gefundenen Informationen.

Binden Sie die Freigabe nur mit dem Mount-Point ein:

sudo mount ~/project/nfs_mount

Wenn der Befehl ohne Fehler abgeschlossen wird, ist Ihr /etc/fstab-Eintrag korrekt.

Schritt 2.4: Die Einbindung überprüfen

Überprüfen Sie, ob die Freigabe jetzt eingebunden ist, indem Sie die Ausgabe des Befehls mount überprüfen und den Inhalt des Verzeichnisses auflisten.

mount | grep nfs_mount
localhost:/srv/nfs/shared_data on /home/labex/project/nfs_mount type nfs4 (rw,relatime,vers=4.2,rsize=...,wsize=...,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,clientaddr=...,local_lock=none,addr=...,_netdev)

Überprüfen Sie nun den Inhalt. Sie sollten die Dateien aus der Freigabe sehen.

ls -l ~/project/nfs_mount
total 4
-rw-r--r--. 1 root root 32 Nov 10 14:30 welcome.txt

Diese Einbindung ist jetzt persistent und würde nach einem Neustart automatisch wiederhergestellt werden.

Schritt 2.5: Die Umgebung bereinigen

Um Konflikte mit späteren Übungen zu vermeiden, sollten Sie die Änderungen jetzt rückgängig machen. Zuerst heben Sie die Einbindung der Freigabe auf und entfernen dann die Zeile, die Sie aus /etc/fstab hinzugefügt haben.

Heben Sie die Einbindung des Verzeichnisses auf:

sudo umount ~/project/nfs_mount

Öffnen Sie /etc/fstab erneut, um den Eintrag zu entfernen:

sudo nano /etc/fstab

Verwenden Sie die Pfeiltasten, um zu der Zeile zu navigieren, die Sie hinzugefügt haben (localhost:/srv/nfs/shared_data ...), und drücken Sie Strg+K, um die gesamte Zeile zu löschen. Speichern und beenden Sie dann durch Drücken von Strg+X, Y und Enter.

Dies hinterlässt das System in einem sauberen Zustand für den nächsten Teil des Labs.

Den Automounter einrichten durch Installation und Aktivierung von autofs

In den vorherigen Schritten haben Sie das manuelle und persistente Einbinden erkundet. Während /etc/fstab für permanente Einbindungen großartig ist, hat es einen Nachteil: Es versucht, alles beim Booten einzubinden. Wenn eine Netzwerkfreigabe nicht verfügbar ist, kann dies den Bootvorgang verlangsamen oder sogar anhalten. Der Automounter, der vom Dienst autofs bereitgestellt wird, löst dieses Problem, indem er Netzwerkdateisysteme bei Bedarf einbindet, also nur, wenn zum ersten Mal darauf zugegriffen wird.

Der Dienst autofs verwendet eine Reihe von Konfigurationsdateien, sogenannte "Maps" (Karten), um zu bestimmen, welche Remote-Freigaben wo eingebunden werden sollen. In diesem Schritt bereiten Sie Ihr System vor, den Automounter zu verwenden, indem Sie das erforderliche Paket installieren und seinen Dienst starten.

Schritt 3.1: Das Paket autofs installieren

Die Funktionalität von autofs ist nicht in der Standard-RHEL-Installation enthalten. Sie müssen es mit dem Paketmanager dnf installieren. Dies erfordert sudo-Rechte.

Führen Sie den folgenden Befehl aus, um das Paket autofs zu installieren. Das Flag -y beantwortet automatisch mit "yes" (Ja) die Bestätigungsaufforderung, was für dieses Lab praktisch ist.

sudo dnf install -y autofs

Der Befehl lädt das Paket autofs und alle erforderlichen Abhängigkeiten herunter und installiert sie. Sie sehen eine Ausgabe ähnlich der folgenden:

Last metadata expiration check: ...
Dependencies resolved.
================================================================================
 Package       Architecture    Version                Repository           Size
================================================================================
Installing:
 autofs        x86_64          1:5.1.7-50.el9         ...                  ...
...

Transaction Summary
================================================================================
Install  1 Package

Total download size: ...
Installed size: ...
...
Complete!

Schritt 3.2: Den Dienst autofs starten

Auf einem Standard-RHEL-System würden Sie systemctl verwenden, um Dienste zu starten und zu aktivieren. Dieses Lab wird jedoch in einer containerisierten Umgebung ausgeführt, in der systemctl nicht verfügbar ist. Stattdessen starten wir den autofs-Daemon direkt mit seinem Befehl automount.

Dieser Befehl startet den Automounter-Daemon, der im Hintergrund läuft und Zugriffsversuche auf Verzeichnisse überwacht, die in seinen Maps konfiguriert sind.

Führen Sie den folgenden Befehl aus, um den Dienst zu starten:

sudo automount

Bei Erfolg erzeugt dieser Befehl keine Ausgabe. Er startet lediglich den Daemon-Prozess.

Schritt 3.3: Überprüfen, ob der Dienst ausgeführt wird

Da Sie systemctl status autofs nicht verwenden können, um den Dienst zu überprüfen, können Sie mit dem Befehl ps überprüfen, ob der Prozess automount ausgeführt wird. Der Befehl ps aux listet alle laufenden Prozesse auf, und wir können seine Ausgabe mit | an grep weiterleiten, um nach dem Prozess automount zu filtern.

ps aux | grep automount

Sie sollten mindestens eine Zeile für den Prozess automount selbst sehen. Die zweite Zeile, die grep automount anzeigt, ist nur der von Ihnen ausgeführte grep-Befehl, der ignoriert werden kann.

root      ...  0.0  0.0 ...      ?        Ssl  15:30   0:00 /usr/sbin/automount
labex     ...  0.0  0.0 ...      pts/0    S+   15:31   0:00 grep --color=auto automount

Das Anzeigen des Prozesses /usr/sbin/automount bestätigt, dass der Dienst ausgeführt wird und bereit ist, On-Demand-Einbindungen zu verarbeiten. In den nächsten Schritten konfigurieren Sie die Maps, die autofs sagen, was zu tun ist.

Erstellen einer indirekten Automount-Map für dynamische Verzeichnisse

In diesem Schritt konfigurieren Sie Ihre erste Automount-Regel mithilfe einer indirekten Map (Karte). Eine indirekte Map ist die gebräuchlichste Art der Automount-Konfiguration. Sie funktioniert, indem sie ein einzelnes Basisverzeichnis (wie /home oder /net) mit einer Map-Datei verknüpft. Wenn ein Benutzer versucht, auf ein Unterverzeichnis innerhalb dieses Basisverzeichnisses zuzugreifen, sucht autofs den Namen des Unterverzeichnisses in der Map-Datei und bindet die entsprechende Remote-Freigabe bei Bedarf ein.

Dies ist äußerst nützlich für das Einbinden von Benutzer-Home-Verzeichnissen oder einer Sammlung freigegebener Projektordner, ohne alle gleichzeitig einbinden zu müssen. Wir konfigurieren eine indirekte Map, um Projektverzeichnisse dynamisch einzubinden, die sich unter einem neuen Basisverzeichnis namens /project_shares befinden.

Schritt 4.1: Die NFS-Server-Exporte erstellen

Zuerst bereiten wir die Verzeichnisse auf unserem simulierten NFS-Server vor, die wir freigeben möchten. Wir erstellen zwei Projektverzeichnisse, design und testing, innerhalb von /srv/nfs/.

Erstellen Sie die Verzeichnisse und platzieren Sie in jedem eine Beispieldatei:

sudo mkdir -p /srv/nfs/{design,testing}
sudo sh -c 'echo "Design documents" > /srv/nfs/design/README'
sudo sh -c 'echo "Testing scripts" > /srv/nfs/testing/README'

Als Nächstes müssen wir dem NFS-Server mitteilen, dass er diese Verzeichnisse exportieren soll. Dies tun wir, indem wir Einträge in die Datei /etc/exports hinzufügen.

Öffnen Sie die Datei mit nano:

sudo nano /etc/exports

Fügen Sie die folgenden Zeilen zur Datei hinzu. Diese Zeilen weisen den NFS-Server an, die Verzeichnisse design und testing für jeden Client (*) mit Lese- und Schreibberechtigungen (rw) freizugeben.

/srv/nfs/design *(rw,sync,no_root_squash)
/srv/nfs/testing *(rw,sync,no_root_squash)

Speichern Sie die Datei und beenden Sie sie (Strg+X, Y, Enter).

Wenden Sie abschließend die Änderungen auf den NFS-Server an, indem Sie alle Verzeichnisse erneut exportieren:

sudo exportfs -ra

Sie können die Exporte mit showmount überprüfen:

showmount -e localhost
Export list for localhost:
/srv/nfs/testing *
/srv/nfs/design  *
...

Schritt 4.2: Den Master-Map-Eintrag erstellen

Die autofs-Konfiguration beginnt mit der Master-Map-Datei /etc/auto.master. Es ist bewährte Praxis, diese Datei nicht direkt zu bearbeiten, sondern neue Konfigurationsdateien in das Verzeichnis /etc/auto.master.d/ hinzuzufügen.

Erstellen Sie eine neue Master-Map-Datei für unsere Projektfreigaben:

sudo nano /etc/auto.master.d/shares.autofs

Fügen Sie dieser Datei die folgende einzelne Zeile hinzu:

/project_shares /etc/auto.shares

Diese Zeile weist autofs an: "Für jeden Zugriff unter dem Verzeichnis /project_shares konsultieren Sie die Map-Datei unter /etc/auto.shares für Anweisungen."

Speichern und beenden Sie den Editor.

Schritt 4.3: Die indirekte Map-Datei erstellen

Erstellen Sie nun die indirekte Map-Datei /etc/auto.shares, auf die Sie gerade in der Master-Map verwiesen haben.

sudo nano /etc/auto.shares

Fügen Sie dieser Datei die folgenden Zeilen hinzu:

design  -fstype=nfs,rw,sync   localhost:/srv/nfs/design
testing -fstype=nfs,rw,sync   localhost:/srv/nfs/testing

Lassen Sie uns eine Zeile aufschlüsseln:

  • design: Dies ist der "Schlüssel". Er entspricht dem Unterverzeichnisnamen unter /project_shares. Wenn ein Benutzer auf /project_shares/design zugreift, wird diese Zeile ausgelöst.
  • -fstype=nfs,rw,sync: Dies sind die Mount-Optionen, die den Dateisystemtyp, Lese- und Schreibzugriff sowie synchrone Schreibvorgänge angeben.
  • localhost:/srv/nfs/design: Dies ist der Remote-NFS-Freigabeort, der eingebunden werden soll.

Speichern und beenden Sie den Editor.

Schritt 4.4: autofs neu laden und die Einbindung testen

Damit der Dienst autofs Ihre neuen Map-Dateien erkennt, müssen Sie seine Konfiguration neu laden. Da systemctl nicht verfügbar ist, senden wir das Signal HUP (hangup) an den Prozess automount, wodurch er seine Konfiguration neu einliest.

sudo killall -HUP automount

Testen wir es jetzt. Versuchen Sie zuerst, den Inhalt des Basisverzeichnisses /project_shares aufzulisten. Es erscheint leer, da noch nichts eingebunden wurde.

ls -l /project_shares
total 0

Versuchen Sie als Nächstes, auf eines der Unterverzeichnisse zuzugreifen. Dies ist der Auslöser, der autofs dazu veranlasst, die Einbindung durchzuführen.

ls -l /project_shares/design
total 4
-rw-r--r--. 1 root root 17 Nov 10 16:10 README

Erfolg! Die Freigabe design wurde automatisch eingebunden. Wenn Sie jetzt das Basisverzeichnis erneut auflisten, sehen Sie das Verzeichnis design, da es sich um einen aktiven Mount-Point handelt.

ls -l /project_shares
total 0
dr-xr-xr-x. 2 root root 0 Nov 10 16:12 design

Machen Sie dasselbe für das Verzeichnis testing, um zu bestätigen, dass es auch funktioniert:

ls -l /project_shares/testing
total 4
-rw-r--r--. 1 root root 16 Nov 10 16:10 README

Sie haben erfolgreich eine indirekte Automount-Map konfiguriert und getestet.

Erstellen einer direkten Automount-Map für statische Mount-Points

In diesem Schritt lernen Sie die zweite Art der Automount-Konfiguration kennen: eine direkte Map (Karte). Im Gegensatz zu einer indirekten Map, die mehrere Einbindungen unter einem gemeinsamen Basisverzeichnis gruppiert, definiert eine direkte Map spezifische, einzelne Mount-Points an beliebiger Stelle im Dateisystem. Jeder Eintrag in einer direkten Map entspricht einem einzelnen, absoluten Pfad.

Direkte Maps sind nützlich für das Einbinden einer kleinen Anzahl von Freigaben an festen, bekannten Orten, wie z. B. das Einbinden eines freigegebenen Tools-Verzeichnisses unter /usr/local/tools. Wir konfigurieren eine direkte Map, um ein freigegebenes Verzeichnis common_data nach /mnt/common einzubinden.

Schritt 5.1: Die NFS-Server-Export vorbereiten

Wie zuvor müssen wir zuerst das Verzeichnis auf unserem simulierten NFS-Server einrichten, das wir freigeben möchten. Wir erstellen ein Verzeichnis namens common_data.

Erstellen Sie das Verzeichnis und eine Beispieldatei darin:

sudo mkdir -p /srv/nfs/common_data
sudo sh -c 'echo "Common shared data" > /srv/nfs/common_data/info.txt'

Fügen Sie nun einen Eintrag zu /etc/exports hinzu, um dieses Verzeichnis über NFS verfügbar zu machen.

sudo nano /etc/exports

Fügen Sie die folgende neue Zeile zur Datei hinzu. Dadurch wird das Verzeichnis /srv/nfs/common_data freigegeben.

/srv/nfs/common_data *(rw,sync,no_root_squash)

Speichern Sie die Datei und beenden Sie sie (Strg+X, Y, Enter).

Wenden Sie die Änderungen auf den NFS-Server an, indem Sie alle Verzeichnisse erneut exportieren:

sudo exportfs -ra

Schritt 5.2: Den Master-Map-Eintrag für die direkte Map erstellen

Um eine direkte Map zu verwenden, müssen Sie zuerst in der Master-Map-Konfiguration darauf verweisen. Der spezielle Mount-Point /- wird verwendet, um anzugeben, dass die zugehörige Map-Datei eine direkte Map ist.

Erstellen Sie eine neue Master-Map-Datei für unsere direkte Einbindung:

sudo nano /etc/auto.master.d/direct.autofs

Fügen Sie dieser Datei die folgende einzelne Zeile hinzu:

/- /etc/auto.direct

Diese Zeile weist autofs an: "Konsultieren Sie die Datei /etc/auto.direct für eine Liste direkter Einbindungen. Die Mount-Points sind absolute Pfade, die innerhalb dieser Datei definiert sind."

Speichern und beenden Sie den Editor.

Schritt 5.3: Die direkte Map-Datei erstellen

Erstellen Sie nun die direkte Map-Datei /etc/auto.direct, auf die Sie gerade verwiesen haben.

sudo nano /etc/auto.direct

Fügen Sie dieser Datei die folgende Zeile hinzu. Das Format unterscheidet sich geringfügig von einer indirekten Map.

/mnt/common -fstype=nfs,rw,sync   localhost:/srv/nfs/common_data

Analysieren wir diese Zeile:

  • /mnt/common: Dies ist der "Schlüssel", aber für eine direkte Map ist der Schlüssel der vollständige, absolute Pfad des Mount-Points.
  • -fstype=nfs,rw,sync: Dies sind die Mount-Optionen, wie zuvor.
  • localhost:/srv/nfs/common_data: Dies ist der Remote-NFS-Freigabeort.

Speichern und beenden Sie den Editor.

Schritt 5.4: autofs neu laden und die direkte Einbindung testen

Genau wie bei der indirekten Map müssen Sie die autofs-Konfiguration neu laden, um sie über die neue direkte Map zu informieren.

sudo killall -HUP automount

Testen wir jetzt die direkte Einbindung. Im Gegensatz zu einer indirekten Map existiert der Mount-Point /mnt/common im Dateisystem erst, wenn Sie versuchen, darauf zuzugreifen.

Versuchen Sie, auf das Verzeichnis /mnt/common zuzugreifen. Dies löst aus, dass autofs den Mount-Point erstellt und die Freigabe einbindet.

ls -l /mnt/common
total 4
-rw-r--r--. 1 root root 19 Nov 10 17:00 info.txt

Erfolg! Die direkte Einbindung wurde bei Bedarf erstellt. Sie können dies auch mit dem Befehl mount überprüfen:

mount | grep common
localhost:/srv/nfs/common_data on /mnt/common type nfs4 (rw,relatime,vers=4.2,rsize=...,wsize=...,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,clientaddr=...,local_lock=none,addr=...)

Sie haben jetzt erfolgreich sowohl eine indirekte Map für dynamische Unterverzeichnisse als auch eine direkte Map für einen statischen, absoluten Mount-Point konfiguriert.

Überprüfen von direkten und indirekten Automounts als verschiedene Benutzer

In diesem letzten Schritt überprüfen Sie, wie der Automounter in einer Multi-User-Umgebung funktioniert. Automounting macht eine Freigabe verfügbar, aber die zugrunde liegenden Dateisystemberechtigungen auf dem NFS-Server steuern, wer tatsächlich Dateien lesen oder schreiben kann. Sie erstellen ein paar Testbenutzer, weisen ihnen die Eigentümerschaft der jeweiligen NFS-Freigaben zu und testen dann ihren Zugriff auf sowohl die indirekten als auch die direkten Maps.

Diese Übung demonstriert ein reales Szenario, in dem verschiedene Teams (z. B. Design und Testing) die Eigentümerschaft ihrer jeweiligen freigegebenen Verzeichnisse haben, wobei anderen Benutzern Lesezugriff gewährt wird, Schreibzugriff jedoch auf den Eigentümer beschränkt ist.

Schritt 6.1: Testbenutzer erstellen und Berechtigungen festlegen

Zuerst müssen Sie zwei neue Benutzer erstellen: designer1 und tester1. Sie legen auch ein einfaches Passwort für sie fest, damit Sie zu ihren Konten wechseln können.

Verwenden Sie den Befehl useradd, um die Benutzer zu erstellen. Das Flag -m erstellt ein Home-Verzeichnis für sie.

sudo useradd -m designer1
sudo useradd -m tester1

Als Nächstes legen Sie ein Passwort für jeden Benutzer fest. Der Einfachheit halber verwenden wir in diesem Lab das Passwort labex.io für beide (erfüllt die Komplexitätsanforderungen, einschließlich Länge, gemischter Groß-/Kleinschreibung, Zahlen und Sonderzeichen).

sudo passwd designer1
## Enter new UNIX password: labex.io
## Retype new UNIX password: labex.io
## passwd: password updated successfully

sudo passwd tester1
## Enter new UNIX password: labex.io
## Retype new UNIX password: labex.io
## passwd: password updated successfully

Ändern Sie nun die Eigentümerschaft der freigegebenen Verzeichnisse auf der "Server"-Seite (/srv/nfs/*), um diesen neuen Benutzern Zugriff zu gewähren.

sudo chown -R designer1:designer1 /srv/nfs/design
sudo chown -R tester1:tester1 /srv/nfs/testing

Das Verzeichnis /srv/nfs/common_data verbleibt im Besitz von root, wodurch es für reguläre Benutzer schreibgeschützt ist.

Schritt 6.2: Zugriff als Benutzer designer1 testen

Wechseln Sie mit dem Befehl su (substitute user) zum Benutzerkonto designer1. Das - stellt sicher, dass Sie die vollständige Login-Umgebung des Benutzers erhalten.

su - designer1
## Password: labex.io

Ihre Eingabeaufforderung ändert sich in [designer1@host ~]$.

Testen Sie zuerst den Zugriff auf die Freigabe design über die indirekte Map. Dies sollte erfolgreich sein.

ls -l /project_shares/design
total 4
-rw-r--r--. 1 designer1 designer1 17 Jun 16 16:12 README

Versuchen Sie nun, eine Datei in dieses Verzeichnis zu schreiben. Dies sollte ebenfalls erfolgreich sein.

echo "My design file" > /project_shares/design/design_file.txt
ls -l /project_shares/design
total 8
-rw-r--r--. 1 designer1 designer1 15 Jun 16 16:18 design_file.txt
-rw-r--r--. 1 designer1 designer1 17 Jun 16 16:12 README

Versuchen Sie als Nächstes, auf die Freigabe testing zuzugreifen. Sie können den Inhalt sehen, aber nicht darin schreiben, da er sich im Besitz von tester1 befindet.

ls -l /project_shares/testing
total 4
-rw-r--r--. 1 tester1 tester1 16 Jun 16 16:12 README

Testen Sie abschließend die direkt gemappte Freigabe. designer1 sollte sie lesen, aber nicht darin schreiben können.

cat /mnt/common/info.txt
Common shared data
echo "test" > /mnt/common/new_file.txt
-bash: /mnt/common/new_file.txt: Permission denied

Beenden Sie die Sitzung von designer1, um zum Benutzer labex zurückzukehren.

exit

Schritt 6.3: Zugriff als Benutzer tester1 testen

Führen Sie nun ähnliche Tests als Benutzer tester1 durch.

su - tester1
## Password: labex.io

Greifen Sie auf die Freigabe design zu. Sie können den Inhalt einschließlich der von designer1 erstellten Datei sehen, aber nicht darin schreiben.

ls -l /project_shares/design
total 8
-rw-r--r--. 1 designer1 designer1 15 Jun 16 16:18 design_file.txt
-rw-r--r--. 1 designer1 designer1 17 Jun 16 16:12 README

Greifen Sie nun auf die Freigabe testing zu und schreiben Sie darin. Dies sollte erfolgreich sein, da tester1 dieses Verzeichnis besitzt.

ls -l /project_shares/testing
total 4
-rw-r--r--. 1 tester1 tester1 16 Jun 16 16:12 README
echo "My test script" > /project_shares/testing/test_script.sh
ls -l /project_shares/testing
total 8
-rw-r--r--. 1 tester1 tester1 16 Jun 16 16:12 README
-rw-r--r--. 1 tester1 tester1 15 Jun 16 16:19 test_script.sh

Beenden Sie die Sitzung von tester1.

exit

Schritt 6.4: Die Umgebung bereinigen

Um das Lab abzuschließen und das System in seinen ursprünglichen Zustand zurückzuversetzen, entfernen Sie die von Ihnen erstellten Testbenutzer. Der Befehl userdel -r entfernt den Benutzer und sein Home-Verzeichnis.

sudo userdel -r designer1
sudo userdel -r tester1

Hiermit endet das Lab zur Verwaltung von NFS mit autofs.

Zusammenfassung

In diesem Lab lernen Sie, den NFS-Client-Zugriff auf einem RHEL-System zu konfigurieren. Sie beginnen mit der Durchführung einer manuellen Einbindung, indem Sie zuerst den Befehl showmount -e verwenden, um verfügbare NFS-Exporte von einem Server zu ermitteln, und dann einen lokalen Mount-Point erstellen. Nach dem Aufbau der manuellen Verbindung mit dem Befehl mount fahren Sie damit fort, eine persistente Einbindung zu konfigurieren, indem Sie einen Eintrag in der Datei /etc/fstab erstellen, um sicherzustellen, dass die Freigabe beim Booten automatisch eingebunden wird.

Darüber hinaus behandelt das Lab die Konfiguration der On-Demand-Einbindung mit dem Dienst autofs. Dies beinhaltet die Installation und Aktivierung des Dienstes sowie die Definition, wie Freigaben mit zwei verschiedenen Methoden eingebunden werden: Erstellen einer indirekten Map für das dynamische Einbinden von Verzeichnissen und einer direkten Map für das Einbinden von Freigaben an statischen, vordefinierten Orten. Der Prozess endet mit der Überprüfung, ob sowohl direkte als auch indirekte Automounts für verschiedene Benutzer korrekt funktionieren.