
WebDAV – это набор расширений протокола HTTP, который позволяет управлять файлами на удаленных серверах.
Существует много способов использовать WebDAV-сервер. Например, вы можете поделиться документами Word или Excel со своими коллегами, загрузив их на свой сервер WebDAV. Таким же образом можно поделиться музыкальной коллекцией с семьей и друзьями –достаточно просто предоставить им URL-адрес. При этом никому не нужно устанавливать дополнительное программное обеспечение, поскольку все уже встроено в операционную систему «из коробки».
В этом руководстве вы научитесь настраивать доступ WebDAV через веб-сервер Apache из систем Windows, Mac и Linux по SSL и с парольной аутентификацией.
Требования
- Сервер Ubuntu 18.04, настроенный по этому мануалу.
- Домен, привязанный к IP-адресу вашего сервера.
- Веб-сервер Apache. Чтобы связать домен с вашим веб-сервером, следуйте инструкциям Настройка виртуальных хостов Apache в Ubuntu 18.04.
- SSL-сертификат для вашего домена. Чтобы получить такой сертификат, обратитесь к руководству Создание сертификата Let’s Encrypt для Apache в Ubuntu 18.04.
WebDAV требует очень мало ресурсов, поэтому для запуска и работы WebDAV-сервера хватит виртуальной машины любого размера.
Войдите на свой сервер как пользователь sudo, чтобы начать работу.
1: Включение WebDAV-модулей Apache
Веб-сервер Apache предоставляет множество дополнительных функций в виде модулей. Их можно включать и отключать, чтобы добавлять и удалять те или иные функции Apache. Функциональность WebDAV обеспечивает модуль, который устанавливается вместе с Apache, но по умолчанию он не включен.
Вам нужно включить модули WebDAV с помощью утилиты a2enmod. Это сделают следующие две команды:
sudo a2enmod dav
sudo a2enmod dav_fs
Теперь перезапустите Apache, чтобы загрузить новые модули в работу:
sudo systemctl restart apache2.service
Итак, вы загрузили и запустили функции WebDAV. На следующем этапе мы настроим Apache для обслуживания файлов по WebDAV.
2: Настройка Apache
Сейчас мы создадим все необходимые конфигурации, чтобы внедрить WebDAV на сервер Apache.
Сначала создайте корневую папку WebDAV, /var/www/webdav, в ней будут храниться файлы, которыми вы хотите поделиться через WebDAV:
sudo mkdir /var/www/webdav
Затем сделайте пользователя Apache, www-data, владельцем папки WebDAV:
sudo chown www-data:www-data /var/www/webdav
После этого нам нужно создать место для хранения файла базы данных, который Apache использует для управления и блокировки файлов, доступных по WebDAV. Этот файл должен быть доступен для чтения и изменения только пользователю Apache (широкий доступ к нему может стать причиной утечки конфиденциальной информации).
Создайте новый каталог для хранения файла базы данных с помощью утилиты mkdir:
sudo mkdir -p /usr/local/apache/var/
Параметр -p позволяет утилите mkdir создать все родительские каталоги в указанном вами пути (если какого-то из них не существует).
Затем с помощью утилиты chown передайте права на новый каталог пользователю и группе Apache:
sudo chown www-data:www-data /usr/local/apache/var
Давайте отредактируем файл VirtualHost, который содержит конфигурацию Apache для вашего домена. Он находится в /etc/apache2/sites-enabled/, а его имя заканчивается на le-ssl.conf, если вы использовали Certbot для получения сертификата SSL.
Откройте файл VirtualHost в текстовом редакторе:
sudo nano /etc/apache2/sites-enabled/your_domain-le-ssl.conf
В первой строке поместите директиву DavLockDB:
DavLockDB /usr/local/apache/var/DavLock
. . .
Затем вставьте директивы Alias и Directory внутри тегов <VirtualHost> после всех остальных директив:
. . .
Alias /webdav /var/www/webdav
<Directory /var/www/webdav>
DAV On
</Directory>
Директива Alias связывает запросы к http://your.server/webdav с папкой /var/www/webdav.
Директива Directory включает в Apache поддержку WebDAV для папки /var/www/webdav. Узнать больше о mod_dav можно в документации Apache.
Окончательный файл VirtualHost включает директивы DavLockDB, Alias и Directory, это выглядит следующим образом:
DavLockDB /usr/local/apache/var/DavLock
<IfModule mod_ssl.c>
<VirtualHost *:443>
ServerAdmin admin@your_domain
ServerName your_domain
ServerAlias your_domain
DocumentRoot /var/www/your_domain/public_html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
SSLCertificateFile /etc/letsencrypt/live/your_domain/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/your_domain/privkey.pem
Include /etc/letsencrypt/options-ssl-apache.conf
Alias /webdav /var/www/webdav
<Directory /var/www/webdav>
DAV On
</Directory>
</VirtualHost>
</IfModule>
Если во время редактирования конфигурации Apache были допущены синтаксические ошибки, веб-сервер не запустится. Поэтому перед перезапуском Apache рекомендуется проверить ошибки в настройках. Для этого используйте утилиту apachectl:
sudo apachectl configtest
Утилита apachectl выведет Syntax OK, если ошибок в файле нет. Получив такое сообщение, вы можете спокойно перезапустить Apache, чтобы активировать новые конфигурации:
sudo systemctl restart apache2.service
Теперь сервер Apache поддерживает расширение WebDAV для обслуживания файлов, которые хранятся в /var/www/webdav. Однако пока мы не включили аутентификацию, читать и редактировать ваши файлы сможет любой пользователь, у кого есть доступ к вашему серверу. В следующем разделе мы включим аутентификацию для WebDAV.
3: Настройка аутентификации для WebDAV
Метод, который мы настроим в этом руководстве, называется дайджест-аутентификацией. Это более безопасный метод аутентификации для WebDAV, особенно в сочетании с HTTPS.
Дайджест-аутентификация работает с файлом, в котором хранятся имена и пароли доверенных пользователей – только они могут получить доступ к серверу WebDAV. Как и файл базы данных, такой файл должен храниться в месте, которое доступно веб-серверу Apache и которое не отображается на вашем сайте.
Поскольку для этой цели мы уже создали папку /usr/local/apache/var/, мы также поместим туда и этот файл.
Сначала создайте в этой папке пустой файл users.password:
sudo touch /usr/local/apache/var/users.password
Затем передайте права на файл группе www-data, чтобы Apache мог читать и изменять файл:
sudo chown www-data:www-data /usr/local/apache/var/users.password
Новые пользователи добавляются в WebDAV с помощью утилиты htdigest. Следующая команда добавит в файл нового доверенного пользователя:
sudo htdigest /usr/local/apache/var/users.password webdav 8host
В этой команде есть аргумент webdav – он задает область, ее следует воспринимать как группу, в которую вы и добавляете нового пользователя. Также этот пользователи видят, когда вводят свое имя и пароль, чтобы получить доступ к вашему серверу WebDAV. Вы можете выбрать любое другое имя области, если оно лучше описывает ваш каталог WebDAV.
При запуске команды htdigest будет предложено ввести пароль и подтвердить его:
Adding user 8host in realm webdav
New password:
Re-type new password:
Следующим нашим шагом будет включение обязательной аутентификации для доступа к WebDAV – тогда Apache будет требовать ее у всех пользователей и читать для этого файл users.password.
Откройте файл VirtualHost:
sudo nano /etc/apache2/sites-enabled/your_domain-le-ssl.conf
Вставьте следующие строки в блок Directory:
AuthType Digest
AuthName "webdav"
AuthUserFile /usr/local/apache/var/users.password
Require valid-user
Вот что делают эти строки:
- AuthType Digest включает метод дайджест-аутентификации.
- AuthName “webdav” позволяет доступ только пользователям области webdav.
- AuthUserFile /usr/local/apache/var/users.password проверяет учетные данные с помощью файла /usr/local/apache/var/users.password.
- Require valid-user открывает доступ любому пользователю, который включен в файл users.password и предоставил правильный пароль.
Теперь блок <Directory> выглядит так:
<Directory /var/www/webdav>
DAV On
AuthType Digest
AuthName "webdav"
AuthUserFile /usr/local/apache/var/users.password
Require valid-user
</Directory>
Включите модуль auth_digest, чтобы Apache мог использовать метод дайджест-аутентификации:
sudo a2enmod auth_digest
Наконец, перезапустите Apache, чтобы включить новые настройки:
sudo systemctl restart apache2.service
Итак, мы настроили сервер WebDAV для поддержки HTTPS и дайджест-аутентификации. Он уже готов начать раздачу файлов вашим пользователям. В следующем разделе мы протестируем доступ к серверу WebDAV в системах Windows, Linux и macOS.
4: Доступ к серверу WebDAV
Пора проверить доступ к серверу WebDAV с помощью браузеров в системах macOS, Windows и Linux (KDE и GNOME).
Прежде чем приступить, давайте загрузим в папку WebDAV какой-нибудь файл, который мы могли бы открыть во время проверки.
Откройте новый файл в текстовом редакторе:
sudo nano /var/www/webdav/webdav-testfile.txt
Добавьте в файл какой-нибудь текст, а затем сохраните и закройте его. Передайте права на файл пользователю и группе www-data:
sudo chown www-data:www-data /var/www/webdav/webdav-testfile.txt
Теперь мы можем попробовать получить доступ к серверу WebDAV.
Система Linux KDE
Сначала откройте менеджер файлов KDE Dolphin. Затем отредактируйте адресную строку, указав такой URL-адрес:
webdavs://your_domain/webdav
Когда вы нажмете ввод, вам будет предложено ввести имя пользователя и пароль.
Поставьте галочку в Remember password, если вы хотите, чтобы Dolphin сохранил ваш пароль. Затем нажмите Ок, чтобы продолжить. На экране вы увидите содержимое каталога /var/www/webdav/, которым вы можете управлять так, как если бы оно находилось в вашей локальной системе.
Добавьте сервер WebDAV в закладки, перетащив значок папки из адресной строки в раздел Remote в левой части панели навигации.
Система Linux GNOME
Сначала откройте приложение Files, кликнув на его значок в правой части рабочего стола.
Когда приложение откроется, сделайте следующее:
- Нажмите на кнопку + Other Locations.
- Введите URL-адрес вашего сервера WebDAV в следующей форме:
davs://your_domain/webdav
Затем нажмите Connect. На экране появится форма для аутентификации. В нее введите ваше имя и пароль.
Нажмите Connect, чтобы войти на сервер WebDAV. Поставьте галочку Remember forever, если вы не хотите каждый раз заново вводить пароль при доступе к этому серверу.
Теперь папка WebDAV будет доступна в приложении Files, где вы сможете управлять ее файлами.
Система macOS
Сначала откройте приложение Finder. Затем откройте меню Go и выберите Connect to server
Теперь вы увидите новое диалоговое окно, в котором можно указать URL-адрес сервера WebDAV. Этот URL должен иметь следующий вид:
https://your_domain/webdav
Нажмите кнопку Connect, чтобы продолжить. После этого вам будет предложено ввести имя пользователя и пароль.
Снова нажмите Connect, чтобы завершить процесс добавления сервера WebDAV в вашу систему.
Теперь сервер WebDAV можно найти в Finder в разделе Locations.
Система Windows
Сначала в меню Пуск откройте проводник (File Explorer). Когда приложение откроется, выберите This PC в левой панели навигации.
Затем нажмите Map network drive в верхней панели навигации.
Введите URL-адрес вашего сервера WebDAV в следующем формате:
https://your_domain/webdav
Нажмите Finish, чтобы подключиться к серверу WebDAV. Вам будет предложено ввести имя пользователя и пароль.
Введите учетные данные и нажмите ОК, чтобы войти на сервер. Поставьте галочку в Remember my credentials, если вы не хотите каждый раз вводить пароль при доступе к этому серверу.
Теперь WebDAV появится в разделе This PC в левой панели проводника.
Заключение
В этом руководстве вы настроили безопасный WebDAV-сервер, который позволяет делиться файлами с доверенными пользователями. Независимо от того, какая операционная система установлена у ваших пользователей, они смогут получать доступ и управлять файлами на вашем сервере WebDAV без установки дополнительных инструментов.