Monter un serveur FTP sur son système de fichiers avec FUSE et CurlFTPfs

FUSE et CurlFTPfs, pourquoi faire ?

Je suis désormais abonné chez Free (le seul FAI à proposer l’IP fixe à un coût modéré) et après avoir installé et initialisé ma Freebox HD (boîtier qui permet de regarder/enregistrer la télé entre autres), j’ai voulu transférer des fichiers sur son disque dur afin de pouvoir les visionner sur la télé…
J’ai alors utilisé Konqueror et me suis dirigé vers :
ftp://freebox@hd1.freebox.fr/Disque dur/Video
J’ai ainsi pu transférer mes fichiers par simple copier/coller…
Mais comment faire aussi simple, voire même plus simple, pour transférer d’une machine qui n’a pas d’interface graphique (juste un shell) vers la Freebox HD ?
Tout simplement en montant la freebox comme un système de fichier en utilisant FUSE et CurlFTPfs…

Installation de FUSE et CurlFTPfs et premier montage

Sous Ubuntu installer curlsFTPfs :
#apt-get install curlftpfs
(il peut être utile à cette étape de charger le module fuse : # modprobe fuse)
Il vous installera alors curlftpfs, et fuse-utils, et créera un groupe « fuse ».
Edit : en fait, Ubuntu n’intègre pas le paquet CurlFTPFS, aussi, le meilleur moyen de l’installer est de suivre l’article dédié à CurlFTPfs sur Ubuntu-fr.org. (Merci à Cyril, et la prochaine fois poste un commentaire pour en faire profiter tout le monde !).
Connectez vous alors sous un utilisateur non privilégié et créer un répertoire pour accueillir le montage :
% mkdir freebox
Essayez alors de monter votre freebox sur ce point de montage :
curlftpfs ftp://freebox@hd1.freebox.fr freebox
fuse: failed to exec fusermount: Permission denied

Oups ! vous n’avez pas les droits …Mais souvenez vous, un groupe fuse a été créé !
Avec root, ajoutez l’utilisateur au groupe fuse, et vérifiez :
# usermod -G fuse anthony
Attention, en faisant ceci j’ai supprimé tous les rattachements de groupe de l’utilisateur (ie: il n’appartenait plus qu’au groupe « fuse » pour éviter ceci , veuillez plutôt tapez :
# usermod -a -G fuse anthony

Ceci est plus simple ….
#adduser anthony fuse
# groups anthony
anthony : anthony fuse

OK, pour prendre en compte les changements, relogguez vous de nouveau avec votre utilisateur, et ré essayez !
% curlftpfs ftp://freebox@hd1.freebox.fr freebox
(Si vous avez encore une erreur , avec root, # chmod +x /usr/bin/fusermount)
Vous pouvez alors naviguer dans le disque dur de votre Freebox HD, comme si celui était en local !
% cd freebox/Disque\ dur/Video
~/freebox/Disque dur/Video% cp /home/anthony/fichier.avi ./
~/freebox/Disque dur/Video% ls
fichier.avi

vous pouvez aussi démonter l’attachement de votre freebox :
% fusermount -u /home/anthony/freebox

Automatiser le montage curlftpfs au démarrage de la machine

Pour cela il suffit de rajouter une entrée dans /etc/fstab , comme si on rajoutait une partition de disque ou un partage nfs, avec la ligne suivante :
curlftpfs#freebox@hd1.freebox.fr /home/anthony/freebox fuse allow_other 0 1
En attendant le redémarrage un simple :
#mount /home/anthony/freebox
fera l’affaire et tous les utilisateurs du système peuvent déposer/récupérer des fichiers sur la freebox HD

Liens

Je me suis bien inspiré de cet article :
Article sur FUSE et curlftpfs sur Coagul
d’ailleurs leur article explique comment procéder avec un compte FTP nécessitant un mot de passe.
Liste des montages possibles avec FUSE
La page officielle de CurlFTPfs