NFS auf Ubuntu 8.04

Aus Howtos und Gedankenstuetzen

Wechseln zu: Navigation, Suche

Inhaltsverzeichnis

Voraussetzungen für NFS

  • alle Benutzer im Netzwerk eindeutige UIDs haben
  • alle Rechner im Netzwerk zentral administriert werden können

Installation auf NFS

  • Sever
apt-get install nfs-kernel-server
  • Client
apt-get install nfs-common

evt. auch noch portmapper installieren muss aber nicht sein.

Freigaben auf dem Server erstellen

Dazu werden diese in der /etc/exports vermerkt. Und zwar nach folgendem Schema <pfad> <computername> (<optionen>)

nano /etc/exports

Nur mit Leserechten

/pfad/freigabe1      192.168.1.13(ro,sync)

Mit Lese-und Schreibrechten für ein Netzwerk

/pfad/zur/freigabe3       192.168.1.0/255.255.255.0(rw,async)

Wenn man mit Rechnernamen arbeitet müssen diese in der /etc/hosts eingetragen sein.


Parameter

rw = Lesen und Schreiben

ro = nur Lesen

async = Asynchroner Datentransfer

insecure = Ports oberhalb 1024 auch verwenden

no_root_admin = hilf bei Fehlermeldungen wegen Rechte Problemen auf dem NFS Server (nobody)

ACHTUNG!

insecure sollte nur verwendet werden, wenn es unbedingt notwendig ist! Da dann auch die unsicheren Ports verwendet werden. Leider verwendet das OSX von Apple diese Ports für NFS-Verbindungen. Ein aktueller Apple Computer kann sich nur dann mit dem NFS-Server verbinden, wenn die Option insecure gesetzt ist.

Freigaben veröffentlichen

Nun muss dem NFS-Server im Terminal nur noch gesagt werden, die exports neu einzulesen.

exportfs -ra 

oder

/etc/init.d/nfs-kernel-server restart 

Die eventuell auftauchende Warnung "exportfs: No options for..." kann ignoriert werden.


Zugriffskontrolle

Der NFS-Server beachtet die Zugriffsbeschränkungen, die durch die Dateien /etc/hosts.allow und /etc/hosts.deny beschrieben werden. Falls man diese Art der Zugriffskontrolle (zusätzlich zu der aus /etc/exports) verwenden will, sind folgende Einträge vorzunehmen:

In der /etc/hosts.deny

ALL:ALL

In der /etc/hosts.allow

portmap: 192.168.0.0/24
lockd: 192.168.0.0/24
mountd: 192.168.0.0/24
statd: 192.168.0.0/24
sshd: 192.168.0.0/24

Man kann natürlich auch einzelne Ipaddressen angeben. Zu beachten ist, dass für diese Dienste nur IP-Adressen in den hosts_access-Dateien funktionieren, keine Domainnamen.

Auf Freigabe zugreifen

cd /home
mkdir backup
mount 192.168.0.13:/home /home/backup

Das kann natürlich auch per Shellscript automatisiert werden. Oder aber mit Root Rechten in die /etc/fstab eingetragen werden.

nano /etc/fstab
192.168.0.13:/home /home/backup nfs rw 0 0
Parameter

ro = Leserechte

rw = Lese- und Schreibrechte

hard = Bei Unterbrechungen ohne Timeout warten bis der Server wieder normal erreichbar ist

soft = Bei Unterbrechungen sofort einen Timeout machen

bg = Bei einem Timeout, wird der mount im Hintergrund weiter versucht.

intr = Erlaubt einem wartenden Programm bei Bedarf dennoch zu unterbrechen/killen

nolock = Deaktiviert das Sperren von Dateien. Wird gelegentlich für die Verbindung zu alten NFS-Servern benötigt

Achtung

Portmap öffnet seinen Port standardmäßig an allen Netzwerkschnittstellen, was auf einem Client-Rechner nicht unbedingt erwünscht ist. Man kann das ändern, indem man einfach folgenden Befehl ausführt und die Frage, ob Portmap nur an localhost gebunden werden soll, mit einem JA beantwortet. Damit ist der Port von anderen Rechnern nicht mehr erreichbar.

dpkg-reconfigure portmap

Problembehebung

Sollten beim Zugriff auf NFS-Freigaben Probleme auftreten (z.B. Fehlermeldungen der Art "Permission denied", kein Schreibzugriff, scheinbar leere Ordner oder ähnliches), so hängt dies sehr häufig mit mangelnden bzw. fehlerhaft vergebenen Rechten im eingebundenen (entfernten) Dateisystem zusammen.

Unable to mount filesystem

  • Die /etc/exports prüfen, da wenn eine Freigabe nur mit Leserechten freigegeben ist diese auch nur mit der Option (ro) gemountet werden kann.
  • Sicherstellen, das die Freigaben auch exportiert worden sind. exportfs -ra

RPC: Program Not Registered

  • bedeutet, das der Client den NFS Dienst auf dem Server ansprechen kann.
  • prüfen ob NFS auf dem Server läuft rpcinfo -p Das sollte folgende Ausgabe liefern
   program vers proto   port
   100000    2   tcp    111  portmapper
   100000    2   udp    111  portmapper
   100011    1   udp    749  rquotad
   100011    2   udp    749  rquotad
   100005    1   udp    759  mountd
   100005    1   tcp    761  mountd
   100005    2   udp    764  mountd
   100005    2   tcp    766  mountd
   100005    3   udp    769  mountd
   100005    3   tcp    771  mountd
   100003    2   udp   2049  nfs
   100003    3   udp   2049  nfs
   300019    1   tcp    830  amd
   300019    1   udp    831  amd
   100024    1   udp    944  status
   100024    1   tcp    946  status
   100021    1   udp   1042  nlockmgr
   100021    3   udp   1042  nlockmgr
   100021    4   udp   1042  nlockmgr
   100021    1   tcp   1629  nlockmgr
  • hier hilft meistens mehrfaches Neustarten und evt. den Prozess richtig zu killen


   100021    3   tcp   1629  nlockmgr
   100021    4   tcp   1629  nlockmgr