Linux – FTP Verzeichnisse einbinden
In diesem Artikel zeige ich euch wie ihr unter Linux externe FTP Verzeichnisse einbinden könnt die dann im Dateisystem wie lokale Ordner behandelt werden. Dieses Vorgehen ist manchmal recht hilfreich und erlaubt richtig konfiguriert auch für ungeübte Benutzer einen einfachen Zugang zu externen Dateien im Netzwerk.
FTP Verzeichnisse einbinden
Das FTP Protokoll ist ein relativ altes Protokoll zum Dateiaustausch und technisch schon lange nicht mehr aktuell. Vor allem das unverschlüsselte Übertragen von Dateien und Passwörtern ist mehr als bedenklich. Alternativen sind SFTP oder FTPS. Wegen der großen Verbreitung und dem einfachen Verbindungsaufbau ist FTP nach wie vor überall zu finden. Vom einfachen Webspace zu Fileservern im Firmennetzwerk. Hin und wieder findet man sogar noch Server die schützenswerte Daten fahrlässig über FTP kopieren.
Ich erkläre nun wie man so ein über FTP erreichbaren Speicherplatz im eigenen Dateisystem als Ordner einbinden kann. Liegt dieser Speicherplatz auf einem Webserver in einem Rechenzentrum, dann kann man bei diesem Ordner von einer Online-Festplatte sprechen. Dieser Begriff wird meist von Hostern benutzt um diese Funktion zu verkaufen.
Installation
Für die Einbindung von FTP Online-Festplatten als Ordner ins eigene Dateisystem benötigen wir das Paket curlftpfs. Mit diesem können wir FTP Speicherplatz ins Dateisystem einbinden, verwendet wird dafür FUSE und libcurl. Das Paket wird wie folgt installiert:
sudo apt-get install curlftpfs
Konfiguration
Das war auch schon alles. Wir können nun auf der Kommandozeile unsere FTP Verzeichnisse einbinden. Das geht auf 2 Arten:
- unsicher
curlftpfs meinname:meinpasswort@www.meinserver.com /home/benutzername/ftpserver -o allow_other,disable_eprt
- sicher (falls der Server TLS unterstützt)
curlftpfs meinname:meinpasswort@www.meinserver.com /home/benutzername/ftpserver -o allow_other,disable_eprt,tlsv1
Der Aufruf funktioniert über den Programmnamen curlftpfs und einer Liste von Parametern. Der erste ist für den Verbindungsaufbau mit dem Server. Man gibt den FTP Benutzernamen und das FTP Passwort mit einem Doppelpunkt getrennt und mit einem @ vor der Domain beziehungsweise der IP Adresse des Servers an. Als zweiten Parameter muss man spezifizieren welchen Ordner man einbinden möchte. Es lohnt sich nicht unbedingt den root Ordner zu nehmen, denn mit der Anzahl an Unterordnern und Dateien sinkt die Zugriffsgeschwindigkeit. Mit -o kann man noch etwaige Optionen angeben. Eine dieser Optionen ist die Verwendung einer verschlüsselten TLS Verbindung mit der Option tlsv1.
Fehlersuche
Bekommt man folgende Fehlermeldung:
fusermount: failed to open /etc/fuse.conf: Permission denied
dann ist der aktuelle Benutzer nicht Mitglied der Gruppe fuse. Das kann mit dem folgenden Kommando ändern:
groups <username>
Für unser aktuelles Problem mit der Gruppe fuse sieht das Kommando wie folgt aus:
sudo addgroup <username> fuse
Für username setzt man seinen aktuellen Benutzernamen ein. Mit dem groups Kommando sollte nun auch die Gruppe fuse erscheinen. Achtung: zeigt das Kommando curlftpfs nach wie vor die Fehlermeldung an, dann muss sich der Benutzer neu einloggen, dann funktioniert es!
Bekommt man nun weiter noch diese Fehlermeldung:
fusermount: option allow_other only allowed if 'user_allow_other' is set in /etc/fuse.conf
dann muss man diese Option in der /etc/fuse.conf Datei zuerst aktivieren (diese ist per default deaktiviert). Das geht wie folgt:
sudo nano /etc/fuse.conf
Wir öffnen die fuse Konfigurationsdatei mit einem Texteditor. In der letzten Zeile machen wir eine kleine Änderung:
#user_allow_other
das Nummernzeichen (Kommentarzeichen) entfernen, so dass die Zeile wie folgt aussieht:
user_allow_other
Die Datei speichern wir nun ab und beenden den Editor. Wenn wir das Kommando zur Einbindung des FTP Verzeichnis erneut ausführen müsste es ohne Fehlermeldung funktionieren!
Verzeichnis aushängen
Wenn man mit der Arbeit fertig ist, dann kann das Verzeichnis mit
fusermount -u /home/benutzername/ftpserver
wieder ausgehängt werden.
Performance
Im Terminal wird der Verzeichnisbaum sofort geladen, wenn man in den FTP Ordner wechselt. Im grafischen File Manager (Dolphin) hingegen dauert der Aufbau des Baumes einige Zeit. Die Arbeit mit dem FTP Verzeichnis funktioniert besser, wenn man über das Terminal arbeitet. Meist hilft es im grafischen Modul auch, wenn das Verzeichnis nur wenige Dateien und Ordner enthält und nicht eine recht tiefe Verzeichnisstruktur geladen werden muss.
Bash Script
Für ein automatisches einbeziehen der FTP Verzeichnisse habe ich mir ein kleines Bash Script geschrieben:
#!/bin/bash if [ ! -d $1 ]; then mkdir $1 curlftpfs $2:$3@$1 /daten/FTP\ Server/$1/ -o allow_other,direct_io,large_read,kernel_cache paplay /usr/share/sounds/KDE-Im-Message-In.ogg else fusermount -u $1 paplay /usr/share/sounds/KDE-Im-Message-Out.ogg rmdir $1 fi
Das Skript erstellt automatisch einen neuen Ordner für jedes FTP Verzeichnis, danach wird der FTP Speicher in diesem Verzeichnis dargestellt. Über eine KDE Funktion wird noch ein Sound für die erfolgreiche Integration ins Dateisystem ausgegeben. Bei neuerlichem Aufruf wird das Dateisystem wieder entfernt, ein Ton ausgegeben und das Verzeichnis entfernt.
Das Skript kann so ausgeführt werden:
sh ftp_script.sh "$FTP_DIRECTORY" "$FTP_USER" "$FTP_PASSWD"
Alternativen
Alternativen zu der beschriebenen Möglichkeit FTP Verzeichnisse einzubinden gibt es zahlreiche externe FTP Programme. Das bekannteste ist wohl Filezilla. Leider benötigen die meisten Benutzer für diese Programme wieder eigene Schulungen, deshalb ist eine direkte Einbindung ins Dateisystem von der Usability besser.
Fazit
Man kann unter Linux sehr einfach externe FTP Verzeichnisse ins lokale Dateisystem einbinden. Damit ist es ohne externe Programme möglich Daten zwischen dem lokalen Dateisystem und dem externen Speicher zu kopieren. Über Bash Skripte kann man sich dieses Einhängen von externen Verzeichnissen zunutze machen, damit externe Dateiquellen fix im Dateisystem hinterlegt werden. Der Benutzer kann somit am lokalen Rechner arbeiten und bekommt in der Regel gar nicht mit, dass die Daten extern auf einem Server liegen.