Настройка WebDAV с аутентификацией MySQL на Apache2 (Debian Squeeze)
Кратко: пошаговое руководство по установке и настройке WebDAV с аутентификацией через MySQL (mod_auth_mysql) на Apache2 под Debian Squeeze. Включены создание базы и таблицы, конфигурация виртуального хоста, тестирование клиентами и расширенные рекомендации по отладке и защите.
Введение
Это руководство объясняет, как настроить WebDAV с аутентификацией MySQL (через модуль mod_auth_mysql) на Apache2 на сервере Debian Squeeze. WebDAV (Web-based Distributed Authoring and Versioning) — расширение HTTP, позволяющее редактировать файлы на сервере без загрузки/выгрузки по FTP. WebDAV также удобно использовать для загрузки и скачивания файлов.
Я не даю гарантий, что всё сработает в вашей среде — конфигурации и версии ПО могут влиять на результат.
Important: в примерах используется хост server1.example.com и IP 192.168.0.100 — замените на свои значения.
1 Предварительная заметка
В примерах предполагается сервер Debian Squeeze с именем server1.example.com и IP 192.168.0.100.
2 Установка Apache2, WebDAV, MySQL и mod_auth_mysql
Установите пакеты:
apt-get install apache2 mysql-server mysql-client libapache2-mod-auth-mysqlВо время установки вам будет предложено ввести пароль для пользователя root MySQL. Этот пароль действует для root@localhost и для [email protected].
Затем включите модули WebDAV и mod_auth_mysql:
a2enmod dav_fs
a2enmod dav
a2enmod auth_mysqlПерезапустите Apache:
/etc/init.d/apache2 restartNotes: если в вашей системе используются systemd-юниты, команды управления сервисом могут отличаться (например, systemctl restart apache2).
3 Создание виртуального хоста и каталога для WebDAV
Создадим каталог сайта и назначим владельца www-data:
mkdir -p /var/www/web1/web
chown www-data /var/www/web1/webСделаем резервную копию стандартного vhost и создадим свой:
mv /etc/apache2/sites-available/default /etc/apache2/sites-available/default_orig
vi /etc/apache2/sites-available/defaultПример простого vhost (вставьте в файл /etc/apache2/sites-available/default):
ServerAdmin webmaster@localhost
DocumentRoot /var/www/web1/web/
Options Indexes MultiViews
AllowOverride None
Order allow,deny
allow from all
Затем перечитайте конфигурацию Apache:
/etc/init.d/apache2 reload4 Конфигурация виртуального хоста для WebDAV и MySQL-аутентификации
Документация mod_auth_mysql хранится в /usr/share/doc/libapache2-mod-auth-mysql. Перед чтением распакуйте файлы DIRECTIVES.gz и USAGE.gz:
cd /usr/share/doc/libapache2-mod-auth-mysql
gunzip DIRECTIVES.gz
vi DIRECTIVESgunzip USAGE.gz
vi USAGEСоздадим базу данных webdav и таблицу mysql_auth, а также пользователя webdav_admin, которого будет использовать модуль для выполнения SELECT/INSERT/UPDATE/DELETE в базе webdav:
mysqladmin -u root -p create webdavmysql -u root -pВо внутреннем mysql-клиенте выполните:
GRANT SELECT, INSERT, UPDATE, DELETE ON webdav.* TO 'webdav_admin'@'localhost' IDENTIFIED BY 'webdav_admin_password';
GRANT SELECT, INSERT, UPDATE, DELETE ON webdav.* TO 'webdav_admin'@'localhost.localdomain' IDENTIFIED BY 'webdav_admin_password';
FLUSH PRIVILEGES;(Замените webdav_admin_password на надёжный пароль.)
USE webdav;Создадим таблицу mysql_auth для учётных записей WebDAV:
create table mysql_auth (
username char(25) not null,
passwd char(32),
groups char(25),
primary key (username)
);Вы можете использовать собственные таблицы с дополнительными полями (например, поле active для включения/отключения доступа).
Вставим тестового пользователя test с паролем test (MD5):
INSERT INTO `mysql_auth` (`username`, `passwd`, `groups`) VALUES('test', MD5('test'), 'testgroup');Замечание о Windows: если подключаетесь с Windows XP и не указываете порт в URL, Windows может посылать имя пользователя в виде 192.168.0.100\test. Поэтому добавим второй аккаунт, экранируя обратный слэш в SQL:
INSERT INTO `mysql_auth` (`username`, `passwd`, `groups`) VALUES('192.168.0.100\\test', MD5('test'), 'testgroup');(В SQL-строке обратный слэш экранируется — в реальном имени пользователя ожидается один обратный слэш.)
Если вы укажете порт в URL явно, например http://192.168.0.100:80/webdav, Windows будет использовать просто имя test.
Выйдите из MySQL:
quit;Теперь модифицируем vhost в /etc/apache2/sites-available/default и добавим настройки для WebDAV:
vi /etc/apache2/sites-available/defaultДобавьте следующие строки в конфигурацию vhost:
[...]
Alias /webdav /var/www/web1/web
DAV On
AuthBasicAuthoritative Off
AuthUserFile /dev/null
AuthMySQL On
AuthName "webdav"
AuthType Basic
Auth_MySQL_Host localhost
Auth_MySQL_User webdav_admin
Auth_MySQL_Password webdav_admin_password
AuthMySQL_DB webdav
AuthMySQL_Password_Table mysql_auth
Auth_MySQL_Username_Field username
Auth_MySQL_Password_Field passwd
Auth_MySQL_Empty_Passwords Off
Auth_MySQL_Encryption_Types PHP_MD5
Auth_MySQL_Authoritative On
require valid-user
[...]Alias вместе с
AuthBasicAuthoritative Off и AuthUserFile /dev/null нужны, чтобы избежать ошибок вида “Could not open password file: (null)” в логе ошибок Apache (/var/log/apache2/error.log).
Если в вашей таблице есть дополнительное поле, которое контролирует активность пользователя (например, active), вы можете добавить условие выборки пароля:
[...]
Auth_MySQL_Password_Clause " AND active=1"
[...]Важно: строка в кавычках должна начинаться с пробела.
Требование require valid-user позволяет любому пользователю из таблицы mysql_auth входить при корректном пароле. Альтернативные варианты:
[...]
require user jane joe
[...]или
[...]
require group testgroup
[...]Полный пример vhost с WebDAV блоком:
ServerAdmin webmaster@localhost
DocumentRoot /var/www/web1/web/
Options Indexes MultiViews
AllowOverride None
Order allow,deny
allow from all
Alias /webdav /var/www/web1/web
DAV On
AuthBasicAuthoritative Off
AuthUserFile /dev/null
AuthMySQL On
AuthName "webdav"
AuthType Basic
Auth_MySQL_Host localhost
Auth_MySQL_User webdav_admin
Auth_MySQL_Password webdav_admin_password
AuthMySQL_DB webdav
AuthMySQL_Password_Table mysql_auth
Auth_MySQL_Username_Field username
Auth_MySQL_Password_Field passwd
Auth_MySQL_Empty_Passwords Off
Auth_MySQL_Encryption_Types PHP_MD5
Auth_MySQL_Authoritative On
require valid-user
После изменений перечитайте конфигурацию Apache:
/etc/init.d/apache2 reload5 Тестирование WebDAV
Установите cadaver — консольный клиент WebDAV:
apt-get install cadaverПроверьте доступ локально:
cadaver http://localhost/webdav/Вас попросят ввести имя пользователя и пароль. Введите test и пароль test. При успешной аутентификации вы попадёте в dav-оболочку как в примере ниже:
root@server1:~# cadaver http://localhost/webdav/
Authentication required for webdav on server `localhost':
Username: test
Password:
dav:/webdav/> quit
Connection to `localhost' closed.
root@server1:~#Проверьте также вариант с именем пользователя в формате Windows (если URL без порта и клиент — Windows XP):
cadaver http://localhost/webdav/root@server1:~# cadaver http://localhost/webdav/
Authentication required for webdav on server `localhost':
Username: 192.168.0.100\\test
Password:
dav:/webdav/> quit
Connection to `localhost' closed.
root@server1:~#(Обратите внимание на экранирование обратного слэша в SQL/логах.)
6 Подключение клиента Windows XP к WebDAV
Краткие шаги для Windows XP:
- Откройте “Мой компьютер“ -> “Подключить сетевой диск” -> “Подключить к сайту, на котором можно хранить документы и изображения”.
- Укажите URL вида http://192.168.0.100:80/webdav (рекомендуется явно указывать :80 для избежания префикса домена в имени пользователя).
- Если вы не указываете порт, при вводе учётных данных используйте имя в форме 192.168.0.100\test.
Подробное описание шагов и нюансов см. в официальных материалах и статьях по подключению WebDAV из Windows.
7 Подключение Linux (GNOME) к WebDAV
В GNOME можно подключиться через “Сеть” -> “Подключиться к серверу” -> выбрать WebDAV (HTTP) и указать URL http://192.168.0.100:80/webdav. Ввести имя и пароль. Если проблема с аутентификацией — указывайте порт явно.
8 Расширенная отладка и типичные ошибки
Наблюдайте лог ошибок Apache в реальном времени:
tail -f /var/log/apache2/error.logПримеры ошибок и их причины:
- “Could not open property database. [500, #1]” — обычно означает, что /var/lock/apache2 не принадлежит пользователю Apache (www-data). Исправление:
chown www-data /var/lock/apache2Многократные запросы имени и пароля из Windows — укажите порт явно в URL (http://host:80/webdav), либо настройте клиента так, чтобы он не посылал доменное имя в качестве префикса имени пользователя.
Ошибки доступа к базе MySQL — проверьте, что webdavadmin имеет корректные привилегии и что параметры Auth_MySQL* соответствуют вашим настройкам.
Ошибки модуля auth_mysql — проверьте содержание файлов /usr/share/doc/libapache2-mod-auth-mysql/DIRECTIVES и USAGE, формат таблицы и тип шифрования пароля (PHP_MD5 в примере).
9 Безопасность и рекомендации по усилению
Security hardening — базовые рекомендации:
- Не храните пароли в открытом виде; используйте хеши (MD5 устарел — при возможности мигрируйте к более надёжным методам или используйте TLS).
- Обязательно разверните соединение по HTTPS для защиты учётных данных в сети: настройте SSL/TLS для виртуального хоста и используйте wss/https.
- Ограничьте доступ к административным интерфейсам MySQL и используйте сложные пароли для webdav_admin.
- Разделяйте роли: используйте отдельные учётные записи для администратора БД и для WebDAV-приложения.
- Логи: ротируйте и контролируйте доступ к логам, ограничивайте их объём и хранение персональных данных.
Privacy notes: если вы храните персональные данные через WebDAV, убедитесь, что политика хранения и обработка данных соответствует требованиям вашей юрисдикции (например, GDPR для ЕС).
10 Альтернативные подходы и миграция
Если модуль libapache2-mod-auth-mysql устарел или недоступен, рассмотрите альтернативы:
- Использовать mod_authn_dbd (через DBI) — поддерживает различные СУБД и интеграцию с современными механизмами шифрования.
- Аутентификация через LDAP (mod_authnz_ldap) — удобно для корпоративных сред.
- Использовать внешние прокси/автентификацию на уровне приложения (например, WebDAV через Nextcloud, ownCloud), где управление пользователями и шифрование современнее.
Миграция: при переносе с MD5 на более надёжные хеши требуется обновить клиентскую логику и/или хранить вспомогательное поле с типом шифрования.
11 Роль-базированные контрольные списки
Администратор сервера:
- Установить и включить необходимые модули Apache.
- Создать базу webdav и таблицу mysql_auth.
- Настроить привилегии webdav_admin.
- Проверить права на каталоги (/var/www/web1/web, /var/lock/apache2).
- Настроить SSL для виртуального хоста.
Администратор базы данных:
- Создать пользователя webdav_admin с минимальными правами.
- Настроить резервное копирование таблицы mysql_auth.
- Проверить формат и целостность записей (логин/хеш/группа).
Оператор поддержки:
- Проверить логи Apache и MySQL при проблемах.
- Реплицировать шаги тестирования с cadaver.
- Обновлять инструкции для конечных пользователей (Windows/GNOME).
12 SOP: краткая пошаговая инструкция для воспроизведения
- Установить пакеты: apache2, mysql-server, mysql-client, libapache2-mod-auth-mysql.
- Включить модули: dav_fs, dav, auth_mysql.
- Создать каталог /var/www/web1/web и назначить владельца www-data.
- Создать базу webdav, таблицу mysql_auth и пользователя webdav_admin.
- Добавить пользователя(ей) в таблицу mysql_auth с хешем пароля.
- Отредактировать /etc/apache2/sites-available/default, добавить Alias /webdav и блок
с параметрами AuthMySQL*. - Перезагрузить Apache.
- Протестировать с cadaver и клиентами Windows/GNOME.
Критерии приёмки
- Удалённый доступ к /webdav доступен после аутентификации.
- Пользователи из таблицы mysql_auth проходят аутентификацию и получают корректные права доступа.
- Логи ошибок не содержат проблем с правами на файлы или подключением к БД.
13 Тест-кейсы и приёмочные проверки
- TC1: Подключение локально c cadaver к http://localhost/webdav/ с корректными учётными данными — должно пройти.
- TC2: Попытка входа с неверным паролем — доступ должен быть запрещён.
- TC3: Подключение из Windows без указания порта — если используется имя вида 192.168.0.100\test, а соответствующая запись есть в mysql_auth, вход должен пройти.
- TC4: Подключение по HTTPS (если настроено) — учётные данные не должны передаваться в открытом виде.
14 Часто встречующиеся ошибки и их решения
- Ошибка: “Could not open property database” — проверьте владельца /var/lock/apache2.
- Ошибка: пустые пароли принимаются — убедитесь, что Auth_MySQL_Empty_Passwords Off.
- Ошибка: модуль не находит таблицу — проверьте имя базы и таблицы в директивах AuthMySQL_DB и AuthMySQL_Password_Table.
- Ошибка: неправильное шифрование паролей — проверьте Auth_MySQL_Encryption_Types и формат поля passwd.
15 Справочная информация и ссылки
- WebDAV: http://www.webdav.org/
- Apache: http://httpd.apache.org/
- Debian: http://www.debian.org/
- mod_auth_mysql: http://modauthmysql.sourceforge.net
Факто-бокс: ключевые моменты
- Основные пакеты: apache2, mysql-server, libapache2-mod-auth-mysql.
- Каталог WebDAV в примере: /var/www/web1/web.
- Точка монтирования: /webdav через Alias +
. - Таблица аутентификации: mysql_auth (username, passwd, groups).
- Рекомендуется использовать HTTPS для защиты учётных данных.
1-line глоссарий
- WebDAV: расширение HTTP для удалённого редактирования и управления файлами.
- mod_auth_mysql: модуль Apache для аутентификации пользователей из MySQL.
Итог
Это руководство даёт последовательность шагов для развертывания WebDAV с аутентификацией через MySQL на Apache2 (Debian Squeeze). Включены инструкция по установке, создание таблицы пользователей, конфигурация виртуального хоста, тестирование и расширенные рекомендации по безопасности и отладке.
Summary:
- Настройка WebDAV требует установки модулей Apache и создания таблицы пользователей в MySQL.
- Указывайте порт в URL, если клиенты (например, Windows XP) некорректно формируют имя пользователя.
- Используйте TLS/HTTPS на продакшене и рассмотрите современные механизмы аутентификации вместо устаревшего MD5.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента