Поиск по сайту:

Как настроить доступ 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:///webdav. Для краткости мы только показываем, как войти в систему без учетных данных на Mac.

На 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:///webdav. Нажмите Подключить.

Вам будет предложено ввести имя пользователя и пароль. Введите одного из пользователей, которых мы создали на сервере, и нажмите Подключиться.

После подключения каталог должен появиться в Finder.

Вы можете копировать и сохранять файлы в каталог webdav и создавать подкаталоги. Вот начальное состояние каталога на сервере:

Вы можете добавлять или переименовывать файлы и создавать новые каталоги точно так же, как обычно с помощью Finder. Ниже конечный результат.

Окна

В Windows откройте Проводник. На левой боковой панели вы должны найти значок Сеть.

Щелкните правой кнопкой мыши значок Сеть. Должно появиться контекстное меню с опцией Подключить сетевой диск. Нажмите на это.

Введите адрес сервера в поле папки. Это должен быть http:///webdav. Выберите Подключиться, используя другие учетные данные, если ваш логин отличается. Нажмите Готово.

Вам будет предложено ввести имя пользователя и пароль. Введите их и нажмите ОК.

После подключения он должен появиться как сетевой диск на левой боковой панели вашего Проводника файлов.

Линукс (Убунту)

Мы используем Ubuntu 14.04 в качестве настольной операционной системы Linux. В Ubuntu откройте Файлы. На левой боковой панели есть опция Подключиться к серверу. Нажмите на это.

Введите адрес сервера. Это должен быть dav:///webdav. Нажмите Подключить.

Вам будет предложено ввести имя пользователя и пароль. Введите их и нажмите Подключить.

После подключения каталог должен появиться в списке Сеть.

Заключение

В этой статье мы рассмотрели, как настроить сервер WebDAV с помощью Apache в Ubuntu 14.04. Мы также обсудили, как настроить дайджест-аутентификацию для защиты сервера. Наконец, мы показали вам, как подключиться к серверу WebDAV из всех трех основных операционных систем, используя их собственные файловые браузеры.