WebDAV-Server mit Linux PDF Drucken E-Mail

Vereinfacht gesagt kann man WebDAV als schnelle und unkomplizierte Lösung betrachten, wenn man Dateien (oder ganze Verzeichnisstrukturen) netzwerkbasiert bereitstellen möchte. Die Vorteile liegen in der Natur von WebDAV: Es handelt sich hierbei um eine Erweiterung des HTTP-Protokolls, das beispielsweise zum Einsatz kommt, wenn man Internetseiten aufruft. Beispielsweise sind Firewalls darauf eingestellt, ein- und ausgehenden Datenverkehr über den HTTP-Port 80 zuzulassen, also müssen keine Änderungen an Firewalls eingestellt werden. Außerdem ist ein WebDAV-basierter Ordner recht zügig online gestellt. Wie das unter Linux klappt, erkläre ich im Folgenden. Meine Anleitung ist für die Installation unter Ubuntu (und damit auch unter Debian) ausgelegt, aber SuSE, Fedora und alle anderen Distributionen werden ähnliche Wege anbieten.

 

Installation des Dienstes

Die Infrastruktur für WebDAV wird von einem Apache-Server bereitgestellt, aktuell (wir schreiben das Jahr 2009) sollte man mindestens Version 2 des Apache verwenden. Da ich gerne mit der Konsole arbeite, öffne ich diese mit

Alt+F2

und schreibe in das neu öffnende Fenster

gnome-terminal

Nun erhalte ich eine Konsole mit Benutzerrechten. Diese stelle ich für die weiteren Schritte um mit dem Befehl

sudo su

Als nächstes wird das Apache2-Paket installiert mit

apt-get update && apt-get install apache2

Anschließend wird der DAV-Dienst zum ersten Mal gestartet, Fehlermeldungen können ignoriert werden

a2enmod dav
a2enmod dav_fs
/etc/init.d/apache2 restart

 

Erstellen eines virtuellen Hosts

In diesem Abschnitt wird ein Verzeichnis für die dauerhafte Bereitstellung im Netzwerk eingerichtet.

Virtuelle Hosts werden in vielen Lehrbüchern im Verzeichnis /var/www untergebracht. Das liegt daran, dass in einem linuxbasierten System unter /var variable (also veränderliche) Dateien abgelegt sind. Ich beginne also mit dem Anlegen der Verzeichnisstruktur, in der ich deutlich sehen möchte, welche Daten nun im Netzwerk sichtbar sind und welche nicht:

mkdir -p /var/www/web/dav
chown www-data /var/www/web/dav

Der zweite Befehl weist dem Benutzer www-data den neu angelegten Ordner als sein Eigentum zu. Warum? Der fertige Apache-Server lässt im Linux-System einen Hintergrunddienst ("Daemon") laufen, der ständig prüft, ob jemand den Inhalt des Verzeichnisses sehen oder bearbeiten möchte. Kommt eine Anfrage, steuert der Daemon die weiteren Schritte: Authentifizierung (darf der das?) und Zugriffsarten (Lesen, Ändern, Löschen). Dieser Daemon outet sich im System als Anwender "www-data" und muss, um vernünftig im Verzeichnis arbeiten zu können, entsprechende Rechte an den betreffenden Ordnern und Dateien haben. Als Eigentümer des gesamten Ordners und den entsprechenden Eigentümerrechten kann der Daemon alle Operationen ausführen, die er für nötig hält.

Nun wird der Ordner dem virtuellen Host des Apache-Servers bekanntgemacht. Ich benutze für solche Dinge gerne den Editor gedit, es funktioniert aber auch mit jedem anderen Editor:

gedit /etc/apache2/sites-available/default

In der Datei wird folgende Eintragung vorgenommen:

NameVirtualHost *

<VirtualHost *>
    ServerAdmin webmaster@localhost

    DocumentRoot /var/www/web/dav/
    <Directory /var/www/web/dav/>
        Options Indexes MultiViews
        AllowOverride None
        Order allow,deny
        allow from all
    </Directory>
</VirtualHost>


Die Datei wird gespeichert und der Editor beendet.

 

Zugriffsberechtigungen vergeben

Der Ort ist nun bekannt, als nächstes muss beantwortet werden: Wer darf denn überhaupt auf die Daten zugreifen?

Möglicherweise soll nicht jeder Benutzer Dateien anlegen oder löschen dürfen. Dazu wird nun eine Passwortdatei angelegt oder erweitert:

htpasswd -c /var/www/web/passwd.dav Benutzer

Anstelle von Benutzer muss ein Benutzername eingegeben werden. Es folgt sofort die Frage nach einem neuen Passwort, mit dem sich der Benutzer künftig an der WebDAV-Freigabe anmelden kann. Auch die Zugriffsrechte an der Passwort-Datei müssen einmalig vergeben werden. Hier wird root (der Linux-Administrator) zum Eigentümer sowie die Gruppe www-data (der auch der Apache-Daemon angehört). Root darf die Datei lesen und verändern, Gruppenmitglieder von www-data dürfen die Datei nur lesen:

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

Danach muss die Datei aus dem letzten Schritt erneut bearbeitet werden.

gedit /etc/apache2/sites-available/default

Hier der Inhalt der Datei, die neuen Zeilen sind fett markiert:

NameVirtualHost *

<VirtualHost *>
    ServerAdmin webmaster@localhost

    DocumentRoot /var/www/web/dav/
    <Directory /var/www/web/dav/>
        Options Indexes MultiViews
IndexOptions -FancyIndexing
        AllowOverride None
        Order allow,deny
        allow from all
    </Directory>
   
   
Alias /webdav /var/www/web/dav

    <Location /webdav>
Dav On
    AuthType Basic
        AuthName "webdav"
        AuthUserFile /var/www/web/passwd.dav
        Require valid-user
    </Location>

</VirtualHost>

 

Der Editor wird nun wieder beendet und anschließend der Apache-Server neu gestartet, damit die geänderte Konfigurationangewendet wird

/etc/init.d/apache2 reload

 

Testen

Im letzten Schritt wird der WebDAV-Server getestet. Da Linux nicht per default mit WebDAV-Freigaben umgehen kann, ist ein WebDAV-Client nötig. Cadaver ist ein solcher Client. Dieser lässt sich nachträglich installieren mit

apt-get install cadaver

Sollte das nicht funktionieren: gedit /etc/apt/sources.list starten und im Editor das "#" vor den Zeilen deb http://archive.ubuntu.com jaunty main und deb http://archive.ubuntu.com jaunty universe entfernen, speichern, Editor schließen und den Befehl noch einmal ausführen

Anschließend gebe ich in die Konsole den Befehl zum Testen ein:

cadaver http://localhost/webdav

Es folgt die Abfrage eines Benutzernamens und eines Passworts. Hat man diese korrekt eingegeben, kann man den Client mit

quit

wieder beenden. Sollten Fehler auftauchen, wird das mit vermutlich an einer falsch abgetippten Konfigurationsdatei liegen.

 


 

Links

UbuntuUsers: WebDAV

Wikipedia: WebDAV

Heise Netze: WebDAV mit Apache

HowToForge: How to set up WebDAV with Apache2 on Ubuntu 8.10

Apache2 Direktiven AuthGroupFile