Architecture Domestique - Partages sur le web
Toujours dans l'idée de la construction de mon réseau domestique, s'est peu à peu imposé le besoin de disposer de nos fichiers locaux (documents, photos, etc.) à travers notre intranet. Cela était déjà possible en lecture simple, mais une chose en entraînant une autre, est venu la nécessité de rendre possible l'écriture sur ces partages.
Exporter un partage en NFS ou même CIFS à travers le NET n'est pas impossible mais reste un peu limite en terme de sécurité. Passer par un tunnel est une solution viable mais relativement lourde à mettre en oeuvre, surtout lorsque le poste client est un windows. C'est ainsi que la solution WebDAV c'est imposée d'elle-même.
WebDAV ?
Le WebDAV est protocole normalisé dont le but est de permettre de transformer le web en système de fichier que l'on peut lire, écrire e parcourir.
Pour ne pas réinventer la roue, WebDAV vient en réalité enrichir le protocole HTTP/1.1, celui-là même qui depuis maintenant 18 ans (HTTP/0.9) anime le Net. Ainsi, lorsque vous tapez l'URL http://artisan.karma-lab.net/chemin/un_document.html, votre navigateur va envoyer au service Apache une commande (ou verbe) GET /chemin/un_document.html. La première pierre d'un gestion de fichier.
Moins évident, lorsque vous postez un formulaire, votre navigateur utilise la commande POST qui permet donc d'expédier un contenu "en direction" d'une URL. Nous avons là la seconde pierre. Enfin, il existe aussi dans la norme HTTP une commande DELETE bien peu utilisée qui permet la destruction d'un document distant. Comme vous le voyez, HTTP permet déjà bien plus que naviguer simplement sur votre site préféré.
Mais ces commandes ne suffisent pas à transformer le WEB en un système de fichier. Il manque à HTTP quelque chose de fondamentale, un verbe capable de nous donner la représentation des fichiers ou dossiers disponibles à partir d'une URL donnée. Et c'est là le principal ajout du protocole WebDAV, avec la commande PROPFIND.
PROPFIND permet non seulement d'énumérer de manière récursive (profondeur allant de 0 à l'infini) les ressources se trouvant à une URL donnée, mais aussi de connaître les propriétés (taille, date de modification, de création, etc) de chacune des ressources découvertes.
WebDAV ajoute aussi d'autres verbes "utilitaires" permettant de déplacer ou renommer (MOVE), de copier (COPY), de créer un dossier (appelé collection avec MKCOL), de verrouiller/déverrouiller une ressource (LOCK et UNLOCK), de détruire une collection (RMCOL), etc. Le WEB est ainsi équipé pour devenir un véritable système de fichiers tout en conservant une philosophie éprouvée et les infrastructures qui vont avec (serveur, proxy, navigateurs, etc.).
Avoir son serveur WebDAV
Rien de plus simple, il suffit pour cela d'avoir une machine accessible du réseau publique par une adresse connue et d'un serveur Apache.
Ainsi si l'on veut par exemple partager le dossier /donnees/partage via l'url http://mon_site/partage, il faut d'abord installer le paquet apache-mod_dav. Ensuite, vous pouvez modifier votre fichier /etc/http/conf/httpd.conf en ajoutant le chargement des modules :
LoadModule dav_module modules/mod_dav.so
LoadModule dav_fs_module modules/mod_dav_fs.so
DavLockDB /var/lib/dav/lockdbhttpd.conf
Enfin, généralement dans le dossier /etc/httpd/conf/vhost.d, dans votre fichier de définition de votre serveur, vous n'avez plus qu'à rajouter ceci :
Alias /partage "/donnees/partage"
<Directory "/donnees/partage">
Dav On
Order allow,deny
Allow from all
</Directory>
C'est le minimum, il faut aussi penser à intégrer ici votre stratégie de sécurité. A noter que WebDav passe aussi bien lorsqu'encapsulé dans un flux crypté SSL/TLS (HTTPS).
Tester le partage
Une fois votre configuration terminée, il suffit de redémarrer Apache et avec votre navigateur, d'aller à l'adresse http://mon_serveur/donnees/partage pour voir la liste des fichiers apparaître. Comme je vous le disais, WebDAV est une extension de HTTP, la lecture de cette URL par un GET est donc interprété par le module Dav comme une commande d'énumération des ressources disponible et leur affichage en HTML. Vous avez donc là votre premier client WebDAV, en lecture-seule cependant.
Après, pour tester cela "en vrai", il va nous falloir un client WebDAV. Un tel client est aujourd'hui intégré dans la couche GVFS de Gnome. Pour la mise en oeuvre, il suffit donc de saisir dans la barre d'adresses de Nautilus le chemin dav://mon_serveur/donnees/partage (ou davs:// si vous utilisez un vhost ssl).
Conclusion
Il existe de nombreux autres clients, à vous de trouver celui qui vous convient. Ils ne sont pas tous égaux, loin de là, en fonctionnalités et performances.
En tout état de choses, le protocole WebDAV est un fantastique système de gestion de fichier qui permet de s'affranchir de nombreuses limites imposés par exemple sur les réseaux d'entreprise. Il rend aussi possible le partage d'informations de manière simple et fiable sans qu'il ne soit nécessaire, dans la plupart des cas, d'installer la moindre application supplémentaire sur la machine client. C'est du coup assez dommage que ce protocole soit aussi peu connu et utilisé.