Как настроить доступ к WebDAV с помощью Apache в Ubuntu 14.04

Вступление

WebDAV - это расширение протокола HTTP, которое позволяет пользователям управлять файлами на серверах. Есть много способов использовать сервер WebDAV. Например, вы можете поделиться документами Word или Excel со своими коллегами, загрузив их на свой сервер WebDAV. Вы даже можете поделиться своей музыкальной коллекцией со своей семьей и друзьями, просто дав им URL. Все это может быть достигнуто без установки чего-либо.

Существует много способов управления файлами на удаленном сервере. У WebDAV есть несколько преимуществ перед другими решениями, такими как FTP или Samba. В этой статье мы рассмотрим, как настроить сервер Apache, чтобы разрешить собственный доступ к WebDAV из Windows, Mac и Linux с аутентификацией.

Почему WebDAV?

WebDAV предлагает несколько преимуществ:

  • Встроенная интеграция во все основные операционные системы (Windows, Mac, Linux); для использования WebDAV нет необходимости устанавливать стороннее программное обеспечение.

  • Поддержка частичных переводов.

  • Больше вариантов для аутентификации. Быть на HTTP означает NTLM, Kerberos, https://en.wikipedia.org / wiki / Lightweight_Directory_Access_Protocol [LDAP] и т. д. все возможно.

В зависимости от вашей ситуации, WebDAV может быть лучшим решением для ваших нужд.

Почему апач?

Существует множество веб-серверов, поддерживающих WebDAV в Linux. Однако Apache имеет наиболее совместимую реализацию протокола WebDAV. На момент написания статьи WebDAV на Nginx и Lighttpd работает, но только частично.

Предпосылки

Вам понадобится сервер * Ubuntu 14.04 *.

Прежде чем мы начнем, давайте сначала создадим пользователя с доступом * sudo *. Вы можете запускать команды как * root *, но это не рекомендуется из-за проблем безопасности. На https://www.digitalocean.com/community/tutorials/how-to-add-and-delete-users-on-an-ubuntu-14-04-vps имеется отличная статья, добавляющая пользователей в 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 + папка.

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

На Mac откройте * Finder *. В строке меню найдите * Go * и выберите параметр * Подключиться к серверу *.

изображение: https: //assets.digitalocean.com/articles/webdav_access/1.png [WebDAV Mac, шаг 1]

Выберите параметр * Подключиться как гость *. Затем нажмите * Подключить *.

изображение: https: //assets.digitalocean.com/articles/webdav_access/2.png [WebDAV Mac, шаг 2]

Вы должны быть авторизованы. Если вы подключитесь к этой общей файловой системе и войдете в папку + webdav +, вы сможете увидеть файл + sample.txt +, созданный ранее. Файл должен быть загружаемым.

изображение: https: //assets.digitalocean.com/articles/webdav_access/3.png [WebDAV Mac, шаг 3]

Шаг третий - добавление аутентификации

Сервер WebDAV без аутентификации небезопасен. В этом разделе мы добавим аутентификацию на ваш сервер WebDAV, используя схему дайджест-аутентификации.

Базовая или дайджест-аутентификация?

Есть много доступных схем аутентификации. Эта таблица иллюстрирует совместимость различных схем аутентификации в разных операционных системах. Обратите внимание, что если вы обслуживаете HTTPS, мы предполагаем, что ваш сертификат SSL действителен (не самоподписан).

изображение: https: //assets.digitalocean.com/articles/webdav_access/4.png [совместимость с WebDAV]

Если вы используете * HTTP *, используйте Digest authentication, так как он будет работать во всех операционных системах. Если вы используете * HTTPS *, у вас есть возможность использовать Basic authentication.

Мы рассмотрим схему аутентификации * 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 *.

  • Дайджест * аутентификация требует значения для * realm *, которое мы устанавливаем как * webdav *. * Realm * действует как пространство имен. Если у вас есть пользователи с одинаковыми именами, вы можете разделить их, используя разные значения для * realm *. Мы используем директиву * AuthName *, чтобы установить значение для * realm *.

Директива * AuthUserFile * используется для указания местоположения файла паролей.

Директива * Require * гласит, что только действительные пользователи, которые аутентифицируют себя, могут получить доступ к этому каталогу.

Наконец, включите модуль дайджеста и перезапустите сервер, чтобы настройки вступили в силу.

sudo a2enmod auth_digest
sudo service apache2 restart

Шаг четвертый - Доступ к файлам

Мы покажем, как получить доступ к вашему серверу WebDAV из собственных файловых браузеров Mac, Windows и Linux (Ubuntu). Для краткости мы собираемся продемонстрировать операции с файлами и папками только на Mac, хотя вы можете добавлять, редактировать и удалять файлы на сервере из всех операционных систем.

Вы также можете получить доступ к файлам через Интернет с помощью веб-браузера.

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

Mac

На Mac откройте * Finder *. В строке меню найдите * Go * и выберите параметр * Подключиться к серверу *.

изображение: https: //assets.digitalocean.com/articles/webdav_access/5.png [WebDAV Mac, шаг 1]

Введите адрес сервера. Это должно быть * http: // <your.server> / webdav *. Нажмите * Connect *.

изображение: https: //assets.digitalocean.com/articles/webdav_access/6.png [WebDAV Mac, шаг 2]

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

изображение: https: //assets.digitalocean.com/articles/webdav_access/7.png [WebDAV Mac, шаг 3]

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

изображение: https: //assets.digitalocean.com/articles/webdav_access/8.png [WebDAV Mac, шаг 4]

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

изображение: https: //assets.digitalocean.com/articles/webdav_access/9.png [WebDAV Mac, шаг 5]

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

изображение: https: //assets.digitalocean.com/articles/webdav_access/10.png [WebDAV Mac, шаг 6]

Windows

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

изображение: https: //assets.digitalocean.com/articles/webdav_access/11.png [WebDAV Windows, шаг 1]

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

изображение: https: //assets.digitalocean.com/articles/webdav_access/12.png [WebDAV Windows Шаг 2]

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

изображение: https: //assets.digitalocean.com/articles/webdav_access/13.png [WebDAV Windows Шаг 3]

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

изображение: https: //assets.digitalocean.com/articles/webdav_access/14.png [шаг 4 WebDAV Windows]

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

изображение: https: //assets.digitalocean.com/articles/webdav_access/15.png [шаг 5 WebDAV Windows]

Linux (Ubuntu)

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

изображение: https: //assets.digitalocean.com/articles/webdav_access/16.png [WebDAV Linux, шаг 1]

Введите адрес сервера. Это должно быть * dav: // <your.server> / webdav *. Нажмите * Connect *.

изображение: https: //assets.digitalocean.com/articles/webdav_access/17.png [WebDAV Linux, шаг 2]

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

изображение: https: //assets.digitalocean.com/articles/webdav_access/18.png [WebDAV Linux, шаг 3]

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

изображение: https: //assets.digitalocean.com/articles/webdav_access/19.png [WebDAV Linux, шаг 4]

Заключение

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

Related