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ß.