L'autre jour, j'ai craqué... J'en ai eu marre d'utiliser les gestionaires d'url des deux principaux bureaux gnu-linux (KDE avec KIO/VFS et Gnome avec GIO/VFS) pour accéder à mes fichiers distant sous GNU/Linux. Ceux-ci ne permettaient l'accès aux fichiers qu'aux applications utilisant les mêmes bliothèques ou sinon en les copiant temporairement en local. Pas vraiment satisfaisant... j'ai ainsi lorgné du coté de SSHFS[1].
SSHFS c'est sympa, me dis-je, non seulement à cause de son nom imprononçable, mais aussi parce que c'est basé sur SSH et FUSE.
Petit récapitulatif, de rigueur :
- SSH, tout le monde connaît, ça permet de se connecter sur une machine distante de façon sécurisée, c'est standard et facile à mettre en place (quand c'est pas installé par défaut).
- FUSE[2], c'est standard, solide, fourni par le kernel linux et ça permet à toutes les applications d'accéder de façon transparente (sans modification) à un système de fichiers géré par une application. Cette application vous permettra alors de manipuler localement des fichiers distants, mais pourquoi pas aussi les entrées d'une base de donnée ou d'autres choses.
SSHFS est donc un programme fournissant un système de fichiers virtuels basé sur FUSE et utilisant SSH pour manipuler les fichiers distants.
Dans le cas général, ça s'utilise tout simplement. Pour associer le répertoire distant Config au répertoire local mnt/Config, il suffira de taper :
sshfs warbrain@daneel.glenux.net:Config mnt/Config/
En revanche, ça devient un peu moins simple lorsque vous engagez sur le chemin des options pour le port, la compression, le mapping des utilisateurs, le cypher, la re-connexion automatique, le timeout du cache, etc... Surtout lorsque ces options, les répertoires distants et les points de montage doivent varier selon les serveurs.
En général c'est à ce moment qu'on improvise une séance de shell-scripting pour configurer tout ça, selon les serveurs (ne riez pas, je suis sûr que vous l'avez fait aussi
).
Par exemple en écrivant des choses comme ça:
#!/bin/sh
### Connexion au serveur example.com
### Quelques variables (à changer dans chaque script)
remotedir=user@example.com:Somewhere
localdir=~/mnt/Somewhere
remoteport=22
### La commande magique
sshfs \
-o allow_root \
-o idmap=user \
-o uid=`id -u` \
-o gid=`id -g` \
-o reconnect \
-o workaround=all \
-o cache_timeout=240 \
-o ServerAliveInterval 15 \
-o no_readahead \
-o Ciphers=arcfour \
-o Port=$remoteport \
$remotedir \
$localdir
Et Qasim dans tout ça ?
Qasim intervient le jour où vous souhaitez laisser un utilisateur final accéder à des documents distants via SSHFS. Plus question de ligne de commande, il va falloir trouver un outil graphique...
Et c'est exactement de cela qu'il s'agit ! Qasim est justement une interface graphique (Ruby + Qt) à ces scripts SSHFS.
Cela permet à tout un chacun de monter et démonter les répertoires distants en un simple clic :



Le projet est utilisable, stable mais encore un peu jeune. Il manque notamment les options de paramétrage :

Par conséquent, pour définir un partage, il faut aujourd'hui définir manuellement des fichier .map dans le répertoire ~/.config/qasim/ ou bien dans /etc/qasim/maps.d/.
Par exemple, pour le partage example.map :
REMOTE_USER=$USER REMOTE_HOST=example.com REMOTE_PORT=22 MAP=Example.Documents /home/$USER/Documents MAP=Example.Media /home/shared-media
Si ce logiciel vous intéresse, les sources sont disponibles sur Github. Un paquet debian est également à votre disposition si vous ajoutez les lignes suivantes à votre /etc/apt/sources.list
deb http://repository.glenux.net/debian/ unstable main contrib non-free deb-src http://repository.glenux.net/debian/ unstable main contrib non-free
N'hésitez pas à me faire part de vos remarques pour améliorer ce logiciel ! 




