Logo

Was mir in Sachen Linux einfällt

Dateiserver per FTP

USB-Stick am Router

Die einfachste Lösung: Du hast einen Router, der über einen USB-Anschluss verfügt. Dann ist die Chance groß, das der Router den Inhalt eines USB-Stickes oder einer USB-Festplatte per FTP-Protokoll im heimischen Netz zur Verfügung stellen kann. Der Router ist 24 Stunden am Tag eingeschaltet und deswegen als Server gut geeignet. Ob der Router sich eignet oder nicht, steht mit Sicherheit in der Bedienungs­an­leitung. Stecke ein USB-Speicher­medium an den Router an, rufe die Weboberfläche des Gerätes auf, gehe in den Dialog für USB-Geräte und mache einen Haken bei USB-Speicher FTP-Zugriff aktivieren.

Natürlich kannst Du an den USB-Anschluss des Routers auch Festplatten anschließen und dann hast Du Plattenplatz genug. Und für FTP ist der Router schnell genug. Falls Du nicht mit Spielfilmen hantierst, denn bei den Dateigrößen ist das Hindernis wahrscheinlich der 100MBit-Netzwerkanschluss Deines Routers ...

Wenn Dir das reicht, dann kannst Du jetzt aufhören.


Das FTP-Logo

Wenn du mehr willst, dann kannst Du Dir ein NAS kaufen, wobei Du darauf achten musst, dass das Gerät auch FTP beherrschen muss und das können nicht alle. Außerdem sollten sie über einen Gigabyte-Netzwerkanschluss verfügen, damit ein Vorteil von FTP zum Tragen kommt: die Transfer-Geschwindigkeit. Wenn es - wie bei FTP - auf das pure Übertragen von Daten geht, dann reizt FTP jede Netzwerkleitung aus. Mal eben ein Backup der 500Gbyte-Platte machen per SMB geht nicht, das dauert mehrere Stunden - auch mit GByte-LAN. Das gleiche per FTP klappt immerhin in gut unter 2 Stunden. Allerdings: wenn man das Gigbyte-LAN auch nutzen möchte, dann muss entweder der Router auch über GByte-LAN verfügen, oder es muss ein Switch die Netzwerkverteilung übernehmen (ein billiger dummer reicht für das Heimnetz).

Du kannst Dir natürlich auch selbst einen Server "aufsetzen" und dafür kannst Du jeden Rechner nehmen, auf dem Du Linux installieren kannst, z.B. Deinen Samba-Server. Samba ist ja "nur" ein Programm und jeder Rechner kann mehrere Programme gleichzeitig ausführen, also auch gleichzeitig Samba und FTP.

Eins von den vielen FTP-Serverprogrammen heißt vsftpd und dessen Einrichtung stelle ich jetzt mal vor.

Das Programm kann eigenständig laufen wie jedes andere Programm oder es wird bei Bedarf gestartet und nach Ende des Gebrauchs wieder beendet. Für den Hausgebrauch empfehle ich den Start als Netzwerkdienst bei Bedarf. Für diese Bedarfsanmeldung ist der Netzwerkdämon Xinetd da, er horcht dauernd im Netzwerk, ob irgendwas von seinen Leistungen benötigt wird und startet diese. Und eine von seinen Diensten heißt eben vsftp. Deshalb musst Du zum Einrichten des FTP-Serverdienstes in Yast auf Netzwerkdienste/Netzwerdienste(xinetd) gehen. Die Seite zeigt Dir eine lange Liste von möglichen Diensten und Du must diesen Xinetd zuerst links oben "aktivieren". Irgendwo mitten drin stehen zwei Einträge mit "ftp" in der Spalte "Dienste". Schau in die Spalte "Server": einer der beiden hat den Eintrag "/usr/sbin/vsftpd". Das ist der gesuchte Kandidat und Du markierst ihn, indem Du den Cursor in die Zeile stellst. Dann findest Du rechts unten den Schalter für "An" oder "Aus" und weil die Spalte "Status" für den vsftpd den Wert "NI" hat, was auf computerisch soviel wie "Aus" heißt, stellst Du den Dienst "vsftpd" jetzt mal auf "An". Das war es. Natürlich kannst Du jetzt auf die "Bearbeiten"-Seite schauen, aber das bringt nichts, denn dort steht alles auf nützlichen Werten. Beenden und fertig!

Durch diese Aktion ist die Konfigurationsdatei /etc/vsftpd.conf entstanden. Sie ist nur für root lesbar und die darfst Du jetzt in einem Editor öffnen und vergleichen.

# Uncomment this to enable any form of FTP write command.
write_enable=YES
# Activate directory messages - given to remote users when they
# go into a certain directory.
dirmessage_enable=YES
# It is recommended that you define on your system a unique user which
# the ftp server can use as a totally isolated and unprivileged user.
nopriv_user=ftpsecure
# Uncomment this to allow local users to log in.
local_enable=YES
# Allow anonymous FTP? 
anonymous_enable=NO
# Make sure PORT transfer connections originate from port 20 (ftp-data).
connect_from_port_20=YES
# PAM setting. Do NOT change this unless you know what you do!
pam_service_name=vsftpd
# Set to ssl_enable=YES if you want to enable SSL
ssl_enable=NO
# Limit passive ports to this range to assis firewalling
pasv_min_port=30000
pasv_max_port=30100
anon_mkdir_write_enable=NO
anon_root=/srv/ftp
anon_upload_enable=NO
chroot_local_user=NO
ftpd_banner=Wilkommen auf (Dein Computername)
idle_session_timeout=900
log_ftp_protocol=NO
max_clients=10
max_per_ip=3
pasv_enable=YES
ssl_sslv2=NO
ssl_sslv3=NO
ssl_tlsv1=YES
listen=NO

Der kommentierte teil stand schon bei Lieferung in der Config-Datei, der unkommentierte Teil stammt von Yast. Es könnte noch ein Fehler enthalten sein: listen=no stand nicht drin und deswegen funktionierte der FTP-Server am Anfang nicht. Achte drauf! So funktioniert der Server bei mir. Damit darf jeder den Server benutzen, der am Server einen Account besitzt. Er bekommt als Hauptverzeichnis automatisch seinen Account vorgelegt - also /home/user. Die sichere Verbindungsart SSL ist dabei nicht eingeschaltet, denn ich lasse FTP nur im lokalen Netzwerk zu und da kann ich sicher sein.

Habe ich eben gesagt, dass der Server so bei mir funktioniert? Falsch: es fehlt noch was! Ein FTP-Wunsch an den Server ist eine IP-Anfrage "von draußen" und solche Anfragen blockt die Firewall rigoros ab. Der zuständige Port der Firewall muss also noch geöffnet werden: gehe in die Firewall-Einstellungen/erlaubte Dienste und dort findest Du den vsftpd-Dienst fertig in der Liste. Füge ihn zur Liste der erlaubten Dienste hinzu, starte die Firewall neu und ab jetzt funktioniert der FTP-Server.

Zum Ausprobieren gehst Du an einen anderen Rechner im Netzwerk (ich gehe jetzt mal von einem Linux-Rechner aus), startest den Dateimanager und gibst in die Adresszeile ein: ftp://IP.Deines.ftp.Servers Enter. Jetzt müsste eine Abfrage von Name und Passwort kommen, gib das ein und dann siehst Du hoffentlich den Inhalt Deines Home-Ordners.

Du kennst die IP Deines Servers nicht? Dann hat er wahrscheinlich eine IP via DHCP vom Router bekommen und die IP steht nicht fest. Natürlich kannst Du die IP des Servers heraus bekommen (ifconfig), aber ein Server sollte immer eine feste IP haben! Falls also IP via DHCP bislang eingestellt ist, solltest Du das jetzt umstellen. Dazu brauchst Du:

Ob du die Daten mit dem Networkmanager einstellst oder per ifup (Yast), ist egal. Andererseits sollte ein Server ja immer laufen und dazu braucht es keinen Networkmanager, denn der ist ja für "häufig wechselnden Netzwerkverkehr" gedacht. Überlege Dir das, wichtig ist es jetzt nicht.

Alle meine Rechner haben einen Namen. Falls ich auf einen Rechner zugreifen möchte, dann gebrauche ich einfach nur den Namen: ftp://saturn ist viel leichter als ftp://192.168.1.7. Das kannst Du auch, dazu must Du nur Yast/Netzwerkdienste/Rechnernamen aufrufen und IP und Name des Servers hinzufügen. Ab sofort kannst Du den Server beim Namen nennen ...

Für Webentwickler interessant: es gibt ein Addon für den Firefox mit dem Namen FireFTP. Webinhalte werden üblicherweise per FTP auf den Webserver gestellt und mit FireFTP muss man das Programm nicht wechseln - FireFTP ist "nur" ein zusätzlicher TAB im Firefox. Die Oberfläche von FireFTP zeigt schön die typische FTP-Situation:

FTP-Serverdialog

In der linken Hälfte mein lokaler Rechner, rechts der Server. Jeweils unterteilt: im linken Teil der Ordnerbaum, im rechten Teil die Dateien. Hier sind die Dateien auf beiden Seiten nach Namen sortiert, üblicherweise sind sie nach Datum so sortiert, dass die neuesten Dateien oben stehen. So kann ich schnell sehen, welche neu sind und deswegen vom lokalen Rechner links zum Server rechts kopiert werden müssen. Oder bei Bedarf auch umgekehrt. Ich habe mir auch schon mal eine lokale Datei durch Unachtsamkeit vernichtet, was aber nicht tragisch ist, denn es gibt sie ja noch auf dem Server: einfach von rechts nach links schieben und "gut ist".

Weiter geht es mit dem

Webserver