WebDAV

Aus Foxwiki
Version vom 11. September 2020, 11:14 Uhr von Dirkwagner (Diskussion | Beiträge) (Die Seite wurde neu angelegt: „= Einführung = right WebDAV / HTTP im [http://de.wikipedia.org/wiki/TCP/IP-Referenzmodell TCP/IP‑Protokollstapel]: {| |- | | Anwend…“)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Subpages:

Einführung

Datei:Bild1.png

WebDAV / HTTP im TCP/IP‑Protokollstapel:


Anwendung WebDAV / HTTP
Transport TCP
Internet IP (IPv4, IPv6)
Netzzugang Ethernet Token

Bus

Token

Ring

FDDI

WebDAV (Web-based Distributed Authoring and Versioning) ist ein offener Standard zur Bereitstellung von Dateien im Internet. Dabei können Benutzer auf ihre Daten wie auf eine Online-Festplatte zugreifen.

Technisch gesehen ist WebDAV eine Erweiterung des Protokolls HTTP/1.1, die bestimmte Einschränkungen von HTTP aufhebt. Bisher kennt man aus Online-Formularen meist nur die Möglichkeit, einzelne Dateien hochzuladen (HTTP-POST). Mit WebDAV können ganze Verzeichnisse übertragen werden. Zudem ist eine Versionskontrolle spezifiziert.

WebDAV (Web-based Distributed Authoring and Versioning) ist ein offener Standard zur Bereitstellung von Dateien im Internet. Der Benutzer kann durch WebDAV auf seine Daten wie bei einer "Online-Festplatte" zugreifen. Bekannte Dienste sind beispielsweise Apples iDisk oder das GMX Mediacenter. Die Einrichtung eines eigenen WebDAV-Servers mittels dem Webserver Apache wird unter Apache/mod dav beschrieben.

WebDAV ist eine bequeme Möglichkeit Dateien über das Internet auszutauschen. WebDAV ist ein offener Standard, der von vielen Betriebssystemen und Anwendungen unterstützt wird. Dabei wird das HTTP-Protokoll verwendet, wodurch sich mehrere Vorteile ergeben: * geringerer Einrichtungs- und Wartungsaufwand, Sicherheit (oft keine Serversoftware erforderlich)

    • Abruf der Dateien mit beliebigem Webbrowser möglich
  • Firewall-freundlich
    • meist keine Konfiguration auf Clientseite erforderlich (keine Port-Freischaltung o.ä.)
  • einfache Benutzerverwaltung durch HTTP Authentifizierung und .htaccess
  • verschlüsselte Übertragung durch SSL/TLS möglich
  • Clients für alle Betriebssysteme verfügbar, in Windows sogar im Explorer standardmäßig integriert ("Webordner")


Eigenschaften und Funktionen

Durch die enorme Verbreitung des World Wide Web zählt der von HTTP genutzte Port 80 zu den Ports, die bei Firewalls in der Regel nicht blockiert werden. Während bei anderen Übertragungsmethoden wie dem File Transfer Protocol (FTP) oder SSH (in Verbindung mit scp oder SFTP) vielfach zusätzlich Ports der Firewall geöffnet werden müssen, ist das bei WebDAV nicht nötig, da es auf HTTP aufbaut und daher nur Port 80 benötigt.

Das Öffnen von zusätzlichen Ports einer Firewall erhöht den Zeit- und Arbeitsaufwand für Systemadministratoren und birgt unter Umständen zusätzliche Sicherheitsrisiken. Zudem kann der Server innerhalb eines bestehenden HTTP-Servers implementiert werden.

Mittlerweile gibt es für jedes Betriebssystem (inkl. Smartphones) direkte WebDAV-Implementierungen, die es ermöglichen, WebDAV ins System einzubinden oder zumindest per Dateimanager darauf zuzugreifen.

Da auch Benutzerrechte unterstützt werden, ist es eine echte und weitaus sicherere Methode als Samba- oder Windows-Freigaben, besonders beim Fernzugriff.

Ein weiterer Vorteil ist, dass eine WebDAV-Freigabe für Portscanner weit weniger offensichtlich ist als eine Windows-, Samba- oder NFS-Freigabe und damit zusätzlich die Angriffsfläche minimiert.

Was ist durch WebDAV möglich geworden?

Vereinfachung des Publizierens auf Webservern

Erstellte Dokumente mehrfach zu transformieren und dann per FTP auf den Webserver hochzuladen ist kein praktikabler Weg. WebDAV bietet die Möglichkeit, Dateien bequem auf Webservern zu verwalten.

WebDAV Schnittstellen bieten u.A. der Internet Explorer 5 und Microsoft Offce2000. Damit ist das Publizieren und die Versionskontrolle der eigenen Webseiten so einfach, wie das Speichern auf der lokalen Festplatte.

Work Groups

Die Arbeit in Work Groups ist dank WebDAV effizienter geworden. Anstatt Dokumente zwischen den einzelnen Gruppenmitgliedern per Email zu verschicken, können diese direkt über das Internet an die sich in Bearbeitung (Design) befindende Seite verschoben werden.

Der Locking Mechanismus schützt dabei vor unerwünschten Zugriffen bzw. dem Überschreiben von Änderungen.

Manager, Designer, Ingenieure usw. können zusammen als ein Team arbeiten und dabei an verschiedenen Orten verteilt sein.

Content Management

In Verbindung mit WebDAV fähigen Content Management Applikationen, können einzelne Properties mit beliebigen Webressourcen verknüpft werden.

So könnte z.B. innerhalb einer komplexen Collection von Images, jedes einzelne Image mit Kategorien und Keywörtern (in einer bestimmten Hierarchie) ausgestattet werden. Dies würde dann die Indizierung eines jeden Images erlauben und eine Selektion nach dem Autor oder nach Kombination der Keywörter usw.

Programmiersprachen (Module)

Alle Programmiersprachen, die entweder HTTP Requests unterstützen, oder eine WebDAV API besitzen, können auf WebDAV von jeder Plattform aus zugreifen.

Zu diesen Programmiersprachen zählen: * Java

  • C/C++
  • Visual Basic
  • Perl
  • PHP
  • Python
  • Smalltalk


Geschichte

Drei Arbeitsgruppen der Internet Engineering Task Force haben an WebDAV gearbeitet, um auf der Basis von HTTP Netzwerk-Standards zu schaffen, mit denen Dokumente und Dateien im Netzwerk verändert und geschrieben werden können. Diese Gruppen sind die WebDAV Working Group, die DASL Working Group und die Delta-V Working Group.

Entwicklung

Die Entwicklung WebDAVs (Web Distributed Authoring and Versioning ) begann im Jahre 1996, als eine Gruppe von Unternehmen und Organisationen (DARPA, Microsoft, Netscape, Novell, U.C Irvine, W3C, Xerox) angeführt von Jim Whitehead damit begann, das Web in ein riesiges "File System" umzuwandeln. Die Vision ein System zu schaffen, welches das Austauschen und Teilen von Daten unabhängig von ihren Aufenthaltsort ermöglicht, hatte bereits Tim Berners-Lee im Jahre 1991, als HTTP entworfen wurde. Es blieb jedoch viele Jahre nur eine Vision.

Heute ist WebDAV ein IETF (Internet Engineering Task Force) Standard, registriert als RFC 2518 (Februar 1999). Die schrittweise Einführung von WebDAV wird dadurch begünstigt, dass "alte" Klienten die bisherigen HTTP-Möglichkeiten nutzen können.

Warum wurde WebDAV entwickelt?

Dem Internet-Protokoll HTTP mangelt es nach Ansicht der WebDAV-Working-Group vor allem an Mechanismen für die gemeinsame Arbeit an Dokumenten (kooperative Dokumentenpflege) im Web. Um also die Nutzung der WWW-Technologie als universeller Informationsspeicher zu ermöglichen, mußte das HTTP-Protokoll um einige Operationen erweitert werden.

Durch diesen Ansatz bietet sich nun die Möglichkeit direkt auf die Inhalte von Dokumenten über das Internet zuzugreifen und dabei im Team den Inhalt und die Struktur eines Dokuments zu ändern. Insgesamt bietet das WebDAV-Gremium also eine ganze Palette von dringend benötigten Funktionen, um Daten, Dokumente und sonstige Informationsobjekte über das Internet austauschen zu können.

WebDAV-Arbeitsgruppe

Die WebDAV-Arbeitsgruppe wurde von Jim Whitehead, Mitglied des W3C, initiiert, um eine Diskussion über Distributed Authoring im World Wide Web zu starten. Die ursprüngliche Vision des WWW, wie sie von Tim Berners-Lee vertreten wurde, war, dass das Web ein sowohl lesbares als auch editierbares Medium sein sollte, und Berners-Lees erster Web-Browser, genannt WorldWideWeb,[1]

war tatsächlich dazu in der Lage, Seiten auch permanent zu editieren. 

Der rasante Wuchs des Web in den 1990ern ließ den Gedanken des Distributed Authoring jedoch untergehen, sodass es sich zu dem heutigen, weitgehend nur lesbaren Medium entwickelte. Allerdings enthalten auch die heutigen HTTP-Spezifikationen noch die HTTP-Requests PUT und DELETE, die jedoch von den allermeisten Webservern mit dem HTTP-Statusfehler „405 Method Not Allowed“ abgelehnt werden. Whitehead und seine Mitstreiter haben sich im Rahmen der WebDAV-Arbeitsgruppe das Ziel gesetzt, diese Limitierung aufzuheben.

Die Gruppe, die sich dann im Rahmen eines W3C-Meetings im Dezember 1995 traf, entschied sich dafür, dass die beste Vorgehensweise die Gründung einer IETF-Arbeitsgruppe wäre. Die IETF erschien am naheliegendsten, weil das HTTP dort standardisiert war und man annahm, dass das letztendliche Ergebnis dieser Arbeitsgruppe eine Erweiterung von HTTP sein würde.

Als die Arbeit am Protokoll im November 1996 begann, wurde klar, dass eine Behandlung sowohl des Aspekts des Distributed Authorings als auch der Versionskontrolle zu viel auf einmal wäre und dass die Aufgaben auf mehrere Gruppen verteilt werden müssten. Die WebDAV-Arbeitsgruppe entschied sich dafür, sich zunächst auf Distributed Authoring zu konzentrieren und sich den Versionskontrollmechanismus für später aufzuheben. Einige Mitglieder meinten daraufhin scherzhaft, dass die Gruppe besser in WebDA umbenannt werden solle.

Aus der WebDAV-Arbeitsgruppe sind bis heute mehrere Dokumente hervorgegangen:* Requirements for a Distributed Authoring and Versioning Protocol for the World Wide Web, RFC 2291

    • eine Sammlung von Anforderungen
  • HTTP Extensions for Distributed Authoring — WebDAV, RFC 2518
    • das (ursprüngliche) Basis-Protokoll
  • Web Distributed Authoring and Versioning (WebDAV) Ordered Collections Protocol, RFC 3648
    • Sortierung von Verzeichniseinträgen
  • Web Distributed Authoring and Versioning (WebDAV) Access Control Protocol, RFC 3744
  • Quota and Size Properties for Distributed Authoring and Versioning (DAV) Collections, RFC 4331
  • Web Distributed Authoring and Versioning (WebDAV) Redirect Reference Resources, RFC 4437
    • Behandlung von „Redirects“
  • HTTP Extensions for Web Distributed Authoring and Versioning (WebDAV), RFC 4918
    • eine aktualisierte Fassung des Basisprotokolls


Die WebDAV-Arbeitsgruppe wurde im Frühjahr 2007 aufgelöst.

Die Arbeitsgruppen DASL und Delta-V

Aus der WebDAV-Gruppe gingen weitere IETF-Arbeitsgruppen hervor, zu denen auch die DAV Searching and Locating-Gruppe (DASL) und die Web Versioning and Configuration Management (Delta-V)-Arbeitsgruppe gehören.

Die DASL produzierte nie einen offiziellen Standard, ein Entwurf wurde allerdings außerhalb der Arbeitsgruppe weiterentwickelt und liegt nun als RFC 5323 vor. Die Delta-V definierte die Versioning-Erweiterungen für WebDAV (RFC 3253), mit denen sich WebDAV nun mit Recht WebDAV nennen darf.

Technische Hintergründe

Das WebDAV-Protokoll erweitert das vorhandene Hypertext Transfer Protocol um einen Satz neuer Methoden und Header-Attribute.

Zusätzliche Anfrage-Methoden, die von WebDAV-konformen Webservern behandelt werden müssen


HTTP-Methode Beschreibung
PROPFIND wird benutzt, um Eigenschaften, abgelegt als XML, einer Ressource zu erfahren. Außerdem wird sie benutzt („überladen“), um die Verzeichnisstruktur eines entfernten Systems in Erfahrung bringen zu können
PROPPATCH ändert und löscht mehrere Eigenschaften einer Ressource in einer einzigen Anfrage (einem „atomaren Akt“)
MKCOL erstellt ein Verzeichnis (bei WebDAV „Collection“ genannt)
COPY Kopiert eine Ressource, die Dateinamen werden dabei in Form einer URI angegeben
MOVE Verschiebt eine Ressource (mit der gleichen Syntax wie COPY)
DELETE Löscht eine Ressource (mit der gleichen Syntax wie COPY)
LOCK Weist den Webserver an, die Ressource zu sperren. Damit soll verhindert werden, dass die Ressource auf dem Server anderweitig bearbeitet wird, während der anfragende Client das tut.
UNLOCK Entfernt die Sperre wieder

Ressource ist in diesem Sinn ein HTTP-spezifischer Begriff, der in etwa als „das Ding, auf das ein URI zeigt“ definiert werden kann. Dabei handelt es sich in der Regel um Dateien auf dem Webserver.

WebDAV und Reverse Proxy

WebDAV lässt sich auch hinter einem Reverse Proxy betreiben. Wenn man die Benutzerverwaltung von WebDAV verwendet, muss man dem Proxy mitteilen, die Authentifizierung auf dem Webserver abzuhandeln. Zum Beispiel bei Squid:

– cache_peer webserver ..... login=PASS

Implementierungen

WebDAV ist in allen gängigen Webservern und in vielen Dateimanagern implementiert. Microsoft unterstützt es rudimentär seit Windows XP wie ein herkömmliches Dateisystem, Apple seit Mac OS X und jede größere Linux-Distribution.

Im Lieferumfang des Apache HTTP Server befindet sich das DAV-Modul mod_dav. Es kann mit dem Catacomb WebDAV Server erweitert werden.

Zudem wird es auf Android, iOS und einigen anderen Smartphone-Betriebssystemen per App unterstützt.

WebDAV

Grundlagen

WebDAV ist eine interessante technische Möglichkeit, um Dateien und Ordner auf entfernten Rechnern abzulegen – im Prinzip also nichts anderes als das, was auch ftp und ssh ermöglichen. Also nichts Neues – oder doch? Wir wollen im Folgenden diese Technik genauer betrachten sowie die Stärken und Schwächen beleuchten. Des Weiteren betrachten wir die Voraussetzungen, die Sie auf der Client-Seite benötigen.

Erweiterung von HTTP

WebDAV (Web-based Distributed Authoring and Versioning) ist eine Erweiterung des Protokolls HTTP/1.1 und ein offener Standard zur Bereitstellung von Dateien im Internet. Hierbei werden bestimmte Einschränkungen von HTTP aufgehoben, und die Benutzer können auf ihre Daten wie auf eine Online-Festplatte zugreifen. Bei regulärem HTTP ist es nur möglich, einzelne Daten hochzuladen (z. B. in Formularen); mit WebDAV gibt es hier keine Grenzen – bis hin zum Verschieben von ganzen Verzeichnissen. Des Weiteren ist eine Revisionskontrolle ähnlich wie cvs oder svn implementiert.

An der Tatsache, dass es sich bei WebDAV »nur« um eine Erweiterung des HTTP-Protokolls handelt, kann man den wesentlichen Vorteil dieser Technik erkennen: Es nutzt den Standard-HTTP-Port (meist 80/TCP). Dadurch kann es in der Regel auch verwendet werden, wenn sich zwischen zwei Rechnern eine Firewall befindet. Bei anderen Übertragungsmethoden wie dem File Transfer Protocol (FTP) oder ssh müssen vielfach zusätzlich Ports der Firewall geöffnet werden. Dies bringt zwar meistens kein erhöhtes Sicherheitsrisiko mit sich, erhöht aber den Zeit- und Arbeitsaufwand, um eine Verbindung zu ermöglichen. Die erwähnte Revisionskontrolle ist weder bei ftp noch bei ssh »out of the box« möglich.

Entwicklung

Die Entwicklung von WebDAV begann im Jahre 1995, als sich mehrere Unternehmen und Organisationen (DARPA, Microsoft, Netscape, Novell, U.C Irvine, W3C, Xerox) unter der Führung von Jim Whitehead zusammenschlossen. Heute sind an WebDAV drei Arbeitsgruppen der IETF (Internet Engineering Task Force) beteiligt. Sie bilden gemeinsam die WebDAV Working Group, die DASL Working Group und die Delta-V Working Group. Das Ziel wurde bereits 1995 vereinbart und bestand in einem »editierbaren« Web.

Es wurde ziemlich schnell klar, dass das letztendliche Ergebnis dieser Arbeitsgruppe eine Erweiterung des HTTP-Protokolls sein würde (siehe hierzu Abschnitt 26.1, »Das HTTP-Protokoll«). Zu Beginn stand die Entwicklung des Distributed Authorings im Vordergrund. Die Funktionalität der Versionskontrolle wurde erst später in das System integriert. Detaillierte Informationen über die Anforderungen und die Spezifikationen des Protokolls sind in den beiden Dokumenten RFC 2291 (Anforderungen) und RFC 2518 (Protokoll) zu finden. Derzeitige Arbeiten konzentrieren sich auf eine Reihe von Erweiterungen, wie z. B. Authentifizierung, Redirection-Kontrolle und Sortierung von Einträgen in Collections.

Technische Hintergründe

WebDAV ist wie erwähnt eine Erweiterung von HTTP und benutzt hierfür XML (ExtensibleMarkup Language). Diese Methoden sind für die Gewährleistung der neuen Funktionalitäten (Locking, Propertys, Collections) notwendig. HTTP selbst definiert acht Methoden:* GET / PUT / DELETE – Eine Ressource anfordern, schreiben oder löschen (WebDAV: DELETE – eine Collection löschen)

  • POST – Informationen an den Browser übermitteln (Formulardaten u. Ä.)
  • HEAD – Ähnlich wie GET. Der Unterschied besteht darin, dass das System in seiner Response keinen Message-Body zurückgeben muss.
  • OPTIONS – Information über eine Kommunikation anfordern, ohne eine Aktion auszuführen
  • TRACE – Für Test- und Diagnosezwecke (Request/Response-Kette prüfen)
  • CONNECT – Reserviert für das Tunneling bei Proxys


Weitere sieben Methoden werden speziell von WebDAV definiert:* LOCK – Setzt für den Überschreibschutz eine Sperre auf eine Collection oder Ressource.

  • UNLOCK – Gibt eine gesperrte Collection oder Ressource wieder frei.
  • PROPFIND – Liest Meta-Daten von Ressourcen oder Collections.
  • PROPPATCH – Schreibt Meta-Daten von Ressourcen oder Collections.
  • COPY – Kopiert Collections und Ressourcen innerhalb eines zusammenhängenden Namensraumes.
  • MOVE – Verschiebt Collections und Ressourcen innerhalb eines zusammenhängenden Namensraumes.
  • MKCOL – Erzeugt eine neue Collection.


Aktuelle Möglichkeiten

Im Großen und Ganzen sind es drei Anwendungsgebiete, auf denen WebDAV seine Vorteile ausspielen kann:# Vereinfachung des Publizierens auf Webservern
Erstellte Dokumente mehrfach zu transformieren und dann per FTP auf den Webserver hochzuladen ist ein umständlicher Weg. WebDAV bietet hier die Möglichkeit, Dateien bequem auf Webservern zu verwalten. Damit ist das Publizieren und die Versionskontrolle von Webseiten so einfach wie das Speichern auf der eigenen lokalen Festplatte.

  1. Arbeitsgruppen
    Die Arbeit von Arbeitsgruppen ist wesentlich effizienter geworden. Anstatt einzelne Dokumente zwischen den Gruppenmitgliedern per E-Mail zu verschicken, können Sie diese direkt über die Seite verschieben, die Sie gerade bearbeiten. Der Locking-Mechanismus schützt dabei vor unerwünschten Zugriffen und dem Überschreiben von Änderungen.
  2. Content-Management
    In Verbindung mit WebDAV-fähigen Content-Management-Applikationen können einzelne Eigenschaften mit beliebigen Web-Ressourcen verknüpft werden. So können Sie z. B. einzelne Dateien indizieren und eine Auswahl nach dem Autor oder nach Kombination der Key-Wörter usw. durchführen.


Konfiguration

Um WebDAV nutzen zu können, brauchen Sie einen Client und einen Server, der dieses Protokoll unterstützt. Wir gehen zunächst auf die Client-Seite ein. Viele Provider und E-Mail-Anbieter stellen ihren Nutzern WebDAV zur Verfügung. Einen kostenlosen Testzugang erhalten Sie z. B. bei www.venuecom.com. Wenn Sie z. B. ein Postfach bei web.de oder gmx.de besitzen, kommen Sie auch bei diesen Anbietern zu entsprechendem Platz. Mit modernen Windows- und Linux-Versionen ist ein Zugriff auf solche WebDAV-Server kein Problem. Wir werden im Folgenden die verschiedenen Möglichkeiten besprechen, mit denen Sie Zugriff auf WebDAV haben. Die technische Grundlage all dieser Möglichkeiten ist die Bibliothek libneon.

Mit Cadaver auf WebDAV zugreifen

Der Klassiker unter den Zugriffsmöglichkeiten ist Cadaver, ein Tool für die Kommandozeile. Sie können sich die aktuelle Version unter www.WebDAV.org/cadaver/ herunterladen, aber dieses Tool ist in allen großen Distributionen enthalten. In Debian-basierten Distributionen ist meist aus lizenzrechtlichen Gründen der SSL-Support nicht enthalten, da hilft dann nur, es selbst zu kompilieren. Die Bedienung ist außerordentlich einfach. Mit einem

cadaver https://www.WebDAV.de

verbinden Sie sich mit dem Server, und mit den Befehlen put (hochladen) und get (herunterladen) tauschen Sie Dateien aus. Ansonsten navigieren Sie auf dem WebDAV-Server wie gewohnt, also mit ls, cd usw. Konsultieren Sie die Manpage für weitere Informationen.

Ein WebDAV-Verzeichnis einhängen

Um ein WebDAV-Verzeichnis per Konsole zu mounten (am besten in das Verzeichnis /media/), benötigen Sie das Paket davfs2:

sudo apt-get install davfs2

Danach legen Sie im Verzeichnis /media/ ein entsprechendes Verzeichnis an, in dem Sie dann die WebDAV-Verbindung realisieren:

sudo mkdir /media/VerzeichnisName

Jenes Verzeichnis sollte dann mit eingeschränkten Rechten versehen werden, sodass die oder der Benutzer allenfalls darin schreiben dürfen. In diesem Fall bekommen alle Benutzer Lese- und Schreibrechte:

sudo chmod 0766 /media/VerzeichnisName

Wird dieser Befehl vergessen, kann das Laufwerk zwar eingehängt werden, aber niemand außer Root darf darin schreiben. Nun können Sie das Verzeichnis mounten, sodass es sich fast wie ein lokales Laufwerk bedienen lässt:

sudo mount -t davfs https://www.zieladresse.ch /media/VerzeichnisName/

Jetzt können Sie Daten per Drag & Drop auf das Verzeichnis verschieben. Die Technik verwendet einen Cache-Speicher zur Beschleunigung.

Falls das Verzeichnis dauerhaft eingebunden werden soll, bietet sich eine Lösung mit der Datei fstab an. Um das Verzeichnis wieder sauber auszuhängen, müssen Sie erneut einen Befehl per sudo abgesetzen:

sudo umount /media/VerzeichnisName

Es kann allenfalls einen Moment dauern, bis das Laufwerk ausgehängt wird, da der Cache je nachdem noch übertragen werden muss.

GNOME

GNOME integriert von Haus aus alle notwendigen Voraussetzungen für einen leichten Umgang mit WebDAV. Der Dateimanager Nautilus ist hier das Werkzeug der Wahl. Sie müssen lediglich den WebDAV-Server als neuen Zugriffsort angeben. Um dieses Ziel zu erreichen, gibt es prinzipiell zwei Möglichkeiten. Zum einen können Sie auf dem Desktop unter Orte · Verbindung zu Server... den WebDAV-Server eintragen, oder Sie nutzen den gleichen Dialog in einem beliebigen Nautilus-Fenster unter Datei · verbinden....

Datei:Bild28.png


»WebDAV«-Server unter GNOME einbinden

GNOME unterstützt bei beiden Methoden sowohl gesicherte (WebDAVs://) als auch ungesicherte Verbindungen (WebDAV://). Wenn Sie alle Verbindungsdaten eingegeben haben, erscheint die Verknüpfung zum Server auf dem Desktop.

Wenn Sie diese Verbindung wieder lösen möchten, reicht ein Rechtsklick auf das zugehörige Icon und ein Anklicken des Menüpunkts Datenträger aushängen. Leider ist GNOME bei manchen Web-Server-Konfigurationen nicht in der Lage, sich das Passwort zu merken.

Datei:Bild29.png


Abbildung 26.6 Definition von Servern in »Nautilus«

KDE

Unter KDE gestaltet sich die Integration von WebDAV ähnlich einfach wie unter GNOME. Hier nutzen Sie das Pendant zu Nautilus, den allmächtigen Konqueror. In diesem müssen Sie lediglich die Adresse des Servers in die Adressleiste eingeben. Bei der nachfolgenden Abfrage können Sie entscheiden, ob sich der Konqueror den Benutzernamen und das Passwort merken soll. Der »Datei-Eroberer« von KDE agiert hierbei vorbildlich und ist einfacher zu bedienen als Nautilus.

Datei:Bild30.png


Der »Konqueror« beherrscht »WebDAV« ebenfalls standardmäßig.

Datei:Bild31.png


Abbildung 26.8 Der Umgang des »Konqueror« mit einem »WebDAV«-Server ist selbsterklärend.


Zugriff mit auf WebDAV-Freigaben

Zugriff mit Linux

Firefox

The Firefox web browser natively recognizes WebDAV folders. Merely enter the URL of the WebDAV folder in the location bar:

http://myhost.mydomain.org/WebDAV1

Verbindung über Dateimanager

Die Dateimanager der Desktopumgebungen GNOME, KDE, Xfce und LXDE können direkt auf WebDAV-Ressourcen zugreifen. Dazu müssen im Regelfall keine weiteren Pakete installiert werden.

Ubuntu (Nautilus)

Datei:Bild9.png


Im GNOME-Menü wählt man "Datei -> Mit Server verbinden ...". Dort gibt es folgende Einstellmöglichkeiten:


Feld Eingabe
"Dienste-Typ" Sicheres WebDAV (HTTPS) oder WebDAV (HTTP)
"Server" Name oder IP des Servers (ohne "http://" bzw. "https://")
"Port" Kann man üblicherweise leer lassen
"Ordner" Name des Ordners oder "/"
"Benutzername" Der Benutzername

Wenn man auf diese Verbindung häufiger zugreifen möchte, kann man noch ein Lesezeichen für das "Orte"-Menü einrichten. Nachdem man seine Daten eingegeben hat, wählt man "Verbinden" aus. Danach wird das Passwort abgefragt, wobei man auswählen kann, ob man das Passwort im GNOME Schlüsselbund speichern möchte, und die Verbindung wird aufgebaut.

Nautilus

The Nautilus File Manager used in the Gnome desktop of Ubuntu has built-in WebDAV support. A folder on a WebDAV server can be accessed directly. * Nautilus -> File -> Connect to Server -> Service Type: WebDAV (HTTP) -> Server: localhost/WebDAV1


or

* Nautilus -> File -> Connect to Server -> Service Type: WebDAV (HTTP) -> Server: myhost.mydomain.org/WebDAV1


Experten-Info

Man kann eine Verbindung auch direkt durch die Eingabe der Adresse in Nautilus herstellen. Dazu wechselt man von der Pfadansicht der Adresse in die Ort-Eingabe. Dort gibt man dann die Adresse des WebDAV-Verzeichnisses ein, das "http" ersetzt man dabei aber durch "dav", "https" entsprechend durch "davs". Also beispielsweise* davs://WebDAV.mc.gmx.net/


Ab Ubuntu 13.04 ist diese Methode zwingend, da "Datei -> Mit Server verbinden ..." in Nautilus 3.6.3 keinen Eingabedialog mehr bietet. Für das Mediencenter bei T-Online lautet der Pfad zum Beispiel: davs://account@WebDAV.mediencenter.t-online.de.

Kubuntu (Konqueror)

Datei:Bild10.png


Um per WebDAV-Zugriff auf beispielsweise das GMX-Mediacenter zu erhalten, muss nur die folgende Zeile in die Adressleiste des Konqueror oder Dolphin eingegeben werden.* WebDAVs://WebDAV.mc.gmx.net/


Für unsicheren Zugriff (bei GMX nicht mehr möglich) ohne https kann* WebDAV://example.org/


benutzt werden. Es öffnet sich ein Login-Fenster, in das noch die GMX-E-Mail-Adresse (Kundennummer) und das entsprechende Passwort eingegeben werden müssen. Daraufhin hat man sofort Zugriff auf die dort abgelegten Daten.

Dolphin

The Dolphin File Manager used in the KDE desktop of Kubuntu has built-in WebDAV support. A folder on a WebDAV server can be accessed directly by entering its location in the location bar. Examples:

WebDAV://localhost/WebDAV1

or

WebDAV://myhost.mydomain.org/WebDAV1

Note that a location can be made a permanent folder in Dolphin by right-clicking on the leftmost Places panel --> Add entry... -> Location: WebDAV://localhost/WebDAV1

Konqueror (KDE)

Mit dem Konqueror erhalten Sie Kontrolle über Ihr Dateiensystem und können lokale oder Netzwerk-Dateien bearbeiten. * Name des WebDAV-Protokolls:

WebDAVs* Aufruf: Unter

Adresse:

die URL der zu öffnenden Website angeben, z.B.

WebDAVs://share-edit.tu-harburg.de/ab1/

Konqueror/Rekonq

The Konqueror (now Rekonq) web browser of the KDE desktop in Kubuntu natively recognizes WebDAV folders. Merely enter the URL of the WebDAV folder in the location bar:

http://myhost.mydomain.org/WebDAV1

Xubuntu (Thunar)

Um via WebDAV ganz bequem auf eigene Dateien zuzugreifen, öffnet man zunächst den Standard-Dateimanager von Xfce: Thunar. Unter "Gehe zu -> Ort öffnen..." gibt man die passende Internet-Adresse für den WebDAV-Zugang an (z.B. dav://example.org/ oder davs://example.org/). Bei der Abfrage von Benutzername und Passwort sollte man die Option "Passwort erst beim Abmelden vergessen" oder "Nie vergessen" wählen. Dann einfach "Verbinden" und schon steht die Verbindung.

Ab Xubuntu 11.10 ist es vorher erforderlich, das Paket gvfs-backends zu installieren. Andernfalls ist es weder via Thunar noch mit Gigolo möglich, WebDAV zu nutzen. Ältere Xfce-Versionen unterstützen WebDAV nicht von Hause aus. Hierfür muss dann Gigolo eingesetzt werden.

Experten-Info

Sollte man während eines Verbindungsversuchs die folgende Fehlermeldung erhalten:

DBus error org.freedesktop.DBus.Error.NoReply: Did not receive a reply. Possible causes include: the remote application did not send a reply, the message bus security policy blocked the reply, the reply timeout expired, or the network connection was broken..

dann kann man den folgenden Befehl ausprobieren:

sudo dpkg-reconfigure thunar

Lubuntu (PCManFM)

Um WebDAV mit dem Dateimanager PCManFM zu nutzen, folgt man der Anleitung für Thunar (siehe oben). Da beide im Hintergrund GVFS verwenden, gibt es nur optische Unterschiede.

cadaver

cadaver is a command-line WebDAV client for Unix. It supports file upload, download, on-screen display, namespace operations (move/copy), collection creation and deletion, and locking operations. * http://www.WebDAV.org/cadaver/


Cadaver is a command-line interface for WebDAV. It can be useful for automated and script-based command-line functions, such a remote copying. Install:

sudo apt-get install cadaver

WebDAV Client für Unix. Unterstützt: Upload, Download, namespace Operationen, (move/copy), Entwurf und Entfernung von Collections, locking Operationen

cadaver

Section: User Manuals (1)

NAME

cadaver - A command-line WebDAV client for Unix.

SYNOPSIS

cadaver [-trp[-r file][-p host[:port]] ][-V][-h] http://hostname[:port]/path

DESCRIPTION

cadaver supports file upload, download, on-screen display, namespace operations (move and copy), collection creation and deletion, and locking operations.

Its operation is similar to the standard BSD [man:/ftp(1) ftp](1) client and the Samba Project's [man:/smbclient(1) smbclient](1). A user familiar with these tools should be quite comfortable with cadaver.

cadaver supports automatically logging in to servers requiring authentication via a .netrc file (similar to [man:/ftp(1) ftp](1) - see section "THE .netrc FILE" below).

OPTIONS

-t, --tolerant

Allow cd/open into non-WebDAV enabled collection; use if the server or proxy server has WebDAV compliance problems.

-r, --rcfile=file

Use this rcfile rather than the default of ~/.cadaverrc

-p, --proxy=host[:port]

Connect using the proxy host "host" and optional proxy port "port".

-V, --version

Display version information and exit.

-h, --help

Display this help message and exit.

COMMAND REFERENCE

ls [path]

List contents of current [or other] collection

cd path

Change to specified collection

pwd

Display name of current collection

put local [remote]

Upload local file

get remote [local]

Download remote resource

mget remote...

Download many remote resources

mput local...

Upload many local files

edit resource

Edit given resource

less remote...

Display remote resource through pager

mkcol remote...

Create remote collection(s)

cat remote...

Display remote resource(s)

delete remote...

Delete non-collection resource(s)

rmcol remote...

Delete remote collections and ALL contents

copy source... dest

Copy resource(s) from source to dest

move source... dest

Move resource(s) from source to dest

lock resource

Lock given resource

unlock resource

Unlock given resource

discover resource

Display lock information for resource

steal resource

Steal lock token for resource

showlocks

Display list of owned locks

propnames res

Names of properties defined on resource

chexec [+|-] remote

Change isexecutable property of resource

propget res [propname]

Retrieve properties of resource

propset res propname value

Set property on resource

set [option] [value]

Set an option, or display options

open URL

Open connection to given URL

close

Close current connection

quit

Exit program

unset [option] [value]

Unsets or clears value from option.

lcd [directory]

Change local working directory

lls [options]

Display local directory listing

lpwd

Print local working directory

logout

Logout of authentication session

help [command]

Display help message

THE .netrc FILE

The file ~/.netrc may be used to automatically login to a server requiring authentication. The following tokens (separated by spaces, tabs or newlines) may be used:

machine host

Identify a remote machine host which is compared with the hostname given on the command line or as an argument to the open command. Any subsequent tokens up to the end of file or the nextmachine or default token are associated with this entry.

default

This is equivalent to the machine token but matches any hostname. Only one default token may be used and it must be after all machine tokens.

login username

Specifies the username to use when logging in to the remote machine.

password string passwd string

Specifies the password to use when logging in to the remote machine.

Any other tokens (as described in [man:/ftp(1) ftp](1)) are ignored.

EXAMPLES

cadaver http://dav.example.com/

Connects to the server myserver.example.com, opening the root collection.

cadaver http://zope.example.com:8022/Users/fred/

Connects to the server zope.example.com using port 8022, opening the collection "/Users/fred/".

cadaver https://secure.example.com/

Connects to a server called secure.example.com using SSL.

FILES

~/.cadaverrc

Individual user settings that can override cadaver defaults and to script cadaver. Can be changed by the "--rcfile" option.

~/.netrc

Login and initialization information used by the auto-login process. See section "THE .netrc FILE" for details.

AUTHOR

Joe Orton <cadaver@webdav.org>

SEE ALSO

[man:/ftp(1) ftp](1), [man:/smbclient(1) smbclient](1)


Verbindung per davfs2

davfs2, das WebDAV Linux File System, ist ein Dateisystemtreiber, der es erlaubt, WebDAV-Internet-Ressourcen als lokales Dateisystem zu mounten. Dadurch kann man WebDAV wie einen normalen Datenträger benutzen und mit jeder Anwendung Daten auf dem WebDAV-Laufwerk ablegen. Dazu müssen die Pakete* ca-certificates

  • davfs2 (universe)


installiert sein [1] . Anschließend kann man das Verzeichnis mit Root-Rechten an einem beliebigen Mountpunkt einhängen, wobei man selbstverständlich nach dem Benutzernamen und Passwort der WebDAV-Freigabe gefragt wird:

sudo mount -t davfs https://mediacenter.gmx.net /mountpunkt

Einbinden mit Benutzerrechten

Falls ein normaler Benutzer die Freigabe einhängen soll, muss das über die Datei /etc/fstab erlaubt werden. Dazu wird diese in einem Editor [3]

mit Root-Rechten geöffnet und folgende Zeile eingetragen: 

# Allgemein http://<WebDAVurl> <mountpunkt> davfs user,noauto 0 0 # Allgemein mit verschlüsselter Übertragung https://<WebDAVurl> <mountpunkt> davfs user,noauto 0 0 # Beispiel gmx.mediacenter https://mediacenter.gmx.net /home/otto/mnt/gmx davfs noauto,user,rw 0 0

Hinweis

Hier sollte unbedingt darauf geachtet werden, dass man die Option "noauto" in Verbindung mit "user" nimmt. Ansonsten wird beim Systemstart versucht das Verzeichnis einzuhängen, was nicht gelingen wird. Im schlimmsten Fall hat dies zur Folge, dass sich das Betriebssystem gar nicht mehr startet.

Damit jeder Benutzer WebDAV-Laufwerke einbinden darf, muss das SUID-Bit für den Befehl mount.davfs gesetzt werden, was man am einfachsten erledigt, indem man folgenden Befehl ausführt und die entsprechende Frage mit "Ja" beantwortet:

sudo dpkg-reconfigure davfs2

Fragen, unter welchen Gruppen- und Benutzerkennungen der Prozess laufen soll, sollte man einfach so bestätigen, wie es vorgeschlagen wird, nämlich mit "davfs2".

Jeder Benutzer, der das WebDAV-Laufwerk ohne Root-Rechte einbinden darf, muss außerdem der Gruppe davfs2 angehören [4] .

sudo usermod -aG davfs2 <benutzername>

Will man nicht jedesmal beim mounten die Login-Daten neu eingeben, können diese mit beschränkten Leserechten im System hinterlegt werden. Dabei hat man zwei Möglichkeiten. Die erste ist es, die Benutzerdaten global, d.h. für alle Benutzer, im System zu hinterlegen. Dazu bearbeitet man die Datei /etc/davfs2/secrets mit Root-Rechten:

# Allgemein # <Mountpunkt / WebDAV-URL> <login> <passwort> # Beispiel /mnt manfred.mustermann@gmx.de geheimespasswort # oder https://mediacenter.gmx.net manfred.mustermann@gmx.de geheimespasswort

Die zweite Möglichkeit ist, die Login-Daten lokal im Homeverzeichnis des Benutzer zu hinterlegen. Die Herangehensweise ist wie bei der ersten Möglichkeit, nur ohne Root-Rechte. Zuerst in der Datei ~/.davfs2/secrets:

# Allgemein # <Mountpunkt / WebDAV-URL> <login> <passwort> # Beispiel /home/otto/mnt/gmx manfred.mustermann@gmx.de geheimespasswort

die Login-Daten eintragen, dann aber mit

chmod 600 ~/.davfs2/secrets

unbedingt die Leserechte der Datei einschränken. Auf Mehrbenutzersystemen sollte die Datei zuerst leer erzeugt und ihre Zugriffsrechte auf 600 umgestellt werden, bevor sie mit den Zugangsdaten befüllt wird.

Für die Authentifizierung an Windows-WebDAV-Servern ist unter Umständen ein voll qualifizierter Benutzername (Down-Level Logon Name) nach dem Schema Domain\login erforderlich. In einem solchen Fall müssen in der secrets-Datei Domäne und login durch zwei \ getrennt (z.B. /home/martin/mnt/WebDAV domain\\martin geheimwort) werden.

Nun kann das GMX-Mediacenter eingebunden werden. Dazu muss man im Terminal

mount ~/mnt/gmx

eingeben. Dabei muss der Einhängepunkt gegebenenfalls vorher angelegt werden

mkdir -p ~/mnt/gmx

Problembehebung

Abbruch durch unbekannte Option

Hängt man eine WebDAV-Ressource mit Benutzerrechten

mount https://mediacenter.gmx.net

ein, so kann es vorkommen, dass dies mit der Fehlermeldung

/sbin/mount.davfs:/home/<benutzername>/.davfs2/davfs2.conf:16: unbekannte Option

abgebrochen wird. Schuld daran sind die Einträge der Optionen dav_user und dav_group in der Datei ~/.davfs2/davfs2.conf.

Diese Datei wird von Davfs2 bei der ersten Benutzung von /etc/davfs2/davfs2.conf ins Homeverzeichnis kopiert, aber die beiden Optionen sind leider gar nicht gültig, wenn man das Programm nicht mit Root-Rechten startet. Deshalb sollte man in diesem Falle die Datei mit einem Editor öffnen und die entsprechenden Zeilen auskommentieren:

# dav_user davfs2 # system wide config file only #dav_user nobody # dav_group davfs2 # system wide config file only #dav_group staff

"slash-" in Datei- und Verzeichnisnamen

Werden nach dem mounten der WebDAV-Ressource Datei- und Verzeichnisnamen mit zusätzlich eingefügtem "slash-" oder "-slash-" angezeigt, lässt sich dies mit einer Änderung in der Datei ~/.davfs2/davfs2.conf beheben.

Diese dazu mit einem Editor öffnen [3]

und den Eintrag

# use_displayname 1

durch

use_displayname 0

ersetzen.

Änderungen werden nicht gespeichert

Unter Lucid werden neue oder veränderte Dateien u.U. nicht auf dem Server gespeichert. Eine Erklärung findet sich hier: 466960.

Als Abhilfe muss in der Datei /etc/davfs2/davfs2.conf die Zeile

if_match_bug 1

eingefügt werden.

Fehler - Home-Verzeichnis des Benutzers kernoops

Falls mann folgender Fehler bekommt: "/sbin/mount.davfs: / ist das Home-Verzeichnis des Benutzers kernoops. Du kannst im Home-Verzeichnis eines anderen Benutzers kein Dateisystem einhängen"

Als Abhilfe muss in der Datei /etc/davfs2/davfs2.conf die Zeile

ignore_home kernoops

eingefügt werden.

davfs will das SSL Zertifikat nicht anerkennen

Wenn die Fehlermeldung "Wir trauen dem Zertifikat nicht" oder das Nachfragen von davfs bei einem nicht-verifiziertem Zertifikat nicht erwünscht ist, muss das Zertifikat manuell importiert werden. Dazu wird es zunächst heruntergeladen:

echo|openssl s_client -connect example.org:443 |openssl x509 -out meinzertifikat.pem

Diese Datei wird dann in /etc/davfs2/certs (systemweit) oder in ~/.davfs2/certs (per Benutzer) abgelegt. Um davfs zu sagen, wo das Zertifikat liegt, muss in der /etc/davfs2/davfs2.conf bzw. ~/.davfs2/davfs2.conf Folgendes hinzugefügt werden:

servercert /etc/davfs2/certs/meinzertifikat.pem

Alternativ reicht auch die folgende Zeile, da die Pfade /etc/davfs2/certs/ und ~/.davfs2/certs/ automatisch durchsucht werden:

servercert meinzertifikat.pem

davfs automatisch betreiben

Manchmal kann es sinnvoll sein, davfs in z.B. einem Skript zu benutzen. Dann möchte man natürlich nach Möglichkeit nicht, dass jedes mal nach dem Benutzernamen und dem Passwort gefragt wird. Dies macht der folgende Befehl:

echo -e "Benutzername\nPasswort"|sudo mount -t davfs <Server> <Einhängepunkt>

Wenn auch ein ungültiges Zertifikat übersprungen werden soll, kann man dies so machen:

echo -e "Benutzername\nPasswort\nj"|sudo mount -t davfs <Server> <Einhängepunkt>

Hinweis

In Skripten muss man das -e weglasssen.

Achtung

Wenn man das Passwort und den Benutzernamen in einem Skript abspeichert, so ist das Passwort und der Benutzername für jeden lesbar, der das Skript lesen bzw. ausführen kann.

Could not authenticate to server: rejected Basic challenge

Unter Ubuntu 10.04 (LTS) funktioniert die Lösung 2 (mit ~/.davfs2/secrets) nicht. Das Anbinden via

sudo mount <mountpunkt>

funktioniert, jedoch gehören dann alle Dateien natürlich root. Das Anbinden via

mount <mountpunkt>

funktioniert nicht, sondern gibt die obige Fehlermeldung.

Eine Lösung konnte nicht gefunden werden und daher wurde auf Lösung 1 (mit /etc/davfs2/secrets) ausgewichen.

Abbruch bei WebDAV zu Windows-Server

Hängt man eine WebDAV-Ressource eines Windows-Servers mit mount.davfs über sicheres WebDAV

mount https://WebDAV.example.org

ein, so kann es vorkommen, dass dies mit der Fehlermeldung

p11-kit: couldn't open config file: /root/.pkcs11/pkcs11.conf: Keine Berechtigung /sbin/mount.davfs: das Einhängen schlug fehl; Legitmierung am Server fehlgeschlagen: Challenge NTLM wurde ignoriert, GSSAPI-Legitimierungsfehler: Unspecified GSS failure. Minor code may provide more information: Credentials cache file '/tmp/krb5cc_0' not found

abgebrochen wird. Ursache ist, dass mount.davfs standardmäßig GnuTLS verwendet, GnuTLS und WebDAV-Ressource von Windows-Servern aber nicht reibungsfrei zusammenarbeiten. Durch Umstellen von mount.davfs auf OpenSSL kann dieses Problem zumindest umgangen werden.

Dazu muss libneon (verwendet OpenSSL) zusätzlich zu libneon-gnutls installiert werden. Danach wird der Link auf libneon-gnutls als Workaround auf libneon umgebogen. Dieses Vorgehen ist zwar nicht optimal, löst jedoch die Anmeldeprobleme bei einer Authentifizierung an Windows-Servern. Der Superuser muss folgende Befehle ausführen um diesen Workaround einzurichten (Version laut Ubuntu 13.10).

sudo apt-get install libneon27 sudo mv /usr/lib/libneon-gnutls.so.27 /usr/lib/libneon-gnutls.so.27.orig sudo ln -s /usr/lib/libneon.so.27 /usr/lib/libneon-gnutls.so.27

Eine bessere und dauerhafte Lösung (Restauration des Links bei Updatets beenden den Workaround) wäre das Umstellen von mount.davfs2 auf OpenSSL bzw. die Erstellung einer OpenSSL-Variante von mount.davfs durch Binden mit libneon anstatt libneon-gnutls.

davfs2

Davfs2 ist ein Linux Filesystem-Treiber, mit dem ein WebDAV-Verzeichnis ins lokale Filesystem gemountet werden kann.

Installation: Static Binary holen und den Anweisungen der mitgelieferten README-Datei folgen. * http://savannah.nongnu.org/projects/davfs2


Installationskurzanweisung (Auszug aus der README-Datei):

- DAVFS2 uses the neon libraries for communication with the server.

 libneon (>= 2.4) must be installed.

- Ask root to make an entry in '/etc/fstab' like

 https://share-edit.tu-harburg.de/myfolder /home/me/dav davfs user,noauto 0 0

- Now you have optained and unpacked the binary package of DAVFS2 and changed

 into directory like 'davfs2-0.2.8-bin-i386'.
   # cp mount.davfs /usr/local/sbin/
   # chown root.root /usr/local/sbin/mount.davfs
   # chmod 4755 /usr/local/sbin/mount.davfs
   # ln -s /usr/local/sbin/mount.davfs /sbin/mount.davfs

- Als root eine Gruppe davfs2 anlegen und den Benutzer xyz in die Gruppe davfs2 aufnehmen: [root]# /usr/sbin/usermod -G davfs2 xyz

Mit * mkdir /home/me/dav

  • mount /home/me/dav


kann dann das Verzeichnis /myfolder des Webservers share-edit.tu-harburg.de vom Benutzer xyz gemountet werden.

DAVFS

mount -t davfs https://WebDAV.michaelmann.info/ /mnt

OpenOffice

  • Aufruf: Unter

File --> Open --> File name

die URL der zu öffnenden Datei angeben, z.B.

https://share-edit.tu-harburg.de/ab1/index.shtml

Mit

view --> HTML-Source

wird der Quelltext von HTML-Dateien angezeigt. In diesem Modus können auch Textdateien bearbeitet werden.

sitecopy

Realisiert autorenseitige Aktualisierung von Web- Servern. Es nutzt dabei wahlweise FTP oder WebDAV

Zugriff mit Windows

Windows 2000

Stellt die Verbindung zu einem WebDAV Server über den Assistenten zum Hinzufügen von Netzwerkressourcen her und zeigt die Inhalte eines WebDAV- Verzeichnisses so an, als wäre es ein Teil desselben Dateisystems auf dem lokalen Computer. Nachdem die Verbindung hergestellt wurde, können die Dateien per Drag & Drop verschoben, Dateieigenschaften abgerufen und geändert werden, sowie zahlreiche andere dateisystembezogene Aufgaben durchgeführt werden.

Windows Explorer

in Windows has built-in WebDAV support. Map the WebDAV folder to a lettered drive: * Windows Explorer -> Tools -> Map network drive... -> Folder: http://myhost.mydomain.org/WebDAV1


Internet Explorer

Stellt die Verbindung zu einem WebDAV- Verzeichnis her und ermöglicht die Durchführung derselben dateisystembezogenen Aufgaben wie über Windows 2000

MS Office 2000:

Ermöglicht über alle Office 2000 Anwendungen das direkte Erstellen, Veröffentlichen, Bearbeiten und Speichern von Dokumenten in einem WebDAV- Verzeichnis.

Weitere
  • Dreamweaver
  • Adobe Photoshop
  • Adobe Acrobat


Windows XP

  1. Datei:Bild2.png

„Arbeitsplatz" öffnen und aus dem Menü „Extras" die Option „Netzwerklaufwerk verbinden" auswählen. Es erscheint folgende Dialogbox (oder so ähnlich, je nach Betriebssystemversion)

  1. Jetzt auf den Link „Onlinespeicherplatz anfordern" klicken. Folgender Assistent erscheint




  1. Datei:Bild3.png

Auf „Weiter" klicken.








  1. Datei:Bild4.png

Das Symbol für "Andere Netzwerkressource" auswählen.












  1. Datei:Bild5.png

Und „Weiter" klicken. Jetzt die folgende Adresse eingeben (auf das „s" in „https" achten, mit http funktioniert es nicht).





  1. Unter Umständen erscheinen jetzt mehrere Hinweise, dass das Zertifikat nicht einwandfrei ist. Das ist meistens so ok (ein Offizielles Zertifikat ist Kostenpflichtig).
  2. Datei:Grafik5.png

Alle Warnungen mit „Ja" beantworten. Es sollte nun ein Passwort-Dialog erscheinen:

  1. Benutzernamen und Kennwort eingeben, dann bestätigen.



  1. Im darauffolgenden Dialog kann man einen Namen für die Netzwerkressource vergeben


Datei:Bild6.png

  1. Der Speicherplatz ist jetzt fertig eingerichtet. Auf „Fertig stellen" klicken, dann erscheint die Windows Übersicht über den Speicherplatz:


Dieser Ordner funktioniert nicht ganz genau so wie normale Ordner. Man kann keine Datei durch Doppelklicken öffnen, man muss die Datei erstmal lokal auf den eigenen PC kopieren.

Gelegentlich muss man erneut Benutzernamen und Kennwort angeben

Datei:Grafik7.png


Windows Vista

Bitte beachten
Datei:Bild14.png

Die Konfiguration von WebDAV unter Windows Vista ist derzeit leider nur über Änderungen in der Registry möglich. Diese Änderungen wirken sich direkt auf die lokalen Einstellungen Ihres PCs aus.

Wir können Gewährleistung übernehmen, für eventuell auftretende Probleme, die mit dieser Änderung zusammenhängen. Die Änderung der Registry geschieht auf eigene Verantwortung.

1. Schritt:

Öffnen Sie das Startmenü und tragen Sie in der Suche "regedit" ein. Danach machen Sie einen Doppelklick auf regedit.exe

2. Schritt:

Im Abfragefenster klicken Sie nun auf "Fortsetzen" um den Registryeditor zu starten.

Datei:Bild7.png


====

Datei:Bild15.png

3. Schritt: ====

Gehen Sie im Registryeditor zu folgendem Pfad: "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\WebClient\Parameters"

und klicken Sie doppelt auf den Eintrag "BasicAuthLevel".

====

Datei:Bild18.png

4. Schritt: ====

Ändern Sie den Wert auf 2 und bestaetigen mit "OK".

5. Schritt:

Starten Sie Ihren PC neu.

====

Datei:Bild16.png

6. Schritt: ====

Nachdem der PC neugestartet ist, wählen Sie im Startmenü den Punkt "Computer" aus.

7. Schritt:

Klicken Sie jetzt auf "Netzlaufwerk zuordnen".Datei:Bild13.png


====

Datei:Bild17.png

8. Schritt: ====

Wählen Sie nun den Punkt "Verbindung mit einer Webseite herstellen, auf der Sie Dokumente und Bilder speichern können" aus.

9. Schritt:

Bestätigen Sie beide Fenster mit "Weiter".

10. Schritt:

Geben Sie nun Ihre Domain in der Form https://ihre-webhosting-domain.de:443 ein und klicken dann auf Weiter.






Datei:Grafik9.png

















Datei:Grafik10.png

mDatei:Grafik12.png


WebDAV - Einrichtung unter Windows Vista

=====

Datei:Grafik14.png

Bitte beachten =====

Sollte die Fehlermeldung "Der Ordner-Name ist ungültig" weiterhin auftauchen, dann installieren Sie bitte folgenden Microsoft-Patch:

Softwareupdate für Webordner (KB907306)

http://www.microsoft.com/downloads/details.aspx?familyid=17C36612-632E-4C04-9382-987622ED1D64&displaylang=de



11. Schritt:

Sie werden nun nach den Benutzerdaten gefragt, welche den FTP-Zugangsdaten entsprechen.



12. Schritt:

Datei:Grafik15.png

Sobald Ihre Daten überprüft und akzeptiert wurden, können Sie selbst einen beliebigen Namen fuer diese neue Netzwerkressource wählen - die von Ihnen eingegebene Domain wird bereits vorgeschlagen.

13. Schritt:

Anschliessend können Sie die Einrichtung mit einem Klick auf "Fertig stellen" abschliessen.










Datei:Grafik16.png
















WebDAV - Passwort ändern (NetDrive )

Datei:Bild19.png


  1. Rechtsklick auf das NetDrive-Symbol in der Taskleiste
  2. Open NetDrive mit links anklicken.
  3. Sie WebDAV.h2t.eu mit links anklicken
  4. Account-Daten prüfen
  5. Neues Passwort eingeben
  6. Änderungen speichern


Zugriff mit Apple

TODO

Zugriff mit Android

The Android web browser natively recognizes WebDAV folders. Merely enter the URL of the WebDAV folder in the location bar:

http://myhost.mydomain.org/WebDAV1= WebDAV Server mit Apache =

Ziel ist jetzt die Einrichtung eines sicheren WebDAV-Ordnerbaums. Nur authentifizierte Benutzer sollen auf die Dateien zugreifen können, sämtliche Übertragungen müssen [[SSL-verschlüsselt ablaufen. Außerdem soll nur ein Benutzer auf die gesamte Ordnerhierarchie zugreifen können, alle anderen haben nur Zugriff auf ihren jeweiligen Ordner.

SDB:Using WebDAV

I want to access my calendar and addressbook from my mainframe and from my notebook. I write exams at the moment so it is the best time to do something else. I've setup a WebDAV to store my adressbook and calendar so I can access it with KOrganizer, Mozilla Sunbird or KAdressbook from everywhere.

First we have to create a directory for the WebDAV databases (lock, user).

mkdir -p /var/lib/apache2/dav
chgrp www /var/lib/apache2/dav
chmod 775 /var/lib/apache2/dav

Now we need a user

htpasswd2 -c /etc/apache2/dav_users.db username

Change username to your user and enter a password. Now lets create the web accessible directory.

mkdir /srv/www/WebDAV
chgrp www /srv/www/WebDAV
chmod 775 /srv/www/WebDAV

The next step is to edit the config /etc/sysconfig/apache2 file and add the dav modules add "dav" and "dav_fs". See the example below.

APACHE_MODULES="dav dav_fs"

Of course those two will not the only entry in there you can just add them at the end.

Create a file /etc/apache2/mod_dav.conf with the following content:

<IfModule mod_dav_fs.c>

       # Location of the WebDAV lock database.
       DAVLockDB /var/lib/apache2/dav/lockdb

</IfModule>

<IfModule mod_dav.c>

       # XML request bodies are loaded into memory;
       # limit to 128K by default
       LimitXMLRequestBody 131072
       # Location of the WebDAV Repository.
       Alias /WebDAV "/srv/www/WebDAV"
       <Directory /srv/www/WebDAV>
               # enable WebDAV for this directory
               Dav On
               Options +Indexes
               IndexOptions FancyIndexing
               AddDefaultCharset UTF-8
               AuthType Basic
               AuthName "WebDAV Server"
               # htpasswd2 -c /etc/apache2/dav_users.db <username>
               AuthUserFile /etc/apache2/dav_users.db
               <LimitExcept GET OPTIONS>
                       Require valid-user
               </LimitExcept>
               Order allow,deny
               Allow from all
       </Directory>

</IfModule>

Create the file

/etc/httpd.conf.local

Then put the following line

Include /etc/apache2/mod_dav.conf

Next edit the file /etc/sysconfig/apache2. Look for the entry APACHE_CONF_INCLUDE_FILES and edit it.

APACHE_CONF_INCLUDE_FILES="/etc/apache2/httpd.conf.local"

You need to restart apache2 for 12.x run the command

systemctl restart apache2.service

For 11.x down run the command

rcapache2 restart

Now you can access your WebDAV directory with http://localhost/WebDAV

You can access it via dolphin, konqueror or nautilus with the following url.

WebDAV://localhost/WebDAV

Access it from within your local lan you need to replace the locahost with it's correct ip address.

SSL

I'm sure you want to access your server the secure way, so we need mod_ssl and a certificate. I have an CACert account so I created a real one ;)

You have to create a CSR (Certificate Signing Request) for CACert. This file contains pieces of information about your cert and your public key. It is used by the Certification Authority to sign your cert.

Generate an encrypted key

Type the following command to generate a private key that is file encrypted.

openssl genrsa -des3 -out server.key 1024

You will be prompted for the password to access the file and also when starting your webserver. Warning: If you lose or forget the passphrase, you must generate another certificate. If you decide at a later stage that you would rather use an unencrypted key (cause you don't want to enter the key at boot time), you may create an unencrypted version of server.key in server.key.unsecure by executing:

openssl rsa -in server.key -out server.key.unsecure

Request a Server Certificate

Log in to your CACert account and post the CSR, you'll will receiver the server.crt by mail. Replace the server.key in /etc/apache2/ssl.key and server.crt in /etc/apache2/ssl.crt with your CSR and your cert.

Configure SSL

Edit in /etc/sysconfig/apache2 the add to APACHE_SERVER_FLAGS the option -DSSL. Restart your apache2 and connect e.g. with konqueror to your WebDAV and log in:

WebDAVs://localhost/WebDAV

reference: http://tr.opensuse.org/WebDAV (as found using google(...))

WebDAV

WebDAV is a method for allowing remote access to local folders via an HTTP-based web browser. In other words, an HTTP-based file server is created (using the Apache2 server platform in these examples, since the Apache2 webserver has a built-in WebDAV module).

This can be combined with user authentication (using LDAP or a number of other password mechanisms).

WebDAV Server Installation

Install Apache webserver

Apache2 must be installed, either alone or as part of a LAMP server.

sudo apt-get install apache2

or

sudo apt-get install tasksel sudo tasksel install lamp-server

Open your firewall

Remember, WebDAV is an HTTP server. The incoming default HTTP and/or HTTPS ports (80 and/or 443) should be open to the server. It is, of course, also possible to use custom ports by changing the allowed incoming ports in the firewall, the virtual host configuration file, and, of course, the URL used to reach the WebDAV server.

Enable the Apache2 WebDAV modules

Enable the dav and dav_fs modules:

sudo a2enmod dav_fs

Restart Apache2:

sudo /etc/init.d/apache2 restart

Create a folder for WebDAV use

There are two options: * Create a WebDAV directory in the /var/www folder:


sudo mkdir /var/www/WebDAV1
or
Create a WebDAV directory in the /home/user/ (also known as ~/) folder and create a symbolic link:
mkdir ~/WebDAV1
sudo ln -s ~/WebDAV1 /var/www/

* Create a subdirectory for files:


mkdir /var/www/WebDAV1/files

* Note: In the next several steps, file/folder ownership and permissions can also be adjusted from a File Manager (such as Dolphin in Kubuntu or Nautilus in Ubuntu) as root:


sudo dolphin
or
sudo nautilus

* Make sure the owner of whichever WebDAV folder was created (and its subfolders, using the -R recursive switch) is www-data (the user ID for Apache2) and the group is that of your user ID (or, alternatively, root):


sudo chown -R www-data:user /var/www/WebDAV1
or
sudo chown -R www-data:user ~/WebDAV1
Alternatively you could create a WebDAV user group so that some group of local users could access the files locally (instead of through WebDAV). Add the individual users to that group and use WebDAV as the group instead of a single user (or root), for example:
sudo chown -R www-data:WebDAV /var/www/WebDAV1

* To allow files in the WebDAV folder (and its subfolders, using the -R recursive switch) to be Read/Write but not eXecutable (which may be a security risk on some servers):


sudo chmod 664 -R /var/www/WebDAV1
or
sudo chmod 664 -R ~/WebDAV1

* Some users find that broader permissions may be required, and instead allow Read/Write/eXecute for the Owner / Group (but not all users):


sudo chmod 770 -R /var/www/WebDAV1
or
sudo chmod 770 -R ~/WebDAV1

Create or edit the virtual host file

  • Edit the virtual host (vhost) file used for the URL through which WebDAV will be accessed (use the gedit text editor instead of kate if using Ubuntu instead of Kubuntu):


sudo kate /etc/apache2/sites-available/mydomainhost
where mydomainhost is the name of the virtual host configuration file used for your URL. If you are using the default virtual host file, edit that one.
Add the line
Alias /WebDAV1 /var/www/WebDAV1/files
so that accessing the WebDAV folder using the URL
will forward to the correct folder (/var/www/WebDAV1) on the computer.

* The final virtual host file ought to resemble:


<VirtualHost *>
#
# UseCanonicalName off
# ServerName WebDAV1.mydomain.org
ServerName myhost.mydomain.org
ServerAlias 192.168.0.155 WebDAV1.mydomain.org
#
ServerAdmin root@localhost
DocumentRoot /var/www/
#
Alias /WebDAV1 /var/www/WebDAV1/files
#
<Directory /var/www/WebDAV1/>
Options Indexes MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>
</VirtualHost>
In this example, the WebDAV server is on the primary server, so the URL is the same as that of the primary server (and would be accessed from http://myhost.mydomain.org/WebDAV1). The primary server's IP address on the LAN (in this example) is 192.168.0.155, so to access it from the LAN, this address could also be used: http://192.168.0.155/WebDAV1.

* Enable the virtual host (vhost):


sudo ln -s /etc/apache2/sites-available/mydomainhost /etc/apache2/sites-enabled/

* Restart Apache2:


sudo /etc/init.d/apache2 restart

* Test that the folders are reachable through Apache2 using:


or

Create password access for the WebDAV folders

  • Note: This method uses HTTP Basic Authentication as outlined in the Apache documentation. However, this same documentation recommends against routine use of HTTP Basic Authentication (which transmits unencrypted passwords, inviting password sniffing) and instead recommends HTTP Digest Authentication (or at least HTTP Basic Authentication over SSL). Refer to the Apache documentation for more details.
  • Create the WebDAV password file /var/www/WebDAV1/passwd.dav with the user testuser. For more info see here. (The -c switch creates the file if it does not exist.):


sudo htpasswd -c /var/www/WebDAV1/passwd.dav testuser
Type in a password for the user testuser.

We will later use this userID when connecting to the WebDAV URL:

* Add other users (e.g. testuser2, testuser3, etc.) as needed. (Omit the -c switch because the password file already exists.)


sudo htpasswd /var/www/WebDAV1/passwd.dav testuser2
Note: See below for adding a password for users accessing WebDAV folders from Windows clients.

* Change the permissions of the /var/www/WebDAV1/passwd.dav file so that only www-data (as owner) and user (or, alternatively, root) as the group can access it:


sudo chown www-data:user /var/www/WebDAV1/passwd.dav
sudo chmod 660 /var/www/WebDAV1/passwd.dav
Note: I personally use chmod 460, which does not allow the www-data owner to write to the file (only read permissions are allowed). Only members of the local group user can read/write to the file using this chmod 460 setting.

* Edit the virtual host (vhost) file /etc/apache2/sites-available/mydomainhost (use the gedit text editor instead of kate if using Ubuntu instead of Kubuntu):


sudo kate /etc/apache2/sites-available/mydomainhost
and add the following lines to it:
#
<Location /WebDAV1>
DAV On
AuthType Basic
AuthName "WebDAV1"
AuthUserFile /var/www/WebDAV1/passwd.dav
Require valid-user
</Location>
The final virtual host (vhost) file should resemble:
<VirtualHost *>
#
# UseCanonicalName off
# ServerName WebDAV1.mydomain.org
ServerName myhost.mydomain.org
ServerAlias 192.168.0.155 WebDAV1.mydomain.org
#
ServerAdmin root@localhost
DocumentRoot /var/www/
#
Alias /WebDAV1 /var/www/WebDAV1/files
#
<Directory /var/www/WebDAV1/>
Options Indexes MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>
#
<Location /WebDAV1>
DAV On
AuthType Basic
AuthName "WebDAV1"
AuthUserFile /var/www/WebDAV1/passwd.dav
Require valid-user
</Location>
</VirtualHost>

* Reload Apache:


/etc/init.d/apache2 reload

Testing WebDAV

  • Install cadaver, a command-line WebDAV client:


sudo apt-get install cadaver

* Test if WebDAV works:


You should be prompted for a user name. Type in testuser and then the password for testuser. If all goes well, you should be granted access which means WebDAV is working ok. To leave the WebDAV shell, type quit:

server1:~# cadaver http://localhost/WebDAV1/ Authentication required for test on server `localhost': Username: testuser Password: ******* dav:/WebDAV1/> quit Connection to `localhost' closed. server1:~#

Set up Digest Authorization (encrypted passwords)


sudo a2enmod auth_digest

* Create a digest authorization password file:


sudo htdigest -c /var/www/WebDAV1/digestpasswd.dav WebDAV1digest testuser

* Add other users (e.g. testuser2, testuser3, etc.) as needed. (Omit the -c switch because the password file already exists.)


sudo htdigest /var/www/WebDAV1/digestpasswd.dav WebDAV1digest testuser2
Note: See below for adding a password for users accessing WebDAV folders from Windows clients.

* Change the permissions of the /var/www/WebDAV1/digestpasswd.dav file so that only www-data (as owner) and user (or, alternatively, root) as the group can access it:


sudo chown www-data:user /var/www/WebDAV1/digestpasswd.dav
sudo chmod 660 /var/www/WebDAV1/digestpasswd.dav
Note: I personally use chmod 460, which does not allow the www-data owner to write to the file (only read permissions are allowed). Only members of the local group user can read/write to the file using this chmod 460 setting.

* Edit the virtual host (vhost) file /etc/apache2/sites-available/mydomainhost (use the gedit text editor instead of kate if using Ubuntu instead of Kubuntu):


sudo kate /etc/apache2/sites-available/mydomainhost
and this time add the following lines to it:
#
<Location /WebDAV1>
DAV On
AuthType Digest
AuthName "WebDAV1digest"
AuthUserFile /var/www/WebDAV1/digestpasswd.dav
Require valid-user
</Location>
so that the final file resembles:
<VirtualHost *>
#
# UseCanonicalName off
# ServerName WebDAV1.mydomain.org
ServerName myhost.mydomain.org
ServerAlias 192.168.0.155 WebDAV1.mydomain.org
#
ServerAdmin root@localhost
DocumentRoot /var/www/
#
Alias /WebDAV1 /var/www/WebDAV1/files
#
<Directory /var/www/WebDAV1/>
Options Indexes MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>
#
# <Location /WebDAV1>
# DAV On
# AuthType Basic
# AuthName "WebDAV1"
# AuthUserFile /var/www/WebDAV1/passwd.dav
# Require valid-user
# </Location>
#
<Location /WebDAV1>
DAV On
AuthType Digest
AuthName "WebDAV1digest"
AuthUserFile /var/www/WebDAV1/digestpasswd.dav
Require valid-user
</Location>
</VirtualHost>

Enable WebDAV lock

Although optional, the lock database prevents multiple users from overwriting the same file simultaneously. * Create a global Apache2 configuration file (use the gedit text editor instead of kate if using Ubuntu instead of Kubuntu):


sudo kate /etc/apache2/conf.d/WebDAV
and add the single line:
DavLockDB /var/lock/apache2/DAVLock
It may be necessary to also add this line to the dav_fs configuration file:
sudo kate /etc/apache2/mods-available/dav_fs.conf

This directive indicates that the locking database files will be named DAVLock by the dav_lock module. These database files will be stored by Apache in the /var/lock/apache2 folder. * By default, Apache2 allows a WebDAV client to set the file lock time. Many WebDAV clients, for example, impose a file lock time of 2 minutes. A longer lock time can optionally be imposed by the WebDAV server by adding an additional line:


DAVMinTimeout 5
where in this example the minimum file lock time is set to 5 minutes for all clients. (The default is DAVMinTimeout 0, which indicates that no minimum file lock time is imposed by the server and it is left up to the individual WebDAV clients).

* Enable the Apache2 dav_lock module:


sudo a2enmod dav_lock

* Restart Apache2:


sudo /etc/init.d/apache2 restart

Multiple WebDAV servers on a LAN using a single IP address and router

Note: This section is undergoing editing. * To run multiple servers (including WebDAV servers) on multiple computers on a LAN using only a single IP address and router, see this solution using reverse proxies in Apache.

  • Each server should have a unique WebDAV folder name. Instead of using WebDAV1 and WebDAV1, different names, such as WebDAV2 and WebDAV2, WebDAV3 and WebDAV3, WebDAV4 and WebDAV4, etc., should be used on each of the individual computers.
  • Each computer's WebDAV folder would then be reached by its own unique label, e.g.


or
or

Alternatively, if each computer has its own unique URL, the unique URL can be used. Adjust the reverse proxy virtual host file (on the primary server that acts as the proxy/reverse proxy to the other servers) accordingly in order to enable this.

This does not always work and a lot of troubleshooting and trial and error is needed to perfect rewrite rules. Sometimes a more relaible method is to just use the RedirectMatch rule with the actual LAN IP address of the second server.

Here is a detailed example, although there are many ways to accomplish this. * On the primary server of the LAN (the one to which the router initially directs port 80 traffic), make sure the proxy/reverse proxy modules of Apache2 are enabled and then restart Apache:


sudo a2enmod proxy
sudo a2enmod proxy_http
sudo /etc/init.d/apache2 restart
Also makes sure the rewrite module is on:
sudo a2enmod rewrite

* This example assumes the primary server has its own set of WebDAV folders (as in the steps outlined above), labeled WebDAV1/WebDAV1.

  • Duplicate the steps for the second server, substituting WebDAV2 and WebDAV2 in each step.
  • On the primary server, edit the virtual host file for the primary URL (e.g. /etc/apache2/sites-available/mydomainhost) by which the LAN is reached (use the gedit text editor instead of kate if using Ubuntu instead of Kubuntu):


sudo kate /etc/apache2/sites-available/mydomainhost

* Near the beginning of the file add the lines:


#
UseCanonicalName off
#
RewriteEngine On
RedirectMatch (.*)/WebDAV2 http://192.168.0.156/WebDAV2

This example assumes, of course, that the second server is located on the LAN at IP address 192.168.0.156. This ensures that the newly transformed URL gets sent to the correct IP address on the LAN. This is the proxy function of the first server. (It also specifies the reverse process.)

The file should now resemble:

<VirtualHost *> #

UseCanonicalName off

#

RewriteEngine On
RedirectMatch (.*)/WebDAV2 http://192.168.0.156/WebDAV2

# # ServerName WebDAV1.mydomain.org

ServerName myhost.mydomain.org
ServerAlias 192.168.0.155 WebDAV1.mydomain.org

#

ServerAdmin root@localhost
DocumentRoot /var/www/

#

Alias /WebDAV1 /var/www/WebDAV1/files

# <Directory /var/www/WebDAV1/>

  Options Indexes MultiViews
  AllowOverride None
  Order allow,deny
  allow from all
</Directory>

# # <Location /WebDAV1> # DAV On # AuthType Basic # AuthName "WebDAV1" # AuthUserFile /var/www/WebDAV1/passwd.dav # Require valid-user # </Location> #

<Location /WebDAV1>
 DAV On
 AuthType Digest
 AuthName "WebDAV1digest"
 AuthUserFile /var/www/WebDAV1/digestpasswd.dav
 Require valid-user
</Location>

</VirtualHost>

While this method is not required, it allows the second WebDAV server to be accessed from another computer on the LAN either by http://myhost.mydomain.org/WebDAV2 or by http://WebDAV2.mydomain.org. Using this method, by editing only the virtual host file on the primary server (that acts as proxy), access to the secondary WebDAV server can be selectively restricted to the LAN only or can be enabled for complete access from the Internet at large.

WebDAV with LDAP

Note: This section is undergoing editing.

If an LDAP server exists already, you can use the Apache2 mod_authnz_ldap module.

Do you intend to place each person's website in a separate directory below the common DAV root? If so, you'll probably want to limit access to each directory to its specific user for security. An .htpasswd file in each directory is the easiest solution, but it's safer to put all the access rules in the global WebDAV configuration file located in the /etc/apache2/sites-enabled folder.

References


Einrichtung

Zunächst sucht man sich ein Verzeichnis, das den WebDAV-Baum beinhalten wird, z.B. /var/www/html. Anschließend legt man den Verzeichnisbaum an, also

mkdir /var/www/html/files cd /var/www/html/files mkdir user1 user2

Anschließend werden die Benutzer angelegt:

htpasswd -bc .htpasswd user1 pwd1 htpasswd -b user2 pwd2 htpasswd -b superuser pwd3

Die Datei kann natürlich an einem beliebigen Ort liegen, wo Apache Zugriff hat. Es ist sogar etwas sicherer, die Passwort-Datei außerhalb eines per HTTP zugreifbaren Verzeichnisses zu platzieren, so dass selbst im Falle eines Konfigurationsfehlers die Datei mit den Passwörtern nicht einfach heruntergeladen werden kann. In der Standardkonfiguration sollte aber Apache das herunterladen von Dateien, die mit ".ht" beginnen, gar nicht zulassen.

Nun muss noch der DAV-Zugriff konfiguriert werden: Dies kann irgendwo in der Apache-Konfiguration passieren, ich lege meist eine neue conf-Datei in /etc/httpd/conf.d an. Diese sieht in etwa wie folgt aus:

Alias /dav /var/www/html/files/ <Location /dav>

     DAV On
     SSLRequireSSL 
     # how to authenticate a user
     AuthType Basic
     AuthName "Webordner"
     AuthUserFile /var/www/html/files/.htpasswd
     require user superuser

</Location>

<Location /dav/user1>

     require user user1 superuser
     Options +Indexes

</Location>

<Location /dav/user2>

     require user user2 superuser
     Options +Indexes

</Location>

Da die Dateien in einem normalen Verzeichnis unterhalb des Webroot liegen, kann man noch ganz normal per HTTP ohne Authentifizierung und Verschlüsselung die Dateien herunterladen. Das ist natürlich nicht gewollt. Um das zu verhindern, legt man eine .htaccess in /var/www/html/files mit dem folgenden Inhalt:

Deny from All

Praxistipp: Solltet ihr trotz des obigen Eintrags noch auf die Dateien zugreifen können, beachtet Apache die .htaccess-Datei nicht. Ein Grund dafür kann z.B. darin liegen, dass für euren Virtual Host oder für einen Verzeichnisbaum "AllowOverride None" gesetzt ist bzw. "AuthConfig" nicht in der AllowOverride-Liste steht.

Zugriffsrechte

Das DAV-Modul läuft unter den Rechten des Apache-Benutzers. Entsprechend ist auch der Eigentümer von neu geschriebenen Dateien Apache. Dies kann sehr ärgerlich sein, wenn z.B. Skripte auf eine per WebDAV hochgeladene Datei zugreifen sollen. Eine Lösung dafür können ACLs mit default-Einträgen sein, so dass neue Dateien in dem Verzeichnis sowohl von Apache als auch von einem (oder mehreren) normalen Benutzer geschrieben werden können:

setfacl --set \ user::rwx,group::r-x,other:r-x,group:apachegroup:rwx,\

   default:user:myuser:rwx,default:group:myusergroup:r-x,default:group:apachegroup:rwx,default:other:r-x \

/var/www/html/files

In diesem Beispiel erhält der Benutzer myuser (Gruppe myusergroup) alle Rechte auf das Verzeichnis und standardmäßig auch auf alle neuen Dateien darin. Gleiches gilt für die Gruppe des apache (apachegroup). Natürlich müssen die Namen entsprechend angepasst werden.

Mir ist derzeit (August 2007) keine Software bekannt, die es erlauben würde, den Eigentümer hochgeladener Dateien entsprechend der Anmeldung zu ändern. Dies wäre für mich insbesondere für CGI-Skripte im Zusammenhang mit suexec interessant.

Creating passwords for Windows clients

Some Windows clients (including Windows Explorer in XP) append the URL of the WebDAV folder to the user name. For example, when a WebDAV request is made by testuser3 to the WebDAV server at http://myhost.mydomain.org/WebDAV1, Windows will send a request for access as myhost.mydomain.org\testuser3.

To accommodate this behavior, additional user accounts in the Windows format must be added to the password file on the WebDAV server. Note the extra \ . * If using Basic Authentication, add the user to the password file:


sudo htpasswd /var/www/WebDAV1/passwd.dav myhost.mydomain.org\\testuser

* If using Digest Authentication, add the user to the password file:


sudo htdigest /var/www/WebDAV1/digestpasswd.dav WebDAV1digest myhost.mydomain.org\\testuser

* Note: There is a bug in the Windows WebDAV redirector when used with Digest Authentication. (See this tutorial for more details.) A workaround entails mapping the WebDAV folder to a drive letter using the command line. This can only be done in a Windows computer that has just been booted.

  • Mount the WebDAV folder to a Windows drive letter with the Net use command. Enter the following into the Windows Start menu -> Run... command line:


net use * "http://myhost.mydomain.org/WebDAV1/" testuserpassword /user:myhost.mydomain.org\testuser

* A specific drive letter (such as W:) can be used instead of the *. The * option specifies to mount the resource to the next available Windows drive letter.

  • To make the mapping permanent, add the option /persistent:yes
  • A (.bat) batch file can be created that contains this net use command. A Windows shortcut to this batch file can then be placed in the Windows Start menu -> Programs -> Start folder. This will run the net use command (from the batch file) at every bootup (following the start of all basic services). The batch file may need to address the net command by its absolute folder location:


C:\WINDOWS\system32\net use * "http://myhost.mydomain.org/WebDAV1/" testuserpassword /user:myhost.mydomain.org\testuser* To disconnect a web folder (either from the Start menu -> Run... dialog box or from a batch file, where X: is mounted Windows drive letter:


net use X: /delete

Apache Module mod_dav

Description: Distributed Authoring and Versioning (WebDAV) functionality
Status: Extension
Module Identifier: dav_module
Source File: mod_dav.c


Summary

This module provides class 1 and class 2 WebDAV ('Web-based Distributed Authoring and Versioning') functionality for Apache. This extension to the HTTP protocol allows creating, moving, copying, and deleting resources and collections on a remote web server.

Directives


Topics


See also


Enabling WebDAV

To enable mod_dav, add the following to a container in your httpd.conf file:

Dav On

This enables the DAV file system provider, which is implemented by the mod_dav_fs module. Therefore, that module must be compiled into the server or loaded at runtime using the LoadModule directive.

In addition, a location for the DAV lock database must be specified in the global section of your httpd.conf file using the DavLockDB directive:

DavLockDB /usr/local/apache2/var/DavLock

The directory containing the lock database file must be writable by the User and Group under which Apache is running.

You may wish to add a <Limit> clause inside the <Location> directive to limit access to DAV-enabled locations. If you want to set the maximum amount of bytes that a DAV client can send at one request, you have to use the LimitXMLRequestBody directive. The "normal" LimitRequestBody directive has no effect on DAV requests.

Full Example

DavLockDB /usr/local/apache2/var/DavLock <Directory /usr/local/apache2/htdocs/foo>

   Require all granted
   Dav On
   AuthType Basic
   AuthName DAV
   AuthUserFile user.passwd
   <LimitExcept GET POST OPTIONS>
       Require user admin
   </LimitExcept>

</Directory>

Security Issues

Since DAV access methods allow remote clients to manipulate files on the server, you must take particular care to assure that your server is secure before enabling mod_dav.

Any location on the server where DAV is enabled should be protected by authentication. The use of HTTP Basic Authentication is not recommended. You should use at least HTTP Digest Authentication, which is provided by the mod_auth_digest module. Nearly all WebDAV clients support this authentication method. An alternative is Basic Authentication over an SSL enabled connection.

In order for mod_dav to manage files, it must be able to write to the directories and files under its control using the User and Group under which Apache is running. New files created will also be owned by this User and Group. For this reason, it is important to control access to this account. The DAV repository is considered private to Apache; modifying files outside of Apache (for example using FTP or filesystem-level tools) should not be allowed.

mod_dav may be subject to various kinds of denial-of-service attacks. The LimitXMLRequestBody directive can be used to limit the amount of memory consumed in parsing large DAV requests. The DavDepthInfinity directive can be used to prevent PROPFIND requests on a very large repository from consuming large amounts of memory. Another possible denial-of-service attack involves a client simply filling up all available disk space with many large files. There is no direct way to prevent this in Apache, so you should avoid giving DAV access to untrusted users.

Complex Configurations

One common request is to use mod_dav to manipulate dynamic files (PHP scripts, CGI scripts, etc). This is difficult because a GET request will always run the script, rather than downloading its contents. One way to avoid this is to map two different URLs to the content, one of which will run the script, and one of which will allow it to be downloaded and manipulated with DAV.

Alias /phparea /home/gstein/php_files Alias /php-source /home/gstein/php_files <Location /php-source>

   DAV On
   ForceType text/plain

</Location>

With this setup, http://example.com/phparea can be used to access the output of the PHP scripts, and http://example.com/php-source can be used with a DAV client to manipulate them.

Dav Directive

Description: Enable WebDAV HTTP methods
Syntax: Dav On|Off|provider-name
Default: Dav Off
Context: directory
Status: Extension
Module: mod_dav

Use the Dav directive to enable the WebDAV HTTP methods for the given container:

<Location /foo>

   Dav On

</Location>

The value On is actually an alias for the default provider filesystem which is served by the mod_dav_fs module. Note, that once you have DAV enabled for some location, it cannot be disabled for sublocations. For a complete configuration example have a look at the section above.

Do not enable WebDAV until you have secured your server. Otherwise everyone will be able to distribute files on your system.

DavDepthInfinity Directive

Description: Allow PROPFIND, Depth: Infinity requests
Syntax: DavDepthInfinity on|off
Default: DavDepthInfinity off
Context: server config, virtual host, directory
Status: Extension
Module: mod_dav

Use the DavDepthInfinity directive to allow the processing of PROPFIND requests containing the header 'Depth: Infinity'. Because this type of request could constitute a denial-of-service attack, by default it is not allowed.

DavMinTimeout Directive

Description: Minimum amount of time the server holds a lock on a DAV resource
Syntax: DavMinTimeout seconds
Default: DavMinTimeout 0
Context: server config, virtual host, directory
Status: Extension
Module: mod_dav

When a client requests a DAV resource lock, it can also specify a time when the lock will be automatically removed by the server. This value is only a request, and the server can ignore it or inform the client of an arbitrary value.

Use the DavMinTimeout directive to specify, in seconds, the minimum lock timeout to return to a client. Microsoft Web Folders defaults to a timeout of 120 seconds; the DavMinTimeout can override this to a higher value (like 600 seconds) to reduce the chance of the client losing the lock due to network latency.

Example

<Location /MSWord>

   DavMinTimeout 600

</Location>

Spezielle Client-Probleme

1.4.1 Mac OS X und SSL

Unter MacOS X beherrscht der integrierte Client leider keine SSL-verschlüsselten Übertragungen. Hierfür sind Zusatztools notwendig. Inwieweit Apple das mit 10.4 ("Tiger") geändert hat, weiß ich nicht, das Problem besteht aber auf jeden Fall mit 10.3 und kleiner. = WebDAV - Protokoll im Detail =

"Das WebDAV Protokoll , eine Erweiterung von HTTP 1.1", so lautet das Thema dieses Seminars. Bevor jedoch das Augenmerk auf WebDAV selbst gerichtet wird, werden zunächst die Fragen, was ein Protokoll und HTTP überhaupt sind, geklärt. Die Antworten auf diese Fragen beschreiben nämlich bereits die grundlegende Funktionalität von WebDAV (da es sich, wie erwähnt, um eine Erweiterung handelt) und erleichtern somit das Verständnis für das Thema.

Was ist ein Protokoll?

  • Ein Protokoll dient der Festlegung eines Übertragungsstandarts
  • Es ist eine vereinbarte Logik für die Datenübertragung (Inhalt, auch zeitlicher Ablauf)
  • Es ist eine Spezifikation über das Datenformat und auch dessen Bedeutung (Syntax/Semantik)


Was ist HTTP?

Im Grunde genommen handelt es sich beim World Wide Web um ein verteiltes Hypermedia-System, bei dem die Informationen in Form von Webseiten gespeichert werden, die über Weblinks (URI/URL) miteinander verbunden sind. Das Hypertext Transfer Protocol (HTTP) ist ein für diese Eigenschaft des Web erforderliches Verfahren, für den Zugriff auf nicht lokal gespeicherte Informationen. Es stellt ein recht einfaches, auf einer Client/Server Architektur basierendes und auf einem verlässlichen verbindungsorientierten Transportdienst aufbauendes Request/Response Protokoll dar.

Aufbau einer HTTP Ineraktion

Das Schema einer HTTP Interaktion sieht dabei folgendermaßen aus: * Verbindungsaufbau

  • (Aufbau einer TCP-Verbindung vom Client zum Server)
  • Request vom Client zum Server
  • (Auswahl einer Methode, zusätzliche Parameter zur Methode)
  • Response vom Server zum Client
  • (Resultat in Form eines Statuscodes, zusätzliche Parameter zum Resultat)
  • Verbindungsabbau
  • (ab HTTP1.1 kann die Verbindungen bestehenbleiben)


Da es sich bei den Nachrichtentypen Request und Response um zum RFC 822 konforme Nachrichten handelt, ist das Format beider Typen sehr einfach:

generic-message = start-line

             *message-header
             CRLF
             [message-body] 

start-line = request-line | status-line

Bei der start-line handelt es sich entweder um eine request-line (wenn die HTTP -Nachricht ein Request ist) oder um eine status-line (wenn die HTTP - Nachricht ein Response ist). Nach der start-line können null oder mehr Header-Felder folgen (Details zu den einzelnen Headertypen).

Funktionalität

Der Standardentwurf RFC 2518 führt eine Reihe neuer Konzepte ein, die bei HTTP vermisst wurden bzw. als nicht genügend für eine kooperative Dokumentenpflege befunden wurden:* Überschreibschutz für Dokumente (Ressourcen):

  • Bearbeiter können Dokumente "blockieren", um Kollisionen bei der Bearbeitung zu verhindern (Locking). Dabei sieht man "persistente Locks" vor, die keine ständige Netzverbindung erfordern.
  • Metadaten:
  • Dokumenten können Eigenschaften (Properties) zugeordnet werden. Das sind beliebige Metadaten (einfach ausgedrückt Daten über Daten), die Syntax nutzt dabei XML.
  • Namensraumverwaltung (Namespace management):
  • Will man ganze Verzeichnishierarchien bzw. Namensräume statt einzelne Dokumente manipulieren (löschen, verschieben etc.), so heißt das dazugehörende Konzept Collections.


Nicht im Standart RFC 2518 enthalten:* Ressourcen-Versionierung

  • Ressourcen-Suche
  • Zugriffskontrolle


WebDAV war ursprünglich für alle Punkte geplant, aufgrund des Umfangs wurden jedoch weitere Arbeitsgruppen gegründet:* DeltaV (Ressourcen-Versionierung)

  • DASL (Ressourcen-Suche)
  • ACL (Subarbeitsgruppe - Zugriffskontrolle)


WebDAV- Methoden

WebDAV setzt auf HTTP 1.1 (RFC 2616) auf und übernimmt von diesem alle Methoden für die Kommunikation, erweitert einige davon und fügt auch neue Methoden hinzu. Diese Methoden sind für die Gewährleistung der neuen Funktionalitäten (Lockig, Properties, Collections) notwendig.

HTTP selbst definiert acht Methoden

  • GET / PUT / DELETE
    • Eine Ressource anfordern, schreiben oder löschen
    • (WebDAV: DELETE Þ eine Collection löschen)
  • POST
    • Informationen an den Server Übermitteln (Formulardaten u.Ä.)
  • HEAD
    • Ähnlich wie GET. Unterschied liegt darin, dass der Server in seinem Response keinen Message Body zurückgeben muss.
  • OPTIONS
    • Information über eine Kommunikation anfordern, ohne eine Aktion auszuführen
  • TRACE
    • Für Test- und Diagnosezwecke (Request-/Responsekette prüfen)
  • CONNECT
    • Reserviert für das Tunneling bei Proxies


Weitere sieben Methoden von WebDAV:

  • LOCK
    • Setzt für den Überschreibschutz eine Sperre auf eine Collection oder Ressource
  • UNLOCK
    • Gibt eine gesperrte Collection oder Ressource wieder frei
  • PROPFIND
    • Liest Metadaten von Ressourcen oder Collections
  • PROPPATCH
    • Schreibt Metadaten von Ressourcen oder Collections
  • COPY
    • Kopiert Collections und Ressourcen innerhalb eines zusammenhängenden Namensraumes
  • MOVE
    • Verschiebt Collections und Ressourcen innerhalb eines zusammenhängenden Namensraumes
  • MKCOL
    • Erzeugt eine neue Collection


WebDAV- Prinzip

Im Folgenden wird der grundlegende Ablauf bei der Bearbeitung einer Ressource beschrieben. Die einzelnen Konzepte, die hierbei Erwähnung finden, werden im kommenden Kapiteln ausführlich besprochen:

Standardablauf

  1. Ressource zum bearbeiten sperren
  2. Ressource zum bearbeiten anfordern
  3. Änderungen vornehmen
  4. Geänderte Ressource speichern
  5. Ressource freigeben


Was passiert

  1. Es wird über die Methode LOCK ein Locktoken angefordert. Wird die Ressource gerade nicht bearbeitet, wird der Locktoken geliefert.
  2. Mit dem Locktoken wird die Ressource mittels der Methode GET angefordert.
  3. Jetzt können Veränderungen mit einem beliebigen Programm z.B. Word 2000 durchgeführt werden.
  4. Der Locking-Mechanismus hat üblicherweise ein Timeout, so dass die Bearbeitung nicht länger als die definierte Zeit dauern darf.
  5. Mit dem Locktoken wird die Ressource zum speichern mittels der Methode PUT an den Server übermittelt.
  6. Ist der Locktoken nicht per Timeout ungültig geworden und hat der Inhaber die nötigen Schreibrechte, wird der Server die Ressource speichern und den Erfolg per Statuscode melden.
  7. Abschließend wird der Locktoken mit der Methode UNLOCK an den Server zurückgegeben. Die Ressource ist für die Bearbeitung durch andere Personen freigegeben.


WebDAV - Namensraumverwaltung

WebDAV ermöglicht den Benutzern, die Ressourcen einer Webseite in eine Hierarchie von Collections oder Ordnern zu organisieren, ähnlich wie dies der Fall mit den Dateien im traditionellen Dateisystem ist. Diese Organisation ist virtuell und existiert nur im Kontext von WebDAV, sie hat nichts mit der physikalischen Organisation von Ressourcen auf einem Webserver zu tun. Eine Collection wird bei WebDAV auch Namespace (Namensraum) genannt. Das kann ein Webserver oder ein bestimmtes Verzeichnis sein. Das Ziel von Collections ist, Operationen auf WebDAV Ressourcen im großen Umfang zu erlauben. Es ist nicht nur möglich einzelne Ressourcen zu erzeugen, verschieben, kopieren und zu löschen, sondern auch komplette Collections. Auf der Ebene des User Interfaces unterscheidet sich das Management der Collection- Ressourcen nicht von dem Management des Dateisystems, wie z.B. unter Windows Explorer.

Da das Konzept der Collections bei der Namensraumverwaltung den Kern darstellt, wird der Aufbau einer Collection im Folgenden noch näher beleuchtet:

Ein Namensraum entspricht dem HTTP-URI Schema und wird mit " / " abgeschlossen.

Für jede URL in der HTTP Hierarchie existiert eine Collection, die jene URL als ein Mitglied enthält. Die Wurzel bzw. top-level Collection des Namespaces ist von dieser Regel befreit.

Im RFC 2518 wird eine Collection als eine Ressource, deren Zustand aus einer Liste interner URI Mitglieder und einer Menge von Eigenschaften (Properties) besteht, definiert. Eine Mitglied- URI muss relativ zu der Basis URI der Collection sein. Dies bedeutet, dass eine Mitglied- URI einer Basis URI gleich ist, wobei noch ein Segment für Non- Collection- Ressourcen oder ein Segment mit abschließenden "/" für Collection- Ressourcen hinzukommt.

Beispiel

Gibt es WebDAV Ressourcen A und B mit den URI’s U und V, einem zu V relativen U, so ist B eine Collection, die U als eine (interne) Mitglied- URI enthält. Sind also die Ressource mit der URL http://foo.com/bar/blah und die Ressource mit der URL http://foo.com/bar/ WebDAV tauglich, dann ist die Ressource mit der URL http://foo.com/bar/ eine Collection und enthält die URL http://foo.com/bar/blah als ein (internes) Mitglied.

Methoden zur Namensraumverwaltung

MKCOL

erzeugt eine neue Collection an dem durch die Request-URI spezifizierten Ort.Dabei muss die Hierarchie der Ressourcen beachtet werden. Erzeugt die MKCOL Methode eine neue Collection Ressource, so müssen alle Vorfahren vorhanden sein, ansonsten wird der Status Code 409 (Conflict) zurückgeliefert, z.B.:

Existieren bei einer zur Erzeugung einer Collection /a/b/c/d/ gestellten Request, weder /a/b/ noch /a/b/c/ so wird die Methode versagen.

Wurde eine Collection erfolgreich erzeugt, so wird als Response der Status 201 (Created) zurückgeliefert.

Beispiel

Dieses Beispiel erzeugt eine Collection /webdisc/xfiles/ auf dem Server www.server.org.

(Bei Fragen zum generellen Aufbau von Requests oder Responses siehe Kapitel Aufbau einer HTTP Interaktion)

>>Request

MKCOL /webdisc/xfiles/ HTTP/1.1 Host: www.server.org

>>Response

HTTP/1.1 201 Created

COPY

Die Anwendung der Copy Methode bezüglich einer Collection in Verbindung mit dem Depth Header mit dem Wert "infinity" bedeutet, dass die Collection Ressource inklusive aller internen Mitglieder (identifiziert durch die Request-URI) an den Ort, der im Destination Header durch die angegebene URI spezifiziert wird, kopiert werden soll. Die Mitglieder der Collection werden dabei entsprechend der Hierarchie kopiert (relativ zur Basis Collection).

Beim Kopieren einer Collection mit "Depth:0" Header, werden nur die Collection und deren Eigenschaften, nicht aber die Mitglieder- URI’s der Collection kopiert.

Wurde eine Collection erfolgreich kopiert, so wird als Response der Status 201 (Created) zurückgeliefert.

Beispiel
Request

COPY /container/ HTTP/1.1 Host: www.foo.bar Destination: http://www.foo.bar/othercontainer/ Depth: infinity Content-Type: text/xml; charset="utf-8" Content-Length: xxxx

     <?xml version="1.0" encoding="utf-8" ?>
     <d:propertybehavior xmlns:d="DAV:">
       <d:keepalive>*</d:keepalive>
     </d:propertybehavior>

Dieses Beispiel kopiert die Collection /container/ an den Ort, der im Destination Header angegeben ist (hier: http://www.foo.bar/othercontainer/). Die Mitglieder der Collection werden auch kopiert, da der Depth Header den Wert "infinity" besitzt.

Das Header-Feld Content-Type gibt den Medientyp des enthaltenen Entity an. Content-Length wird verwendet, um die Größe des Message Body in einer dezimalen Anzahl von Octets anzugeben.

Anschließend folgt der Message Body beginnend mit einer Processing Instruction, welche die Spezifikation der XML-Version enthält.

Propertybehavior ist ein XML-Element, das die Handhabung der Properties während der Ausführung von COPY oder MOVE beschreibt.

Keepalive mit dem Wert "*" bedeutet dabei, dass alle "live properties" der (Quell) Ressource auch am Bestimmungsort weiter existieren müssen.

>>Response

HTTP/1.1 207 Multi-Status Content-Type: text/xml; charset="utf-8" Content-Length: xxxx

     <?xml version="1.0" encoding="utf-8" ?>
     <d:multistatus xmlns:d="DAV:">
       <d:response>
               <d:href>http://www.foo.bar/othercontainer/R2/</D:HREF>
               <d:status>HTTP/1.1 412 Precondition Failed</d:status>
       </d:response>
     </d:multistatus>

Es handelt sich hier um eine Response mit dem Statuscode 207 (Multi-Status). Dies bedeutet, dass das Entity ein XML multistatus Element enthält, welches eine Menge von XML Response Elementen mit den Serienstatuscodes 200, 300, 400, 500 beinhalten kann.

Im Beispiel wurden die meisten Ressourcen erfolgreich kopiert, bis auf die Collection R2. Hier gab es ein Problem (Fehlermeldung: 412 Precondition Failed) , so dass auch keine Mitglieder dieser Collection kopiert werden konnten.

MOVE

Die Anwendung der MOVE Methode bezüglich einer Collection in Verbindung mit dem Depth Header mit dem Wert "infinity" bedeutet, dass die Collection Ressource inklusive aller internen Mitglieder (identifiziert durch die Request-URI) an den Ort, der im Destination Header durch die angegebene URI spezifiziert wird, verschoben werden soll.

Nach der Anwendung der MOVE Methode, muss diese sowohl an der Quelle als auch am Bestimmungsort ein konsistentes Namespace geschaffen haben.

Beispiel
>>Request

MOVE /container/ HTTP/1.1 Host: www.foo.bar Destination: http://www.foo.bar/othercontainer/ Overwrite: F If: (<opaquelocktoken:fe184f2e-6eec-41d0-c765-01adc56e6bb4>) (<opaquelocktoken:e454f3f3-acdc-452a-56c7-00a5c91e4b77>) Content-Type: text/xml; charset="utf-8" Content-Length: xxxx

     <?xml version="1.0" encoding="utf-8" ?>
     <d:propertybehavior xmlns:d='DAV:'> 
        <d:keepalive>*</d:keepalive> 
     </d:propertybehavior> 
>>Response

HTTP/1.1 207 Multi-Status Content-Type: text/xml; charset="utf-8" Content-Length: xxxx

     <?xml version="1.0" encoding="utf-8" ?>
      <d:multistatus xmlns:d='DAV:'>
        <d:response>
           <d:href>http://www.foo.bar/othercontainer/C2/</d:href>
           <d:status>HTTP/1.1 423 Locked</d:status>
        </d:response>
      </d:multistatus>

Dieses Beispiel ähnelt sehr dem von der COPY Methode mit dem Unterschied, dass hier der Client mit der Request eine Anzahl von Locktokens (Schlossmarken) eingereicht hat. Dies wird in dem If Header realisiert. Es müssen für jede Ressource, sowohl für die Quelle als auch für den Bestimmungsort Locktokens eingereicht werden.

Im Beispiel wurde für den Bestimmungsort http://www.foo.bar/othercontainer/C2/ ein falscher Locktoken (Fehlermeldung: 423 Locked) eingereicht, was bedeutet, dass die Ressource /container/C2/ nicht verschoben werden konnte.

WebDAV- Überschreibschutz

Der Locking- Mechanismus ist für die Gewährleistung der Datenkonsistenz erforderlich. Clients werden damit daran gehindert, simultan auf die gleiche Ressource zuzugreifen. Mit Hilfe von Locks (write locks) wird also sichergestellt, dass kein Client eine sich bereits in Bearbeitung befindende Ressource abändern wird. Mit dieser Maßnahme kann das sogenannte "Lost Update" Problem verhindert werden.

Locks können sowohl auf einzelne Ressourcen, als auch auf ganze Collections gesetzt werden.

Man unterscheidet dabei shared und exclusive Locks:

Shared locking

Mehrere Benutzer können die Ressource bearbeiten. Wurde von einem Benutzer ein Lock gesetzt, so wird ein anderer Benutzer, der die gleiche Ressource ebenfalls bearbeiten möchte, gewarnt und darüber informiert, wer gerade an der Bearbeitung beteiligt ist. Der gewarnte Benutzer kann dann entscheiden, ob er diese Ressource trotzdem bearbeiten möchte.

Exclusive locking

Hierbei kann nur ein Benutzer die Ressource bearbeiten. Wurde ein Dokument also gesperrt, so kann kein anderer Benutzer dieses verändern.

Der Locking- Mechanismus betrifft bei WebDAV nur den Schreibzugriff. Der Lesezugriff auf eine Ressource ist immer möglich. Es besteht jeder Zeit die Möglichkeit, Informationen über den Eigentümer des jeweiligen Locks zu bekommen (lock discovery).

Bei dem Locking-Konzept spielen Locktoken eine wesentliche Rolle. Ein Locktoken wird bei jeder erfolgreichen LOCK Operation zurückgeliefert. Diese werden als URI‘s dargestellt, die ein spezielles Lock identifizieren. Sie müssen über alle Ressourcen und jeder Zeit eindeutig sein (opaquelocktoken URI Schema).

Methoden des Locking-Mechanismus

LOCK

Der Aufruf dieser Methode erzeugt ein Lock auf die durch die Request-URI angegebene Ressource. Das lockinfo XML Element spezifiziert dabei den Lock. Eine Lock- Method- Request sollte außerdem ein XML Request Body beinhalten, welches ein owner XML Element für diese Lock Request enthält. Zudem sollte ein Timeout Header vorhanden sein. Der Response muss den Wert der lockdiscovery property im prop XML Element enthalten.

Beispiel

>>Request

LOCK /workspace/WebDAV/proposal.doc HTTP/1.1 Host: WebDAV.sb.aol.com Timeout: Infinite, Second-4100000000 Content-Type: text/xml; charset="utf-8" Content-Length: xxxx Authorization: Digest username="ejw", realm="ejw@WebDAV.sb.aol.com", nonce="...", uri="/workspace/WebDAV/proposal.doc", response="...", opaque="..."

  <?xml version="1.0" encoding="utf-8" ?>
  <D:lockinfo xmlns:D='DAV:'>
    <D:lockscope><D:exclusive/></D:lockscope>
    <D:locktype><D:write/></D:locktype>
    <D:owner>
         <D:href>http://www.ics.uci.edu/~ejw/contact.html</D:HREF>
    </D:owner>
  </D:lockinfo>
>>Response

HTTP/1.1 200 OK Content-Type: text/xml; charset="utf-8" Content-Length: xxxx

  <?xml version="1.0" encoding="utf-8" ?>
  <D:prop xmlns:D="DAV:">
    <D:lockdiscovery>
         <D:activelock>
              <D:locktype><D:write/></D:locktype>
              <D:lockscope><D:exclusive/></D:lockscope>
              <D:depth>Infinity</D:depth>
                     <D:owner>
                      <D:href>
                        http://www.ics.uci.edu/~ejw/contact.html
                      </D:href>
               </D:owner>
              <D:timeout>Second-604800</D:timeout>
              <D:locktoken>
                   <D:href>
                      opaquelocktoken:e71d4fae-5dec-22d6-fea5-00a0c91e6be4
                   </D:href>
              </D:locktoken>
         </D:activelock>
    </D:lockdiscovery>
  </D:prop>

Das Beispiel zeigt eine erfolgreiche Erzeugung eines exclusive write Locks bezüglich der Ressource http://WebDAV.sb.aol.com/workspace/WebDAV/proposal.doc. Die Ressource http://www.ics.uci.edu/~ejw/contact.html enthält Kontaktinformationen des lock Besitzers (owner).

Das prop XML Element ist ein Container für die bezüglich einer Ressource definierten properties. Lockdiscovery ist eine Propertie, die den Lockbesitzer, Locktyp, Timeouttyp und den Lock enthält.

Der Response enthält ein Timeout von 604800, was bedeutet, dass der Lock automatisch nach 1 Woche wieder gelöscht wird.

UNLOCK

Die UNLOCK Methode entfernt ein Lock von der durch die Request- URI bezeichneten Ressource (inklusive aller noch durch das Lock gesperrten Ressourcen). Dieses Lock wird durch ein Lock Token des Request Headers identifiziert.

Kann eine der durch das Lock gesperrten Ressourcen nicht wieder freigegeben werden, so muss das UNLOCK Request versagen.

Beispiel

>>Request

UNLOCK /workspace/WebDAV/info.doc HTTP/1.1 Host: WebDAV.sb.aol.com Lock-Token: <opaquelocktoken:a515cfa4-5da4-22e1-f5b5-00a0451e6bf7> Authorization: Digest username="ejw", realm="ejw@WebDAV.sb.aol.com", nonce="...", uri="/workspace/WebDAV/proposal.doc", response="...", opaque="..."

>>Response

HTTP/1.1 204 No Content

In diesem Beispiel wird der durch den Lock Token "opaquelocktoken:a515cfa4-5da4-22e1-f5b5-00a0451e6bf7" identifiziertes Lock von der Ressource http://WebDAV.sb.aol.com/workspace/WebDAV/info.doc erfolgreich entfernt.

WebDAV- Metadaten

Im Folgenden wird das Konzept der Properties bzw. Metadaten (Informationen über Informationen) bei WebDAV erläutert:

Properties beschreiben den Zustand einer Ressource, wie z.B. die Länge eines Dokuments oder den Autor. Sie spielen eine grosse Rolle bei der "Discovery" oder beim Ressourcen Management. So kann z.B. später festgestellt werden, welcher Autor welches Dokument verfaßt hat.

Das WebDAV property Modell besteht aus name/value Paaren. Bei den Namen handelt es sich um Strings und bei den Werten um XML Ausdrücke.

Die Benutzung von XML hat den Vorteil, dass abhängig von der Applikation die Properties zwischen einfachen und komplexen Ausdrücken variieren können.

Da XML den Unicode unterstützt, können Properties in den meisten Sprachen ausgedrückt werden.

WebDAV legt keine Restriktionen bezüglich des Formats der Properties fest. Es können etwaige XML- basierende Standards benutzt werden. Einige besser bekannte Standards für Metadaten sind: Dublin Core, PICS usw.

Es existieren zwei Kategorien von Properties: "live" und "dead". Diese unterscheiden sich in ihrem Verhalten beim Kopieren oder Verschieben von Ressourcen.

Die beiden bezüglich Properties wichtigen Methoden sind:

PROPFIND

Liest die Properties der durch die Request- URI spezifizierten Ressource. Der Client spezifiziert im Body des Requests durch das propfind XML Element die Informationen, nach denen er sucht. Es ist möglich nach einem speziellen Wert, allen property Werten oder Liste von Namen der Properties einer Ressource zu fragen. Der Client hat auch die Möglichkeit keinen Body einzubinden. Im diesem Falle wird der Request als eine Frage nach Namen und Werten aller Properties behandelt.

Beispiel

>>Request

PROPFIND /file HTTP/1.1 Host: www.foo.bar Content-type: text/xml; charset="utf-8" Content-Length: xxxx

  <?xml version="1.0" encoding="utf-8" ?>
  <D:propfind xmlns:D="DAV:">
    <D:prop xmlns:R="http://www.foo.bar/boxschema/">
         <R:bigbox/>
         <R:author/>
         <R:DingALing/>
         <R:Random/>
    </D:prop>
  </D:propfind>
>>Response

HTTP/1.1 207 Multi-Status Content-Type: text/xml; charset="utf-8" Content-Length: xxxx

  <?xml version="1.0" encoding="utf-8" ?>
  <D:multistatus xmlns:D="DAV:">
    <D:response>
         <D:href>http://www.foo.bar/file</D:HREF>
         <D:propstat>
              <D:prop xmlns:R="http://www.foo.bar/boxschema/">
                   <R:bigbox>
                        <R:BoxType>Box type A</R:BoxType>
                   </R:bigbox>
                   <R:author>
                        <R:Name>J.J. Johnson</R:Name>
                   </R:author>
              </D:prop>
              <D:status>HTTP/1.1 200 OK</D:status>
         </D:propstat>
         <D:propstat>
              <D:prop><R:DingALing/><R:Random/></D:prop>
                      <D:status>HTTP/1.1 403 Forbidden</D:status>                  
           <D:responsedescription> The user does not have access to
                                         the DingALing property.
           </D:responsedescription>
         </D:propstat>
    </D:response>
    <D:responsedescription> There has been an access violation error.
    </D:responsedescription>
  </D:multistatus>

Im Beispiel wird die PROPFIND Methode auf die Ressource http://www.foo.bar/file (die keine Collection ist) angewendet. Der propfind XML Element spezifiziert die Namen von vier Properties, nach deren Werten gefragt wird.

Der Response liefert nur zwei der vier gefragten Properties, da der Benutzer nicht genügend Zugriffsrechte bezüglich der DingALing und Random Property besitzt.

PROPPATCH

Schreibt und entfernt die Properties der durch die Request- URI spezifizierten Ressource.Der Request Message Body muss den propertyupdate XML Element enthalten. Dieses Element ist ein Container, welcher die zur Veränderung der Properties notwendigen Information enthält.

Beispiel

>>Request

PROPPATCH /bar.html HTTP/1.1 Host: www.foo.com Content-Type: text/xml; charset="utf-8" Content-Length: xxxx

  <?xml version="1.0" encoding="utf-8" ?>
  <D:propertyupdate xmlns:D="DAV:"
  xmlns:Z="http://www.w3.com/standards/z39.50/">
    <D:set>
         <D:prop>
              <Z:authors>
                   <Z:Author>Jim Whitehead</Z:Author>
                   <Z:Author>Roy Fielding</Z:Author>
              </Z:authors>
         </D:prop>
    </D:set>
    <D:remove>
         <D:prop><Z:Copyright-Owner/></D:prop>
    </D:remove>
  </D:propertyupdate>
>>Response

HTTP/1.1 207 Multi-Status Content-Type: text/xml; charset="utf-8" Content-Length: xxxx

  <?xml version="1.0" encoding="utf-8" ?>
  <D:multistatus xmlns:D="DAV:"
  xmlns:Z="http://www.w3.com/standards/z39.50">
    <D:response>
         <D:href>http://www.foo.com/bar.html</D:HREF>
         <D:propstat>
              <D:prop><Z:Authors/></D:prop>
              <D:status>HTTP/1.1 424 Failed Dependency</D:status>
         </D:propstat>
         <D:propstat>
              <D:prop><Z:Copyright-Owner/></D:prop>
              <D:status>HTTP/1.1 409 Conflict</D:status>
         </D:propstat>
         <D:responsedescription> Copyright Owner can not be deleted or
  altered.</D:responsedescription>
    </D:response>
  </D:multistatus>

In diesem Beispiel veranlasst der Client den Server, den Wert der http://www.w3.com/standards/z39.50/Authors Property zu setzten und die http://www.w3.com/standards/z39.50/Copyright- Owner Property zu entfernen.

Das set XML Element beinhaltet dabei die Werte, die gesetzt werden sollen, remove die Property, die entfernt werden soll. Solange die Copyright-Owner property nicht entfernt werden kann, werden keine Abänderungen an den Properties durchgeführt. Der 424 (Failed Dependency) Status Code bedeutet, dass die Aktion bezüglich der Autoren geglückt wäre, wenn es kein Konflikt mit dem Entfernen der Copyright-Owner property gegeben hätte.

Vordefinierte Properties

  • creationdate
  • displayname
  • getcontentlanguage
  • getcontentlength
  • getetag
  • getlastmodified
  • lockdiscovery
  • resourcetype
  • source
  • supportedlock

Weiter Informationen

RFCs

    • RFC 2291 – Requirements for a Distributed Authoring and Versioning Protocol for the World Wide Web
    • RFC 2518 – HTTP Extensions for Distributed Authoring – WebDAV
    • RFC 3253 – Versioning Extensions to WebDAV
    • RFC 3648 – Web Distributed Authoring and Versioning (WebDAV) Ordered Collections Protocol
    • RFC 3744 – Web Distributed Authoring and Versioning (WebDAV) Access Control Protocol
    • RFC 4316 – Datatypes for Web Distributed Authoring and Versioning (WebDAV) Properties
    • RFC 4331 – Quota and Size Properties for Distributed Authoring and Versioning (DAV) Collections
    • RFC 4437 – Web Distributed Authoring and Versioning (WebDAV) Redirect Reference Resources
    • RFC 4918 – HTTP Extensions for Web Distributed Authoring and Versioning (WebDAV)
    • RFC 5323 – Web Distributed Authoring and Versioning (WebDAV) SEARCH
    • RFC 6578 – Collection Synchronization for Web Distributed Authoring and Versioning (WebDAV)


Weblinks


Software Links


WebDAV-Anbieter

Es gibt eine Reihe von Anbietern, die Zugang zu Webspace zum Teil sogar kostenlos anbieten. Hier sollen Anbieter und die Zugangsdaten gesammelt werden.


Anbieter
Anbietername Dienste-Typ Server Ordner Benutzername
GMX Mediacenter Sicheres WebDAV (HTTPS) https://WebDAV.mc.gmx.net leer lassen Kundennummer bzw. gmx-E-Mail-Adresse
WEB.DE Smartdrive Sicheres WebDAV (HTTPS) https://WebDAV.smartdrive.web.de leer lassen web.de-Benutzername
ownCloud Sicheres WebDAV (HTTPS) https://ownCloud-SERVER-URL/remote.php/WebDAV/ / owncloud Benutzername
T-Online Sicheres WebDAV (HTTPS) https://WebDAV.mediencenter.t-online.de / T-Online-E-Mail-Adresse
1&1 SmartDrive (DSL Kunden) Sicheres WebDAV (HTTPS) https://sd2dav.1und1.de / E-Mail-Adresse
1&1 SmartDrive (Webhosting Kunden) Sicheres WebDAV (HTTPS) https://WebDAV.office.1und1.de/ / E-Mail-Adresse
Domainfactory Sicheres WebDAV (HTTPS) FTPUSERNAME.livedisk.df.eu/WebDAV/ / FTPUSERNAME@web.dav
freenet Sicheres WebDAV (HTTPS) https://storage.freenet.de/dav / freenet-Nutzerdaten
myDisk.se Sicheres WebDAV (HTTPS) https://mydisk.se/Benutzername / freie Eingabe
Humyo.com (nicht empfehlenswert, buggy!) Sicheres WebDAV (HTTPS) https://dav.humyo.com / E-Mail-Adresse
mydrive.ch Sicheres WebDAV (HTTPS) https://WebDAV.mydrive.ch / Benutzername
Strato Hidrive Sicheres WebDAV (HTTPS) https://WebDAV.hidrive.strato.com/ (s. Anleitung) Benutzername
UD Media Sicheres WebDAV (HTTPS) https://<user>.WebDAV.<server>/ / Benutzername


Hinweis

Nutzer der 1&1-Webpakete: Hier muss hinter der URL immer noch der Port 81 angegeben werden, also z.B.

# WebDAV bei 1&1 http://meinWebDAV.domain.de:81 /home/user/mnt/1und1 davfs user,noauto 0 0

WebDAV - Einrichtung unter Windows 7#

Öffnen Sie den Windows-Explorer und klicken Sie mit rechter Maustaste auf Computer. Wählen Sie Netzlaufwerk verbinden.

  1. Es öffnet sich eine Eingabeaufforderung. Wählen Sie einen freien Laufwerksbuchstaben und tragen Sie hier bitte den Pfad zum WebDAV-Server ein.
  2. Tragen Sie bitte https:// als Präfix ein.
  3. Serverpfad
  4. https://WebDAV.h2t.eu (SSL-verschlüsselter Verbindungsaufbau)


#

Datei:Grafik3.png

Sie werden aufgefordert Kontonamen sowie das von Ihnen vergebene Passwort einzutragen.

  1. Die Freigabe Konto ist unter dem gewählten Laufwerksbuchstaben im Windows-Explorer eingebunden und kann wie eine gewöhnliche Festplatte genutzt werden.
  2. Datei:Grafik4.png
  1. Langsamen Verbindungsaufbau beheben
  2. Datei:Grafik6.png

Sofern die Zugriffe auf Ordner nur sehr langsam möglich sind, kann dies an den voreingestellten Netzwerkeinstellungen von Windows liegen.

  1. Rufen Sie die Systemsteuerung von Windows auf. Klicken Sie bei den Internetoptionen auf Verbindungen und LAN-Einstellungen. Deaktivieren Sie die Option Automatische Suche der Einstellungen.