Dateifreigaben von und für Linux Systeme über NFS
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.
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.
3 Antworten
[…] 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 […]
[…] mit allen Videos zu erstellen. Ich habe Ihnen in vergangenen Blog-Posts bereits gezeigt, wie Sie NFS- oder Samba-Freigaben […]
[…] ein Linux-Server ist, können Sie auch eine NFS-Freigabe einrichten und darauf zugreifen, wie hier schonmal […]