haneWIN NFS Server
Version 1.2

Copyright 2002-2018, Herbert Hanewinkel, Neuried

Aktualisiert: für 1.2.31 Mai 2018

Übersicht
Installation
Implementierung
Benutzung
Implementierung
Verfügbarkeit

Übersicht

Die Software implementiert einen NFS Server nach RFC 1813 (NFS 3 Protokoll), RFC 1094 (NFS 2 Protokoll), RFC 2055 (WebNFS Protokoll) und NLM nach der XNFS Spezifikation.
Ein SunRPC PortMap Daemon nach RFC 1057 ist als unabhäniger Dienst realisiert, so dass der NFS Server auch mit einem vorhandenen PortMapper eingesetzt werden kann.

Der NFS Server ist als Dienst für Windows XP/Vista/20xx/7/8/10 implementiert. Der NFS Server kann über ein Kontrollfeld der Systemsteuerung überwacht werden.
Der NFS Server kann alternativ auch als Anwendung mit integriertem PortMap Daemon eingesetzt werden.

Sowohl Dienst als auch Anwendung sind als 32- und 64-Bit Version implementiert.

Ziel der Implementierung ist nicht eine alternative Vernetzungsmöglichkeit von Windows-Rechnern, sondern Unix-Systemen mit Standardkonfiguration einen Zugriff auf Festplatten unter Windows zu erlauben. (Auslagerung, Weiterverarbeitung von Daten, die auf dedizierten Unix-Systemen erfasst wurden, u.s.w.).

Da der Server Hardlinks, Softlinks und Geräte unterstützt, kann er zum Ausführen laufwerkloser Unix-Clients von einem Windows System verwendet werden.


Installation

Voraussetzungen

Computer mit Windows XP/Vista/20xx/7/8/10. Die Implementierung des NFS Servers als Anwendung kann auch unter Windows 9x/ME eingesetzt werden.

Installation der NFS Servers unter Windows XP/Vista/20xx/7/8/10
  1. Installieren Sie die Software über das Setup Programm.
  2. Legen Sie für den PortMap Daemon und den NFS Server eine Firewallregel an. Ein Beispiel dazu finden Sie in der Datei firewall.bat
  3. Über das Kontrollfeld NFS Server kann der NFS Server Dienst konfiguriert und kontrolliert werden. Änderungen der Einstellungen können im Kontrollfeld nur mit Administratorrechten durchgeführt werden. Konfigurationsänderungen werden nach einem Neustart des NFS Server Dienstes &uumlbernommen.
  4. Erstellen Sie eine exports-Datei (Format wie unter Unix, Anmerkungen dazu im nächsten Abschnitt) mit den Verzeichnisbäumen, die über NFS zugänglich gemacht werden sollen.
  5. Starten Sie über das Startmenü NFS Server Dienst installieren
Installation der NFS Servers unter Windows 9x/ME
  1. Installieren Sie die Software über das Setup Programm.
  2. Starten Sie über das Startmenü den NFS Server.
  3. Erstellen Sie eine exports-Datei (Format wie unter Unix, Anmerkungen dazu im nächsten Abschnitt) mit den Verzeichnisbäumen, die über NFS zugänglich gemacht werden sollen.
  4. Beenden Sie den NFS Server und starten Sie den Server erneut, damit die modifizierte exports-Datei geladen wird.

Implementierung

NFS erfordert die Nummerierung von Dateien über sogenannte Inodes, wie es bei den Unix-Filesystemen üblich ist. Entsprechende Inodes werden in einer Datei inodes.nfs (im NFS-Server Programmverzeichnis) für alle Windows-Dateien erzeugt und verwaltet. Je nach Festplattegösse kann die Datei auf mehrere MBytes anwachsen.

Auf NTFS Dateisystemen kann ab Windows 7 die sogenannte "file-id" als Inode verwendet werden. Da diese IDs nur auf einem bestimmten Volume gültig sind, schlägt der Zugriff auf Unterordner fehl, die als reparse-point junctions anderer Volumes bereitgestellt wurden. Für die Verwendung der "file-id" muss deshalb jedes Volume vom Server separat exportiert werden.

Auf FAT / FAT32-Volumes, SMB-Volumes oder anderen Laufwerken wird die implementierte Inode-Tabelle verwendet.

WebNFS bietet eine alternative Zugriffsmethode zum mount Protokoll an. Der Server bietet dazu zwei Startvarianten:
- Um ein erstes Dateihandle anzufordern kann ein Client einen Pfad aus der exports-Datei als Mehrkomponentenstartpfad angeben.
- Wenn die Option -public für einen exports Eintrag angegeben wurde, ist der WebNFS-Zugriff auf diesen Eintrag in der exports-Datei beschränkt und der Mehrkomponentenpfad muss ein Unterverzeichnis dieses Eintrages sein.

Zur Vereinfachung enthält der Server keine Benutzerabbildung zwischen Windows Benutzernamen und Unix UIDs und verwendet kein ACL's für die Abbildung der Zugriffsrechte.

Der aktuelle Unix-Benutzer wird als Besitzer der Windows-Dateien zurückgegeben. Besitzerzugriffsrechte werden basierend auf den Windows-Attributen readonly und hidden gesetzt.
Unter Unix ausführbare Dateien werden vom NFS-Server im Windows Dateisystem durch das hidden-Attribut gekennzeichnet. Für Unix-Gruppen- und Weltzugriffsrechte wird eine Standardmaske von 022 auf die Zugriffsrechte des Besitzers angewendet. Die Maske kann pro Dateisystem mit der Option -umask in der exports Datei konfiguriert werden.

Spezielle Dateien und Eigenschaften, wie Unix-Softlinks und SUID-Bit, werden vom NFS-Server im Windows Dateisystem durch das system -Attribut gekennzeichnet. Unter Windows 7 und höher kann der Server NTFS hard-links und reparse points verwenden, um hard-links und symbolische Links für Unix zu implementieren.

Die exports-Datei folgt dem Unix-Format. Pfadangaben müssen in Windows Notation mit einem Laufwerksbuchstaben oder eine Volume Spezifikation beginnen, z.B.

C:\unix
\\?\Volume{6ca75309-178c-11e6-b0b3-806e6f6e6963}

SMB-Freigaben können ebenfalls vom NFS-Server exportiert werden. Diese Verzeichnisse MÜSSEN die UNC-Pfadangabe in der exports Datei verwenden, da Laufwerksbuchstaben nur auf Benutzerebene verfügbar sind.

Es gibt die folgenden Optionen:
-name:<sharename> weist dem exportierten Pfad einen Namen zu über den ein mount erfolgen kann.
-alldirs erlaubt den Klienten ein beliebiges Verzeichnis innerhalb des Dateisystems zu mounten.
-umask:<mask> legt die Zugriffsmaske für group und world auf dem Dateisystem fest, Voreinstellung 022
-readonly nur Lesen
-public Zugriff über WebNFS Protokoll.
-lowercase alle Dateinamen werden auf Kleinbuchstaben umgesetzt.
-exec bei allen Dateien wird das x Bit in den Zugriffsrechten gesetzt.
-mapall:<uid>[:<gid>] alle Unix Benutzer und Gruppenkennungen werden auf die angegebene Benutzerkennung &ltuid> und Gruppenkennung <gid> abgebildet.
-maproot:<uid>[:<gid>] Zugriffe von der priviligierten Unix Benutzerkennung root werden auf die angegebene Benutzerkennung &ltuid> und Gruppenkennung <gid> abgebildet. Ohne eine eingetragene Abbildung wird die Benutzerkeunng root immer auf den Benutzer NOBODY abgebildet.
-range fasst die nachfolgenden IP-Adressen als von-bis Adresspaare auf und erlaubt allen Klienten in diesem Bereich Zugang (flexibler als die Unix -net Option).

Ein Pfadname der Leerzeichen enthält muss in Anführungszeichen gesetzt werden.
z.B. c:"\Eigene Dateien" ...

Ein Verzeichnis kann mehrfach aufgeführt werden und verschiedenen Klienten unterschiedliche Rechte gewähren.

Auf Klientseite ist beim mount-Befehl auch für Laufwerke die Unix-Notation zu verwenden:
C: --> /c
D:\nfs --> /d/nfs
z.B.: Windows Verzeichnis D:\nfs unter /mnt/nfs mounten.
mount -t nfs 192.168.1.4:/d/nfs /mnt/nfs

Ein mount von SMB Netzwerklaufwerken erfolgt unter Unix mit der Notation:
\\server\share --> //server/share
z.B.: Windows Verzeichnis \\amilo\nfs unter /mnt/nfs mounten.
mount -t nfs 192.168.1.4://amilo/nfs /mnt/nfs

Mit der -name Option kann dem Windowsverzeichnis ein alternativer Name zugewiesen werden.
z.B.: Windows Verzeichnis D:\EigeneDateien\musik\mp3 wird mit der Option -name:mp3 exportiert.
Ein mount kann dann unter Unix statt über
mount -t nfs 192.168.1.4:/d/EigeneDateien/musik/mp3 ...
einfach über
mount -t nfs 192.168.1.4:/mp3 ...
erfolgen. Der Pfad zum Windowsverzeichnis bleibt damit unsichtbar für die Unix-Benutzer.


Benutzung

Die InfoBox wird nur beim Start des Kontrollfeldes der nicht registrierten Version angezeigt.

Einsatz des Servers als Dienst unter Windows XP/Vista/20xx/7/8/10

PortMap Daemon und NFS Server sind als Dienst implementiert. Die Startmenüeinträge zur Installation und zur Entfernung der Dienste sind Verweise auf die folgenden Befehle:
  1. Der PortMap Daemon wird mit dem Befehl
    PMAPD -install
    installiert und wird dann automatisch gestartet. Über das Kontrollfeld Dienste kann der Dienst jederzeit gestoppt und neu gestartet werden.
  2. Der NFS Server Dienst wird mit dem Befehl
    NFSD -install PMAPDaemon
    installiert und wird dann automatisch gestartet. Der NFS Server kann nur gestartet werden, wenn ein PortMap Daemon aktiv ist. Mit diesem Befehl wird deshalb überprüft ob der Dienst PMAPDaemon aktiv ist. Wenn ein PortMap Daemon eines anderen Herstellers eingesetzt wird, ist der Dienstnamen dieses PortMap Daemons anzugeben. Ohne Angabe eines Dienstnamens wird keine Abhängigkeitsüberprüfung durchgeführt. Über das Kontrollfeld Dienste kann der Dienst jederzeit gestoppt und neu gestartet werden.
  3. Mit den Befehl
    PMAPD -remove
    bzw.
    NFSD -remove
    wird der PortMap Daemon oder der NFS Server Dienst beendet und entfernt.

Einsatz des Servers als Anwendung

Mit den Befehl
nfssrv
wird der NFS Server als Anwendung gestartet. Über ein Icon im System-Tray kann der Server konfiguriert und beendet werden. Änderungen der exports-Datei oder von Server Ports werden erst nach einem Neustart des Server aktiv.

Das NFS Server Kontrollfeld

NFS

Hilfe
startet den HTML-Browser mit der Dokumentation.

Registrieren
über diesen Dialog wird die Software registriert. Geben Sie bitte dort den Lizenzschlüssel und die Lizenzkennung ein. Nach erfolgreicher Registrierung wird unter Hilfe-Info die Lizenzkennung angezeigt.

Über...
zeigt Version und Urheberrecht an.

Der Betrieb des Servers kann auf TCP oder UDP, in der Version 2 und/oder 3 und auch auf alternativen Ports erfolgen. Wird NFS-2 deaktiviert gilt dies auch für mount version1 und NLM version 1. Wird NFS-3 deaktiviert gilt dies auch für mount version 3 und NLM version 4. Wird UDP oder TCP deaktiviert gilt dies auch für mount und NLM.

Der NFS Server arbeitet Multithreaded. Für TCP Zugriffe wird pro Klient ein Thread erzeugt. Bei UDP Zugriffen wird die vorgegebene Anzahl von Threads zur Bearbeitung der Anfragen gestartet.

Die NFS Blockgrösse legt die maximale Paketgrösse über UDP fest. Bei mehr als 1460 Bytes werden Pakete über Ethernet fragmentiert. Die Fragmente können ohne Bestätigung übertragen werden, bei einem Fragmentverlust muss aber das komplette Paket neu übertragen werden.

Asynchrones Schreiben bei NFS-2: Der Server wartet mit der Bestätigung NICHT bis die Daten abgespeichert wurden. Dies entspricht NFS-3 mit write Option UNSTABLE.

Synchrones Schreiben bei NFS-3: Der Server wartet mit der Bestätigung immer bis die Daten abgespeichert wurden und bestätigt dies mit FILE_SYNC. Dies entspricht dem Verhalten von NFS-2.

Server

Auf nativen NTFS Dateisystemen kann die sogenannte "file-id" als Inode ab Windows 7 verwendet werden. In diesem Fall wird keine Information in der "inodes.nfs" Datei gespeichert.

Der Server unterstützt verschiedene Zeichensätze: ASCII, Windows ANSI, UTF-8 Für Linux Klienten ist mittlerweile UTF-8 die beste Wahl.

Standardrechte bei Dateierstellung ohne Zugriffrechte anlegen: Linux Klienten können Dateien ohne jegliche Zugriffrechte anlegen beschreiben. Unter Windows wird die Datei zwar erstellt es ist aber kein Schreibzugriff auf die Datei möglich. Mit dieser Option werden in diesem Fall die Standardeinstellungen bei der Dateierstellung verwendet.

Exporte

zeigt die aktuell vom Server exportierten Verzeichnisse an und erlaubt das Bearbeiten der exports-Datei. Freigegebene Verzeichnisse werden wie unter Unix in einer exports-Datei gespeichert.

Normalerweise sind die exports Einträge auf allen Klienten sichtbar. Zur Verbesserung der Sicherheit kann dies auf die erlaubten Klienten eingeschänkt werden.

Für ausführbare Dateien wird das hidden-Attribut verwendet. Je nach Windows Einstellung sind die Dateien damit unter Windows nicht sichtbar. Falls dies unerwünscht ist, kann die Verwendung des hidden-Attributes ausgeschlossen werden. Dazu kann entweder  für  einzelne Einträge in der exports Datei die -exec Option  verwendet werden oder für alle Einträge die zweite Option gesetzt werden.

Normalerweise wird der Benutzer "root" (uid 0) auf die Zugriffrechte des Benutzers NOBODY gesetzt. Über die Option -maproot:0 kann dies für einen Eintrag in der exports Datei geändert werden. Zur Vereinfachung kann dies für alle Einträge über dritte Option erfolgen.

Anmeldungen

zeigt die derzeit angemeldeten Klienten an.

Damit die Anmeldungen bei einem Neustart des Server erhalten bleiben werden die Einträge in der Datei mounttab gespeichert. Dies kann allerdings dazu führen das Klienten die sich nicht abmelden selbst nach Beendigung und nach einem Neustart des Servers immer noch als angemeldet angezeigt werden.

Portmapper

zeigt die unter dem SunRPC PortMapper registrieren Programme an.


Verfügbarkeit

Die jeweils aktuelle Version des NFS Servers ist unter www.hanewin.net zu finden. Bei Fragen, Problemen oder Anregungen verwenden Sie bitte unser Kontaktformular.