Archive for mars, 2007

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

Vendredi, mars 9th, 2007

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

Installation de CGI Proxy, solution de proxy http

Vendredi, mars 9th, 2007

Ce tutorial vous expliquera comment mettre en oeuvre derrière Apache 2 le script CGI Proxy qui peut vous servir aussi bien à surfer anonyme (désactivation de scripts pendant la navigation), à accéder aux serveurs web de machine situées dans un réseau local, à contrer la censure …

Installer simplement CGI Proxy (sans SSL)

Tout d’abord, vous devez avoir les logiciels suivants installés sur votre machine:
-un serveur sous Linux(çà devrait marcher sur tous les OS…)
-Apache2 (un autre serveur web devrait faire l’affaire mais je n’ai pas testé…)
-Perl
Des commandes comme :
#apt-get install perl apache2
devrait plus ou moins régler les choses sur Debian et les Debian-like…
Pour la suite de l’article, je suppose que vous utilisez une distribution Debian Sarge.

Dirigez vous vers /etc/apache2/sites-available
#cd /etc/apache2/sites-available

Créez un nouveau site web, disons que vous avez le nom de domaine test.fr, créez ainsi le sous domaine cgiproxy.test.fr :
#vim cgiproxy.test.fr

et insérez les lignes suivantes :

<VirtualHost *>
ServerAdmin admin@test.fr
DocumentRoot /var/www/cgiproxy.test.fr
ServerName cgiproxy.test.fr
ErrorLog /var/log/apache2/cgiproxy.test.fr.error.log
CustomLog /var/log/apache2/cgiproxy.test.fr.access.log common
AddHandler cgi-script .cgi
<Directory /var/www/cgiproxy.test.fr>
AllowOverride FileInfo AuthConfig Limit
Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
Order allow,deny
Allow from all
Options +ExecCGI
</Directory>
</VirtualHost>

Pour que ce nouveau site soit fonctionne, n’oubliez de faire un lien symbolique de cette configuration dans /etc/apache2/sites-enabled :
#cd /etc/apache2/sites-enabled
#ln -s /etc/apache2/sites-available/cgiproxy.test.fr

et de bien sûr créer le répertoire désigné dans votre configuration:
#mkdir /var/www/cgiproxy.test.fr

On redémarre Apache2 pour que la configuration soit prise en compte :
#/etc/init.d/apache2 restart

Petite note pour ceux qui n’ont pas de nom de domaine ou ne sachant pas comment créer un site sous Apache 2 :
Vous avez sans doute dans /etc/apache2/sites-available un site (fichier de configuration) qui s’appelle 000-default, qui pointe vers des fichiers dans /var/www : vous pouvez aussi bien l’utiliser en adaptant cet article (chemins et sites)

Rendez vous dans /var/www/cgiproxy.test.fr et téléchargez le script CGI CGI Proxy :
#wget http://www.jmarshall.com/tools/cgiproxy/releases/cgiproxy.2.1beta15.tar.gz

Pour avoir la dernière version, veuillez consulter le site officiel CGI Proxy

On décompresse l’archive ainsi récupérée :
#tar xvzf cgiproxy.2.1beta15.tar.gz

Et si tout s’est bien passé, en dirigeant son navigateur vers http://cgiproxy.test.fr/nph-proxy.cgi on doit avoir le formulaire de saisie d’URL de CGI Proxy !
Si toutefois cela ne fonctionne pas, n’hésitez pas à laisser un commentaire à cet article, mais commencez par vérifier :
-que vos chemins sont bons
-que vous n’avez pas renommé nph-proxy.cgi en quelquechose.cgi (il faut impérativement que le nom du fichier commence par nph-)
-que le script est exécutable :
#chmod +x nph-proxy.cgi

Installer CGI Proxy en mod ssl :

Un peu plus difficile cette fois-ci, cette partie de l’article s’adresse aux personnes ayant déjà mis en place des sites Apache2 en mod_ssl.(un jour j’écrirai un article pour l’expliquer !).
Pour faire simple, et rapide, inspirez vous de mon fichier de configuration :

<VirtualHost *:443>
ServerAdmin admin@cgiproxy.test.fr
DocumentRoot /var/www/cgiproxy.test.fr
ServerName cgiproxy.test.fr
ErrorLog /var/log/apache2/cgiproxy.test.fr.error.log
CustomLog /var/log/apache2/cgiproxy.test.fr.access.log common
AddHandler cgi-script .cgi
SSLEngine On
SSLCertificateFile /etc/apache2/ssl/apache.pem
SSLProxyEngine On
<Directory /var/www/cgiproxy.test.fr>
AllowOverride FileInfo AuthConfig Limit
Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
DirectoryIndex nph-protected.cgi
AuthUserFile /var/www/cgiproxy.test.fr/.htpasswd
AuthName “Welcome to Protected Site”
AuthType Basic
Require valid-user
Options +ExecCGI
</Directory>
</VirtualHost>

Un peu d’explication !
<VirtualHost *:443>
vous permet de déclarer un serveur virtuel écoutant sur le port 443 (https par défaut)
AddHandler cgi-script .cgi
permet à Apache 2 de lancer le moteur d’interpréteur de CGI lorsque les fichiers demandés terminent par .cgi
DirectoryIndex nph-protected.cgi
indique à apache que le fichier index par défaut est : nph-protected.cgi (situé dans /var/www/cgiproxy.test.fr) lorsque qu’aucun nom de fichier est spécifié.
AuthUserFile
permet de mettre en place une sécuristation HTTP Basic (login/mot de passe demandé pour accéder à la ressource)

Liens

Le site de documentation d’Apache2
Le site officiel de CGI Proxy