Home > Apache, Linux > Linux: Apache WebDAV

Linux: Apache WebDAV

WebDAV ist eine Technik die immer mehr zum Zuge kommt, wenn man von Cloud-Computing spricht. WebDAV steht für „Web-based Distributed Authoring and Versioning“ und dient dazu Daten im Internet bereitzustellen. Ein Anwender kann dann auf diese zugreifen, als wenn es eine eingebaute Festplatte in seinem System wäre.

Technisch gesehen ist WebDAV „nur“ eine Erweiterung für das HTTP Protokoll, welches es dem Anwender möglich macht Dateien direkt auf dem Apache zu verändern und zu speichern.

Doch gerade diese Erweiterung macht WebDAV so interessant, denn es benötigt so zukünftig keine FTP/SFTP/SSH Server, da alles über einen Port und eine Schnittstelle gemacht werden kann.

  1. Installation von WebDAV
    Sofern noch keine Apache installiert ist:
    aptitude install apache2

    Anschließend müssen wir die Module für den Apache laden und den Apache reloaden bzw. restarten
    a2enmod dav
    a2enmod dav_fs
    /etc/init.d/apache2 restart
  2. Konfiguration des virtuellen Hosts
    Bei der Konfiguration sollte man sich unter anderem vielleicht folgende Frage stellen:
    – Möchte ich nur einen Teil des virtuellen Hosts als WebDAV haben? Oder den ganzen?
    – Wieviel Benutzer benötige ich?
    – Brauche ich mehrere Ordner mit unterschiedlichen Berechtigungen?
    Nachdem man diese Fragen geklärt hat, kann man erst anfangen das System richtig einzurichten. Ich werde euch hier zeigen, wie man eine ganze VHost mit mehreren Benutzen sowie mehreren Ordnern einrichtet.
    <VirtualHost *:80>
    ServerAdmin webmaster@xitch.de
    DocumentRoot /home/site-webdav/htdocs/public

    <Directory /home/site-webdav/htdocs/public/>
    Options Indexes MultiViews
    AllowOverride None
    Order allow,deny
    allow from all
    </Directory>

    Mit dem Alias geben wir an, wo der WebDAV Bereich startet. In diesem Beispiel beginnt er direkt im Root des virtuellen Hosts. Mit „Alias /webdav /home/site-webdav/htdocs/public“ würde der WebDAV Bereich erst bei „http://www.domain.tld/webdav“ beginnen.
    Alias / /home/site-webdav/htdocs/public/

    Im Folgenden geben wir an, welchen Authentifizierungstyp wir nutzen wollen (Basic oder Digest), wo das Passwort File liegt und welche Bedingung ein Anwender erfüllen muss, um auf das Verzeichnis zugreifen zu können. Mit „ForceType“ zwingen wir den Apache zusätzlich dazu, auch PHP Dateien als Text anzuzeigen und nicht kompiliert.
    <Location />
    Dav On
    AuthType Digest
    AuthName "WebDav"
    AuthUserFile /home/site-webdav/htdocs/.digest.dav
    AuthDigestDomain /
    Options Indexes
    ForceType text/plain
    Require valid-user
    </Location>

    Zur Vollständigkeit:
    LogLevel warn
    ErrorLog /home/site-webdav/logs/error_log
    CustomLog "| /usr/sbin/rotatelogs /home/site-webdav/logs/access_log.%Y.%m.%d 86400" combined
    </VirtualHost>
  3. Konfiguration der WebDAV Anwender
    Wenn wir nun mehrere Benutzer mit persönlichen Ordnern einrichten wollen, können wir das ganze wie folgt machen:
    <Location /users/xitch>
    Options Indexes
    ForceType text/plain
    Require user xitch
    </Location>

    Durch die Konfiguration „require user xitch stellen wir sicher, dass nur der Benutzer „xitch“ in dem Ordner „/users/xitch“ Berechtigungen hat.
  4. Ordner und Benutzer anlegen
    mkdir -p /home/site-webdav/htdocs/public/users/xitch /home/site-webdav/logs
    chown -R www-data:www-data /home/site-webdav/
    htdigest -c /home/site-webdav/htdocs/.digest.dav WebDav root
    htdigest /home/site-webdav/htdocs/.digest.dav WebDav xitch
  5. Testen
    Um das ganze zu testen gibt man nun im Browser einfach die URL zum WebDAV an. Danach sollte, wenn alles richtig funktioniert, eine Authentifizierungsanfrage (Benutzer, Passwort) erscheinen.

Zusätzliche Information:
Generell empfiehlt es sich den WebDAV virtuellen Host via HTTPS (SSL) abzusichern, da der Authentifizierungstyp Digest nur zum authentifizieren da ist, nicht zum verschlüsseln der Datenübertragung. Der Authentifizierungstyp Basic ist nicht zu empfehlen, da dieser nur den Benutzernamen und das Passwort codiert (base64) und nicht verschlüsselt.

Zusätzlich zu der oben beschriebene Konfiguration ist es möglich auf den einzelnen Verzeichnissen/Benutzern Befehle zu sperren, dies macht man in der „Location“ für das Verzeichnis mit dem Befehl „Limit„.

<Limit COPY DELETE LOCK MKCOL MOVE POST PUT UNLOCK>
require user xitch
</Limit>

PS: Ich bin in diesem HowTo jetzt nicht genau auf die Erstellung und Aktivierung eines virtuellen Hosts oder Standardeinstellung eingegangen. Dieses würde auch den Rahmen hier sprengen, wer dabei Unterstützung braucht möge sich einfach hier in den Kommentaren melden.

  1. Bisher keine Kommentare
  1. Bisher keine Trackbacks


8 + = 17