Как настроить доступ WebDAV с помощью Apache в Ubuntu 14.04
Введение
WebDAV — это расширение протокола HTTP, позволяющее пользователям управлять файлами на серверах. Существует множество способов использования сервера WebDAV. Например, вы можете поделиться документами Word или Excel со своими коллегами, загрузив их на свой сервер WebDAV. Вы даже можете поделиться своей музыкальной коллекцией с семьей и друзьями, просто указав им URL-адрес. Всего этого можно добиться, не устанавливая ничего.
Есть много способов управлять файлами на удаленном сервере. WebDAV имеет ряд преимуществ по сравнению с другими решениями, такими как Samba. В этой статье мы рассмотрим, как настроить сервер Apache, чтобы разрешить собственный доступ WebDAV из Windows, Mac и Linux с аутентификацией.
Почему WebDAV?
WebDAV предлагает несколько преимуществ:
- Встроенная интеграция со всеми основными операционными системами (Windows, Mac, Linux); нет необходимости устанавливать стороннее программное обеспечение для использования WebDAV.
- Поддержка частичного переноса.
- Больше вариантов аутентификации. Использование HTTP означает, что LDAP и т. д. возможны.
В зависимости от вашей ситуации, WebDAV может быть лучшим решением для ваших нужд.
Почему Апач?
Существует множество веб-серверов, поддерживающих WebDAV в Linux. Тем не менее, Apache имеет наиболее совместимую реализацию протокола WebDAV. На момент написания WebDAV на Lighttpd работает, но только частично.
Предпосылки
Вам понадобится сервер Ubuntu 14.04.
Прежде чем мы начнем, давайте сначала создадим пользователя с доступом sudo. Вы можете запускать команды от имени root, но это не рекомендуется из соображений безопасности. Если вы хотите узнать больше, есть отличная статья о добавлении пользователей в Ubuntu 14.04.
Создание пользователя
При первом создании экземпляра Digital Ocean вам будут предоставлены учетные данные, которые позволят вам войти в систему как root. В качестве root давайте сначала добавим пользователя с именем alex.
adduser alex
Вам будет предложено создать пароль для пользователя alex, как показано ниже. Дальше будут запросы на информацию о пользователе alex. Вы можете войти в них, если хотите.
Adding user `alex' ...
Adding new group `alex' (1000) ...
Adding new user `alex' (1000) with group `alex' ...
Creating home directory `/home/alex' ...
Copying files from `/etc/skel' ...
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
Changing the user information for alex
Enter the new value, or press ENTER for the default
Full Name []:
Room Number []:
Work Phone []:
Home Phone []:
Other []:
Is the information correct? [Y/n] y
Предоставление привилегий sudo пользователю
После создания нового пользователя следующим шагом будет предоставление пользователю alex привилегий sudo. Предполагая, что вы все еще вошли в систему как root, добавьте пользователя alex в группу sudo, введя следующую команду.
usermod -aG sudo alex
Пользователям в группе sudo предоставляются привилегии sudo. Теперь вы можете выйти и войти в систему как пользователь alex.
Шаг первый — установка Apache
Давайте установим Apache.
sudo apt-get update
sudo apt-get install apache2
Веб-сервер Apache должен быть установлен и запущен.
Шаг второй — настройка WebDAV
Чтобы настроить WebDAV, нужно выполнить три шага. Назначаем локацию, включаем нужные модули и настраиваем.
Подготовка каталога
Нам нужно указать папку для обслуживания WebDAV. Для этого мы создадим новый каталог /var/www/webdav
. Вам также потребуется изменить владельца на www-data
(ваш пользователь Apache), чтобы разрешить Apache писать в него.
sudo mkdir /var/www/webdav
sudo chown -R www-data:www-data /var/www/
Включение модулей
Затем мы включаем модули WebDAV с помощью a2enmod.
sudo a2enmod dav
sudo a2enmod dav_fs
Модули Apache находятся в папке /etc/apache2/mods-available
. Это создает символическую ссылку из /etc/apache2/mods-available
в /etc/apache2/mods-enabled
.
Конфигурация
Откройте или создайте файл конфигурации в /etc/apache2/sites-available/000-default.conf
с помощью вашего любимого текстового редактора.
nano /etc/apache2/sites-available/000-default.conf
В первой строке добавьте конфигурацию директивы DavLockDB:
DavLockDB /var/www/DavLock
И директивы Alias и Directory внутри раздела VirtualHost:
Alias /webdav /var/www/webdav
<Directory /var/www/webdav>
DAV On
</Directory>
Файл должен выглядеть так после редактирования.
DavLockDB /var/www/DavLock
<VirtualHost *:80>
# The ServerName directive sets the request scheme, hostname and port that
# the server uses to identify itself. This is used when creating
# redirection URLs. In the context of virtual hosts, the ServerName
# specifies what hostname must appear in the request's Host: header to
# match this virtual host. For the default virtual host (this file) this
# value is not decisive as it is used as a last resort host regardless.
# However, you must set it for any further virtual host explicitly.
#ServerName www.example.com
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
# Available loglevels: trace8, ..., trace1, debug, info, notice, warn,
# error, crit, alert, emerg.
# It is also possible to configure the loglevel for particular
# modules, e.g.
#LogLevel info ssl:warn
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
# For most configuration files from conf-available/, which are
# enabled or disabled at a global level, it is possible to
# include a line for only one particular virtual host. For example the
# following line enables the CGI configuration for this host only
# after it has been globally disabled with "a2disconf".
#Include conf-available/serve-cgi-bin.conf
Alias /webdav /var/www/webdav
<Directory /var/www/webdav>
DAV On
</Directory>
</VirtualHost>
# vim: syntax=apache ts=4 sw=4 sts=4 sr noet
Директива DavLockDB определяет имя базы данных DAV Lock. Это должен быть путь к файлу. Файл создавать не нужно. Каталог должен быть доступен для записи сервером Apache.
Директива Alias сопоставляет запросы к http://your.server/webdav
с папкой /var/www/webdav
.
mod_dav из документации Apache.
Если вы перезапустите сервер Apache, у вас будет работающий сервер WebDAV без аутентификации.
Перезапустите сервер Apache следующим образом:
sudo service apache2 restart
Тестирование
WebDAV без аутентификации разрешает пользователям доступ только для чтения. Для тестирования создадим образец файла.
echo "this is a sample text file" | sudo tee -a /var/www/webdav/sample.txt
Текстовый файл с именем sample.txt должен быть создан в /var/www/webdav. Он должен содержать текст это образец текстового файла.
Теперь мы можем попробовать войти с внешнего компьютера. Сервер WebDAV должен находиться по адресу http://
На Mac откройте Finder. В строке меню найдите Перейти и выберите параметр Подключиться к серверу.
Выберите параметр Подключиться как гость. Затем нажмите Подключить.
Вы должны войти в систему. Если вы подключитесь к этой общей файловой системе и войдете в папку webdav
, вы сможете увидеть файл sample.txt
, который был создан ранее. Файл должен быть доступен для скачивания.
Шаг третий — добавление аутентификации
Сервер WebDAV без аутентификации небезопасен. В этом разделе мы добавим аутентификацию на ваш сервер WebDAV с использованием схемы аутентификации Digest.
Базовая или дайджест-аутентификация?
Доступно множество схем аутентификации. В этой таблице показана совместимость различных схем аутентификации в разных операционных системах. Обратите внимание: если вы обслуживаете HTTPS, мы предполагаем, что ваш SSL-сертификат действителен (не самоподписанный).
Если вы используете HTTP, используйте обычную аутентификацию.
Мы рассмотрим схему аутентификации Digest, так как она работает во всех операционных системах без сертификата SSL.
Дайджест-аутентификация
Давайте сгенерируем файл (названный users.password
), в котором хранятся пароли для пользователей. В дайджест-аутентификации есть поле realm, которое действует как пространство имен для пользователей. Мы будем использовать webdav в качестве области. Наш первый пользователь будет называться alex.
Чтобы сгенерировать файл дайджеста, мы должны установить зависимости.
sudo apt-get install apache2-utils
Далее мы собираемся добавить пользователей. Давайте сгенерируем файл паролей пользователя, используя приведенную ниже команду.
sudo htdigest -c /etc/apache2/users.password webdav alex
Это добавит пользователя alex в файл паролей. Должен появиться запрос на ввод пароля для создания пароля для alex.
Для последующего добавления пользователей необходимо снять флаг c. Вот еще один пример добавления пользователя с именем chris. При появлении запроса создайте пароль.
sudo htdigest /etc/apache2/users.password webdav chris
Нам также нужно разрешить Apache читать файл паролей, поэтому мы меняем владельца.
sudo chown www-data:www-data /etc/apache2/users.password
После создания файла паролей мы должны внести изменения в конфигурацию в /etc/apache2/sites-available/000-default.conf
.
Добавьте следующие строки в директиву Directory.
AuthType Digest
AuthName "webdav"
AuthUserFile /etc/apache2/users.password
Require valid-user
Окончательная версия должна выглядеть так (с удаленными комментариями).
DavLockDB /var/www/DavLock
<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
Alias /webdav /var/www/webdav
<Directory /var/www/webdav>
DAV On
AuthType Digest
AuthName "webdav"
AuthUserFile /etc/apache2/users.password
Require valid-user
</Directory>
</VirtualHost>
Модуль mod_authn содержит определения директив аутентификации.
Директива AuthType указывает Apache, что для каталога /var/www/webdav
должна быть аутентификация с использованием схемы Digest.
Для аутентификации Digest требуется значение для realm, которое мы установили как webdav. Realm действует как пространство имен. Если у вас есть пользователи с одинаковым именем, вы можете разделить их, используя разные значения для области. Мы используем директиву AuthName, чтобы установить значение для realm.
Директива AuthUserFile используется для указания местоположения файла паролей.
Директива Require указывает, что только действительные пользователи, прошедшие проверку подлинности, могут получить доступ к этому каталогу.
Наконец, включите модуль Digest и перезапустите сервер, чтобы настройки вступили в силу.
sudo a2enmod auth_digest
sudo service apache2 restart
Шаг четвертый — доступ к файлам
Мы покажем, как получить доступ к вашему серверу WebDAV из собственных файловых браузеров Mac, Windows и Linux (Ubuntu). Для краткости мы собираемся продемонстрировать операции с файлами и папками только на Mac, хотя вы можете добавлять, редактировать и удалять файлы на сервере из всех операционных систем.
Вы также можете получить доступ к файлам через Интернет с помощью веб-браузера.
Возможно, вам придется извлечь диск и снова подключиться к нему, если вы проверяли его ранее, прежде чем мы добавили аутентификацию.
Мак
На Mac откройте Finder. В строке меню найдите Перейти и выберите параметр Подключиться к серверу.
Введите адрес сервера. Это должен быть http://
Вам будет предложено ввести имя пользователя и пароль. Введите одного из пользователей, которых мы создали на сервере, и нажмите Подключиться.
После подключения каталог должен появиться в Finder.
Вы можете копировать и сохранять файлы в каталог webdav
и создавать подкаталоги. Вот начальное состояние каталога на сервере:
Вы можете добавлять или переименовывать файлы и создавать новые каталоги точно так же, как обычно с помощью Finder. Ниже конечный результат.
Окна
В Windows откройте Проводник. На левой боковой панели вы должны найти значок Сеть.
Щелкните правой кнопкой мыши значок Сеть. Должно появиться контекстное меню с опцией Подключить сетевой диск. Нажмите на это.
Введите адрес сервера в поле папки. Это должен быть http://
Вам будет предложено ввести имя пользователя и пароль. Введите их и нажмите ОК.
После подключения он должен появиться как сетевой диск на левой боковой панели вашего Проводника файлов.
Линукс (Убунту)
Мы используем Ubuntu 14.04 в качестве настольной операционной системы Linux. В Ubuntu откройте Файлы. На левой боковой панели есть опция Подключиться к серверу. Нажмите на это.
Введите адрес сервера. Это должен быть dav://
Вам будет предложено ввести имя пользователя и пароль. Введите их и нажмите Подключить.
После подключения каталог должен появиться в списке Сеть.
Заключение
В этой статье мы рассмотрели, как настроить сервер WebDAV с помощью Apache в Ubuntu 14.04. Мы также обсудили, как настроить дайджест-аутентификацию для защиты сервера. Наконец, мы показали вам, как подключиться к серверу WebDAV из всех трех основных операционных систем, используя их собственные файловые браузеры.