%
% nfsserver.tex
% Last Update: $Id$
%
%%%%%%%%%%%%%%%%%%%%%%%%%%% Kapitel Nfsserver %%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% Achtung: Dateien muessen mit latin1-Encoding gespeichert werden!
% Attention: Files must be saved using latin1 encoding!
%

\chapter{Das NFSserver-Paket}

\section{Die Einleitung}

    Dieser Paket erm"oglicht es Verzeichnisse freizugeben, sodass von anderen
    Rechnern auf diese zugegriffen werden kann. Verwendung findet hierbei das
    Network File System Protokoll, Version 3 oder Version 4 (nur bei \eisfair-1).


\section{Die Funktionen}

    Das NFSserver-Paket besteht aus folgenden Komponenten:

    \begin{itemize}
        \item NFS-Utils - stellt die rcp-Daemons zur Verf"ugung.\\
        (\url{http://nfs.sourceforge.net/})
    \end{itemize}


\section{Die Voraussetzungen}

    Ein lauff"ahiger \eisfair-Server ;-$)$


\section{Die Installation}

    Das NFSserver-Paket wird "uber das Setup-Men"u installiert. Wird eine
    "altere Paketversion vorgefunden, so wird diese deinstalliert bevor
    die neuen Programmdateien installiert werden. Nach dem Installieren
    der Programmdateien wird direkt der Konfigurations-Editor gestartet
    um die Konfiguration anzupassen. Nach Beendigung dieses Schrittes
    werden die Konfigurationsdateien generiert und alle ben"otigten
    Programme gestartet.


\section{Das Men"u im Setup-Programm}

    Das Men"u im Setup-Programm ist wie folgt aufgebaut:

    \begin{itemize}
        \item NFSserver administration
        \begin{itemize}
            \item View documentation: Anzeigen der Dokumentation
            \item Edit configuration: Bearbeiten der Konfiguration
            \item Advanced configuration file handling: Konfigurationen verwalten
            \item Show Status: Status des NFS-Server anzeigen
            \item Stop NFS server: NFS-Server beenden
            \item Start NFS server: NFS-Server starten
            \item Show list of NFS shares: NFS Freigaben anzeigen
            \item Show list of active NFS server mounts: Aktive NFS-Mounts anzeigen
            \item View log file: Logmeldungen anzeigen
            \item Return: Untermen"u verlassen
        \end{itemize}
    \end{itemize}

   Die Men"upunkte d"urften selbsterkl"arend sein, da sie keinerlei weitere
   Eingaben erwarten. Deshalb wird auf deren Funktion nicht weiter eingegangen.


\section{Die "Anderung der Konfiguration}

    Die Konfiguration kann "uber den Men"upunkt 'Edit configuration'
    ge"andert werden. Standardm"a"sig wird der Editor aufgerufen, der in der
    Environment-Konfiguration "uber die Variable 'EDITOR' festgelegt wurde.
    Nachdem der Editor beendet wurde wird abgefragt, ob die Konfiguration
    aktiviert werden soll. Wird dies best"atigt, werden "uber ein Skript die
    Anpassungen umgehend wirksam gemacht.


\section{Die Konfigurationsdatei}

    In der Konfigurationsdatei, die "uber das Men"u zug"anglich ist, sind
    folgende Parameter vorhanden; wer sie von Hand editieren will findet
    sie unter /etc/config.d/nfsserver.

\section{Die Parameter}

\begin{description}
%%  JED - show this description only in the help file
 %  \config{NFSSERVER\_DO\_DEBUG}{NFSSERVER\_DO\_DEBUG}{NFSSERVERDODEBUG}
 %      Optionaler Parameter: Um den Debug-Modus zu aktivieren muss diese
 %      Variable lediglich auf den Wert 'yes' gestellt werden. Die Einstellung
 %      'no' deaktiviert den Debug-Modus.
 %
 %      G"ultige Werte: yes, no
 %
 %      Standardeinstellung: \texttt{NFSSERVER\_DO\_DEBUG='no'}

    \config{START\_NFSSERVER}{START\_NFSSERVER}{STARTNFSSERVER}
        F"ur die Aktivierung des NFS-Servers muss dieser Parameter lediglich
        auf den Wert 'yes' gestellt werden. Die Einstellung 'no' deaktiviert
        den NFS-Server.

        G"ultige Werte: yes, no

        Standardeinstellung: \texttt{START\_NFSSERVER='no'}

    \config{NFSSERVER\_SUPPORT\_NFS3 (nur \eisfair-1)}{NFSSERVER\_SUPPORT\_NFS3}{NFSSERVERSUPPORTNFS3}
        Wird dieser Parameter auf den Wert 'yes' gesetzt, so wird die
        NFSv3-Unterst"utzung aktiviert, 'no' deaktiviert sie.

        G"ultige Werte: yes, no

        Standardeinstellung: \texttt{NFSSERVER\_SUPPORT\_NFS3='yes'}

    \config{NFSSERVER\_SUPPORT\_NFS4 (nur \eisfair-1)}{NFSSERVER\_SUPPORT\_NFS4}{NFSSERVERSUPPORTNFS4}
        Wird dieser Parameter auf den Wert 'yes' gesetzt, so wird die
        NFSv4-Unterst"utzung aktiviert, 'no' deaktiviert sie.

        G"ultige Werte: yes, no

        Standardeinstellung: \texttt{NFSSERVER\_SUPPORT\_NFS4='yes'}

    \config{NFSSERVER\_SHARE\_N}{NFSSERVER\_SHARE\_N}{NFSSERVERSHAREN}
        "Uber diesen Parameter wird die Anzahl der NFS-Freigaben festgelegt.

        G"ultige Werte: Zahl

        Standardeinstellung: \texttt{NFSSERVER\_SHARE\_N='0'}

    \config{NFSSERVER\_SHARE\_x\_ACTIVE}{NFSSERVER\_SHARE\_x\_ACTIVE}{NFSSERVERSHARExACTIVE}
        Wird dieser Parameter auf den Wert 'yes' gesetzt, so wird die
        zugeh"orige NFS-Freigabe aktiviert, 'no' deaktiviert sie.

        G"ultige Werte: yes, no

        Standardeinstellung: \texttt{NFSSERVER\_SHARE\_1\_ACTIVE='no'}

    \config{NFSSERVER\_SHARE\_x\_PATH}{NFSSERVER\_SHARE\_x\_PATH}{NFSSERVERSHARExPATH}
        "Uber diesen Parameter wird das Verzeichnis angegeben welches "uber
        eine NFS-Freigabe zur Verf"ugung gestellt werden soll.\\
        Nur f"ur \eisfair-1: Um das NFSv4-Stammfreigabeverzeichnis festzulegen
        muss der Wert dieses Parameters auf 'nfs4' gesetzt werden.

        G"ultige Werte: Pfadangabe oder 'nfs4' (nur \eisfair-1)

        Beispiel:

        \texttt{NFSSERVER\_SHARE\_1\_PATH='/public'}

    \config{NFSSERVER\_SHARE\_x\_NAME (nur \eisfair-1)}{NFSSERVER\_SHARE\_x\_NAME}{NFSSERVERSHARExNAME}
        "Uber diesen Parameter wird ein NFSv4-Freigabename festgelegt, "uber
        welchen auf die freigegebenen Daten zugegriffen werden kann.\\
        \achtung{F"ur NFSv3-Freigaben darf dieser Parameter nicht gesetzt
            werden und muss leer bleiben!}

        G"ultige Werte: Freigabename

        Standardeinstellung: \texttt{ NFSSERVER\_SHARE\_1\_NAME=$''$}

        Beispiel:

        \texttt{NFSSERVER\_SHARE\_1\_NAME='my-public-dir'}

    \config{NFSSERVER\_SHARE\_x\_HOSTS\_N}{NFSSERVER\_SHARE\_x\_HOSTS\_N}{NFSSERVERSHARExHOSTSN}
        "Uber diesen Parameter wird die Anzahl der individuell konfigurierten
        Hosts bzw. Netzwerke festgelegt.

        G"ultige Werte: Zahl

        Standardeinstellung: \texttt{NFSSERVER\_SHARE\_1\_HOSTS\_N='0'}

    \config{NFSSERVER\_SHARE\_x\_HOSTS\_x\_HOST}{NFSSERVER\_SHARE\_x\_HOSTS\_x\_HOST}{NFSSERVERSHARExHOSTSxHOST}
        "Uber diesen Parameter wird angegeben welcher Host bzw. aus welchem
        Netzwerk auf das "uber den Parameter \jump{NFSSERVERSHARExPATH}{NFSSERVER\_SHARE\_x\_PATH}
        freigegebene Verzeichnis zugegriffen werden darf.

        G"ultige Werte: IP-Adresse oder Netzwerkadresse

        Beispiel:

        \texttt{NFSSERVER\_SHARE\_1\_HOSTS\_N='2'\\
                NFSSERVER\_SHARE\_1\_HOSTS\_1\_HOST='192.168.6.10'\\
                NFSSERVER\_SHARE\_1\_HOSTS\_2\_HOST='192.168.7.0/24'}

    \config{NFSSERVER\_SHARE\_x\_HOSTS\_x\_RW}{NFSSERVER\_SHARE\_x\_HOSTS\_x\_RW}{NFSSERVERSHARExHOSTSxRW}
        Dieser Parameter legt fest, ob auf das angegebene Verzeichnis schreibend
        und lesend zugegriffen werden darf. Wird der Parameter auf 'no' gesetzt,
        so ist nur lesender Zugriff erlaubt.

        G"ultige Werte: yes, no

        Standardeinstellung: \texttt{NFSSERVER\_SHARE\_1\_HOSTS\_1\_RW='no'}

    \config{NFSSERVER\_SHARE\_x\_HOSTS\_x\_ANONUSER}{NFSSERVER\_SHARE\_x\_HOSTS\_x\_ANONUSER}{NFSSERVERSHARExHOSTSxANONUSER}
        "Uber diesen Parameter kann ein System-Accountname angegeben werden,
        mit dessen Zugriffsrechten auf das freigegebene Verzeichnis zugegriffen
        werden soll. Die individuellen Rechte des zugreifenden Anwenders werden
        damit "uberschrieben.

        G"ultige Werte: System-Accountname

        Standardeinstellung: \texttt{NFSSERVER\_SHARE\_1\_HOSTS\_1\_ANONUSER=$''$}

    \config{NFSSERVER\_SHARE\_x\_HOSTS\_x\_ANONGROUP}{NFSSERVER\_SHARE\_x\_HOSTS\_x\_ANONGROUP}{NFSSERVERSHARExHOSTSxANONGROUP}
        "Uber diesen Parameter kann ein System-Gruppenname angegeben werden,
        mit dessen Zugriffsrechten auf das freigegebene Verzeichnis zugegriffen
        werden soll. Die individuellen Rechte des zugreifenden Anwenders werden
        damit "uberschrieben.

        G"ultige Werte: System-Gruppenname

        Standardeinstellung: \texttt{NFSSERVER\_SHARE\_1\_HOSTS\_1\_ANONGROUP=$''$}

    \config{NFSSERVER\_SHARE\_x\_HOSTS\_x\_ROOT\_SQUASH}{NFSSERVER\_SHARE\_x\_HOSTS\_x\_ROOT\_SQUASH}{NFSSERVERSHARExHOSTSxROOTSQUASH}
        Normalerweise ist es nicht erw"unscht, dass ein root-Benutzer von einem
        Client-Rechner ebenfalls root-Rechte beim Zugriff auf das freigegebene
        Verzeichnis erh"alt. Standardm"a"sig werden deshalb die NFS-Zugriffe mit
        den Zugriffsrechten des nobody-Benutzer durchgef"uhrt. Wird dieser
        Parameter auf 'no' gesetzt, so wird diese Sicherheitsfunktion
        deaktiviert.

        G"ultige Werte: yes, no

        Standardeinstellung: \texttt{NFSSERVER\_SHARE\_1\_HOSTS\_1\_ROOT\_SQUASH='yes'}

    \config{NFSSERVER\_SHARE\_x\_HOSTS\_x\_ALL\_SQUASH}{NFSSERVER\_SHARE\_x\_HOSTS\_x\_ALL\_SQUASH}{NFSSERVERSHARExHOSTSxALLSQUASH}
        Normalerweise ist es erw"unscht, dass ein Benutzer von einem Client-Rechner
        mit seinen eigenen Zugriffsrechten auf das freigegebene Verzeichnis
        Zugriff erh"alt. Wird dieser Parameter auf 'yes' gesetzt, so wird diese
        Sicherheitsfunktion aktiviert und alle Zugriffe erfolgen mit den
        Zugriffsrechten des nobody-Benutzers.

        G"ultige Werte: yes, no

        Standardeinstellung: \texttt{NFSSERVER\_SHARE\_1\_HOSTS\_1\_ALL\_SQUASH='no'}

    \config{NFSSERVER\_SHARE\_x\_HOSTS\_x\_OPTION}{NFSSERVER\_SHARE\_x\_HOSTS\_x\_OPTION}{NFSSERVERSHARExHOSTSxOPTION}
        Optional: "Uber diesen Parameter k"onnen zus"atzliche Optionen
        angegeben werden, die beim das Verhalten einer Freigabe beeinflussen.
        Wird z.B. 'insecure' angegeben so werden auch NFS-Verbindungen
        auf Ports gr"o"ser als 1024 entgegen genommen (OSX verlangt dies z.B.)

        G"ultige Werte: Zul"assige Optionen durch Komma getrennt

        Beispiel: \texttt{NFSSERVER\_SHARE\_1\_HOSTS\_1\_OPTION='insecure'}
\end{description}

\section{Verschiedenes}

\begin{description}
    \config{NFS Version 4-Freigaben (nur \eisfair-1)}{NFS Version 4-Freigaben}{NFSVersion4-Freigaben}
        NFS Version 4-Verzeichnisfreigaben unterscheiden sich grunds"atzlich von den
        bisher bekannten NFS-Freigaben, da nun nicht mehr direkt Verzeichnisse f"ur
        den Zugriff freigegeben werden, sondern nur noch Verzeichnisse in einer
        virtuellen Verzeichnisstruktur. Die freizugebenden Verzeichnisse werden
        dazu vom NFSserver-Paket in diese Verzeichnisstruktur eingeh"angt.

        Beispiel:

        Es sollen die folgenden Verzeichnisse freigegeben werden:

\begin{verbatim}
/path/to/share-1
/path/to/share-2
\end{verbatim}

        Im ersten Schritt definiert man dazu die NFSv4-Stammfreigabe indem
        man \texttt{..\_PATH='nfs4'} und z.B. \texttt{..\_NAME='SHARE-NAME'}
        setzt. Der definierte Name 'SHARE-NAME' dient dabei einzig dem Anlegen
        der Verzeichnisstruktur und wird sp"ater nicht f"ur den NFS-Zugriff
        verwendet. Falls man also auf dieses Stammverzeichnis (root) mittels
        NFS zugreifen m"ochte, muss man die Angabe '/' verwenden.

        \texttt{NFSSERVER\_SUPPORT\_NFS4='yes'\\
                \\
                NFSSERVER\_SHARE\_1\_ACTIVE='yes'\\
                NFSSERVER\_SHARE\_1\_PATH='nfs4'\\
                NFSSERVER\_SHARE\_1\_NAME='SHARE-NAME'\\
                NFSSERVER\_SHARE\_1\_HOSTS\_N='1'\\
                NFSSERVER\_SHARE\_1\_HOSTS\_1\_HOST='192.168.6.0/24'\\
                NFSSERVER\_SHARE\_1\_HOSTS\_1\_RW='yes'\\
                NFSSERVER\_SHARE\_1\_HOSTS\_1\_ANONUSER=$''$\\
                NFSSERVER\_SHARE\_1\_HOSTS\_1\_ANONGROUP=$''$\\
                NFSSERVER\_SHARE\_1\_HOSTS\_1\_ROOT\_SQUASH='no'\\
                NFSSERVER\_SHARE\_1\_HOSTS\_1\_ALL\_SQUASH='no'\\
                NFSSERVER\_SHARE\_1\_HOSTS\_1\_OPTION='insecure,wdelay'}

        Anschlie"send definiert man die NFSv4-Verzeichnisfreigaben, indem man
        jeweils den Parameter  \texttt{..\_NAME} auf den gew"unschten
        Freigabenamen setzt, "uber welchen den NFS-Zugriff erfolgen soll.

        \texttt{NFSSERVER\_SHARE\_2\_ACTIVE='yes'\\
                NFSSERVER\_SHARE\_2\_PATH='/path/to/share-1'\\
                NFSSERVER\_SHARE\_2\_NAME='my-share-1'\\
                NFSSERVER\_SHARE\_2\_HOSTS\_N='1'\\
                NFSSERVER\_SHARE\_2\_HOSTS\_1\_HOST='192.168.6.0/24'\\
                NFSSERVER\_SHARE\_2\_HOSTS\_1\_RW='no'\\
                NFSSERVER\_SHARE\_2\_HOSTS\_1\_ANONUSER='nobody'\\
                NFSSERVER\_SHARE\_2\_HOSTS\_1\_ANONGROUP='nogroup'\\
                NFSSERVER\_SHARE\_2\_HOSTS\_1\_ROOT\_SQUASH='no'\\
                NFSSERVER\_SHARE\_2\_HOSTS\_1\_ALL\_SQUASH='yes'\\
                NFSSERVER\_SHARE\_2\_HOSTS\_1\_OPTION='insecure,wdelay,nohide'\\
                \\
                NFSSERVER\_SHARE\_4\_ACTIVE='yes'\\
                NFSSERVER\_SHARE\_4\_PATH='/path/to/share-2'\\
                NFSSERVER\_SHARE\_4\_NAME='my-share-2'\\
                NFSSERVER\_SHARE\_4\_HOSTS\_N='1'\\
                NFSSERVER\_SHARE\_4\_HOSTS\_1\_HOST='192.168.6.0/24'\\
                NFSSERVER\_SHARE\_4\_HOSTS\_1\_RW='yes'\\
                NFSSERVER\_SHARE\_4\_HOSTS\_1\_ANONUSER=$''$\\
                NFSSERVER\_SHARE\_4\_HOSTS\_1\_ANONGROUP=$''$\\
                NFSSERVER\_SHARE\_4\_HOSTS\_1\_ROOT\_SQUASH='no'\\
                NFSSERVER\_SHARE\_4\_HOSTS\_1\_ALL\_SQUASH='no'\\
                NFSSERVER\_SHARE\_4\_HOSTS\_1\_OPTION='insecure,wdelay,nohide'}

        Falls nun mittels des nfsclient-Paketes von einem anderen Server
        auf die definierten Freigaben zugegriffen werden soll, m"usste die
        Konfiguration etwas wie folgt aussehen:

        \texttt{NFSCLIENT\_MOUNT\_1\_ACTIVE='yes'\\
                NFSCLIENT\_MOUNT\_1\_HOST='host name or ip address of NFSv4 server'\\
                NFSCLIENT\_MOUNT\_1\_TYPE='nfs4'\\
                NFSCLIENT\_MOUNT\_1\_MOUNTPOINT='/my-share-1'\\
                NFSCLIENT\_MOUNT\_1\_DIRECTORY='/nfs/my-share-1'\\
                NFSCLIENT\_MOUNT\_1\_OPTION='proto=tcp,fg,hard,intr,timeo=7,retrans=4,retry=3,actimeo=3,sec=sys'\\
                \\
                NFSCLIENT\_MOUNT\_2\_ACTIVE='yes'\\
                NFSCLIENT\_MOUNT\_2\_HOST='host name or ip address of NFSv4 server'\\
                NFSCLIENT\_MOUNT\_2\_TYPE='nfs4'\\
                NFSCLIENT\_MOUNT\_2\_MOUNTPOINT='/my-share-2'\\
                NFSCLIENT\_MOUNT\_2\_DIRECTORY='/mfs/my-share-2'\\
                NFSCLIENT\_MOUNT\_2\_OPTION='proto=tcp,fg,hard,intr,timeo=7,retrans=4,retry=3,actimeo=3,sec=sys'}
\end{description}
