NFS mit und ohne YaST konfigurieren

Aus LinuxUser 03/2019

NFS mit und ohne YaST konfigurieren

© Marcin Jucha, 123RF

Schnell geteilt

NFS macht das Teilen von Dateien im Netz einfach – und in Sachen Performance ist es unter Linux oft erste Wahl.

Um eines gleich vorweg zu nehmen: Sie brauchen nichts einzurichten, um zwischen Linux-Rechnern Dateien auszutauschen: Es genügt, wenn der SSH-Daemon läuft (Dienst sshd im YaST-Modul Dienste-Verwaltung ) und Sie den zugehörigen Port in der Firewall öffnen (Checkbox vor ssh in der Zone public im YaST-Modul Firewall).

SSH gestattet es Ihnen nicht nur, sich auf einem entfernten Rechner auf der Konsole einzuloggen, sondern erlaubt auch den Zugriff auf Dateien aus der Ferne. Sowohl der KDE- als auch der Gnome-Dateimanager (Abbildung 1) unterstützen diese Aktionen direkt. Auf der Konsole genügt einer der Befehle aus Listing 1 – je nachdem, ob Sie eine Datei vom lokalen Rechner aus auf ein anderes System kopieren wollen (erste Zeile) oder umgekehrt (zweite Zeile). In beiden Fällen geben Sie das Passwort des jeweiligen Benutzers an.

Abbildung 1: Der Gnome-Dateimanager unterstützt den Zugriff auf Dateien aus der Ferne via SSH. Sein Pendant Dolphin aus aus den KDE Applications beherrscht das ebenfalls.

Abbildung 1: Der Gnome-Dateimanager unterstützt den Zugriff auf Dateien aus der Ferne via SSH. Sein Pendant Dolphin aus aus den KDE Applications beherrscht das ebenfalls.

Listing 1

$ scp Datei User@Host:Pfad
$ scp User@Host:Datei Pfad

Fest eingehängt

Es fragt sich also, ob Sie sich mit der expliziten Freigabe von Verzeichnissen (Shares) per NFS, für die YaST wie für so vieles eine grafische Oberfläche bereitstellt (Abbildung 2), überhaupt befassen sollten.

Abbildung 2: Sowohl f&uuml;r das Einbinden von NFS-Shares (<span class="ui-element">NFS-Client</span>) als auch f&uuml;r deren Bereitstellung (<span class="ui-element">NFS-Server</span>) bringt YaST Module mit. Das Server-Modul installieren Sie gegebenenfalls nach.

Abbildung 2: Sowohl für das Einbinden von NFS-Shares (NFS-Client) als auch für deren Bereitstellung (NFS-Server) bringt YaST Module mit. Das Server-Modul installieren Sie gegebenenfalls nach.

Dafür sprechen vor allem zwei Gründe: Erstens können Sie NFS-Shares direkt beim Booten wie lokale Partitionen auf einer Festplatte einhängen. Außerdem bietet NFS eine ausgezeichnete Performance: In aller Regel quetscht es mehr Daten durch die Bandbreite des Netzwerks als SMB [1], das Netzwerkdateisystem von Microsoft. Darüber hinaus fällt auf dem Server eine geringe CPU-Last an, was etwa auf einem Raspberry Pi eine Rolle spielt.

So mancher Anwender sieht das automatische Einbinden beim Systemstart aber nicht unbedingt als Vorteil: Die Aktion funktioniert ohne Eingabe eines Passworts, Kritiker buchstabieren deshalb das Akronym NFS gelegentlich als “no fucking security” aus. Im Grund ist nur ein Zugriff als Root ausgeschlossen, wenn Sie diesen nicht explizit gestatten: Zwar hat ein über NFS zugreifender Benutzer zunächst nur die Rechte, die er lokal hätte, doch ohne Abfrage des Passworts fällt es nicht schwer, eine beliebige Identität anzunehmen [2].

Andererseits geben Sie per NFS ja nur bestimmte Verzeichnisse frei, die dann für alle im lokalen Netz bereitstehen. Erst NFS Version 4 ermöglicht das Authentifizieren und Verschlüsseln der Daten beim Übertragen. Doch das erfordert einen Kerberos-Server, was den Rahmen dieses Tipps sprengt. Gehen wir also von Folgendem aus: NFS-Shares lassen sich im lokalen Netz für jedermann erreichen; ein wirksamer Schutz existiert nur für Dateien, die dem Benutzer Root gehören.

Um Verzeichnisse mit YaST freizugeben, installieren Sie zunächst das Paket yast2-nfs-server. Nach dem Neustarten von YaST findet sich dann in der Rubrik Netzwerkdienste das Icon NFS-Server. Im ersten Dialog dieses Moduls (Abbildung 3) wählen Sie die Optionen NFS-Server: Starten und NFSv4 aktivieren.

Abbildung 3: Der erste Dialog des Moduls <span class="ui-element">NFS-Server</span> startet den Dienst und aktiviert NFS Version&nbsp;4. Allerdings funktioniert die Freigabe des entsprechenden Ports in der Firewall in Leap&nbsp;15 nicht.

Abbildung 3: Der erste Dialog des Moduls NFS-Server startet den Dienst und aktiviert NFS Version 4. Allerdings funktioniert die Freigabe des entsprechenden Ports in der Firewall in Leap 15 nicht.

Ein Klick auf Weiter springt zum nächsten Dialog (Abbildung 4), in dem Sie über die Schaltfläche Verzeichnis hinzufügen (Punkt 1) die NFS-Shares erstellen. Dazu wählen Sie im folgenden Dialog (Punkt 2) einen Ordner im Dateisystem und klicken auf OK.

Abbildung 4: Im YaST-Modul <span class="ui-element">NFS-Server</span> w&auml;hlen Sie &uuml;ber einen Klick (1) einen Ordner f&uuml;r die Freigabe (2) aus. Abschlie&szlig;end ver&auml;ndern Sie bei Bedarf noch die vorgeschlagenen Optionen (3).

Abbildung 4: Im YaST-Modul NFS-Server wählen Sie über einen Klick (1) einen Ordner für die Freigabe (2) aus. Abschließend verändern Sie bei Bedarf noch die vorgeschlagenen Optionen (3).

Im nächsten Dialog (Punkt 3) bearbeiten Sie die Optionen für das Share. Die wirken jedoch auf Einsteiger oft kryptisch; allerdings passt die von YaST gesetzte Voreinstellung ohnehin für viele Szenarien. Lediglich die erste Option ro (“readonly”, nur lesen) ersetzen Sie durch rw (“read/write”, lesen/schreiben), wenn Sie das Share zum Schreiben freigeben möchten.

Ein wenig Sicherheit

Interessant ist noch die etwas irritierend benannte Einstellung Host-Platzhalter (Punkt 3) – eigentlich müsste es Client-Platzhalter heißen, denn es geht dabei um die Clients, die zugreifen dürfen. Steht hier – wie in der Voreinstellung – ein *, steht der Zugriff auf das Share Rechnern mit beliebiger IP frei.

Mit 192.168.1.0/24 schränken Sie den Zugriff auf Adressen im Bereich von 192.168.1.1 bis 192.168.1.255 ein (siehe Kasten “IP-Adressen”). Sie können mit dem Button Host hinzufügen weitere Host-Platzhalter mit entsprechenden Parametern hinzufügen, beispielsweise um allen Rechnern im Heimnetz Lesezugriff zu gewähren, einem bestimmten aber Lese- und Schreibzugriff.

IP-Adressen

Jede der Zahlen zwischen den Punkten in einer IP-Adresse steht für einen 8-Bit-Wert zwischen 0 und 255. Die 24 hinter einem Schrägstrich ergibt sich aus der Rechnung 3 mal 8, was bedeutet, dass die ersten drei Stellen auf die angegebenen Werte beschränkt sind, während die vierte beliebig lauten darf. Geben Sie 192.168.0.0/16 ein, dann akzeptiert NFS alle Adressen aus dem Bereich 192.168.x.x, bei 192.168.1.22/32 dagegen nur die angegebene IP-Adresse.

Bedenken Sie aber: Für versierte Angreifer mit Zugriff auf das LAN ist es eine Kleinigkeit, eine IP-Adresse vorzutäuschen, wie ein Artikel unserer Schwesterzeitschrift Linux-Magazin [2] veranschaulicht. Betrachten Sie den Adressfilter daher nicht als Gewinn an Sicherheit, sondern eher als Schutz vor versehentlichem Zugriff. Ein Klick auf OK und Beenden schaltet die Shares scharf.

Jedoch sind die Freigaben im Moment noch völlig sicher, da man sie bei den Standardeinstellungen der Firewall von einem anderen Rechner aus noch gar nicht erreichen kann: Abbildung 3 zeigt, dass sich unter Leap 15 von diesem Modul aus die Firewall nicht konfigurieren lässt. OpenSuse Leap 15 ist von der altbewährten Lösung SuSEfirewall2 auf das von Distributionen unabhängige Firewalld umgestiegen, mit dem das YaST-Modul offensichtlich nicht ordentlich zusammenarbeitet.

Zwei Lösungen bieten sich hier an. Im einfachsten Fall – wenn Sie sich sicher sind, dass der Router Angriffe aus dem Internet blockt – schalten Sie die Sicherheitsstufe der Netzwerkkarte von public auf trusted herunter, deaktivieren die Firewall also weitgehend. Alternativ beschränken Sie sich auf Version 4 von NFS (siehe Parameter aus Abbildung 3). Das sollte keine Schwierigkeiten bereiten, denn diese Version existiert schon seit dem Jahr 2000. Frühere Versionen von NFS spielten schlecht mit Firewalls zusammen, da sie wechselnde Ports nutzen. Die alte SuSEfirewall2 kam damit klar, das neue Firewalld nicht.

Bleibt die Firewall aktiv, schalten Sie im YaST-Modul Firewall per Hand den Dienst nfs für die Zone public frei (Abbildung 5). Wählen Sie dazu oben im Ausklappmenü Konfiguration den Wert Permanent, um die Änderungen über einen Neustart hinweg einzustellen. Unter Zonen aktivieren Sie, sofern nötig, den Eintrag public. Unter Dienste setzen Sie schließlich noch das Häkchen vor nfs.

Abbildung 5: Wenigstens NFS&nbsp;4 funktioniert, wenn Sie im neuen YaST-Modul <span class="ui-element">Firewall</span> den <span class="ui-element">Dienst</span> <span class="ui-element">nfs</span> f&uuml;r die Zone <span class="ui-element">public</span> freigeben.

Abbildung 5: Wenigstens NFS 4 funktioniert, wenn Sie im neuen YaST-Modul Firewall den Dienst nfs für die Zone public freigeben.

Nun stehen im LAN die NFS-Shares bereit, die andere Rechner einbinden (“mounten”) und dann genauso nutzen dürfen wie lokale Daten. Bevor Sie das aber einrichten, lohnt es sich, einen Blick auf die Konfigurationsdateien zu werfen, die sich auf dem Server verändert haben. Nach dem Aktivieren des NFS-Servers sollten Sie noch einen Blick in die Datei /etc/exports werfen: Dort stehen nun Einträge wie jene aus Listing 2.

Listing 2

/home/peter/Bilder *(rw,root_squash,sync,no_subtree_check)
/home/peter/bin 192.168.122.0/24(ro,root_squash,sync,no_subtree_check)
/home 192.168.122.36(rw,root_squash,sync,no_subtree_check) 192.168.122.0/255.255.255.0(ro,root_squash,sync,no_subtree_check)

Die erste Spalte nennt jeweils das freigegebene Verzeichnis. Dann folgen der Host-Filter (in der ersten Zeile der Platzhalter “*”, in der zweiten das gesamte Netz 192.168.122.0) und in Klammern die Optionen, die Sie im Dialog Verzeichnis hinzufügen bereits zu sehen bekommen haben. Die letzte Zeile im Listing gewährt allen Rechnern Leserechte, deren IP mit 192.168.122 beginnt, dem Computer mit der IP 192.168.122.36 noch zusätzlich Schreibrechte.

Solche Zeilen in /etc/exports können Sie als Root auch direkt mit einem Texteditor erstellen. Beachten Sie: Leerzeichen sind im Block zwischen dem Host-Filter und der schließenden Klammer tabu – sie führen dazu, dass die Freigabe nicht funktioniert.

Lokal einbinden

Zum Einbinden von Shares steht in YaST das Modul NFS-Client bereit. Stellen Sie nach dem Öffnen des Moduls im rechten Reiter NFS-Einstellungen sicher, dass die Optionen NFSv4 aktivieren und Firewall-Port öffnen gewählt sind.

Im ersten Reiter NFS-Freigaben binden Sie dann durch einen anderen Rechner (Server) bereitgestellte Shares ein, indem Sie auf den Schalter Hinzufügen klicken. Hier geben Sie den Hostnamen des NFS-Servers ein – in der Regel also eine IP-Adresse, die Sie herausfinden, indem Sie auf dem Server auf der Konsole ip a eingeben (Abbildung 6).

Abbildung 6: Der Befehl <code>ip a</code> auf der Konsole stellt die einfachste M&ouml;glichkeit dar, die IP-Adresse eines Linux-Rechners zu ermitteln.

Abbildung 6: Der Befehl ip a auf der Konsole stellt die einfachste Möglichkeit dar, die IP-Adresse eines Linux-Rechners zu ermitteln.

Zwar hat jeder Rechner einen Namen (Hostname), den Sie im YaST-Modul Rechnername festlegen. Allerdings hängt es vom Router oder von manuell erzeugten Einträgen in der Datei /etc/hosts ab, ob sich die Maschine über diesen Namen im Netz erreichen lässt. Die IP-Adresse funktioniert dagegen immer.

Das Feld Entferntes Verzeichnis steht für den Pfad des Freigabe. Hier tragen Sie genau denselben Wert ein wie beim Anlegen des Shares, also den lokalen Dateipfad auf dem Server. Die von Windows-Netzwerken oder deren Linux-Entsprechung Samba bekannte Möglichkeit, das Verzeichnis /home/peter/Bilder/ unter einem wählbaren Namen wie Bilder freizugeben, gibt es hier nicht.

Auf dem Zielrechner (Client) hängen Sie die Freigabe an beliebiger Stelle ein. Der Einhängepunkt definiert die Stelle, an der die Dateien des Shares lokal bereitstehen. Geben Sie in das gleichnamige Feld den Dateipfad zu einem existierenden Verzeichnis ein. Es sollte sich dabei um ein leeres Verzeichnis handeln: Dort bereits vorhandene Dateien lassen sich nach dem Mounten des Shares nicht mehr erreichen. Sie verschwinden allerdings nicht dauerhaft; nach dem Aushängen des Shares kommen sie wieder zum Vorschein.

Wählen Sie im Ausklappfeld NFS-Version noch NFSv4 erzwingen aus, zumindest, wenn es sich beim Server um einen OpenSuse-Leap-15-Rechner handelt, dessen Firewall mit älteren NFS-Versionen nicht klarkommt. Dann klicken Sie auf OK. Fügen Sie, falls gewünscht, weitere Shares über Hinzufügen im übergeordneten Dialog ein, und klicken Sie wieder auf OK, sobald Sie alle Shares hinzugefügt haben.

Sie können allerdings die entfernten Dateien nicht sofort sehen: Das Share steht zwar nun in der Konfigurationsdatei /etc/fstab, doch die dort angegebenen Verzeichnisse mountet Linux nur beim Systemstart. Nach einem solchen taucht das Share aber dann wie gewünscht im Verzeichnisbaum auf.

Alternativ geben Sie auf der Konsole sudo mount /Pfad/zum/Einhängepunkt ein: Dann steht das Share ohne Neustart sofort bereit. Eigentlich sollte diese zusätzliche Fleißarbeit jedoch nicht erforderlich sein: Es wäre zu erwarten, dass die entfernten Dateien direkt nach dem Klick auf OK im YaST-Modul bereitstehen, wie es unter OpenSuse Leap 42.3 der Fall war. Offensichtlich hat sich hier aber ein Bug eingeschlichen.

Sehen wir uns noch die Veränderungen an der schon angesprochenen Datei /etc/fstab an, der einzigen Konfigurationsdatei, die das YaST-Modul NFS-Client modifiziert. Die letzten zwei Zeilen, die das Modul hinzugefügt hat, sehen Sie in Listing 3. Hier signalisiert der Doppelpunkt das Ende des Hostnamens respektive der IP-Adresse und den Beginn des Pfads zum geteilten Verzeichnis.

Dann folgen der Pfad zum Einhängepunkt sowie der Typ des Dateisystems (hier NFS). In der nächsten Spalte folgen spezielle Einstellungen für das entsprechende Dateisystem. Der Parameter nfsvers=4 resultiert aus der Auswahl NFSv4 erzwingen im Feld NFS-Version. Weitere Optionen aus dem gleichnamigen Feld im YaST-Dialog tauchen an dieser Stelle ebenfalls auf. Die zwei durch Leerzeichen getrennte Nullen am Ende der Fstab-Zeile sind unter OpenSuse der Standard. Sie stehen für ein bisher unter Linux nicht genutztes Dateisystem-Backup und einen Datencheck beim Systemstart, den OpenSuse ebenfalls nicht nutzt.

Listing 3

192.168.122.36:/home/peter/bin     /home/peter/bin  nfs  nfsvers=4  0  0
192.168.122.36:/home/peter/Bilder  /mnt             nfs  nfsvers=4  0  0

Hänger vermeiden

Noch eine Anmerkung zu den Optionen: Eines der Probleme mit per NFS geteilten Verzeichnissen ist, dass bei einem Ausfall des Servers oft das einhängende System stehenbleibt. Dieser Knoten lässt sich nur per Reboot wieder aufdröseln. Als Gegenmittel bietet sich die Option soft an. Im Internet finden Sie zwar oft den Rat, sie keinesfalls zu benutzen, da sie angeblich zu Datenverlust führt. Doch aus der Sicht eines Heimanwenders spielt das kaum eine Rolle.

Der Linux-Kernel wartet standardmäßig unbegrenzte lange, wenn der NFS-Server keine Rückmeldung mehr gibt. Mit soft weisen sie ihn an, nach einer bestimmten Zeit aufzugeben. Noch nicht zum Server übertragene Daten gehen dann freilich verloren. Das unbegrenzte Warten würde jedoch nur etwas bringen, wenn der Server zwischenzeitlich wieder “anspringt”: Dann geht der Transfer einfach weiter.

Ist jedoch ein Reboot des Servers nötig, um ihn wieder zu erreichen, dann hängt der Client, ohne damit der Integrität der Daten zu nützen. Im Heimnetzbereich lässt sich daher die Option soft durchaus vertreten – allerdings nur in Kombination mit der Option timeo=90, die den Timeout auf vernünftige 90 Sekunden setzt: Es muss ja nicht sein, dass Daten schon dann verloren gehen, wenn lediglich das Netz oder der Server kurzzeitig überlastet sind.

Wichtig: Auch hier sind Leerzeichen zwischen den per Komma abgetrennten Optionen tabu, egal ob Sie diese in YaST eingeben oder direkt in der Datei /etc/fstab. Alle beim Einhängen eines Shares möglichen Optionen finden Sie in der Manpage zu NFS auf Englisch. Sie öffnen sie durch den Befehl man 5 nfs auf der Konsole.

Mit sudo umount /Pfad/zum/Einhängepunkt hängen Sie NFS-Shares bei Bedarf manuell wieder aus. Deaktivieren Sie es nicht auch in der /etc/fstab oder mit YaST, steht es nach einem Reboot wieder parat.

Fazit

NFS-Shares dienen unter Linux als Standard zum Bereitstellen von Dateien im Netz. Der Leistungsumfang der beiden YaST-Module NFS-Server und NFS-Client fällt im Vergleich zu anderen YaST-Funktionen eher moderat aus: Sie fügen lediglich den Dateien /etc/exports (Server) und /etc/fstab (Client) relativ simpel gestrickte Zeilen hinzu. Immerhin helfen die Module Anfängern, das Strickmuster der Konfiguration zu erlernen. Versierte Anwender kommen aber vermutlich schneller zum Ziel, wenn sie die Dateien als Root per Hand editieren. 

DIESEN ARTIKEL ALS PDF KAUFEN
EXPRESS-KAUF ALS PDF
LinuxUser 03/2019 KAUFEN
EINZELNE AUSGABE
ABONNEMENTS
TABLET & SMARTPHONE APPS
E-Mail Benachrichtigung
Benachrichtige mich zu:

Hinweis: Dieser Artikel ist älter als ein Jahr, enthaltene Informationen sind möglicherweise veraltet.

0 Kommentare
Älteste
Neuste Beste Bewertung
Nach oben