WebDAV - расширение протокола HTTP предназначенное для редактирования и управления файлами, размещенными на веб-серверах. К его достоинствам относится работа по стандартным протоколам, что дает возможность работать практически из любого места, где есть доступ в интернет. В настоящее время WebDAV часто используется в качестве сетевой файловой системы предоставляя доступ к удаленным файлам стандартными средствами ОС как будто бы они являлись локальными. В данной статье мы рассмотрим настройку WebDAV на базе популярного веб-сервера Apache.
Онлайн-курс по устройству компьютерных сетей
На углубленном курсе "Архитектура современных компьютерных сетей" вы с нуля научитесь работать с Wireshark и «под микроскопом» изучите работу сетевых протоколов. На протяжении курса надо будет выполнить более пятидесяти лабораторных работ в Wireshark.
Прежде всего обозначим некоторые особенности и ограничения. В современных условиях мы не видим смысла использовать WebDAV поверх небезопасного протокола HTTP, разве что в пределах периметра локальной сети. Также не следует использовать Basic-аутентификацию, которая предает пароль по сети в открытом виде, особенно в связке с HTTP, тем более что современные Windows-системы не поддерживают такое сочетание.
Для нормальной работы нам понадобится веб-сервер на базе Apache с настроенным SSL и валидным сертификатом, как настроить такой сервер мы рассказывали в статье: Настраиваем Apache для работы по HTTPS (SSL) с сертификатами Let's Encrypt. В дальнейшем мы будем опираться на приведенную там конфигурацию.
Прежде всего определимся с местом хранения, так как WebDAV является расширением веб-сервера, то и данные логично разместить в /var/www, создадим там директорию webdav и назначим ее владельцем веб-сервер:
mkdir /var/www/webdav
chown www-data:www-data /var/www/webdav
Затем откроем файл конфигурации виртуального хоста, который будет обслуживать WebDAV, в нашем случае это /etc/apache2/sites-available/example.com-ssl.conf и добавим в самый его конец, перед закрывающим тегом </VirtualHost> следующие строки:
Alias /webdav /var/www/webdav
<Directory /var/www/webdav>
DAV On
AuthType Digest
AuthName "dav"
AuthUserFile /etc/davpasswd
Require valid-user
</Directory>
Директива Alias позволяет связать запросы к ресурсу https://example.com/webdav с папкой /var/www/webdav несмотря на то, что она находится вне корневой директории сайта. Секция Directory задает настройки, применяемые к данной директории.
- DAV On - включает WebDAV
- AuthType Digest - задает тип аутентификации. Digest-аутентификация не использует пароли в открытом виде, храня и передавая MD5-хеш.
- AuthName "dav" - имя области аутентификации, можно выбрать на собственное усмотрение
- AuthUserFile /etc/davpasswd - файл с паролями пользователей
- Require valid-user - разрешать доступ только прошедшим аутентификацию пользователям.
Теперь заведем пользователей WebDAV ресурса. Для этого используем утилиту htdigest, первого пользователя заводим командой:
htdigest -c /etc/davpasswd dav ivan
Ключ -с указывает на необходимость создать файл паролей, если файл существует, то он будет удален и создан заново. После имени файла паролей указывается область аутентификации, в нашем случае - dav, и имя пользователя. После чего ему будет необходимо задать пароль. Второго и следующего пользователя создаем командой:
htdigest /etc/davpasswd dav maria
Файл паролей имеет следующую структуру:
ivan:dav:4cd22d3cb72753862alc7310533eb371
maria:dav:a96fIa2e753cd337d63408324720bb7f
Первой частью строки идет имя, затем область аутентификации и затем MD5-хеш пароля. Для удаления пользователя просто удалите относящуюся к нему строку.
После чего подключим необходимые модули Apache:
a2enmod dav
a2enmod dav_fs
a2enmod auth_digest
Проверим конфигурацию на ошибки и перезапустим сервер:
apachectl -t
service apache2 restart
Для проверки наберите в любом браузере https://example.com/webdav и вы должны увидеть форму аутентификации, после которой вы увидите листинг директории.
Для подключения WebDAV ресурса в файловую систему Windows просто выполните подключение сетевого диска с адресом сервера, не забудьте установить флаги Восстанавливать подключение при входе в систему и Использовать другие учетные данные.
В Linux настраиваем подключение к серверу, при необходимости протокол указываем как davs (либо dav при доступе через http), например? так выглядит подключение в Gnome 3:
Теперь об особенностях эксплуатации. Внутри WebDAV ресурса нет возможности разграничивать права доступа для разных пользователей, так как в реальности владельцем всех файлов является веб-сервер. Но можно создать несколько WebDAV ресурсов со своим набором пользователей каждый (используем разные имена области аутентификации).
Еще более серьезной проблемой является блокировка открытых файлов, что может приводить к потере данных при совместном редактировании. Несмотря на то, что WebDAV поддерживает блокировки открытых файлов, не все клиенты корректно с ними работают, например, Nautilus Gnome3 корректно обрабатывает такие ситуации, выдавая предупреждение:
А Проводник Windows позволяет перезаписывать файлы без предупреждения. Поэтому используйте WebDAV для совместной работы с большой осторожностью, убедившись, что ваш клиент или приложение корректно работают с блокировками.
Также учтите, что несмотря на то, что все файлы хранятся удаленно, файловый менеджер воспринимает их как локальные, а следовательно листинг папок, содержащих большое количество файлов может оказаться замедленным, особенно если они содержат мультимедийное содержимое, для которого система будет создавать эскизы, поэтому для WebDAV ресурсов лучше использовать представление в виде списка или таблицы, но не значков и, тем более, эскизов.
Как видим, настройка WebDAV на базе веб-сервера Apache очень проста и не занимает много времени.
Онлайн-курс по устройству компьютерных сетей
На углубленном курсе "Архитектура современных компьютерных сетей" вы с нуля научитесь работать с Wireshark и «под микроскопом» изучите работу сетевых протоколов. На протяжении курса надо будет выполнить более пятидесяти лабораторных работ в Wireshark.
Последние комментарии