Гид по технологиям

Настройка WebDAV с аутентификацией MySQL на Apache2 (Debian Squeeze)

• 8 min read • DevOps • Обновлено 19 Nov 2025
WebDAV + MySQL на Apache2 (Debian Squeeze)
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 restart

Notes: если в вашей системе используются 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 reload

4 Конфигурация виртуального хоста для 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 DIRECTIVES
gunzip USAGE.gz
 vi USAGE

Создадим базу данных webdav и таблицу mysql_auth, а также пользователя webdav_admin, которого будет использовать модуль для выполнения SELECT/INSERT/UPDATE/DELETE в базе webdav:

mysqladmin -u root -p create webdav
mysql -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 вместе с включает WebDAV только при обращении к /webdav, в то время как остальные URL остаются обычным HTTP.

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 reload

5 Тестирование 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: краткая пошаговая инструкция для воспроизведения

  1. Установить пакеты: apache2, mysql-server, mysql-client, libapache2-mod-auth-mysql.
  2. Включить модули: dav_fs, dav, auth_mysql.
  3. Создать каталог /var/www/web1/web и назначить владельца www-data.
  4. Создать базу webdav, таблицу mysql_auth и пользователя webdav_admin.
  5. Добавить пользователя(ей) в таблицу mysql_auth с хешем пароля.
  6. Отредактировать /etc/apache2/sites-available/default, добавить Alias /webdav и блок с параметрами AuthMySQL*.
  7. Перезагрузить Apache.
  8. Протестировать с 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 Справочная информация и ссылки

Факто-бокс: ключевые моменты

  • Основные пакеты: 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.
Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Несколько аккаунтов Skype: Multi Skype Launcher
Программное обеспечение

Несколько аккаунтов Skype: Multi Skype Launcher

Журнал для работы: повысить продуктивность
Productivity

Журнал для работы: повысить продуктивность

Персональные звуки уведомлений на Android
Android.

Персональные звуки уведомлений на Android

Скачивание шоу Hulu для офлайн‑просмотра
Стриминг

Скачивание шоу Hulu для офлайн‑просмотра

Microsoft Start: персонализированная новостная лента
Новости

Microsoft Start: персонализированная новостная лента

Как изменить имя в Epic Games быстро
Гайды

Как изменить имя в Epic Games быстро