WebDAV Apache 2.0 и проблемы с ним связанные

Сегодня мы будем разбирать настройку WebDAV на FreeBSD 7.0 (работает так же на Linux, Windows  и прочих системах)

Строго говоря WebDAV работает на всех системах, где работает Веб Сервер Apache.

Для тех кто незнаком с WebDAV, расскажу чуть подробнее про это.

WebDAV – это Web-based Distributed Authoring and Versioning. Фактически WebDav – это расширение протокола HTTP, для работы с файлами на удаленном сервере по протоколу HTTP. Можно сказать, что WebDAV похож на FTP. Плюсом в использовании этого протокола: доступность откуда угодно при наличии веб доступа, возможность работы с использованием ssl шифрования, простота реализации, кросс-платформенность.

На данный момент возможность использования WebDAV включена в базовую функциональность практически всех ОС, в частности Windows, MacOS, iOS, Linux, FreeBSD.

И так, для того чтобы нам начать использовать WebDAV, Нам необходимо иметь рабочий сервер с установленным на нем Apache. Я использую 2-ю ветку апача, соответственно конфиги привожу для него. Для ветки 1.3 будут небольшие изменения, можно найти в сети.

Для начала в конфиге httpd.conf необходимо убедится что подключены следующие модули:
LoadModule dav_module libexec/apache22/mod_dav.so
LoadModule dav_fs_module libexec/apache22/mod_dav_fs.so

Далее копируем файл httpd-dav.conf из ./extra в ./includes и  редактируем его до примерно такого состояния:

DavLockDB «/usr/local/var/DavLock»
<Directory «/www/dav»>
Dav On
#Если включен модуль RewriteEngine, то необходимо его отключить для этой папки, иначе создание новых файлов в директории будет невозможно.
RewriteEngine off
Order Allow,Deny
Allow from all
AuthType Digest
AuthName DAV
AuthUserFile «/usr/local/var/user.passwd»
<LimitExcept GET POST PUT DELETE CONNECT OPTIONS PATCH PROPFIND MKCOL MOVE PROPPATCH COPY LOCK UNLOCK>
require user admin
</LimitExcept>
</Directory>
BrowserMatch «Microsoft Data Access Internet Publishing Provider» redirect-carefully
BrowserMatch «MS FrontPage» redirect-carefully
BrowserMatch «^WebDrive» redirect-carefully
BrowserMatch «^WebDAVFS/1.[0123]» redirect-carefully
BrowserMatch «^gnome-vfs/1.0» redirect-carefully
BrowserMatch «^XML Spy» redirect-carefully
BrowserMatch «^Dreamweaver-WebDAV-SCM1» redirect-carefully

После редактирования конфига, необходимо создать папку /usr/local/var/ и дать разрешение чтение-запись на нее пользователю под которым работает Апач (www:www)

Ну и конечно /www/dav тоже должна быть доступна для чтения-записи пользователю Апач.

Дальше надо создать пользователей, которым будет разрешен доступ, делается это путем исполнения команды:
htdigest -c «/usr/local/var/user.passwd» DAV admin

добавление пользователей с помощью команды:
htdigest  «/usr/local/var/user.passwd» DAV имя пользователя

Не забудьте прописать дополнительные имена  в строке «require user» конфига httpd-dav.conf

Все, перезапускаем апач, все работает!

Теперь важно! Все что я описал выше, написано во многих местах, но вот то что надо вырубать RewriteEngine – Это я нашел только на одном западном форуме. Это была большая засада, когда при использовании ВебДав, файлы можно редактировать и удалять, но невозможно создать. В логах пишет примерно следующее:

Unable to PUT new contents for /dav/Privet.doc.  [403, #0]

No such file or directory: An error occurred while opening a resource.

Вот такие дела.