Files/WebDAV

Aus C3MAWiki
An diesem Projekt wurde bereits gearbeitet, momentan kann sich jedoch aufgrund eines Mangels an Zeit, Lust oder Geld niemand damit beschäftigen. Wenn du das Projekt übernehmen möchtest oder Fragen dazu hast, wende dich an pcopfer.


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.

Quellen