»Was wir brauchen, sind ein paar verrückte Leute; seht euch an, wohin uns die Normalen gebracht haben.« George Bernard Shaw (26.07.1856–02.11.1950), irischer Dramatiker, Schriftsteller und Nobelpreisträger
19 Datei- und FTP-Server
| Was Sie in diesem Kapitel erwartet |
|
Bequemer als die SSH-Methode via scp ist der Aufbau eines dedizierten File-Servers unter UNIX/Linux. Unter Ubuntu ist der Aufbau eines dedizierten Datei- und/oder FTP-Servers schnell erledigt. In diesem Kapitel werde ich auf verschiedene Realisierungen eingehen, beispielsweise unter Benutzung des NFS (Network File Systems). |
| Benötigtes Vorwissen |
|
Sie sollten den grundlegenden Umgang mit der Shell beherrschen. |
19.1 NFS-Server 

NFS bedeutet Network File System. Es wurde als Verbindungsprotokoll für Unix-Rechner in den 80er-Jahren von SUN Microsystems entwickelt und zur Verfügung gestellt. Mittlerweile liegt das Protokoll in seiner 3. Version vor, und an seinen anfänglichen Schwachpunkten (z. B. der Geschwindigkeit) sehr gearbeitet. Das Schöne an diesem Protokoll ist, das es statuslos ist, d. h.das Verzeichnis hängt sich erst bei einem Zugriff wieder ein und danach wieder aus – sehr bedarfsorientiert – und verursacht dadurch sehr wenig Traffic auf den Leitungen. Im Internet gibt es sehr viele NFS-Server (z. B. Red Hat und SuSE), die Sie mounten können und von denen Sie sogar ganze Distributionen installieren können. Aber aufgepasst: NFS gilt als sehr unsicher, und Sie sollten sich dessen immer bewusst sein, um Ihr System nicht zu gefährden.
Installation
Stellen Sie zunächst sicher, dass folgende Pakete auf Ihrem System installiert sind:
- nfs-common
- nfs-kernel-server
- portmap
Portmapper
Der RPC-Portmapper ist dafür zuständig, die verschiedenen Anfragen von Clients den NFS-Daemons zuzuordnen und weiterzuleiten: er ist also eine kleine Poststelle. Sollten die beiden Befehle kein positives Ergebnis bringen, so besteht die Möglichkeit, dass er noch nicht installiert ist. Dies finden Sie am besten mit rpm -q -a | grep port heraus. Sollte auf Ihrem System noch kein Portmapper vorhanden sein, können Sie ihn mithilfe des neuesten Pakets portmap-X.i386.rpm nachträglich installieren, und mit /etc/init.d/portmap start können Sie ihn aktivieren.
Der Portmapper (oder rpc.portmap) wird durch den init-Daemon beim Booten gestartet und sollte deshalb auch unter /etc/rc2.d und unter /etc/init.d stehen. Nach der Installation des nfs-util-Pakets sollte nun auch der nfs-Daemon und der mount-Daemon sichtbar sein.
Um zu sehen, ob der Portmapper läuft, können Sie den Befehl rpcinfo -p benutzen. Nun müssten diese oder ähnliche Zeilen auftauchen:
program vers proto port 100000 2 tcp 111 portmapper 100000 2 udp 111 portmapper
Eine andere Möglichkeit wäre der Befehl ps aux | grep portmap. Um zu kontrollieren, ob der nfs-Daemon überhaupt läuft, können Sie mit dem Befehl
/etc/rc.d/init.d/nfs status
den aktuellen Status des Daemons einsehen. Normalerweise ist er nach der Installation gestoppt und inaktiv, was sich jedoch mit /etc/rc.d/init.d/nfs start schnell beheben lässt. Nun sollte bei allen Aufrufen ein OK erschienen sein und beim Status-Aufruf ein ...is running stehen.
Verzeichnisse erstellen
Legen Sie zunächst das entsprechende Verzeichnis an und setzen die Rechte:
sudo mkdir /media/tausch sudo chmod ugo+rw /media/tausch
Die Verzeichnisse zum Export festlegen
Nun muss das neu erstellte Verzeichnis zum Export via NFS freigegeben werden. Dazu editieren Sie die Datei /etc/exports: In dieser Datei müssen alle Ordner eingetragen sein, um darauf zugreifen zu können:
# Begin of /etc/exports ( Beispiel 1 ) # # Meine Dateien auf dem Server: # /Server rechner1(rw) rechner2(ro) # # Ich exportiere das Verzeichnis /Server mit Leserechten (ro) auf # rechner1 und rechner2. Rechner2 bekommt zusätzlich # Schreibrechte (rw).
Der Parameter rw steht hierbei für Lese-/Schreibberechtigung. Mehr zum Aufbau dieser Datei erfahren Sie durch Eingabe von man exports. Zusätzlich zur IP-Adresse des Rechners müssen Sie noch die Subnetzmaske definieren. Des Weiteren müssen Sie den entsprechenden Rechner in der Datei /etc/hosts. allow eintragen:
sudo nano /etc/hosts.allow # Auszug aus /etc/hosts.allow 192.168.0.103
Vergessen Sie nicht, die Datei /etc/hosts zu pflegen, sonst könnte es Schwierigkeiten bezüglich der Namensauflösung geben. In größeren Netzen umgeht man dieses Problem mit einem Name-Server. Sie können auch Rechnergruppen angeben:
# Begin of /etc/exports ( Beispiel 2 ) # # Meine Dateien auf dem Server: # /Server *.clients(rw) # # Ich exportiere hier das Verzeichnis /Server auf alle Rechner # in der Domain clients mit Schreib- und Lese-Rechten. # # Nun exportiere ich mein downloads-Verzeichnis noch: /downloads *(rw) # end of file
Denken Sie daran, dass jeder Rechner mit der Domain client auf das Verzeichnis zugreifen kann. Es ist also nicht so sicher wie die Angabe jedes Rechners, der zugreifen darf. Das Ganze geht selbstverständlich auch mit IP-Adressen:
# # Begin of /etc/exports ( Beispiel 3 ) # Die Verzeichnisse werden exportiert: /Server 192.168.1.*(ro) /downloads 192.168.6.3(rw) # end of file
Abschließend starten Sie den NFS-Server mit folgendem Befehl neu:
sudo /etc/init.d/nfs-kernel-server restart
Nachdem die Konfiguration erledigt ist, wenden Sie sich dem Client zu. Mit dem Befehl exportfs können Sie nun sehen, welche Verzeichnisse aktuell freigegeben werden. Hier sollte nun /Server und /downloads stehen. Weitere Optionen für den Befehl sind
- -a – Hinzufügen neuer Verzeichnisse in die Datenbank
- -r – Komplettes Neueinlesen der Datei /etc/exports
Wenn Ihnen die Einrichtung über die Kommandozeile zu kompliziert ist, können Sie den Austausch von Ordnern auch über das Menü System • Systemverwaltung • Gemeinsame Ordner einrichten. Hierbei handelt es sich um ein bequemes Frontend für den Export von NFS-Shares (siehe Abbildung).
Abbildung 19.1 Grafisches Frontend zum Export von NFS-Shares unter GNOME
Geteilte Ordner
Auf der Client-Seite benötigen Sie das nfs-client-Paket. Dies können Sie als einzelnes Paket besorgen, oder Sie nehmen sich die nfs-utils, in denen das Paket auch integriert ist. Nach der Installation des Pakets können Sie den Befehl showmount benutzen, um den Server zu überprüfen. Da mein Server artemis heißt, lautet bei mir der Befehl showmount artemis. Nun werden alle Clients angezeigt, die Verzeichnisse vom Server importieren dürfen. Mit showmount artemis -e werden die einzelnen Verzeichnisse angegeben sowie die Hosts, die darauf zugreifen dürfen.
/Server /downloads (everyone)
Um nun ein Verzeichnis zu mounten, verwenden Sie den normalen Mount-Befehl, der folgende Syntax hat:
mount server:/verzeichnis /importverzeichnis [-t nfs] mount miraculix:/Server /mnt/import -t nfs
Gehen Sie dann zum Einbinden des Verzeichnisses folgendermaßen vor:
sudo mkdir /media/server sudo mount -t nfs 192.168.0.1:/media/tausch /media/server/
Nun können Sie beliebig Dateien mit dem Server über das Tauschverzeichnis tauschen.
| NFS-Verzeichnisse dauerhaft einbinden |
|
Möchten Sie das NFS-Verzeichnis dauerhaft auf dem Client importieren, tragen Sie Folgendes in die Datei /etc/fstab ein (bitte in eine Zeile schreiben): |
| sudo nano /etc/fstab # Auszug aus /etc/fstab 192.168.0.1:/media/tausch /media/server nfs rw,rsize=8192,wsize=8192 0 0 |
|
Dabei wurde über die Parameter rsize und wsize ein kleines Tuning vorgenommen, das den Datentransfer beschleunigen soll. |
NFS-Optionen
Es gibt noch mehr Optionen beim Exportieren von Verzeichnissen als nur ro und rw:
- /Server *.clients(rw,no_root_squash) Der Root auf dem Client soll auch Root auf dem Server sein. Die Option no_root_squash erzwingt dies. Das Gegenstück wäre root_squash.
- /Server *.clients(rw,no_root_squash,map_daemon) Wenn die User-IDs auf dem Server und dem Client gleich sein sollen, können Sie eine Umsetzungstabelle generieren lassen. Damit das funktioniert, muss aber der Daemon ugidd gestartet sein.
- /Server *.clients(rw,noaccess) Diese Option dient dazu, bei größeren Verzeichnisbäumen den Zugang zu Unterverzeichnissen zu sperren. Das ist hervorragend dazu geeignet, beispielsweise das /var-Verzeichnis mit seinen vielen Unterverzeichnissen freizugeben, anstatt etliche Unterverzeichnisse explizit zum Mounten freizugeben.
- mount -o rw,ro,bg,wsize,rsize Server:/Server /mnt/import -t nfs Der Parameter bg bedeutet, dass der Mount-Prozess in den Hintergrund gestellt wird, was vor allem bei Netzstörungen oder hoher Netzbelastung interessant ist, und dort weiter sein Glück versucht. wsize und rsize geben die Anzahl der Bytes an, die als Block über das Netz geschrieben und gelesen werden. Diese Option wirkt sich stark auf die Performance aus, daher wird der Wert 8192 für beide empfohlen (Standard ist 1024).





Jetzt bestellen







