WebDAV opzetten met de Apache webserver

Armijn Hemel, 30 juli 2009, 9703 views.

Webgebaseerde opslag zet je met de Apache webserver binnen een paar minuten op.

Tags: , , , ,

WebDAV is een manier om bestanden op te slaan en te delen met webtechnologieën. Het is een uitbreiding op HTTP, het protocol waarom het WWW ('het web') is gebaseerd. Het web wordt steeds meer en meer gebruikt, ook op telefoons en andere mobiele apparatuur. Opslag via het web is daarom geen gek idee en opslag met WebDAV wordt dan ook steeds gewoner: Apple heeft de iDisk en andere providers, zoals XS4ALL in Nederland, bieden opslag gebaseerd op WebDAV aan hun klanten aan.

Een eigen server voor WebDAV opzetten is helemaal niet moeilijk, mits je de juiste technologieën gebruikt. De Apache webserver heeft erg goede ondersteuning voor WebDAV, waarmee je het binnen minuten aan de praat hebt. Maar, zoals altijd: het venijn zit in de staart. We willen je daarom dan ook alvast waarschuwen: als je gaat experimenteren met WebDAV zorg er dan voor dat je fatsoenlijke beveiliging hebt. Je wil niet dat mensen vanaf Internet gevoelige data van je server kunnen plukken, of erger: data neer kunnen zetten die je helemaal niet op je server wil hebben. Ten tweede zal je ook je gebruikers moeten trainen om WebDAV goed te gebruiken. Gedeelde opslag is erg handig en krachtig, maar als het veel gebruikt wordt dan wordt de (beperkte) bandbreedte een probleem, zeker als de WebDAV-server niet lokaal staat, maar ergens in een datacenter.

Configuratie van Apache

In Apache 2.0 en 2.2. zijn er twee modules die gebruikt worden om ondersteuning voor WebDAV mogelijk te maken. De eerste is mod_dav. Deze module handelt alle nieuwe HTTP-methodes en statuscodes af. De tweede module is mod_dav_fs en implementeert de achterkant van de opslag. Met deze module kunnen bestanden van een bestandsysteem gelezen en er naar toegeschreven worden. Het is afhankelijk van het besturingsysteem of deze modules wel of niet meegeïnstalleerd zijn.

Om WebDAV aan te zetten moeten de volgende regels in de configuratie van Apache opgenomen worden (typisch in het hoofdconfiguratiebestand httpd.conf):

LoadModule dav_module modules/mod_dav.so
LoadModule dav_fs_module modules/mod_dav_fs.so

De mod_dav_fs module gebruikt een speciale database om ervoor te zorgen dat zogeheten 'locks' op de bestanden onthouden worden. Deze database moet ook gedefinieerd zijn om te zorgen dat dit goed werkt:

<IfModule mod_dav_fs.c>
    DAVLockDB /var/lib/dav/lockdb
</IfModule>

Een simpele configuratie voor een virtuele host zou er zou uit kunnen zien (noot: dit is natuurlik geen complete configuratie voor een webserver):

<VirtualHost 10.0.0.1>
    DocumentRoot "/path/to/dav/domain/"
    ServerAdmin root@localhost
    ServerName dav.local
    <Directory /path/to/dav/domain/>
       Dav On
    </Directory>
</VirtualHost>

Dit zou genoeg moeten zijn om een virtuele host WebDAV-verzoeken af te laten handelen.

Beveiliging

Omdat WebDAV voortbouwt op HTTP betekent het dat je ook gebruik kan maken van de standaard beveiligingsmechanismes in HTTP, zoals HTTPS (beveiligde verbindingen) en authenticatie. Om met de laatste te beginnen: de meeste programma's die WebDAV spreken kunnen goed overweg met HTTP Basic authentication, sommige programma's kunnen ook HTTP Digest aan. In onze ervaring zou HTTPS met HTTP Basic authentication goed genoeg moeten zijn voor de meeste toepassingen.

Het toevoegen van HTTP Basic authentication (noot: dit is alleen de authenticatie, SSL/TLS is hier buiten beschouwing gelaten) is eenvoudig:

    <Directory /path/to/dav/domain/>
       Dav On
       AuthUserFile /path/to/authusersfile
       AuthName "Experimental DAV facility"
       AuthType Basic
       <LimitExcept OPTIONS>
           Require valid-user
        </LimitExcept>
    </Directory>

In deze configuratie wordt het HTTP OPTIONS commando expliciet toegestaan voor alle programma's, Dit is om rond een bug in Windows XP heen te werken.

Iets dat je in het achterhoofd moet houden is dat bestanden op de WebDAV-server worden geschreven en gelezen als de gebruiker die gebruikt wordt voor de webserver (zoals 'apache', 'www', of 'wwwrun'). Toegang tot bestanden moet dus ook niet geregeld worden op het niveau van de het bestandsysteem, maar op een ander niveau, zoals in de webserver. Veel WebDAV-programma's kunnen echter niet goed overweg met verschillende toegangsrechten in submappen, waar we het een andere keer over zullen hebben.

Creative Commons License Op dit werk is een Creative Commons Licentie van toepassing.
Social networking: Tweet dit artikel op Twitter Geef dit artikel door op LinkedIn Bookmark dit artikel op Google Bookmark dit artikel op Yahoo! Bookmark dit artikel op Technorati Bookmark dit artikel op Delicious Deel dit artikel op Facebook Digg dit artikel op Digg Zend dit artikel naar to Reddit Geef dit artikel een duim omhoog op StumbleUpon Zend dit artikel naar Furl

Talkback

reageer op dit artikel