Ubuntu 14.04 Trusty Tahr
Ubuntu 12.04 Precise Pangolin
curlftpfs ist ein FUSE-Modul, mit dem man entfernte Rechner über FTP in das eigene Dateisystem einbinden kann. Der Vorteil ist, dass man damit die Dateien und Verzeichnisse auf dem entfernten Rechner sehr komfortabel editieren, kopieren oder verschieben kann – genau wie die Dateien und Verzeichnisse auf den lokalen Festplatten. Dies erfordert auf dem Server einen FTP-Dienst. Die meisten Anbieter von Webspace ermöglichen den Zugriff über FTP.
Folgendes Paket muss installiert werden [1]:
curlftpfs (universe)
mit apturl
Paketliste zum Kopieren:
sudo apt-get install curlftpfs
sudo aptitude install curlftpfs
Vor dem Ausführen von curlftpfs muss FUSE [2] eingerichtet sein und ein Verzeichnis erstellt werden, in welches der entfernte Rechner eingehängt werden soll. Außerdem muss der Benutzer, unter dem curlftpfs verwendet werden soll, als Mitglied der Gruppe fuse
eingetragen werden. Die Datei /etc/fuse.conf muss für alle lesbar gemacht werden, z.B. mit dem Befehl [3]:
sudo chmod a+r /etc/fuse.conf
Im Folgenden wird von ~/mnt als Verzeichnis für den entfernten Rechner ausgegangen.
Das Einhängen erfolgt im Terminal über folgenden Befehl:
curlftpfs Benutzername:Passwort@ftp-server.de/pfad_auf_dem_server/ ~/mnt
Wenn Benutzername oder Passwort Sonderzeichen enthält, so kann man den Servernamen in Hochkommas schreiben:
curlftpfs 'Benutzername:Passwort@ftp-server.de/pfad_auf_dem_server/' ~/mnt
Wenn man an einer Stelle einbindet, für die der User kein Schreibrecht hat, geht man wie folgt vor:
sudo curlftpfs -o allow_other Benutzername:Passwort@ftp-server.de/pfad_auf_dem_server/ ~/mnt
Wird kein Benutzername oder Passwort benötigt, so kann man nur ftp-server.de/pfad_auf_dem_server/ schreiben.
Sonderzeichen in Benutzernamen oder Passwort sollten gewandelt werden - ein @
bspw. durch %40
.
Das Aushängen erfolgt analog zu den anderen FUSE-Modulen mit:
fusermount -u ~/mnt
Wenn man eine sichere Verbindung mit Hilfe von curlftps benutzen möchte, dann muss man lediglich das Protokoll, welches man benutzen möchte, angeben. Im Folgenden einige Beispiele.
curlftpfs -o ssl ftp://Benutzername:Passwort@ftp-server.de:Port/pfad_auf_dem_server/ ~/mnt
Der Port muss mit angegeben werden, wenn er vom Standard-Port 990
abweicht. Ansonsten ist er nicht erforderlich.
curlftpfs -o ssl_control ftp://Benutzername:Passwort@ftp-server.de:Port/pfad_auf_dem_server/ ~/mnt
Es kann durchaus sein, dass hier folgende Meldung auftritt:
"Error connecting to ftp: server certificate verification failed. CAfile: /etc/ssl/certs/ca-certificates.crt CRLfile: none"
Dann muss das Server-Zertifikat heruntergeladen:
echo | openssl s_client -connect example.org:443 | openssl x509 -out ~/serverzertifikat.pem
und dieses dann curlftpfs mitgegeben werden. Außerdem musst curlftpfs mitgeteilt werden, dass kein eigenes Client-Zertifikat existiert und es deshalb nicht geschickt wird (natürlich kann auch mit der Option cert=pfad_und_zertifikat
eines mitgegeben werden).
Wenn das Server-Zertifikat vorliegt, sollte folgender Befehl zum Verbinden verwendet werden:
curlftpfs -o ssl,cacert=~/serverzertifikat.pem,no_verify_peer ftps://Benutzername:Passwort@ftp-server.de:Port/pfad_auf_dem_server/ ~/mnt
Falls das nicht gewünscht ist, kann auch mit der Option no_verify_hostname
die Überprüfung des Server-Zertifikats unterbunden werden.
curlftpfs -o ssl,no_verify_peer,utf8,allow_other ftp://[Benutzername]:[Passwort]@[serverurl/startdir] [mountpoint]
Ein Server-Zertifikat wird mit der Option no_verify_peer
nicht geprüft und ist nicht erforderlich. Nur die direkte Angabe von utf8
als Option (also nicht codepage=xxx)
gewährleistet hier, dass Umlaute in Dateinamen dann immer gleich dargestellt werden, egal ob von Linux oder Windows mit FTPS oder WebDAV darauf zugegriffen bzw. geschrieben wird (vorausgesetzt, die anderen halten sich auch an UTF-8, was sowohl mit davfs2 als auch jüngeren Windows-Versionen standardmäßig der Fall ist).
Es kann auch ein Eintrag in der fstab angelegt werden. Dadurch kann die FTP-Freigabe beispielsweise bei jedem Start automatisch eingebunden werden. Auch das manuelle Mounten kann dadurch vereinfacht werden.
Benutzername und Passwort werden im Klartext abgelegt! Dies stellt ein Sicherheitsrisiko dar, da /etc/fstab normalerweise systemweit lesbar ist! Deshalb sollte man die Methode mit ~/.netrc benutzen (siehe unten).
Der /etc/fstab-Eintrag hat das Format:
curlftpfs#Benutzername:Password@ftp-server.de /mnt/ftp fuse auto,user,uid=1000,tlsv1,allow_other,disable_eprt,proxy=http://proxy-server:3128 0 0
Sollte man eine WLAN-Verbindung benutzen, ist es sinnvoll, die Option _netdev
anzuhängen. Damit wird erst eingehängt, wenn die Verbindung steht.
curlftpfs#Benutzername:Password@ftp-server.de /mnt/ftp fuse auto,user,uid=1000,tlsv1,allow_other,disable_eprt,_netdev 0 0
Wenn man den Benutzername und das Passwort nicht jedes mal neu eingeben will, kann man diese in der Datei ~/.netrc im Homeverzeichnis speichern. Die Datei hat das folgende Format:
machine [HOSTNAME] login [USERNAME] password [KENNWORT]
Für das obige Beispiel müsste man in die ~/.netrc Folgendes schreiben:
machine ftp-server.de login Benutzername password Passwort
Außerdem müssen noch die Rechte der Datei korrekt gesetzt werden. Nach dem Befehl:
chmod 600 ~/.netrc
ist die Datei nur noch für den Benutzer lesbar. Jetzt kann man curlftpfs aufrufen, ohne sich jedes Mal an den Benutzernamen und das Passwort erinnern zu müssen:
curlftpfs ftp-server.de/pfad_auf_dem_server/ ~/mnt
Diese Revision wurde am 5. Februar 2017 18:36 von aasche erstellt.