WebDAV stands for Web Distributed Authoring and Versionin, see RFC 2518.
WebDAV is an extension of HTTP 1.1 and therefore can be considered to be a procotol. It contains a set of concepts and accompanying extension methods to allow read and write across the HTTP 1.1 protocol. Instead of using NFS, or SMB, WebDAV offers file transfers via HTTP.
The goal of this how to is to setup a simple WebDAV configuration using Apache.
See also File Sharing with Webdav and DNSSD.
Install Apache as explained in the LAMP article.
Then you will need to confige WebDAV.
Edit /etc/httpd/conf/httpd.conf. Add the following line:
Make sure you add it outside of any other directives, at the \"top level\" of the config file heirarchy.
- note: I put it right under the DocumentRoot definition.
Next, add the following:
<Directory "/home/httpd/html/dav"> DAV On AllowOverride None Options Indexes FollowSymLinks Order allow,deny Allow from all </Directory>
- note: This should also be put in the top level hierarchy. I put it right before the "UserDir public_html" section, and after the most previous "</Directory>".
# mkdir -p /home/httpd/DAV # chown -R http:http /home/httpd/DAV # Otherwise you wouldn't be able to upload files # mkdir -p /home/httpd/html/dav # chown -R nobody.nobody /home/httpd/html/dav
is a command line WebDAV client.
# pacman -S cadaver
# cadaver http://localhost/dav dav:/dav/> mkcol test Creating `test': succeeded. dav:/dav/> ls Listing collection `/dav/': succeeded. Coll: test dav:/dav/> exit
If the above worked as shown, then you are good to go.
Make sure you add permissions for viewing and dav access to the directory, and maybe even make that directory ssl access only.
There are numerous different protocols you can use:
This is an example for using digest (make sure it is enabled in httpd.conf)
htdigest -c /etc/httpd/conf/passwd WebDAV foo
Please make sure that the path is identical to the one you entered in your httpd.conf. Also when using digest you have to enter the AuthName from httpd.conf. For plain authentication you would not need this.
To require user *foo* for everything:
<Directory "/home/httpd/html/dav"> DAV On AllowOverride None Options Indexes FollowSymLinks Order allow,deny AuthType Digest AuthName "WebDAV" AuthUserFile /etc/httpd/conf/passwd Require user foo Allow from all </Directory>
If you want to permit everybody to read, you could use this in your httpd.conf
<Directory "/home/httpd/html/dav"> DAV On AllowOverride None Options Indexes FollowSymLinks Order allow,deny AuthType Digest AuthName "WebDAV" AuthUserFile /etc/httpd/conf/passwd Allow from all <LimitExcept GET HEAD OPTIONS PROPFIND> require user foo </LimitExcept> </Directory>
Don't forget to restart apache after making changes!