Configurer WebDAV Avec Lighttpd

Pré-requis

Installation

Installez les paquets lighttpd,lighttpd-mod-webdav,apache2-utils ou en ligne de commande :

sudo apt-get install lighttpd lighttpd-mod-webdav apache2-utils

Le paquet apache2-utils contient l'outil htpasswd dont nous aurons besoin.

Ensuite, créez le répertoire /var/run/lighttpd et faites-le appartenir à l'utilisateur et au groupe www-data :

sudo mkdir /var/run/lighttpd/
sudo chown www-data:www-data /var/run/lighttpd/

Ce répertoire contiendra une base de données SQLite nécessaire à WebDAV.

Activez le module mod_auth :

sudo lighty-enable-mod auth

ouvrez avec les droits d'administration le fichier /etc/lighttpd/lighttpd.conf pour vous assurer que les modules mod_alias et mod_webdav sont activés dans le paragraphe server.modules :

[...]
server.modules = (
"mod_access",
"mod_alias",
"mod_accesslog",
# "mod_rewrite",
# "mod_redirect",
# "mod_status",
# "mod_evhost",
# "mod_compress",
# "mod_usertrack",
# "mod_rrdtool",
"mod_webdav",
# "mod_expire",
# "mod_flv_streaming",
# "mod_evasive"
)
[...]

Redémarrez ensuite lighttpd :

sudo /etc/init.d/lighttpd restart

Création d'un hôte virtuel

Créons maintenant un serveur virtuel lighttpd www.example.com dans le répertoire /var/www/web1/web. Si vous avez déjà un serveur virtuel pour lequel vous voulez activer WebDAV, adaptez ce tutoriel à votre situation.

Tout d'abord, créez le répertoire /var/www/web1/web et faisons de l'utilisateur de lighttpd www-data le propriétaire de ce répertoire :

sudo mkdir -p /var/www/web1/web
sudo chown www-data:www-data /var/www/web1/web

Ouvrez avec les droits d'administration le fichier /etc/lighttpd/lighttpd.conf pour ajouter le serveur virtuel suivant à la fin du fichier :

[...]
$HTTP["host"] == "www.example.com" {
server.document-root = "/var/www/web1/web"
}

et redémarrez lighttpd :

sudo /etc/init.d/lighttpd restart

Configuration

Configurons l''hôte virtuel pour WebDAV.

N'utilisez pas le commutateur -c si /var/www/web1/passwd.dav existe déjà car cela va recréer le fichier à partir de zéro, ce qui signifie que vous perdez tous les utilisateurs dans ce fichier !
Maintenant, nous créons le fichier de mot de passe WebDAV /var/www/web1/passwd.dav avec l'utilisateur test (le commutateur-c crée le fichier s'il n'existe pas) :

sudo htpasswd -c /var/www/web1/passwd.dav test

Vous serez invité à saisir un mot de passe pour l'utilisateur test.

Maintenant, changez les permissions du fichier /var/www/web1/passwd.dav de sorte que seuls root et les membres du groupe www-data y ont accès :

sudo chown root:www-data /var/www/web1/passwd.dav
sudo chmod 640 /var/www/web1/passwd.dav

Ouvrez avec les droits d'administration le fichier /etc/lighttpd/lighttpd.conf pour qu'il se présente comme suit :

$HTTP["host"] == "www.example.com" {
server.document-root = "/var/www/web1/web"
alias.url = ( "/webdav" => "/var/www/web1/web" )
$HTTP["url"] =~ "^/webdav($|/)" {
webdav.activate = "enable"
webdav.is-readonly = "disable"
webdav.sqlite-db-name = "/var/run/lighttpd/lighttpd.webdav_lock.db"
auth.backend = "htpasswd"
auth.backend.htpasswd.userfile = "/var/www/web1/passwd.dav"
auth.require = ( "" => ( "method" => "basic",
"realm" => "webdav",
"require" => "valid-user" ) )
}
}

La directive alias.url (conjointement à $HTTP[“url”] =~ “^/webdav($|/)”) fait que, lorsque vous appelez /webdav, WebDAV est appelé, mais vous pouvez toujours accéder à l'ensemble du document racine du serveur virtuel. Toutes les autres URL de ce serveur virtuel sont encore en HTTP “normal”.

Redémarrez ensuite lighttpd :

sudo /etc/init.d/lighttpd restart

Utilisation

Test de WebDAV

Installez le paquet cadaver, un client WebDAV en ligne de commande :

sudo apt-get install cadaver

Pour tester si WebDAV fonctionne, tapez :

cadaver http://www.example.com/webdav/

Vous devriez être invité à entrer un nom d'utilisateur. Tapez test puis le mot de passe pour l'utilisateur test. Si tout va bien, vous devriez bénéficier d'un accès qui signifie WebDAV fonctionne.

Tapez quit pour quitter le shell de WebDAV:

server1:~# cadaver http://www.example.com/webdav/
Authentication required for webdav on server `www.example.com':
Username: test
Password:
dav:/webdav/> quit
Connection to `www.example.com' closed.
server1:~#

Configurer un client Windows XP pour se connecter au partage WebDAV

D'après http://www.heise.de/netze/WebDAV-mit-Apache--/artikel/77605/3 (en allemand), les clients Windows XP/SP2 ne prennent pas en charge l'authentification Basic avec WebDAV sauf si vous téléchargez ce fichier et modifiez le registre Windows : ftp://ftp.heise.de/pub/ct/listings/0504-202.zip. Le fichier contient un fichier .reg : double-cliquez dessus pour l'installer, puis redémarrez Windows.

Après le redémarrage, cliquez sur Favoris réseau sur votre bureau (les captures d'écran sont sous un Windows allemand) :

Sélectionnez Ajouter un emplacement réseau dans le menu Voisinage réseau (sur la gauche) :

L'assistant Ajouter un emplacement réseau s'ouvre. Cliquez sur le bouton Suivant :

Sélectionnez Choisissez un autre emplacement réseau, et cliquez sur Suivant :

Entrez l'emplacement http://192.168.0.100/webdav et cliquez sur Suivant :

Vous serez invité à entrer un nom d'utilisateur et un mot de passe. Tapez le nom d'utilisateur test et le mot de passe pour l'utilisateur test :

Tapez un nom pour le dossier WebDAV :

Pour ouvrir la nouvelle connexion, gardez cochée la boîte Ouvrir ce site lorsque je clique sur Terminer et cliquez sur Terminer :

Le dossier WebDAV s'ouvre, vous pouvez parcourir le répertoire /var/www/web1/web et ses sous-répertoires sur le serveur et vous trouverez une icône pour votre nouveau partage WebDAV dans le dossier Mon voisinage réseau :

Dans l'URL WebDAV, spécifiez le port (par exemple http://www.example.com:80/webdav). Pour une raison étrange, cela permet à Windows XP d'accepter le nom d'utilisateur normal (par exemple, test) Sinon, Windows XP attend des noms d'utilisateurs NTLM (qui auraient la forme www.example.com\test).

Configurer un client Linux (GNOME) pour se connecter au partage WebDAV

Pour vous connecter au partage WebDAV à partir d'un bureau GNOME, dans le menu Fichiers de Nautilus, ouvrez Se connecter au serveur... :

Sélectionnez WebDAV (HTTP) comme type de service, renseignez le serveur (frappe.maison 192.168.0.100 dans cet exemple), puis le dossier (webdav). Ne remplissez pas encore le nom d'utilisateur, sinon la connexion échoue. Cliquez sur Connexion :

Entrez le nom d'utilisateur et son mot de passe puis cliquez sur Connexion :

Vous pouvez obtenir l'erreur suivante...

... mais en même temps, WebDAV apparaît sur le bureau, ce qui signifie que vous pouvez ignorer l'erreur :

Double-cliquez sur l'icône pour ouvrir le partage WebDAV

Désinstallation

Voir aussi

(en) WebDAV: http://www.webdav.org(en) Lighttpd: http://www.lighttpd.net(en) Debian: http://www.debian.org

Contributeurs principaux : Jamaique.

Basé sur « How To Set Up WebDAV With Lighttpd On Debian Etch » par Falko Timme.