Letzte Änderung: 07. August 2023

NFS


NFS Installieren : Fedora/Centos : dnf -y install nfs-utils ------------------------------------------------------------------------------------------- Auf dem Client muss NFS im Kernel sein und auch geladen sein ... Überprüfen mit : modprobe nfs Die Dienste portmap und nfs sollten laufen :-) Alles klar und keine Fehlermeldung ... dann weiter ... Du gibst dann Verzeichnisse mit Hilfe der Datei /etc/exports frei, dort kannst du auch lese-schreibrechte vergeben, oder auch nur für einzelne hosts freigeben. -> root@sonne> vim /etc/exports Wir nehmen an, dass /home auf einer eigenen Partition liegt, sodass sich die Prüfung, ob eine Datei innerhalb des exportierten Verzeichnisses liegt, erübrigt. Dass Benutzer innerhalb ihrer Heimatverzeichnisse auch Schreibrechte erhalten sollten, ist verständlich. Da unsere Netzwerk als sichere Zone anzusehen ist, verzichten wir auf die Einschränkung der zulässigen Portnummern: /home *.galaxis.de(rw,no_subtree_check,insecure) oder /home 192.168.0.10(rw,no_subtree_check,insecure) oder /home/username/ *(rw,all_squash,sync,anonuid=500,anongid=500) ACHTUNG DURCH WIRELESS ROUTER BENÖTIGT MAN DIE OPTION INSECURE !!! Sonst bekommt man in den Server Logs oft mal "illegal Port" errors. beim letzteren werden neue Files mit der Userid 500 (also User blabla) versehen. mit dem Befehl id kann man sich die ID des Users anzeigen lassen ... Nach Änderungen der /etc/exports muss man dies dem NFS Server anzeigen. Dies macht man mit : exportfs -rav Überprüfen mit dem Befel showmount. Das Kommando showmount dient zur Abfrage eines Servers. Werden, abgesehen vom Servernamen, keine weiteren Optionen angegeben, so werden die aktuell zum Server verbundenen Clients aufgelistet. showmount -a 192.168.0.10 Hat alles geklappt ? sehen wir die Freigabe ? Alles klar ... Kommt sowas : RPC: Program Not Registered: (or another "RPC" error) läuft auf der Gegenseite kein NFS Server ... Dann jetzt noch die Freigabe per Hand oder fstab mounten : Achtung : mount /mnt/webserver würde leider nicht funktionieren !!! Es geht so : mount -t nfs 192.168.0.1:/pfad/zu/dem/share /pfad/zu/dem/mountpoint z.B. mount -t nfs 192.168.0.1:/home /mnt/webserver/home oder in der fstab: # NFS-Einträge sonne:/home /mnt/webserver/home nfs bg,soft,intr,retry=5 0 0 192.168.0.10:/home /mnt/webserver/home nfs soft,intr 0 0 -------------------------------------------------------------------------------- Beispiel 2 : /usr/share *.galaxis.de(ro,all_squash) Mit der Option all_squash werden alle User zu "nobody" Wie der Name schon sagt, sind Daten unter /usr/share geeignet, um an zentraler Stelle für verschiedene Clients bereit gestellt zu werden. Kein Client muss diese Daten # verändern können, deshalb setzen wir gleich die Benutzerkennungen auf den sehr restriktiven Zugang nobody. Das Kommando showmount dient zur Abfrage eines Servers. Werden, abgesehen vom Servernamen, keine weiteren Optionen angegeben, so werden die aktuell zum Server verbundenen Clients aufgelistet: user@venus> showmount sonne.galaxis.de All mount points on sonne.galaxis.de: erde.galaxis.de vernus.galaxis.de mount -t nfs 192.168.0.1:/pfad/zu/dem/share /pfad/zu/dem/mountpoint oder in der fstab: # NFS-Einträge sonne:/home /home nfs bg,soft,intr,retry=5 0 0 192.168.0.10:/usr/share /usr/share nfs defaults 0 0 zusätzliche Konfs : Zur Sicherheit, Hosts verbieten bezw. gezielt zulassen. root@sonne> vi /etc/hosts.deny # Alles verbieten ALL : ALL root@sonne> vi /etc/hosts.allow # Alle für NFS notwendigen Dienste für die lokale Domain freigeben: portmap : 192.168.100.0/255.255.255.0 mountd : 192.168.100.0/255.255.255.0 lockd : 192.168.100.0/255.255.255.0 statd : 192.168.100.0/255.255.255.0 rquotad : 192.168.100.0/255.255.255.0 -------------------------------------------------------------------------------- exports (Optionen) * secure = NFS Anfragen müssen von einem Port kleiner als 1024 stammem * insecure = NFS Anfragen können von einem Port grösser als 1024 stammem * ro = read only * rw = read write * link_relative = Wandelt absolute symbolische Links in relative Links um. * link_absolute = Läßt alle symbolischen Links so wie sie sind * sync = sofortiges Synchronisieren (keine Schreibverzögerung) * no_wdelay = das gleiche wie sync * async = asyncron speichern * root_squash = User-ID 0 wird in als anonym behandelt. (im Normalfall nfsnobody) * no_root_squash = User-ID 0 wird beibehalten * squash_uids = User-IDs werden in anonyme umgewandelt * squash_gids = Gruppen-IDs werden in anonyme umgewandelt * all_squash = Wandelt alle User-IDs und Gruppen-ID's zu anonymen um. * map_daemon = Diese Option schaltet die dynamische User- und Gruppen-ID-Umwandlung ber den rpc.rusersd ein. * anonuid = Setzt die User-ID fr den anonymen User * anongid = Setzt die Gruppen-ID fr die anonymen Gruppen. -------------------------------------------------------------------------------- exports Optionen : secure, insecure Client-Anfragen werden nur von vertrauenswürdigen Ports (Portnummern unterhalb 1024) akzeptiert (secure, Voreinstellung); mit insecure werden auf Anfragen an höhere Ports akzeptiert ro, rw Das Verzeichnis wird schreibgeschützt (read only, Voreinstellung) bzw. mit vollen Lese- und Schreibrechten für den Client (read/write) exportiert sync, async Der Server darf den Vollzug eines Schreibvorgang dem Client erst melden, wenn die Daten tatsächlich auf die Platte geschrieben wurden (Ausschalten des Plattencaches). Die Voreinstellung ist async. wdelay, no_wdelay Die Option wird nur in Zusammenhang mit sync beachtet und erlaubt dem Server die Bestätigung eines Schreibvorgangs zu verzögern, falls mehrere Schreibvorgänge von einem Client zur gleichen Zeit im Gange sind. Anstatt jeden zu bestätigen, sendet der Server nur eine einzige Antwort nach Vollzug aller Schreiboperationen (betrifft wdelay, Voreinstellung). hide, nohide Exportiert der Server ein Verzeichnis, in dem wiederum ein anderes Dateisystem gemeountet ist, so wird dieses nicht an einen Client exportiert (hide, Voreinstellung); die nohide-Option (also den impliziten Export) funktioniert jedoch nur, wenn es sich bei der Clientangabe um einen Rechnernamen (keine Wildcards, IP-Netzwerke und Netzgruppen!) handelt. subtree_check, no_subtree_check Werden nur Teile eines Dateisystems vom Server exportiert, so muss der Server prfen, dass Zugriffe nur auf Dateien erfolgen, die innerhalb dieses Teilbaums liegen (subtree_check, Voreinstellung). Dies erhöht zwar die Sicherheit allerdings auf Kosten der Geschwindigkeit, sodass die Prüfung mit no_subtree_check abgeschalten werden kann. root_squash, no_root_squash Root erhält die UserID des Pseudobenutzers nobody, womit der Root-Benutzer des Client-Rechners keine Root-Rechte auf dem vom Server importierten Verzeichnis erhöt (Voreinstellung); mit no_root_squash bleiben die Root-Rechte auf Clientseite auf dem Verzeichnis erhalten. all_squash, no_all_squash Wandelt alle User-IDs und Gruppen-ID's zu anonymen um. anongid=gid Setzt die Gruppen-ID für die anonymen Gruppen. anonuid=uid Setzt die User-ID für den anonymen User -------------------------------------------------------------------------------- Mount Optionen : Eine vollständige Liste aller gültigen Optionen ist in der Manpage nfs(5) beschrieben. Nachfolgend ein Teil der Optionen, die Sie möglicherweise verwenden möchten: rsize=n und wsize=n Bestimmt die bei Schreib- bzw. Leseanforderungen von NFS-Clients verwendete Datagrammgröße. Die Standardgröße hängt von der verwendeten Kernel-Version ab, ist aber normalerweise auf 1.024 Byte voreingestellt. timeo=n Bestimmt die Zeit (in Zehntelsekunden), die ein NFS-Client auf den Abschluß einer Anforderung wartet. Der voreingestellte Wert ist 7 (0,7 Sekunden). Was nach einem Timeout passiert, hängt davon ab, ob Sie die Option hard oder soft verwenden. hard Markiert dieses Volume explizit als hart gemountet (das ist die Voreinstellung). Mit dieser Option gibt der Server bei einem längeren Timeout eine Fehlermeldung auf die Konsole aus und setzt die Verbindungsversuche endlos fort. soft Weiches Mounten des Verzeichnisses (im Gegensatz zu hartem Mounten). Diese Option führt bei einem längeren Timeout zu einer Ein-/Ausgabe-Fehlermeldung an den Prozeß, der eine Dateioperation durchzuführen versucht. intr Ermöglicht die Unterbrechung von NFS-Aufrufen über Signale. Nützlich, wenn ein Server nicht antwortet und der Client abgebrochen werden muß.