Linux:Webdav

Un article de Djjnet.

Webdav est une extension à HTTP permettant la gestion de fichier (suppression, upload ...)

Côté Serveur - Apache2

  • Installer les modules d'apache2 pour webdav :

Les modules sont directement disponible avec les paquets Apache2 de base de Debian Etch, il suffit de les activer :

a2enmod dav_fs
a2enmod dav
/etc/init.d/apache2 force-reload
  • Configurer le virtualhost nécessitant un accès Webdav :

Cela ne se fait pas au niveau de la directive VirtualHost mais soit au niveau de la directive Location soit de la directive Directory.

Webdav ne gère pas l'authentification, il est nécessaire de la réaliser avec Apache :

<Directory /var/www/dav>
   DAV On
   AuthName "Webdav Access"
   AuthType Basic
   AuthUserFile /var/www/.htpasswd
   Require valid-user
   Options -Indexes FollowSymLinks MultiViews
   AllowOverride None
   <IfModule mod_access.c>
   Order allow,deny
   Allow from all
   </IfModule>
</Directory>

Côté Client - Linux

Remplacer user par votre utilisateur.

  • Installer les paquets suivant :
apt-get install davfs2
  • Editer le fichier /etc/fstab pour ajouter l'adresse de l'accès Webdav :
http://acceswebdav	/home/user/webdav	davfs	user,noauto     0       0
  • Ajouter l'utilisateur au groupe davfs2, /etc/group :
davfs2:x:121:user
  • Créer un dossier .davfs2
mkdir ~/.davfs2
  • Créer le fichier ~/.davfs2/secrets pour y mettre les accès Webdav :
http://acceswebdav utilisateur motdepass

Donner les bons droits au fichier sinon vous aurez une erreur "/sbin/mount.davfs: file /home/user/.davfs2/secrets has wrong permissions" :

chmod 600 ~/.davfs2/secrets
  • Vous pouvez maintenant monter le dossier :
mount /home/user/webdav
  • Pour monter automatiquement le dossier lorsque vous lancez un terminal, éditer le fichier ~/.bashrc et ajouter à la fin :
if [ "$(mount |grep webdav)" == "" ]; then mount ~/webdav/ ; fi

Il faut que le texte après grep corresponde au nom du dossier où se trouve le montage webdav mais qu'il ne soit pas présent dans un autre nom de dossier monté retourné par la commande mount.