Dateifreigaben von und für Linux Systeme über NFS

(Last Updated On: 30. November 2015)

Eigentlich ist die bevorzugte Methode, um Dateien über ein lokales Netzwerk freizugeben, eine SMB-Freigabe, die entweder über die Netzwerkfreigabefunktion von Windows-Betriebssystemen oder über einen Samba-Server unter Linux genutzt wird. Denn auf diese Art von Freigabe können sowohl Linux-, Mac OS X- als auch Windows-Clients zugreifen. Somit gibt es keine Probleme bei heterogenen Landschaften. Desweiteren ist der Zugriff auf eine SMB-Freigabe ziemlich einfach.

In seltenen Fällen jedoch, beispielsweise wenn Sie ausschließlich Linux- oder Unix-Systeme in Ihrem lokalen Netzwerk haben, oder wenn Sie etwa für die installation eines Linux-Betriebssystems eine .iso-Datei mit Softwarepaketen für den Installer zur Verfügung stellen wollen, sollten Sie eine NFS-Freigabe einrichten. In diesem Beitrag zeige ich Ihnen, wie Sie das im Klartext machen.

NFS funktionieert am besten, wenn alle User im Netzwerk eindeutige UIDs haben und alle Rechner im Netzwerk zentral administriert werden (Benutzerverwaltung). Das stellt man in der Regel mit LDAP oder NIS-Server sicher. Der Einfachheit halber genügt es aber erstmal, ohne einen solchen Server zu administrieren. NFS funktioniert trotzdem, kann jedoch nicht so detaillierte Rechte vergeben wie mit einer zentralen Benutzerverwaltung.

als erstes installieren wir NFS

sudo aptitude install nfs-kernel-server

Die Freigaben konfigurieren wir in der Datei /etc/exports. Dort konfigurieren wir Freigaben nach folgendem Schema

#<pfad> <computenrame/hostname>(<optionen>)
#beispiel: freigabe wird für zwei Benutzer #fr
eigegeben, dafrk darf nur lesen, mike darf #lesen und schrieben
/server1 dafrk(ro,async) mike(rw,async)

alternativ zu usernamen können Sie IP-Adressen angeben

/server1 192.168.0.2/255.255.255.0(rw,async)

oder Hostnamen

/server1 abusemyskill.local(rw,async)

Wenn ihr ein Verzeichnis für mehrere Hosts oder Benuzter gleichzeitig freigeben wollt, sieht das so aus

/directory machine1(option11,option12) machine2(option21,option22)

Ihr könnt natürlich auch einem ganzen Subnetz an IP-Adressen Zugriff auf eine Freigabe geben. Der folgende Eintrag beispielsweise gibt Zugriff auf den Ordner /usr/local für alle im Netz 192.168.0.xxx

 /usr/local 192.168.0.0/255.255.255.0(ro)

 

Die erlaubten Maschinen müssen dann noch in die Datei /etc/hosts.allow reingeschrieben werden.

nach Schreiben der konfiguration einfach den service neu starten

sudo exportfs -ra
#oder
sudo /etc/init.d/nfs-kernel-server restart

Auf einem beliebigen Linux/Unix-Client können Sie sich alle NFS-Shares anzeigen lassen, die ein NFS-Server zu bieten hat. Dazu müssen Sie erst das Paket nfs-common installieren.

apt-get install nfs-common

und danach können Sie sich die shares über showmount anzeigen lassen.

showmount -e <hostname>

auf den NFS share greifen sie dann zu, indem Sie ihn mounten. In der Kommandozeile eines beliebigen Linux/Unix-Clients würden Sie dazu eingeben

mount shadowman.example.com:/<pfad> <mountpoint>

Alternativ können Sie auch folgendermaßen mounten

mount -o tcp <hostname>:/<pfad> /<mountpoint>

Sie können den NFS-Share auch bei jedem Systemneustart automatisch über die Datei /etc/fstab mounten lassen:

server:/usr/local/pub    /pub   nfs    rsize=8192,wsize=8192,timeo=14,intr

Ich habe NFS z. B. gebraucht, weil mich Oracle Linux 7.0 nach einer Netzwerkfreigabe gefragt hat, in welcher die Installationsmedien für das Betriebssystem liegen, da diese im Boot-Image von Oracle Linux nicht mit dabei sind.

2015-07-19_23h12_30

Ich habe also ganz einfach die .iso-Datei der installationsmedien-DVD auf dem Server gemountet

mount -o loop disk1.iso /install

den Ordner /install für das gesamte lokale Netzwerk über NFS exportiert und habe dann darauf zugegriffen.

Nun befassen wir uns noch mit der thematik, NFS-Freigaben über das öffentliche Internet bzw. über eine Firewall hinweg freizugeben. Dazu muss es auf dem System rpcbind geben. Überprüfen könnt ihr das mit

which rpcbind

Dieses Tool ist dafür zuständig für die verschiedenen RPC Services, die für den Dateizugriff verwendet werden, Ports zuzuweisen. Wir müssen jetzt konfigurieren, auf welchen Ports diese SErvices laufen. Das geht in der Datei /etc/sysconfig/nfs. Existiert die Datie noch nicht, kann sie angelegt werden. Wir sezten folgende Einträge

MOUNTD_PORT=<port>
STATD_PORT=<port>
LOCKD_TCPPORT=<port>

eine komplette Beispielkonfiguration

RQUOTAD_PORT=875
LOCKD_TCPPORT=32803
LOCKD_UDPPORT=32769
MOUNTD_PORT=892
STATD_PORT=662

nach ändern der Ports NFS neu starten über

service nfs restart

Kommt NFS nicht hoch, deutet dies darauf hin, dass ihr oben Ports eingegeben habt, die bereits von anderen Awnendungen genutzt werden.

In der Firewall müsst ihr dann diese Ports freigeben und zusätzlich die folgenden:

  • 111 TCP/UDP: auf diese Ports horcht rpcbind
  • 2049 TCP/UDP: über diese Ports geschieht dann der NFS-Dateiaustausch

Jetzt müsst ihr wie oben geschildert die Freigbae nur noch für die entfernten Maschinen freigbeen. DAzu braucht ihr die IP-Adresse der Maschine, mit der diese auf euch zugreift. Auf dem client-REchner greift ihr über das Internet ja nicht mit uerer loklane IP (z. B. 192.168.0.20), sondern über eure öffentliche IP (z. B. 79.206.26.113) zu. Um diese rauszurkeigen, könnt ihr auf dem Client-Linux beispielswiese folgendes KOmmando absetzen

curl -s checkip.dyndns.org | sed -e 's/.*Current IP Address: //' -e 's/<.*$//'  

nun gebt ihr auf dem Server die Freigabe über die /etc/exports über die aus diesem Check herausgefundene IP-Adresse frei.

/server1 <öffentliche ip>(rw,async)

und die IP dann noch in die Datei /etc/hosts.allow eintragen.

portmap: <externe IP>
rpcbind: <extrene IP>
lockd:ALL
mountd:ALL
rquotad:ALL
statd:ALL

SErvice neu starten

sudo exportfs -ra
#oder
sudo /etc/init.d/nfs-kernel-server restart

 

Andreas Loibl ist SAP-Berater, Ethical Hacker und Online Marketing Manager und schreibt auf seinem Blog DaFRK Blog über verschiedene Themen in den Sektoren Projektmanagement, Informationstechnik, Persönlichkeitsentwicklung, Finanzen und Zeitmanagement.

DaFRK

Andreas Loibl ist SAP-Berater, Ethical Hacker und Online Marketing Manager und schreibt auf seinem Blog DaFRK Blog über verschiedene Themen in den Sektoren Projektmanagement, Informationstechnik, Persönlichkeitsentwicklung, Finanzen und Zeitmanagement.

Das könnte Dich auch interessieren …

3 Antworten

  1. 20. Juli 2015

    […] in eine FTP-, NFS-, HTTP- oder HTTPS-Freigabe. Das Einrichten einer NFS-Freigabe habe ich euch hier gezeigt. Die Dateifreigabe müsst ihr dann dem Installer nur noch als installationsquelle […]

  2. 3. August 2015

    […] mit allen Videos zu erstellen. Ich habe Ihnen in vergangenen Blog-Posts bereits gezeigt, wie Sie NFS- oder Samba-Freigaben […]

  3. 13. Januar 2016

    […] ein Linux-Server ist, können Sie auch eine NFS-Freigabe einrichten und darauf zugreifen, wie hier schonmal […]

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.