{"id":339,"date":"2013-04-30T00:06:36","date_gmt":"2013-04-29T22:06:36","guid":{"rendered":"http:\/\/crudelis.fr\/sblog\/?p=339"},"modified":"2013-04-30T00:06:36","modified_gmt":"2013-04-29T22:06:36","slug":"dossier-de-partage-webdav-en-autofs","status":"publish","type":"post","link":"https:\/\/crudelis.fr\/site\/sblog\/2013\/04\/dossier-de-partage-webdav-en-autofs\/","title":{"rendered":"Dossier de partage webdav en autofs"},"content":{"rendered":"<p>J'utilisais jusqu'\u00e0 pr\u00e9sent un dossier de partage en sshfs, tr\u00e8s simple \u00e0 mettre en \u0153uvre, il n\u00e9cessitait toutefois un passage syst\u00e9matique par la ligne de commande pour \u00eatre mont\u00e9 et se montrait capricieux au d\u00e9montage.<br \/>\nL'usage d'un dossier de partage webdav se montre beaucoup plus agr\u00e9able, car le montage et le d\u00e9montage du dossier se font de mani\u00e8re parfaitement transparente et quasi instantan\u00e9e.<br \/>\nEn y ajoutant un soup\u00e7on de SSL, nous obtenons un dossier de partage beaucoup plus pratique qu'avec sshfs et parfaitement s\u00e9curis\u00e9.<br \/>\n<!--more--><\/p>\n<p>Nous allons donc explorer la mise en \u0153uvre d'un dossier de partage webdav, coupl\u00e9 \u00e0 l'usage d'autofs sur les clients pour un montage transparent \u00e0 la demande.<\/p>\n<p>Webdav pr\u00e9sente l'avantage certain d'\u00eatre compatible avec tous les syst\u00e8mes d'exploitations actuel. Du cot\u00e9 serveur, il n\u00e9cessite simplement apache.<\/p>\n<p>Nous supposerons donc que nous disposons d'un serveur apache fonctionnel. (Sinon: <a href=\"http:\/\/www.lafermeduweb.net\/billet\/tutorial-creer-un-serveur-web-complet-sous-debian-1-apache-160.html#InstApache2\" target=\"_blank\">Tutoriel apache.<\/a>)<\/p>\n<h2>Configuration d'apache et pr\u00e9parations<\/h2>\n<p>Tout d'abord, apache doit activer quelques modules pour \u00eatre capable de faire fonctionner webdav.<\/p>\n<pre>sudo a2enmod dav\nnsudo a2enmod dav_fs\nsudo a2enmod dav_lock<\/pre>\n<p>A pr\u00e9sent, nous allons choisir, puis pr\u00e9parer le dossier destin\u00e9 au partage sur le serveur.<br \/>\nChoisir un sous-dossier situ\u00e9 \u00e0 l'int\u00e9rieur du 'DocumentRoot' du VirtualHost peut s'av\u00e9rer plus simple mais expose aux risques de dysfonctionnements li\u00e9s aux 'RewriteRules' du .htaccess du site que vous h\u00e9bergez.<br \/>\nPour ma part, je conseille de choisir un dossier exempte de tout .htaccess et en dehors de votre site. Cela afin de partir sur des bases saines sans interf\u00e9rences.<\/p>\n<p>Il est tr\u00e8s important de donner le droit d'\u00e9criture \u00e0 apache sur l'ensemble du dossier.<\/p>\n<pre>sudo chown -R www-data \/DOSSIER\/DE\/PARTAGE\/<\/pre>\n<p>Sans quoi, vous serez confront\u00e9 \u00e0 l'erreur lapidaire \"Argument invalide\".<\/p>\n<p>Afin de limiter l'acc\u00e8s au dossier de partage aux seules personnes autoris\u00e9es, nous allons ajouter un .htaccess \u00e0 l'int\u00e9rieur du dossier.<\/p>\n<pre>sudo nano \/DOSSIER\/DE\/PARTAGE\/.htaccess<\/pre>\n<p>Et \u00e9crire cette unique r\u00e8gle:<\/p>\n<pre>&lt;Limit PUT POST DELETE PROPFIND PROPPATCH MKCOL COPY MOVE LOCK UNLOCK&gt;\nRequire valid-user\n&lt;\/Limit&gt;<\/pre>\n<p>Ainsi, seul un utilisateur authentifi\u00e9 pourra acc\u00e9der au dossier, que ce soit pour lire ou \u00e9crire.<\/p>\n<p>Mais si nous parlons d'utilisateur 'authentifi\u00e9', c'est justement qu'il nous faut d\u00e9finir un nom d'utilisateur et un mot de passe associ\u00e9 au dossier de partage.<br \/>\n\u00c9tant donn\u00e9 la configuration \u00e0 suivre des clients, je ne saurais que trop conseiller un mot de passe sp\u00e9cifique \u00e0 ce service.<br \/>\nCes identifiants vont \u00eatre stock\u00e9s dans un fichier .htpasswd \u00e0 placer o\u00f9 bon vous semble.<\/p>\n<pre>htpasswd \/DIR\/.htpasswd nom_d_utilisateur<\/pre>\n<p>Le dossier est pr\u00eat \u00e0 accepter le partage webdav et apache pr\u00eat \u00e0 le faire fonctionner. Nous allons donc passer \u00e0 l'\u00e9tape suivante en activant le partage depuis apache.<\/p>\n<h2>Activation du partage webdav dans le VirtualHost apache<\/h2>\n<p>Pour activer le partage webdav, nous allons simplement ajouter quelques lignes au fichier de<br \/>\nconfiguration du site servi par apache, que ce soit dans httpd.conf ou dans un VirtualHost dans sites-available.<\/p>\n<pre>#WEBDAV\nAlias \/DOSSIER_PARTAGE \/CHEMIN\/DU\/DOSSIER_PARTAGE\nDAVLockDB ${APACHE_LOCK_DIR}\/DAVLock\nDAVMinTimeout 600\n&lt;Directory \/CHEMIN\/DU\/DOSSIER_PARTAGE&gt;\nDAV On\nAuthName \"Authentification WEBDAV\"\nAuthUserFile \/DIR\/.htpasswd\nAuthType Basic\nAllowOverride AuthConfig\nOptions Indexes FollowSymLinks MultiViews Includes\n&lt;\/Directory&gt;<\/pre>\n<p>Le terme 'APACHE_LOCK_DIR' utilis\u00e9 au niveau de la directive 'DAVLockDB ${APACHE_LOCK_DIR}\/DAVLock' doit \u00eatre laiss\u00e9 tel quel. Apache en d\u00e9duira lui-m\u00eame le dossier de destination, pour ma part \/var\/lock\/apache2.<\/p>\n<pre>Alias \/DOSSIER_PARTAGE \/CHEMIN\/DU\/DOSSIER_PARTAGE<\/pre>\n<p>Cette directive n'est utile que si vous avez choisi un dossier qui ne se trouve pas sous le 'DocumentRoot' de votre site. Elle permettra \u00e0 apache d'aller chercher le dossier ailleurs.<\/p>\n<pre>AuthUserFile \/DIR\/.htpasswd<\/pre>\n<p>Cette directive va lire le fichier .htpasswd cr\u00e9\u00e9 pr\u00e9c\u00e9demment pour demander l'authentification lors de la connexion au dossier.<\/p>\n<p>Nous pouvons maintenant red\u00e9marrer apache afin qu'il prenne en compte tout les changements que nous avons apport\u00e9.<\/p>\n<pre>sudo \/etc\/init.d\/apache2 restart<\/pre>\n<p>Notre partage webdav devrait \u00e0 pr\u00e9sent \u00eatre accessible \u00e0 cette adresse:<br \/>\nhttp:\/\/monsite.fr\/DOSSIER_PARTAGE depuis un navigateur web ou webdav:\/\/monsite.fr\/DOSSIER_PARTAGE depuis un navigateur de fichier compatible.<\/p>\n<p>A ce stade, notre partage webdav est fonctionnel, mais il est n\u00e9cessaire de s'authentifier \u00e0 chaque fois que nous voulons y acc\u00e9der. De plus, il est consid\u00e9r\u00e9 comme un dossier distant et la gestion des fichiers en est donc alourdie. Nous allons donc am\u00e9liorer tout \u00e7a.<\/p>\n<h2>Montage automatique du partage \u00e0 l'aide de davfs2 et autofs<\/h2>\n<p>Afin d'obtenir un montage automatique sans demande d'authentification, nous allons modifier chacun des clients concern\u00e9s.<br \/>\nTout d'abord, le client doit installer davfs2, pour la gestion du protocole webdav en tant que syst\u00e8me de fichier et autofs pour effectuer automatiquement le montage du dossier.<\/p>\n<pre>sudo apt-get install davfs2 autofs<\/pre>\n<p>Il est possible de s'assurer du bon fonctionnement de davfs2 en montant manuellement le dossier de partage.<\/p>\n<pre>sudo mount -t davfs http:\/\/monsite.fr\/DOSSIER_PARTAGE \/DIR\/MONTAGE\/<\/pre>\n<p>On le d\u00e9montera ainsi, apr\u00e8s les essais:<\/p>\n<pre>sudo umount \/DIR\/MONTAGE\/<\/pre>\n<p>Afin d'autoriser le montage webdav sans demande d'authentification, il faut renseigner le fichier \/etc\/davfs2\/secrets et lui indiquer l'identifiant et le mot de passe. Bien que ce fichier n\u00e9cessite les droits root pour \u00eatre lu, il est vivement conseill\u00e9 d'utiliser un mot de passe sp\u00e9cifique \u00e0 ce service afin d'\u00e9viter de compromettre tout votre serveur le cas \u00e9ch\u00e9ant.<\/p>\n<pre>sudo nano \/etc\/davfs2\/secrets<\/pre>\n<p>Et ajouter \u00e0 la fin du fichier:<\/p>\n<pre>http:\/\/monsite.fr\/DOSSIER_PARTAGE identifiant motdepasse<\/pre>\n<p>D\u00e9s lors, nous pouvons nous connecter au dossier de partage sans avoir besoin de s'authentifier, davfs2 lisant les informations d'authentifications directement dans le fichier \/etc\/davfs2\/secrets.<\/p>\n<p>A pr\u00e9sent, nous allons \u00e9diter les options d'autofs pour permettre le montage automatique de webdav d\u00e9s lors que nous p\u00e9n\u00e9trerons dans le dossier cible.<br \/>\nLe dossier cible sur le client doit \u00eatre un dossier vide, celui-ci se verrait \"virtuellement\" vid\u00e9 de tout son contenu lors du montage du partage si il contenait des fichiers. Dans ce dossier cible, le montage cr\u00e9era un dossier menant au partage webdav lui-m\u00eame.<\/p>\n<p>Commen\u00e7ons par \u00e9diter le principal fichier d'autofs, \/etc\/auto.master qui r\u00e9uni tout les dossiers concern\u00e9 par l'automount. Nous allons y indiquer le dossier qui contiendra le montage webdav ainsi qu'un second fichier de configuration en charge de ce montage par autofs.<\/p>\n<pre>sudo nano \/etc\/auto.master<\/pre>\n<p>Et ajoutons \u00e0 la fin du fichier la ligne suivante:<\/p>\n<pre>\/DIR\/DOSSIER_CIBLE \/etc\/auto.webdav --timeout=30 --ghost<\/pre>\n<p>L'option --ghost sert \u00e0 cr\u00e9er le dossier pour le montage. Sans cette option, le montage ne serait pas visible et il faudrait directement l'atteindre par son adresse dans le navigateur.<\/p>\n<p>Nous allons ensuite cr\u00e9er le second fichier de configuration, mentionn\u00e9 dans la ligne ajout\u00e9e pr\u00e9c\u00e9demment.<\/p>\n<pre>sudo nano \/etc\/auto.webdav<\/pre>\n<p>Et y inscrire la ligne suivante:<\/p>\n<pre>PARTAGE -fstype=davfs,rw,exec,uid=1000,gid=1000,dir_mode=0777,file_mode=0666 http:\/\/monsite.fr\/DOSSIER_PARTAGE<\/pre>\n<p>PARTAGE est \u00e0 choisir arbitrairement, c'est le nom que portera le dossier cr\u00e9\u00e9 dans le dossier cible et qui contiendra le partage webdav.<\/p>\n<blockquote><p>Cette configuration oblige malheureusement \u00e0 avoir un sous-dossier dans l'arborescence avant d'atteindre le partage. C'est inutile et contraignant mais je ne suis pas parvenu \u00e0 un comportement plus simple sans \"vider\" le dossier parent.<\/p><\/blockquote>\n<p>Il ne reste plus qu'\u00e0 red\u00e9marrer autofs pour prendre en compte la nouvelle configuration.<\/p>\n<pre>sudo \/etc\/init.d\/autofs restart<\/pre>\n<p>Il suffit dor\u00e9navant d'ouvrir le dossier \/DIR\/DOSSIER_CIBLE pour voir appara\u00eetre le dossier PARTAGE, contenant le partage webdav avec le serveur. Ce partage sera mont\u00e9 uniquement lors de l'acc\u00e8s au dossier \/DIR\/DOSSIER_CIBLE et sera d\u00e9mont\u00e9 apr\u00e8s 30 secondes d'inactivit\u00e9 du partage. \u00c9conomisant ainsi les ressources des clients comme du serveur.<br \/>\nOn peut suivre l'activit\u00e9 de autofs et v\u00e9rifier son bon fonctionnement dans le log \/var\/log\/syslog.<\/p>\n<h2>S\u00e9curiser le partage avec SSL<\/h2>\n<p>Webdav supporte le chiffrage SSL, il suffira pour cela de configurer apache pour qu'il utilise SSL.<br \/>\nToutefois, si webdav supporte sans probl\u00e8me SSL, il en est un peu autrement avec davfs2 qui n'accepte sans sourcilier que les certificats SSL sign\u00e9s par une autorit\u00e9 de certification. Si vous utilisez un certificat auto-sign\u00e9, davfs2 demandera une confirmation du certificat \u00e0 chaque connexion, ce qui rend impossible toute automatisation par autofs.<br \/>\nPour obtenir un certificat sign\u00e9 par une CA reconnue, je conseille <a href=\"https:\/\/www.startssl.com\/\" target=\"_blank\">startssl.com<\/a>, qui fourni gratuitement un certificat valide sur tout les navigateurs.<\/p>\n<p>En consid\u00e9rant apache configur\u00e9 pour utiliser SSL et un certificat sign\u00e9 par une autorit\u00e9 de certification, voyons comment configurer davfs2 et autofs pour s\u00e9curiser le partage avec SSL.<\/p>\n<p>Tout d'abord, il faut copier la cl\u00e9 publique monsite.crt ou monsite.pem dans le dossier \/etc\/davfs2\/certs\/. Ensuite nous allons \u00e9diter le fichier \/etc\/davfs2\/davfs2.conf.<\/p>\n<pre>sudo nano \/etc\/davfs2\/davfs2.conf<\/pre>\n<p>Puis d\u00e9commenter et \u00e9diter la ligne suivante:<\/p>\n<pre>servercert monsite.crt<\/pre>\n<p>Pour terminer, nous allons \u00e9diter les fichiers \/etc\/davfs2\/secrets et \/etc\/auto.webdav en rempla\u00e7ant http par https.<\/p>\n<p>Un red\u00e9marrage de autofs suffira pour que SSL soit utilis\u00e9 lors des connexions.<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>Tout est termin\u00e9, et nous disposons \u00e0 pr\u00e9sent d'un dossier de partage qui se monte automatiquement \u00e0 la demande et se d\u00e9monte lorsqu'il n'est plus utilis\u00e9. Sans aucune intervention de votre part.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>J'utilisais jusqu'\u00e0 pr\u00e9sent un dossier de partage en sshfs, tr\u00e8s simple \u00e0 mettre en \u0153uvre, il n\u00e9cessitait toutefois un passage syst\u00e9matique par la ligne de commande pour \u00eatre mont\u00e9 et se montrait capricieux au d\u00e9montage. L'usage d'un dossier de partage webdav se montre beaucoup plus agr\u00e9able, car le montage et le d\u00e9montage du dossier se [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_links_to":"","_links_to_target":""},"categories":[3,6],"tags":[32,42],"class_list":["post-339","post","type-post","status-publish","format-standard","hentry","category-home-server","category-servus","tag-partage","tag-webdav"],"_links":{"self":[{"href":"https:\/\/crudelis.fr\/site\/sblog\/wp-json\/wp\/v2\/posts\/339","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/crudelis.fr\/site\/sblog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/crudelis.fr\/site\/sblog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/crudelis.fr\/site\/sblog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/crudelis.fr\/site\/sblog\/wp-json\/wp\/v2\/comments?post=339"}],"version-history":[{"count":0,"href":"https:\/\/crudelis.fr\/site\/sblog\/wp-json\/wp\/v2\/posts\/339\/revisions"}],"wp:attachment":[{"href":"https:\/\/crudelis.fr\/site\/sblog\/wp-json\/wp\/v2\/media?parent=339"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/crudelis.fr\/site\/sblog\/wp-json\/wp\/v2\/categories?post=339"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/crudelis.fr\/site\/sblog\/wp-json\/wp\/v2\/tags?post=339"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}