TL;DR

Eine viel kürzere Handbuch ist verfügbar in der Ubuntu-Server-Guide, Wenn Sie weitere Informationen benötigen, Lesen Sie unten.

Einführung

Mit NFS (Network File System) können Sie ein Verzeichnis auf einem Netzwerkcomputer für andere Computer / Geräte in diesem Netzwerk freigeben. Der Computer, auf dem sich das Verzeichnis befindet, wird als Server bezeichnet, und Computer oder Geräte, die eine Verbindung zu diesem Server herstellen, werden als Clients bezeichnet. Clients „mounten“ normalerweise das freigegebene Verzeichnis, um es zu einem Teil ihrer eigenen Verzeichnisstruktur zu machen.,

NFS eignet sich perfekt zum Erstellen von NAS (Networked Attached Storage) in einer Linux/Unix-Umgebung. Es ist ein natives Linux / Unix-Protokoll im Gegensatz zu Samba, das das von Microsoft entwickelte SMB-Protokoll verwendet. Das Apple OS hat eine gute Unterstützung für NFS. Windows 7 hat einige Unterstützung für NFS.

NFS eignet sich möglicherweise am besten für „permanentere“ Netzwerk-Mounted-Verzeichnisse wie / home-Verzeichnisse oder regelmäßig aufgerufene freigegebene Ressourcen. Wenn Sie eine Netzwerkfreigabe wünschen, mit der Gastbenutzer problemlos eine Verbindung herstellen können, ist Samba besser geeignet., Dies liegt daran, dass Tools in alten und proprietären Betriebssystemen leichter verfügbar sind, um Samba-Freigaben vorübergehend bereitzustellen und zu trennen.

Ubuntu Vor der Bereitstellung von NFS sollten Sie vertraut sein mit:

  • Linux Datei – und Verzeichnisberechtigungen
  • Mounten und Trennen (Aushängen) von Dateisystemen

Dieses HowTo macht Ubuntu Server NFSv4 bereit.

NFS Quick start

Wenn Sie verstehen, was Sie tun, verwenden Sie diesen kurzen Durchgang, um einen NFSv4-Server unter Ubuntu einzurichten (ohne Authentifizierungssicherheit). Mounten Sie dann die Freigabe auf einem Ubuntu-Client., Es wurde auf Ubuntu 14.04 getestet.

NFS-Server

Um zu überprüfen, ob der NFS-Server nicht installiert ist, können Sie tun…

  • $ dpkg -l | grep nfs-kernel-server

Installieren Sie die erforderlichen Pakete…

  • # apt-get install nfs-kernel-server

Zur einfacheren Wartung isolieren wir alle NFS-Exporte in einem einzigen Verzeichnis, in dem die realen Verzeichnisse mit der Option –bind gemountet werden.

  • Angenommen, wir möchten die Home-Verzeichnisse unserer Benutzer in /home/users exportieren., Zuerst erstellen wir das Export-Dateisystem:

    # mkdir -p /export/users 

    Es ist wichtig, dass /export und /export/users über 777 Berechtigungen verfügen, da wir ohne LDAP/NIS-Authentifizierung vom Client aus auf die NFS-Freigabe zugreifen. Dies gilt nicht bei Verwendung der Authentifizierung (siehe unten)., Mounten Sie nun das reale Benutzerverzeichnis mit:

    # mount --bind /home/users /export/users

    Um uns davon abzuhalten, dies nach jedem Neustart erneut zu schreiben, fügen wir die folgende

    -Zeile zu /etc/fstab hinzu

    /home/users /export/users none bind 0 0

  • Die einzige wichtige Option in /etc/default/nfs-kernel-server ist NEED_SVCGSSD. Es ist standardmäßig auf „Nein“ eingestellt, was in Ordnung ist, da wir NFSv4 security diesmal nicht aktivieren.

Damit die ID-Namen automatisch zugeordnet werden können, benötigen Client und Server die Datei /etc/idmapd.,conf-Datei, um den gleichen Inhalt mit den richtigen Domänennamen zu haben. Darüber hinaus sollte diese Datei die folgenden Zeilen im Mapping-Abschnitt enthalten:

  • Nobody-User = nobodyNobody-Group = nogroup

    Der Client kann jedoch unterschiedliche Anforderungen an den Niemand-Benutzer und die Niemand-Gruppe haben. Zum Beispiel bei RedHat-Varianten ist es nfsnobody für beide. cat / etc / passwd und cat /etc/group sollten die Konten „niemand“ anzeigen.

Auf diese Weise benötigen Server und Client nicht, dass die Benutzer dieselbe UID/GUID gemeinsam nutzen.,

Für diejenigen, die LDAP-basierte Authentifizierung verwenden, fügen Sie die folgenden Zeilen zu Ihrem Client idmapd.conf:

Method = nsswitch

Dies führt dazu, dass idmapd weiß, wie man nsswitch ansieht.conf, um festzustellen, wo nach Anmeldeinformationen gesucht werden soll (und wenn die LDAP-Authentifizierung bereits funktioniert, sollte nsswitch keine weiteren Erklärungen erfordern).

Um unsere Verzeichnisse in ein lokales Netzwerk zu exportieren 192.168.1.0 / 24 fügen wir die folgenden zwei Zeilen zu /etc/exports

Portmap Lockdown

optional

Fügen Sie die folgende Zeile zu/etc / hosts hinzu.,verweigern:

rpcbind mountd nfsd statd lockd rquotad : ALL

Indem zuerst alle Clients blockiert werden, nur Clients in /etc/hosts.allow unten darf auf den Server zugreifen.

fügen Sie Nun die folgende Zeile zu /etc/hosts.allow:

rpcbind mountd nfsd statd lockd rquotad : list of IP addresses

Wo die Zeichenfolge“ Liste der IP-Adressen “ ist, müssen Sie eine Liste der IP-Adressen erstellen, die aus dem Server und allen Clients besteht. Dies müssen IP-Adressen sein, da Portmap eingeschränkt ist (Hostnamen mögen sie nicht). Wenn Sie NIS eingerichtet haben, fügen Sie diese einfach derselben Zeile hinzu.,

Hinweis: Stellen Sie sicher, dass die Liste der autorisierten IP-Adressen die localhost-Adresse (127.0.0.1) enthält, da die Startskripte in den letzten Versionen von Ubuntu den Befehl rpcinfo verwenden, um die NFSv3-Unterstützung zu ermitteln, und dies wird deaktiviert, wenn localhost keine Verbindung herstellen kann.,unt den kompletten Exportbaum mit einem Befehl:

Wir können auch einen exportierten Teilbaum mounten mit:

  • # mount -t nfs -o proto=tcp,port=2049 <nfs-server-IP>:/users /home/users

Um uns davon abzuhalten, dies nach jedem Neustart erneut zu schreiben, fügen wir die folgende Zeile zu /etc/fstab hinzu:

  • <nfs-server-IP>:/ /mnt nfs auto 0 0

    Wenn der Eintrag in /proc/mounts nach dem Mounten als <nfs-server-IP>:// (mit zwei Schrägstrichen) angezeigt wird, müssen Sie möglicherweise zwei Schrägstriche in /etc/fstab angeben, oder umount kann sich beschweren, dass das Mounten nicht gefunden werden kann.,

    Die Auto-Option mountet beim Start. Dies funktioniert jedoch nicht, wenn Ihr Client eine auf Benutzerebene verwaltete WLAN-Verbindung (nach der Anmeldung) verwendet, da das Netzwerk beim Booten nicht verfügbar ist. In Ubuntu 12.04 LTS und höher werden WLAN-Verbindungen standardmäßig auf Systemebene verwaltet, sodass das automatische Mounten von NFS-Freigaben beim Booten einwandfrei funktionieren sollte.

Ubuntu-Server nicht kommen mit jedem init.d / netfs oder andere Skripte, um dies für Sie zu tun.

Portmap Lockdown

optional

Fügen Sie die folgende Zeile zu /etc/hosts.,verweigern:

rpcbind : ALL

Indem zuerst alle Clients blockiert werden, nur Clients in /etc/hosts.allow unten darf auf den Server zugreifen.

fügen Sie Nun die folgende Zeile zu /etc/hosts.allow:

rpcbind : NFS server IP address

Wobei“ NFS server IP address “ die IP-Adresse des Servers ist. Das muss numerisch sein! So funktioniert Portmap.

NFS Server

Setup vor der Installation

Keiner der folgenden Schritte vor der Installation ist unbedingt erforderlich.

Benutzerberechtigungen

NFS Benutzerberechtigungen basieren auf Benutzer-ID (UID)., UIDs aller Benutzer auf dem Client müssen mit denen auf dem Server übereinstimmen, damit die Benutzer Zugriff haben. Die typischen Möglichkeiten, dies zu tun, sind:

  • Manuelle Passwortdateisynchronisierung
  • Verwendung von LDAP

  • Verwendung von NIS

Es ist auch wichtig zu beachten, dass Sie auf Systemen vorsichtig sein müssen, auf denen der Hauptbenutzer Root – Zugriff hat-dieser Benutzer kann UIDs auf dem System ändern, um sich den Zugriff auf die Dateien anderer zu ermöglichen. Auf dieser Seite wird davon ausgegangen, dass das Verwaltungsteam die einzige Gruppe mit Root-Zugriff ist und dass alle vertrauenswürdig sind., Alles andere stellt eine erweiterte Konfiguration dar und wird hier nicht angesprochen.

Gruppenberechtigungen

Bei NFS wird der Zugriff eines Benutzers auf Dateien durch seine Mitgliedschaft in Gruppen auf dem Client und nicht auf dem Server bestimmt. Es gibt jedoch eine wichtige Einschränkung: Maximal 16 Gruppen werden vom Client an den Server übergeben, und wenn ein Benutzer Mitglied von mehr als 16 Gruppen auf dem Client ist, können einige Dateien oder Verzeichnisse unerwartet nicht zugänglich sein.

Hostnamen

optional bei Verwendung von DNS

Fügen Sie Clientnamen und IP-Adressen zu /etc/hosts hinzu. Die reale (nicht).,0.0.1) IP-Adresse des Servers sollte bereits hier sein. Dies stellt sicher, dass NFS auch dann noch funktioniert, wenn DNS ausfällt. Sie könnten sich auf DNS verlassen, wenn Sie wollten, es liegt an Ihnen.

NIS

optional-Führen Sie Schritte nur aus, wenn Sie NIS

verwenden Hinweis: Dies funktioniert nur, wenn Sie NIS verwenden. Andernfalls können Sie keine netgroups verwenden und sollten einzelne IP ‚ s oder Hostnamen in /etc/exports angeben. Lesen Sie den Abschnitt FEHLER in man netgroup.

Bearbeiten Sie /etc / netgroup und fügen Sie eine Zeile hinzu, um Ihre Clients zu klassifizieren. (Dieser Schritt ist nicht notwendig, ist aber für die Bequemlichkeit).,

myclients (client1,,) (client2,,)

Offensichtlich können mehr Clients hinzugefügt werden. myclients kann alles sein, was Sie mögen; Dies ist ein Netzgruppenname.

Führen Sie diesen Befehl aus, um die YP-Datenbank neu zu erstellen:

sudo make -C /var/yp

Portmap Lockdown

optional

Fügen Sie die folgende Zeile zu /etc/hosts hinzu.verweigern:

rpcbind mountd nfsd statd lockd rquotad : ALL

Indem zuerst alle Clients blockiert werden, nur Clients in /etc/hosts.allow unten darf auf den Server zugreifen.

fügen Sie Nun die folgende Zeile zu /etc/hosts.,allow:

rpcbind mountd nfsd statd lockd rquotad : list of IP addresses

Wo die Zeichenfolge“ Liste der IP-Adressen “ ist, müssen Sie eine Liste der IP-Adressen erstellen, die aus dem Server und allen Clients besteht. Dies müssen IP-Adressen sein, da Portmap eingeschränkt ist (Hostnamen mögen sie nicht). Wenn Sie NIS eingerichtet haben, fügen Sie diese einfach derselben Zeile hinzu.,

Installation und Konfiguration

NFS Server installieren

sudo apt-get install rpcbind nfs-kernel-server

Shares

Bearbeiten Sie /etc/exports und fügen Sie die Shares hinzu:

/home @myclients(rw,sync,no_subtree_check)/usr/local @myclients(rw,sync,no_subtree_check)

Die oben genannten shares /home und /usr/local sind für alle Clients in der myclients netgroup verfügbar.

Das obige teilt /home und /usr/local für zwei Clients mit festen IP-Adressen. Am besten nur mit Maschinen verwendet, die statische IP-Adressen haben.

/home 192.168.0.0/255.255.255.0(rw,sync,no_subtree_check)/usr/local 192.168.0.0/255.255.255.0(rw,sync,no_subtree_check)

Das obige teilt /home und /usr/local für alle Clients im privaten Netzwerk, die in den angegebenen IP-Adressbereich fallen.,

rw macht die Freigabe zum Lesen / Schreiben, und sync erfordert, dass der Server nur auf Anfragen antwortet, sobald Änderungen auf die Festplatte gelöscht wurden. Dies ist die sicherste option (async ist schneller, aber gefährlicher. Es wird dringend empfohlen, dass Sie man Export lesen.

Exportieren Sie nach dem Einrichten von /etc/exports die Freigaben:

sudo exportfs -ra

Sie möchten diesen Befehl ausführen, wenn /etc/exports geändert wird.,

Dienste neu starten

Wenn /etc/default/portmap geändert wurde, muss portmap neu gestartet werden:

sudo service portmap restart

Der NFS-Kernel-Server benötigt auch einen Neustart:

sudo service nfs-kernel-server restart

Sicherheitshinweis

Abgesehen von den oben diskutierten UID-Problemen sollte beachtet werden, dass ein Angreifer möglicherweise maskieren Sie sich als Maschine, die die Freigabe zuordnen darf, sodass sie beliebige UIDs erstellen können, um auf Ihre Dateien zuzugreifen. Eine mögliche Lösung hierfür ist IPSec, siehe auch den Abschnitt NFS und IPSec unten., Sie können alle Ihre Domänenmitglieder so einrichten, dass sie nur über IPSec miteinander sprechen, wodurch effektiv authentifiziert wird, dass Ihr Client der ist, von dem er sagt, dass er es ist.

IPSec verschlüsselt den Datenverkehr zum Server mit dem Schlüssel des Servers, und der Server sendet alle Antworten zurück, die mit dem Schlüssel des Clients verschlüsselt sind. Der Datenverkehr wird mit den jeweiligen Schlüsseln entschlüsselt. Wenn der Client nicht über die Schlüssel verfügt, über die der Client verfügen soll, kann er keine Daten senden oder empfangen.

Eine Alternative zu IPSec sind physisch getrennte Netzwerke., Dies erfordert einen separaten Netzwerk-Switch und separate Ethernet-Karten sowie die physische Sicherheit dieses Netzwerks.

NFS-Client

Errichtung

sudo apt-get install rpcbind nfs-common

Portmap Lockdown

optional

Fügen Sie die folgende Zeile zu /etc/hosts.verweigern:

rpcbind : ALL

Indem zuerst alle Clients blockiert werden, nur Clients in /etc/hosts.allow unten darf auf den Server zugreifen.

fügen Sie Nun die folgende Zeile zu /etc/hosts.allow:

rpcbind : NFS server IP address

Wobei“ NFS server IP address “ die IP-Adresse des Servers ist. Das muss numerisch sein!, So funktioniert Portmap.

Hostnamen

optional bei Verwendung von DNS

Fügen Sie den Servernamen zu /etc/hosts hinzu. Dies stellt sicher, dass die NFS-Mounts auch dann noch funktionieren, wenn DNS ausfällt. Sie könnten sich auf DNS verlassen, wenn Sie wollten, es liegt an Ihnen.

Mounts

Überprüfen Sie, ob alles funktioniert

Sie sollten versuchen, es jetzt zu mounten., Die grundlegende Vorlage, die Sie verwenden, ist:

sudo mount ServerIP:/folder/already/setup/to/be/shared /home/username/folder/in/your/local/computer

also zum Beispiel:

sudo mount 192.168.1.42:/home/music /home/poningru/music

Mount beim Start

NFS Mounts können entweder automatisch gemountet werden, wenn auf autofs zugegriffen wird, oder mit statischen Mounts mithilfe von Einträgen in /etc/fstab eingerichtet werden. Beide werden unten erklärt.

Automounter

autofs installieren:

sudo apt-get install autofs

Das folgende Konfigurationsbeispiel richtet Home-Verzeichnisse ein, um beim Anmelden einen NFS-Server automatisch abzumelden. Es können auch andere Verzeichnisse eingerichtet werden, um den Zugriff zu automatisieren.,

Fügen Sie die folgende Zeile am Ende von /etc/auto hinzu.master:

 /home /etc/auto.home

erstellen Sie Nun /etc/auto.home und fügen Sie Folgendes ein:

 * solarisbox1.company.com.au,solarisbox2.company.com.au:/export/home/&

Starten Sie autofs neu, um die Konfiguration zu aktivieren:

sudo service autofs start

Statische Mounts

Stellen Sie vor dem Einrichten der Mounts sicher, dass die Verzeichnisse, die als Mountpoints fungieren, bereits erstellt sind.

Fügen Sie in /etc/fstab Zeilen für Freigaben hinzu, z. B.:

servername:dir /mntpoint nfs rw,hard,intr 0 0

Die rw mountet sie zum Lesen/Schreiben., Wenn der Server es schreibgeschützt freigibt, kann der Client es natürlich nicht mehr als das mounten. Die Festplatte mountet die Freigabe so, dass das Programm wartet, bis es verfügbar ist, wenn der Server nicht mehr verfügbar ist. Die alternative ist weich. mit intr können Sie den Prozess unterbrechen/beenden. Andernfalls wird es Sie ignorieren. Die Dokumentation dazu finden Sie im Abschnitt Mount-Optionen für nfs von man mount.

Die Dateisysteme können jetzt mit mount /mountpoint oder mount-a gemountet werden, um alles zu mounten, was beim Booten gemountet werden soll.,

Hinweise

Minimalistisches NFS einrichten

Die obigen Schritte sind sehr umfassend. Die Mindestanzahl der Schritte, die zum Einrichten von NFS erforderlich sind, ist hier aufgeführt:

http://www.ubuntuforums.org/showthread.php?t=249889

Verwenden von Gruppen mit NFS-Freigaben

Beachten Sie bei der Verwendung von Gruppen mit NFS-Freigaben (NFSv2 oder NFSv3), dass dies möglicherweise nicht funktioniert, wenn ein Benutzer Mitglied von mehr als 16 Gruppen ist. Dies ist auf Einschränkungen im NFS-Protokoll zurückzuführen., Weitere Informationen finden Sie im Launchpad („Berechtigung verweigert, wenn der Benutzer zu einer Gruppe gehört, die über nfs gemountete gruppenbeschreibbare oder SETGID-Verzeichnisse besitzt“) und in diesem Artikel: „Was ist mit der Einschränkung der 16 Gruppen-ID in NFS?“

IPSec Notes

Wenn Sie IPSec verwenden, führt die Standardabschaltreihenfolge in Breezy / Dapper dazu, dass der Client beim Herunterfahren hängen bleibt, da IPSec vor NFS ausfällt., Um dies zu beheben, führen Sie Folgendes aus:

sudo update-rc.d -f setkey removesudo update-rc.d setkey start 37 0 6 S .

Hier wurde ein Fehler behoben: https://launchpad.net/distros/ubuntu/+source/ipsec-tools/+bug/37536

Fehlerbehebung

Das Mounten von NFS-Freigaben in encrypted home funktioniert beim Booten nicht

Das Mounten einer NFS-Freigabe in ein verschlüsseltes Home-Verzeichnis funktioniert nur, nachdem Sie erfolgreich angemeldet sind und Ihr home entschlüsselt wurde. Dies bedeutet, dass die Verwendung von /etc/fstab zum Mounten von NFS – Freigaben beim Booten nicht funktioniert-da Ihr Home zum Zeitpunkt der Mountung nicht entschlüsselt wurde., Es gibt eine einfache Möglichkeit, dies mithilfe symbolischer Links zu umgehen:

  • Erstellen Sie ein alternatives Verzeichnis zum Mounten der NFS-Freigaben in:
$ sudo mkdir /nfs$ sudo mkdir /nfs/music
  • Bearbeiten Sie /etc/fstab, um die NFS-Freigabe stattdessen in dieses Verzeichnis zu mounten:

nfsServer:music /nfs/music nfs auto 0 0

  • Erstellen Sie einen symbolischen Link in Ihrem Haus, der auf den tatsächlichen Mount-Speicherort verweist (in unserem Fall löschen Sie zuerst das dort bereits vorhandene ‚Music‘ – Verzeichnis):
$ rmdir /home/user/Music$ ln -s /nfs/music/ /home/user/Music