Setup WebDAV in Apache2 on SuSE Linux to Support Windows (XP/Vista/7) Clients

Earlier today, a colleague told me that she doesn't like using my servers because I don't have FTP setup thus, she couldn't map my server as a drive. Well, I showed her. I stand firmly against using FTP as any type of web-related solution and thus, decided on WebDAV to address my colleague's demanding needs.

Initially, I set the virtual host up for Basic Authentication but was unable to get Windows 7 and Windows XP to map the drive. Windows complained that "The network path could not be found." I tried mapping the drive from both the command line and from Windows Explorer with no luck. Then I read that the**Windows webDAV client does not support Basic Authentication**. If this server were on my domain, I'd use Kerberos without a second thought, but it's an Internet web server so that is out of the question. Digest Authentication it is.

I went enable mod_dav, mod_dav_fs, and mod_auth_digest in YaST under Network Services >> HTTP Server >> Server Modules and I restarted the service. I then created the folder /var/davlock, gave it the proper permissions and added the following to httpd.conf

DAVLockDB /var/davlock/DAVlock

Then I added the new host, to my vhosts.conf file and restarted the service.

ServerAdmin nobody@localhost
DocumentRoot /www/wordpress/sample
ErrorLog /var/log/apache2/sample-error\_log
CustomLog /var/log/apache2/sample-access\_log combined
UseCanonicalName Off

		Options Indexes FollowSymLinks
		AllowOverride All
		Order allow,deny
		Allow from all
		DAV On

		#Auth in the house
		AuthType Digest
		AuthName "sample"
		AuthDigestAlgorithm MD5
		AuthDigestNcCheck Off
		AuthDigestNonceLifetime 0
		AuthDigestQop auth
		AuthDigestProvider file
		AuthUserFile /etc/apache2/.htdigest
		AuthGroupFile /dev/null
			require valid-user
		Order allow,deny
		Allow from all

Notice AuthUserFile /etc/apache2/.htdigest. That file was created using htdigest2 (or on most other systems, htdigest).

htdigest2 -c /etc/apache2/.htdigest sample acmeuser

The -c switch creates the file, "sample" correlates with the AuthName directive and acmeuser is the username of my demanding colleague. Also take note that the way I used LimitExcept allows all non-webDAV users to have anonymous access to the site, while any webDAV activity requires a username and password.

Next, I mapped a drive in Windows with the two methods I am familiar with. First, via the command line

W:\>net use * Enter the user name for '': acmeuser Enter the password for Drive X: is now connected to

And then via Windows Explorer (My Computer >> Map Network Drive [be sure to click "Connect Using Different Credentials"]). Both worked flawlessly. And of course, this is all better if you can do it over HTTPS, which I plan to setup when I have time. But for now, my servers are totally in style and ready for use by people who aren't fans of vi ;).