WebDAV mit Apache 2

Häuptling Datentausch

Dem File Transfer Protocol merkt man zusehends sein Alter an, dennoch bleibt es nach wie vor die erste Wahl beim Bestücken eines Web-Servers. Mit WebDAV steht jedoch ein viel versprechender Nachfolger in den Startlöchern, der sich zudem mit nur wenigen Handgriffen in Apache 2 aktivieren lässt.

Als Tim Berners Lee den ersten Browser schrieb, konnte dieser Webseiten nicht nur lesen, sondern auch editieren. Mit den erfolgreicheren Nachfolgern fiel diese Funktion jedoch unter den Tisch, das Web wuchs in rasantem Tempo zu einem überwiegenden Nur-Lese-Medium heran. Wer heute seinen Internetauftritt pflegen oder Dateien mit anderen austauschen möchte, muss seinen Server immer noch via FTP oder SSH durch die Hintertür beladen.

James ("Jim") Whitehead war dies ein Dorn im Auge. Um die Limitierungen aufzuheben und eine gemeinsame Arbeit an Dokumenten (Distributed Authoring) zu fördern, rief er bereits Mitte der 90er Jahre eine IETF-Arbeitsgruppe ins Leben. Gemäß ihren Zielen trug sie den ziemlich sperrigen Titel Web-based Distributed Authoring and Versioning, kurz WebDAV. Heraus kam der gleichnamige Standard, mit dem man Dateien nicht nur komfortabel auf einen Webserver hieven, sondern dort auch gleich noch manipulieren kann. Passende Clients lassen den Webserver sogar wie eine lokale Festplatte erscheinen. Der Dateiaustausch über das Internet oder die Wartung des eigenen Internetauftritts wird somit zum Kinderspiel. Da WebDAV zudem auf HTTP aufsetzt, muss man im Gegensatz zu FTP oder SSH keine weiteren Löcher in die wohlkonfigurierte Firewall bohren.

Der weit verbreitete Webserver Apache 2 unterstützt WebDAV von Haus aus, man muss das Protokoll nur noch einschalten und passend einrichten – was wiederum mit wenigen Zeilen in der Konfigurationsdatei erledigt ist.

Baukasten

Apache verteilt einige seiner Funktionen auf mehrere Module. So auch im Fall von WebDAV: Das Modul »mod_dav« stellt lediglich die Grundfunktionen zur Verfügung, sein Kollege »mod_dav_fs« bildet die später nutzbaren WebDAV-Verzeichnisse auf reale Unterverzeichnisse des Web-Servers ab. Als erste Amtshandlung muss der Apache-Admin folglich beide Module in der zentralen Konfigurationsdatei »httpd.conf« (meist im Unterverzeichnis »/etc/apache2« ) scharf schalten:

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

Das Verzeichnis »modules/« ist eventuell gegen die korrekte Lagerstädte der Module auszutauschen. Die im Beispiel verwendeten relativen Pfadangaben sieht Apache immer vom »ServerRoot« -Verzeichnis aus.

Bei Debian-basierten Distributionen, wie etwa Ubuntu, aktiviert man die Module etwas bequemer das Hilfswerkzeug »a2enmod« :

sudo a2enmod dav
sudo a2enmod dav_fs

Lagerhalle

Fehlt noch ein Verzeichnis, das Apache später via WebDAV seinen Benutzern bereitstellt. In den folgenden Beispielen soll dazu »/var/webdav« dienen. Damit Apache darin ungestört schalten und walten kann, benötigt es passende Zugriffsrechte. Dazu legt der Administrator es am Besten in die Hände des Benutzers und der Gruppe des Webservers, unter Ubuntu »www-data« (in anderen Distributionen auch gerne »wwwrun« ):

sudo chown www-data:www-data /var/webdav

Neben dem Verzeichnis auf dem Server muss noch eine URL her, unter der die Inhalte von »/var/webdav« zu erreichen sind. Im Beispiel soll dies »http://www.example.com/webdav« sein. Mit diesen Informationen im Hinterkopf schaltet der Administrator in »httpd.conf« WebDAV scharf:

DavLockDB /usr/local/apache2/var/DavLock
Alias /webdav "/var/webdav"
<Directory "/var/webdav">
        DAV on
</Directory>

Das war schon alles: Der »Alias« sorgt für eine Abbildung des Verzeichnisses auf die URL, die nachfolgenden Direktiven schalten WebDAV für das Verzeichnis »/var/webdav« ein. Anstelle von »<Directory>« darf man auch den Container »<Location>« verwenden. Dann würden sich die WebDAV-Einstellungen auf das angegebene virtuelle Verzeichnis beziehen, im Fall von »<Location /webdav>« also auf »/webdav« .

comments powered by Disqus
Einmal pro Woche aktuelle News, kostenlose Artikel und nützliche ADMIN-Tipps.
Ich habe die Datenschutzerklärung gelesen und bin einverstanden.

Konfigurationsmanagement

Ich konfiguriere meine Server

  • von Hand
  • mit eigenen Skripts
  • mit Puppet
  • mit Ansible
  • mit Saltstack
  • mit Chef
  • mit CFengine
  • mit dem Nix-System
  • mit Containern
  • mit anderer Konfigurationsmanagement-Software

Ausgabe /2023