Artisan Numérique

/système/stockage/cifs/webdav/ Partages de fichiers via WebDAV

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 /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/lockdb
httpd.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).

C'est le processus apache qui va accéder à ces fichiers. Cela implique que vous devez régler les droits en écriture pour cet "utilisateur" sur votre système de fichier. Notez que cela peu représenter une faille de sécurité car qui arrive à compromettre Apache, pourra potentiellement accéder à ces fichiers. Pour limiter cela dans un environnement critique, utilisez les MPM peruser ou itk.

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

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é.