Kleines HowTo für einen WebDAV Server mit einem Apache2 Server auf Debain. Wie Üblich ohne Garantie auf Richtigkeit. Wer Fehler findet, Verbesserungsvorschläge hat o.ä. bitte auf der Diskussionsseite eintragen.
Benötigt
Dieses HowTo benötigt:
- Einen Installierten Apache Server
- mit aktiviertem SSL
- und dem Apache Modul auth_digest
Vorbereitungen
Als erster Schritt müssen die Module dav und dav_fs im Apache aktiviert werden. Diese sind zumindest bei Debian Standart mäßig bei der apt-get Installation von Apache dabei.
$ a2emod dav
$ a2emod dav_fs
$ /etc/init.d/apache2 restart
Weiterhin werden natürlich noch Verzeichnisse benötigt um die Dateien abzulegen:
$ mkdir /var/webdav
Diese Ordner sollten dem Apache User (Standart www-data) zugeordnet sein:
$ chown www-data:www-data /var/webdav/
Es werden noch die entsprechenden User und Gruppendateien benötigt. Dafür wird ein Verzeichnis benötig.
$ mkdir /var/webauth/
$ mkdir /var/webauth/webdav/
$ mkdir /var/webauth/webdav/davlockdb/
$ chown www-data:www-data /var/webauth/webdav/davlockdb/
$ cd /var/webauth/webdav/
Jetzt werden die User angelegt. Wichtig ist hier das der Name des freizugebenden Bereichs auch in der config Richtig anzugeben.
$ htdigest -c .htuser WebDAV user1
$ htdigest .htuser WebDAV user2
$ htdigest .htuser WebDAV user3
...
Die User können dann noch Gruppen zugeordnet werden. Dazu eine Textdatei erstellen und die Gruppenmitgliedern durch einen Doppelpunkt getrennt hinter den Gruppennamen schreiben.
$ nano .htgroup
rw:user1
ro:user2 user3
Konfiguration
Jetzt kommt die Konfiguration vom Apache. Dafür wird eine Textdatei webdav.conf in /etc/apache2/conf.d/ angelegt. Der genaue Ort und der Name der Datei ist egal wenn die Datei in die Apache conf eingebunden wird.
$ cd /etc/apache2/conf.d/
$ nano webdav.conf
Hier eine Beispielkonfiguration:
DavLockDB "/var/webauth/webdav/davlockdb/davlockdb"
Alias /webdav "/var/webdav/"
<Directory "/var/webdav/">
# Verzeichnis /var/webdav/ Online stellen mit den Optionen ... und für alle Sichtbar
Options Indexes MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>
<Location /webdav>
# Dav Modul für /webdav aktivieren
Dav On
# Zugriff nur via https
SSLRequireSSL
# Authentifizierung via Digest alternativ kann man auch Basis verwenden
AuthType Digest
# Name des Authentifizerten Bereiches
AuthName WebDAV
# Domain und URI des Authentifizerten Bereichs
AuthDigestDomain /webdav/ https://www.ccc-mannheim.de/webdav/
# User informationen aus einer Datei Beziehen
AuthDigestProvider file
# Pfad der Datei
AuthUserFile "/var/webauth/webdav/.htuser"
# Pfad der Gruppeninformationen
AuthGroupFile "/var/webauth/webdav/.htgroup"
# Alle Methoden außer OPTIONS benötigen einen Gültigen User
<LimitExcept OPTIONS>
Require valid-user
</LimitExcept>
# Für die Methoden ist es Notwendig, das der User Mitglied der Gruppe rm ist.
<Limit COPY DELETE LOCK MKCOL MOVE POST PUT UNLOCK>
Require group rw
</Limit>
</Location>
Um die Konfiguration zu übernehmen, Apache die Konfiguration neu einlesen lassen
/etc/init.d/apache2 force-reload
Soweit sollte die Konfiguration Fertig sein. Jetzt sollte man auf den Server mit https://www.ccc-mannheim.de/webdav/ zugreifen können und den Ordnerinhalt sehen können. Mit einem WebDAV fähigen Programm (Windows Exlorer, Mac Finder, ...) kann man jetzt Dateien hochladen.
Erweiterung
Wenn man Unterverzeichnisse für bestimmte Gruppen Freigeben möchte, legt man am besten in der config einen neuen Location Eintrag an und gibt die Änderungen an. Hier Beispielsweise um das Schreiben auf den Unterordner foo nur user2 zu erlauben.
<Location "/var/webdav/foo/">
<Limit COPY DELETE LOCK MKCOL MOVE POST PUT UNLOCK>
Require user user2
</Limit>
</Location>
Zertifkatsbasierte Autorisierung
Da es leider kaum Clients gibt, die bei WebDAV mit Zertifikaten umgehen können, empfehle ich momentan des Oben beschriebenen Weg. Wer da was kennt bitte melden.