Einführung
In diesem Lab lernen Sie die grundlegenden Fähigkeiten zum Konfigurieren des NFS-Clientzugriffs auf einem Red Hat Enterprise Linux (RHEL)-System. Zuerst binden Sie eine Netzwerkfreigabe manuell mit dem Befehl mount ein, um den grundlegenden Ablauf zu verstehen. Anschließend konfigurieren Sie eine persistente Einbindung in /etc/fstab, damit die NFS-Freigabe nach einem Neustart automatisch verfügbar ist. So erhalten Sie ein grundlegendes Verständnis für die statische Integration von Netzwerkdateisystemen.
Aufbauend auf diesen Grundlagen richten Sie eine dynamischere und effizientere Methode ein: den Automounter. Dazu installieren und aktivieren Sie den Dienst autofs und erstellen anschließend sowohl indirekte Maps für das Einbinden von Verzeichnissen bei Bedarf als auch direkte Maps für statische Einhängepunkte. Zum Abschluss überprüfen Sie, ob beide Automount-Varianten für verschiedene Benutzer korrekt funktionieren. Damit festigen Sie Ihre Fähigkeit, robuste NFS-Clientkonfigurationen zu verwalten.
Eine NFS-Freigabe mit dem Befehl mount manuell einbinden
In diesem Schritt lernen Sie, wie Sie mit dem Network File System (NFS)-Protokoll manuell auf ein über das Netzwerk freigegebenes Verzeichnis zugreifen. NFS ermöglicht es einem Client, über ein Computernetzwerk auf Dateien zuzugreifen, ähnlich wie auf lokalen Speicher. Für diese Übung simulieren wir auf Ihrem lokalen Rechner sowohl einen NFS-Server als auch einen Client, damit Sie die erforderlichen Befehle ausprobieren können.
Auf Ihrem System ist ein NFS-Server vorkonfiguriert, der das Verzeichnis /srv/nfs/shared_data exportiert, also freigibt. Ihre Aufgabe besteht darin, dieses freigegebene Verzeichnis in einen lokalen Ordner einzubinden, den Zugriff zu überprüfen und es anschließend wieder auszuhängen.
Step 1.1: Einen lokalen Einhängepunkt erstellen
Für den Zugriff auf das freigegebene NFS-Verzeichnis benötigen Sie ein lokales Verzeichnis als „Einhängepunkt“. Dabei handelt es sich im Wesentlichen um einen leeren Ordner auf Ihrem Client-System. Nach der Einbindung werden dort die Inhalte der entfernten Freigabe angezeigt. Alle Vorgänge führen Sie in Ihrem Verzeichnis ~/project aus.
Erstellen Sie im Projektordner ein Verzeichnis mit dem Namen nfs_mount:
mkdir ~/project/nfs_mount
Überprüfen Sie, ob das Verzeichnis erstellt wurde, indem Sie den Inhalt Ihres Projektordners auflisten:
ls -F ~/project
nfs_mount/
Step 1.2: Die NFS-Freigabe einbinden
Nun können Sie den Befehl mount verwenden, um die entfernte NFS-Freigabe in den neu erstellten Einhängepunkt einzubinden. Dafür benötigen Sie sudo-Berechtigungen, da das Einbinden von Dateisystemen ein Vorgang auf Systemebene ist.
Die grundlegende Syntax lautet mount -t nfs -o vers=3,nolock <server>:<remote_directory> <local_mount_point>.
-t nfs -o vers=3,nolock: Gibt an, dass der Dateisystemtyp NFS ist, erzwingt NFSv3 und verwendet lokale Dateisperren, da die containerisierte Lab-Umgebung keinen separaten NFS-Sperrdienst ausführt.localhost:/srv/nfs/shared_data: Die Quelle. Sie bezeichnet den Server und den von ihm exportierten Pfad.~/project/nfs_mount: Das Ziel. Dies ist Ihr lokaler Einhängepunkt.
Führen Sie den folgenden Befehl aus, um die Freigabe einzubinden:
sudo mount -t nfs -o vers=3,nolock localhost:/srv/nfs/shared_data ~/project/nfs_mount
Bei erfolgreicher Ausführung gibt dieser Befehl keine Ausgabe zurück.
Step 1.3: Die Einbindung überprüfen und mit der Freigabe arbeiten
Überprüfen Sie nach dem Ausführen des Befehls mount, ob die Freigabe korrekt eingebunden wurde. Dafür gibt es mehrere Möglichkeiten.
Verwenden Sie zunächst den Befehl mount zusammen mit grep, um nach NFS-Einbindungen zu filtern:
mount | grep nfs
localhost:/srv/nfs/shared_data on /home/labex/project/nfs_mount type nfs (rw,relatime,vers=3,rsize=...,wsize=...,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,local_lock=none,addr=...)
Überprüfen Sie anschließend den Inhalt Ihres Einhängepunkts. Dort sollten nun die Dateien aus dem entfernten 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 nun wie mit einem lokalen Ordner mit diesem Verzeichnis arbeiten. Beachten Sie, dass die Dateien in dieser Lab-Umgebung aufgrund der NFS-Serverkonfiguration mit no_root_squash dem Benutzer root gehören. In Produktionsumgebungen kann je nach den Einstellungen des NFS-Servers auch nobody als Eigentümer angezeigt werden. Erstellen wir eine neue Datei in der eingebundenen Freigabe. Da die NFS-Freigabe möglicherweise root gehört, müssen Sie zum Schreiben von Dateien sudo zusammen mit dem Befehl tee verwenden:
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 vorhanden ist:
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
Step 1.4: Die NFS-Freigabe aushängen
Wenn Sie eine Netzwerkfreigabe nicht mehr verwenden, sollten Sie sie mit dem Befehl umount sauber aushängen. Dadurch werden alle Daten synchronisiert und die Verbindung ordnungsgemäß geschlossen. Sie müssen lediglich den Einhängepunkt angeben.
sudo umount ~/project/nfs_mount
Überprüfen Sie, ob die Freigabe ausgehängt wurde, indem Sie den Inhalt des Verzeichnisses ~/project/nfs_mount auflisten. Es sollte nun wieder leer sein.
ls -l ~/project/nfs_mount
total 0
Eine persistente NFS-Einbindung in /etc/fstab konfigurieren
In diesem Schritt machen Sie die NFS-Einbindung persistent, nachdem Sie sie manuell eingebunden haben. Manuelle Einbindungen sind temporär und bleiben nach einem Neustart nicht bestehen. Damit eine Einbindung dauerhaft eingerichtet wird, müssen Sie einen Eintrag in der Datei /etc/fstab hinzufügen. Der Name steht für „file systems table“. Diese Datei enthält eine Liste von Dateisystemen und Geräten, die beim Systemstart automatisch eingebunden werden.
Konfigurieren Sie in diesem Schritt dieselbe NFS-Freigabe als persistente Einbindung, indem Sie einen Eintrag in /etc/fstab hinzufügen.
Step 2.1: Die Umgebung vorbereiten
Stellen Sie zunächst sicher, dass der Einhängepunkt aus dem vorherigen Schritt, ~/project/nfs_mount, vorhanden und leer ist. Wenn Sie direkt mit dem letzten Schritt fortfahren, sollte er bereits vorhanden sein.
Falls 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. Er meldet einen Fehler, wenn das Verzeichnis nicht eingebunden ist. Das ist in diesem Fall unproblematisch.
sudo umount ~/project/nfs_mount
Step 2.2: Die Datei /etc/fstab bearbeiten
Fügen Sie nun der Datei /etc/fstab eine neue Zeile hinzu, um die persistente NFS-Einbindung zu definieren. Zum Bearbeiten dieser Systemkonfigurationsdatei müssen Sie sudo verwenden. 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. Achten Sie sehr genau auf die 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,vers=3,nolock 0 0
Die einzelnen Bestandteile der Zeile haben folgende Bedeutung:
localhost:/srv/nfs/shared_data: Das einzubindende Gerät. Es gibt den NFS-Server (localhost) und das exportierte Verzeichnis (/srv/nfs/shared_data) an./home/labex/project/nfs_mount: Der lokale Einhängepunkt, unter dem die Freigabe verfügbar sein wird.nfs: Der Dateisystemtyp.defaults,_netdev,vers=3,nolock: Die Einhängeoptionen.defaultsenthält einen Standardsatz von Optionen, beispielsweiserwfür Lese- und Schreibzugriff._netdevist für Netzwerkdateisysteme entscheidend: Es weist das System an, mit dem Einbinden dieser Freigabe zu warten, bis das Netzwerk aktiv ist.vers=3,nolockverwendet in dieser containerisierten Umgebung das funktionierende NFS-Protokoll, ohne einen separaten Sperrdienst zu benötigen.0: Dasdump-Feld, das vom Sicherungsprogrammdumpverwendet wird. Der Wert0deaktiviert diese Funktion.0: Daspass-Feld, das vom Dienstprogrammfsckverwendet wird, um die Reihenfolge der Dateisystemprüfungen beim Systemstart festzulegen. Der Wert0bedeutet, dass das Dateisystem nicht geprüft wird.
Speichern Sie die Datei und beenden Sie nano, indem Sie Ctrl+X, anschließend Y und dann Enter drücken.
Step 2.3: Den Eintrag in /etc/fstab testen
Sie müssen nicht neu starten, um den neuen Eintrag in /etc/fstab zu testen. Der Befehl mount kann /etc/fstab automatisch auslesen. Wenn Sie nur den Einhängepunkt angeben, sucht mount den zugehörigen Eintrag in /etc/fstab und verwendet die dort hinterlegten Informationen.
Binden Sie die Freigabe nur mit dem Einhängepunkt ein:
sudo mount ~/project/nfs_mount
Wenn der Befehl ohne Fehler beendet wird, ist Ihr Eintrag in /etc/fstab korrekt.
Step 2.4: Die Einbindung überprüfen
Überprüfen Sie, ob die Freigabe nun eingebunden ist. Sehen Sie sich dazu die Ausgabe des Befehls mount an und listen Sie den Inhalt des Verzeichnisses auf.
mount | grep nfs_mount
localhost:/srv/nfs/shared_data on /home/labex/project/nfs_mount type nfs (rw,relatime,vers=3,rsize=...,wsize=...,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,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 nun persistent und würde nach einem Neustart automatisch wiederhergestellt.
Step 2.5: Die Umgebung bereinigen
Machen Sie die Änderungen nun rückgängig, damit es in den späteren Übungen nicht zu Konflikten kommt. Hängen Sie zuerst die Freigabe aus und entfernen Sie anschließend die hinzugefügte Zeile aus /etc/fstab.
Hängen Sie das Verzeichnis aus:
sudo umount ~/project/nfs_mount
Öffnen Sie /etc/fstab erneut, um den Eintrag zu entfernen:
sudo nano /etc/fstab
Navigieren Sie mit den Pfeiltasten zu der hinzugefügten Zeile (localhost:/srv/nfs/shared_data ... vers=3,nolock ...) und drücken Sie Ctrl+K, um die gesamte Zeile zu löschen. Speichern und beenden Sie den Editor anschließend mit Ctrl+X, Y und Enter.
Damit befindet sich das System für den nächsten Teil des Labs wieder in einem sauberen Zustand.
Den Automounter durch Installieren und Aktivieren von autofs einrichten
In diesem Schritt wechseln Sie von manuellen und persistenten Einbindungen zu automatischen Einbindungen. /etc/fstab eignet sich gut für dauerhafte Einbindungen, hat jedoch einen Nachteil: Beim Systemstart wird versucht, alles einzubinden. Wenn eine Netzwerkfreigabe nicht verfügbar ist, kann dies den Startvorgang verlangsamen oder sogar anhalten. Der Automounter des Dienstes autofs löst dieses Problem, indem er Netzwerkdateisysteme bei Bedarf einbindet, also erst dann, wenn erstmals auf sie zugegriffen wird.
Der Dienst autofs verwendet mehrere Konfigurationsdateien, sogenannte „Maps“, um festzulegen, welche entfernten Freigaben wo eingebunden werden. In diesem Schritt bereiten Sie Ihr System auf die Verwendung des Automounters vor, indem Sie das erforderliche Paket installieren und den Dienst starten.
Step 3.1: Das Paket autofs installieren
Die Funktionalität von autofs ist in einer standardmäßigen RHEL-Installation nicht enthalten. Sie müssen sie mit dem Paketmanager dnf installieren. Dafür benötigen Sie sudo-Berechtigungen.
Installieren Sie das Paket autofs mit dem folgenden Befehl. Das Flag -y beantwortet die Bestätigungsabfrage automatisch mit „yes“, was in diesem 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!
Step 3.2: Den Dienst autofs starten
Auf einem standardmäßigen RHEL-System würden Sie systemctl verwenden, um Dienste zu starten und zu aktivieren. Dieses Lab läuft jedoch in einer containerisierten Umgebung, in der systemctl nicht verfügbar ist. Stattdessen starten wir den autofs-Daemon direkt mit dem Befehl automount.
Dieser Befehl startet den Automounter-Daemon. Er läuft im Hintergrund und überwacht Zugriffsversuche auf Verzeichnisse, die in seinen Maps konfiguriert sind.
Führen Sie den folgenden Befehl aus, um den Dienst zu starten:
sudo automount
Bei erfolgreicher Ausführung gibt dieser Befehl keine Ausgabe zurück. Er startet lediglich den Daemon-Prozess.
Step 3.3: Überprüfen, ob der Dienst läuft
Da Sie den Dienst nicht mit systemctl status autofs überprüfen können, verwenden Sie den Befehl ps, um zu kontrollieren, ob der Prozess automount läuft. Der Befehl ps aux listet alle laufenden Prozesse auf. Mit einer Pipe | leiten wir die Ausgabe an grep weiter, 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 mit grep automount gehört lediglich zu dem von Ihnen ausgeführten grep-Befehl und kann ignoriert werden.
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
Der Prozess /usr/sbin/automount bestätigt, dass der Dienst läuft und für Einbindungen bei Bedarf bereit ist. In den nächsten Schritten konfigurieren Sie die Maps, die autofs mitteilen, was zu tun ist.
Eine indirekte Automount-Map für dynamische Verzeichnisse erstellen
In diesem Schritt konfigurieren Sie Ihre erste Automount-Regel mithilfe einer indirekten Map. Eine indirekte Map ist die häufigste Form einer Automount-Konfiguration. Sie ordnet ein einzelnes Basisverzeichnis, beispielsweise /home oder /net, einer Map-Datei zu. Wenn ein Benutzer auf ein Unterverzeichnis innerhalb dieses Basisverzeichnisses zugreift, sucht autofs den Namen des Unterverzeichnisses in der Map-Datei und bindet die zugehörige entfernte Freigabe bei Bedarf ein.
Das ist besonders nützlich, wenn Benutzer-Homeverzeichnisse oder mehrere gemeinsam genutzte Projektordner eingebunden werden sollen, ohne alle gleichzeitig einzubinden. Wir konfigurieren eine indirekte Map, die Projektverzeichnisse unter einem neuen Basisverzeichnis namens /project_shares dynamisch einbindet.
Step 4.1: Die Exporte des NFS-Servers erstellen
Bereiten Sie zunächst die Verzeichnisse auf unserem simulierten NFS-Server vor, die freigegeben werden sollen. Erstellen Sie innerhalb von /srv/nfs/ die beiden Projektverzeichnisse design und testing.
Erstellen Sie die Verzeichnisse und legen Sie in jedem eine Beispieldatei an:
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'
Nun müssen Sie dem NFS-Server mitteilen, dass er diese Verzeichnisse exportieren soll. Dazu fügen Sie Einträge in die Datei /etc/exports ein.
Öffnen Sie die Datei mit nano:
sudo nano /etc/exports
Fügen Sie die folgenden Zeilen in die Datei ein. Sie 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 und beenden Sie den Editor (Ctrl+X, Y, Enter).
Wenden Sie die Änderungen schließlich auf dem NFS-Server an, indem Sie alle Verzeichnisse erneut exportieren:
sudo exportfs -ra
Step 4.2: Den Eintrag in der Master-Map erstellen
Die Konfiguration von autofs beginnt mit der Master-Map-Datei /etc/auto.master. Es empfiehlt sich, diese Datei nicht direkt zu bearbeiten, sondern neue Konfigurationsdateien im Verzeichnis /etc/auto.master.d/ anzulegen.
Erstellen Sie eine neue Master-Map-Datei für unsere Projektfreigaben:
sudo nano /etc/auto.master.d/shares.autofs
Fügen Sie die folgende einzelne Zeile in diese Datei ein:
/project_shares /etc/auto.shares
Diese Zeile weist autofs an: „Für jeden Zugriff unterhalb des Verzeichnisses /project_shares wird die Map-Datei /etc/auto.shares nach den entsprechenden Anweisungen durchsucht.“
Speichern und beenden Sie den Editor.
Step 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 die folgenden Zeilen in diese Datei ein:
design -fstype=nfs,rw,sync,vers=3,nolock localhost:/srv/nfs/design
testing -fstype=nfs,rw,sync,vers=3,nolock localhost:/srv/nfs/testing
Die einzelnen Bestandteile einer Zeile haben folgende Bedeutung:
design: Der „Schlüssel“. Er entspricht dem Namen des Unterverzeichnisses unter/project_shares. Wenn ein Benutzer auf/project_shares/designzugreift, wird diese Zeile ausgelöst.-fstype=nfs,rw,sync,vers=3,nolock: Die Einhängeoptionen. Sie geben den Dateisystemtyp, Lese- und Schreibzugriff, synchrone Schreibvorgänge, die NFS-Version und die in dieser Lab-Umgebung verwendete lokale Sperrung an.localhost:/srv/nfs/design: Der Speicherort der entfernten NFS-Freigabe, die eingebunden werden soll.
Speichern und beenden Sie den Editor.
Step 4.4: autofs neu laden und die Einbindung testen
Damit der Dienst autofs die neuen Map-Dateien erkennt, müssen Sie seine Konfiguration neu laden. Da systemctl nicht verfügbar ist, senden wir dem Prozess automount das Signal HUP (Hangup). Dadurch liest der Prozess seine Konfiguration erneut ein.
sudo killall -HUP automount
Testen Sie die Konfiguration. Listen Sie zunächst den Inhalt des Basisverzeichnisses /project_shares auf. Es wird leer angezeigt, da noch nichts eingebunden wurde.
ls -l /project_shares
total 0
Greifen Sie als Nächstes auf eines der Unterverzeichnisse zu. Dieser Zugriff löst die Einbindung durch autofs aus.
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 nun das Basisverzeichnis erneut auflisten, sehen Sie das Verzeichnis design, da es jetzt als aktiver Einhängepunkt verwendet wird.
ls -l /project_shares
total 0
dr-xr-xr-x. 2 root root 0 Nov 10 16:12 design
Führen Sie denselben Test für das Verzeichnis testing durch, um auch dessen Funktion zu bestätigen:
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.
Eine direkte Automount-Map für statische Einhängepunkte erstellen
In diesem Schritt lernen Sie die zweite Form der Automount-Konfiguration kennen: eine direkte Map. Im Gegensatz zu einer indirekten Map, die mehrere Einbindungen unter einem gemeinsamen Basisverzeichnis gruppiert, definiert eine direkte Map bestimmte einzelne Einhängepunkte an beliebigen Stellen im Dateisystem. Jeder Eintrag in einer direkten Map entspricht einem einzelnen absoluten Pfad.
Direkte Maps eignen sich, wenn eine kleine Anzahl von Freigaben an festen, bekannten Orten eingebunden werden soll, beispielsweise ein gemeinsam genutztes Werkzeugverzeichnis unter /usr/local/tools. Wir konfigurieren eine direkte Map, um das gemeinsame Verzeichnis common_data unter /mnt/common einzubinden.
Step 5.1: Den Export des NFS-Servers vorbereiten
Wie zuvor müssen Sie zunächst das Verzeichnis auf unserem simulierten NFS-Server einrichten, das freigegeben werden soll. Erstellen Sie ein Verzeichnis mit dem Namen common_data.
Erstellen Sie das Verzeichnis und darin eine Beispieldatei:
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 in /etc/exports ein, damit dieses Verzeichnis über NFS verfügbar ist.
sudo nano /etc/exports
Fügen Sie die folgende neue Zeile in die Datei ein. Dadurch wird das Verzeichnis /srv/nfs/common_data freigegeben.
/srv/nfs/common_data *(rw,sync,no_root_squash)
Speichern und beenden Sie den Editor (Ctrl+X, Y, Enter).
Wenden Sie die Änderungen auf dem NFS-Server an, indem Sie alle Verzeichnisse erneut exportieren:
sudo exportfs -ra
Step 5.2: Den Master-Map-Eintrag für die direkte Map erstellen
Um eine direkte Map zu verwenden, müssen Sie zunächst in der Master-Map-Konfiguration auf sie verweisen. Der spezielle Einhängepunkt /- gibt an, 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 die folgende einzelne Zeile in diese Datei ein:
/- /etc/auto.direct
Diese Zeile weist autofs an: „Durchsuche die Datei /etc/auto.direct nach einer Liste direkter Einbindungen. Die Einhängepunkte sind absolute Pfade, die in dieser Datei definiert werden.“
Speichern und beenden Sie den Editor.
Step 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 die folgende Zeile in diese Datei ein. Das Format unterscheidet sich geringfügig von einer indirekten Map.
/mnt/common -fstype=nfs,rw,sync,vers=3,nolock localhost:/srv/nfs/common_data
Die einzelnen Bestandteile dieser Zeile haben folgende Bedeutung:
/mnt/common: Der „Schlüssel“. Bei einer direkten Map ist der Schlüssel der vollständige absolute Pfad des Einhängepunkts.-fstype=nfs,rw,sync,vers=3,nolock: Die Einhängeoptionen wie zuvor, einschließlich der NFS-Version und der in dieser Lab-Umgebung verwendeten lokalen Sperrung.localhost:/srv/nfs/common_data: Der Speicherort der entfernten NFS-Freigabe.
Speichern und beenden Sie den Editor.
Step 5.4: autofs neu laden und die direkte Einbindung testen
Wie bei der indirekten Map müssen Sie die autofs-Konfiguration neu laden, damit die neue direkte Map erkannt wird.
sudo killall -HUP automount
Testen Sie nun die direkte Einbindung. Im Gegensatz zu einer indirekten Map existiert der Einhängepunkt /mnt/common im Dateisystem erst, wenn Sie versuchen, darauf zuzugreifen.
Greifen Sie auf das Verzeichnis /mnt/common zu. Dadurch veranlassen Sie autofs, den Einhängepunkt zu erstellen und die Freigabe einzubinden.
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. In dieser Lab-Umgebung ist die erfolgreiche Ausgabe von ls -l /mnt/common die zuverlässigste Bestätigung, da die Anzeige der Einbindungen variieren kann, wenn sich NFS-Server und -Client auf demselben Rechner befinden.
Sie haben nun sowohl eine indirekte Map für dynamische Unterverzeichnisse als auch eine direkte Map für einen statischen absoluten Einhängepunkt erfolgreich konfiguriert.
Direkte und indirekte Automounts als verschiedene Benutzer überprüfen
In diesem Schritt überprüfen Sie, wie der Automounter in einer Umgebung mit mehreren Benutzern funktioniert. Automounting macht eine Freigabe verfügbar. Welche Benutzer die Dateien tatsächlich lesen oder schreiben können, wird jedoch durch die zugrunde liegenden Dateisystemberechtigungen auf dem NFS-Server bestimmt. Sie erstellen zwei Testbenutzer, übertragen ihnen jeweils den Besitz der entsprechenden NFS-Freigaben und testen anschließend ihren Zugriff auf die indirekten und direkten Maps.
Diese Übung zeigt ein praxisnahes Szenario: Verschiedene Teams, beispielsweise das Design- und das Testing-Team, besitzen jeweils ihre eigenen freigegebenen Verzeichnisse. Andere Benutzer dürfen die Inhalte lesen, Schreibzugriff ist jedoch auf den Eigentümer beschränkt.
Step 6.1: Testbenutzer erstellen und Berechtigungen festlegen
Erstellen Sie zunächst die beiden neuen Benutzer designer1 und tester1. Legen Sie außerdem für beide ein einfaches Passwort fest, damit Sie zu ihren Konten wechseln können.
Erstellen Sie die Benutzer mit dem Befehl useradd. Das Flag -m erstellt für jeden Benutzer ein Homeverzeichnis.
sudo useradd -m designer1
sudo useradd -m tester1
Legen Sie anschließend für jeden Benutzer ein Passwort fest. Der Einfachheit halber verwenden wir in diesem Lab für beide Benutzer das Passwort labex.io. Es erfüllt die Anforderungen an Länge, Groß- und Kleinbuchstaben, 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 auf der Seite des „Servers“ den Eigentümer der freigegebenen Verzeichnisse (/srv/nfs/*), damit die neuen Benutzer darauf zugreifen können.
sudo chown -R designer1:designer1 /srv/nfs/design
sudo chown -R tester1:tester1 /srv/nfs/testing
Das Verzeichnis /srv/nfs/common_data bleibt im Besitz von root und ist damit für normale Benutzer schreibgeschützt.
Step 6.2: Zugriff als Benutzer designer1 testen
Wechseln Sie mit dem Befehl su (substitute user) zum Benutzerkonto designer1. Das Argument - stellt die vollständige Login-Umgebung des Benutzers bereit.
su - designer1
## Password: labex.io
Ihre Eingabeaufforderung ändert sich zu [designer1@host ~]$.
Testen Sie zunächst den Zugriff auf die Freigabe design über die indirekte Map. Dieser Zugriff 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. Auch dies sollte 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 anschließend, auf die Freigabe testing zuzugreifen. Sie können den Inhalt anzeigen, dort aber nicht schreiben, da das Verzeichnis tester1 gehört.
ls -l /project_shares/testing
total 4
-rw-r--r--. 1 tester1 tester1 16 Jun 16 16:12 README
Testen Sie zuletzt die direkt eingebundene Freigabe. designer1 sollte sie lesen, aber nicht beschreiben 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
Step 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 anzeigen, aber nicht in das Verzeichnis 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 eine Datei hinein. Dies sollte erfolgreich sein, da tester1 Eigentümer dieses Verzeichnisses ist.
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
Step 6.4: Die Umgebung bereinigen
Entfernen Sie zum Abschluss des Labs die erstellten Testbenutzer, um das System in seinen ursprünglichen Zustand zurückzuversetzen. Der Befehl userdel -r entfernt den Benutzer und dessen Homeverzeichnis.
sudo userdel -r designer1
sudo userdel -r tester1
Damit ist das Lab zur Verwaltung von NFS mit autofs abgeschlossen.
Zusammenfassung
In diesem Lab lernen Sie, den NFS-Clientzugriff auf einem RHEL-System zu konfigurieren. Zunächst führen Sie eine manuelle Einbindung durch: Sie erstellen einen lokalen Einhängepunkt und verwenden anschließend den Befehl mount, um eine Verbindung zur NFS-Freigabe herzustellen. Nachdem die manuelle Verbindung mit dem Befehl mount eingerichtet ist, konfigurieren Sie eine persistente Einbindung, indem Sie einen Eintrag in der Datei /etc/fstab erstellen. Dadurch wird die Freigabe beim Systemstart automatisch eingebunden.
Darüber hinaus behandelt das Lab die Einbindung bei Bedarf mit dem Dienst autofs. Dazu installieren und aktivieren Sie den Dienst und legen anschließend mithilfe zweier verschiedener Methoden fest, wie Freigaben eingebunden werden: Sie erstellen eine indirekte Map für das dynamische Einbinden von Verzeichnissen und eine direkte Map, um Freigaben an statischen, vordefinierten Orten einzubinden. Abschließend überprüfen Sie, ob beide Automount-Varianten für verschiedene Benutzer korrekt funktionieren.



