[[Vorlage(Archiviert, "Die letzte Programmversion ist von 2007. Das Programm wird nicht mehr weiter entwickelt.")]] {{{#!vorlage Wissen [:Pakete_installieren: Pakete installieren] [:FUSE: FUSE einrichten] [:Terminal: Ein Terminal öffnen] [:Editor: Einen Texteditor öffnen] [:Autostart: Automatischer Start von Programmen] }}} [[Inhaltsverzeichnis(2)]] [[Bild(Wiki/Icons/terminal.png, 48, align=left)]] [sourceforge2:curlftpfs:] {en} 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. = Installation = Folgendes Paket muss installiert werden [1]: {{{#!vorlage Paketinstallation curlftpfs, universe }}} = Benutzung = 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]: {{{#!vorlage Befehl 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: {{{#!vorlage 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: {{{#!vorlage Befehl 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: {{{#!vorlage Befehl sudo curlftpfs -o allow_other Benutzername:Passwort@ftp-server.de/pfad_auf_dem_server/ ~/mnt }}} {{{#!vorlage Hinweis 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: {{{#!vorlage Befehl fusermount -u ~/mnt }}} == Verbinden mit SSL/TLS == 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. === FTP über implizites TLS === {{{#!vorlage Befehl 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. === FTP über explizites TLS === {{{#!vorlage Befehl 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: {{{#!vorlage Befehl 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: {{{#!vorlage Befehl 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. === Einbinden einer FritzBox via FTPS === {{{#!vorlage Befehl 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). == Eintragen in /etc/fstab == 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 [:mount:Mounten] kann dadurch vereinfacht werden. {{{#!vorlage warnung 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 }}} == Speichern von Benutzername und Passwort in ~/.netrc == 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: {{{#!vorlage 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: {{{#!vorlage Befehl curlftpfs ftp-server.de/pfad_auf_dem_server/ ~/mnt }}} = Links = * [sourceforge2:curlftpfs:Projektseite] {en} * [:FTP:] {Übersicht} Programmübersicht # tag: Netzwerk, Internet, ftp