Как настроить WebDAV на Apache в Ubuntu

WebDAV – это набор расширений протокола HTTP, который позволяет управлять файлами на удаленных серверах.

Существует много способов использовать WebDAV-сервер. Например, вы можете поделиться документами Word или Excel со своими коллегами, загрузив их на свой сервер WebDAV. Таким же образом можно поделиться музыкальной коллекцией с семьей и друзьями –достаточно просто предоставить им URL-адрес. При этом никому не нужно устанавливать дополнительное программное обеспечение, поскольку все уже встроено в операционную систему «из коробки».

В этом руководстве вы научитесь настраивать доступ WebDAV через веб-сервер Apache из систем Windows, Mac и Linux по SSL и с парольной аутентификацией.

Требования

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, кликнув на его значок в правой части рабочего стола.

Когда приложение откроется, сделайте следующее:

  1. Нажмите на кнопку + Other Locations.
  2. Введите 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 без установки дополнительных инструментов.

Tags: , , , , ,

Добавить комментарий