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

Как настроить WebDAV с аутентификацией MySQL на Apache2 (Debian Lenny)

• 6 min read • Серверы • Обновлено 28 Nov 2025
Настройка WebDAV с MySQL на Apache2 (Debian Lenny)
Настройка WebDAV с MySQL на Apache2 (Debian Lenny)

TL;DR

Этот пошаговый гид показывает, как включить WebDAV на Apache2 и аутентификацию пользователей из таблицы MySQL (mod_auth_mysql) на Debian Lenny. Включены команды установки, настройка виртуального хоста, создание базы данных и тестирование с клиентом cadaver. В конце — рекомендации по безопасности, отладке, чек-листы и планы миграции.

Version 1.0
Author: Falko Timme

Введение

WebDAV (Web-based Distributed Authoring and Versioning) — расширения HTTP, которые позволяют редактировать файлы на веб-сервере без загрузки/выгрузки через FTP. Его можно использовать как для редактирования, так и для передачи файлов.

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

Кому это полезно

  • Системным администраторам, которые хотят централизовать хранение и доступ к файлам через HTTP.
  • Командам, использующим старые окружения Debian Lenny и модуль mod_auth_mysql.

1 Предварительная заметка

В примере используется сервер Debian Lenny с именем server1.example.com и IP 192.168.0.100. Подставьте свои хостнейм и IP при выполнении команд.

2 Установка Apache2, WebDAV, MySQL и mod_auth_mysql

Чтобы установить необходимые пакеты, выполните:

aptitude install apache2 mysql-server mysql-client libapache2-mod-auth-mysql

Во время установки вас попросят задать пароль для MySQL root. Этот пароль будет действителен для root@localhost и [email protected].

Затем включите модули WebDAV и mod_auth_mysql:

a2enmod dav_fs
a2enmod dav
a2enmod auth_mysql

Перезагрузите Apache:

/etc/init.d/apache2 restart

3 Создание виртуального хоста и директории для WebDAV

Создадим директорию для веб-контента и назначим владельцем пользователя Apache (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:

NameVirtualHost *

        ServerAdmin [email protected]

        DocumentRoot /var/www/web1/web/
        
                Options Indexes MultiViews
                AllowOverride None
                Order allow,deny
                allow from all
        

Перезагрузите конфигурацию Apache:

/etc/init.d/apache2 reload

4 Настройка vhost для 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, а также пользователя MySQL webdav_admin, который будет использоваться mod_auth_mysql:

mysqladmin -u root -p create webdav
mysql -u root -p
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;
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 XP подключается без указания порта, Windows переводит имя в формат 192.168.0.100\test. Поэтому создадим вторую запись:

INSERT INTO `mysql_auth` (`username`, `passwd`, `groups`) VALUES('192.168.0.100\\test', MD5('test'), 'testgroup');

(В имени пользователя в SQL нужен двойной обратный слэш для экранирования.)

Выйдите из MySQL:

quit;

Отредактируйте vhost и добавьте раздел WebDAV:

vi /etc/apache2/sites-available/default

Вставьте (или дополните) следующие строки:

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, в то время как остальные пути остаются обычными HTTP.
  • AuthBasicAuthoritative Off и AuthUserFile /dev/null предотвращают появление ошибок в логе, связанных с отсутствием файла паролей.

Если у вас есть поле active в таблице, можно ограничить выборку с помощью Auth_MySQL_Password_Clause:

Auth_MySQL_Password_Clause " AND active=1"

Важно: строка внутри кавычек должна начинаться с пробела.

Для разрешения логина только определённым пользователям используйте:

require user jane joe

Для разрешения входа только членам группы:

require group testgroup

Перезагрузите Apache для применения настроек:

/etc/init.d/apache2 reload

5 Тестирование WebDAV

Установите cadaver — консольный WebDAV-клиент:

aptitude install cadaver

Проверьте доступ локально:

cadaver http://localhost/webdav/

Ожидаемая сессия:

server1:~# cadaver http://localhost/webdav/
Authentication required for webdav on server `localhost':
Username: test
Password:
dav:/webdav/> quit
Connection to `localhost' closed.
server1:~#

Также протестируйте с именем 192.168.0.100\test, если клиент Windows использует имя в формате host\user:

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.
server1:~#

6 Настройка клиента Windows XP для подключения к WebDAV

Подробное описание настройки клиента Windows XP см. в исходной статье: https://www.howtoforge.com/how-to-set-up-webdav-with-apache2-on-debian-lenny-p2.

Если вы не указываете :80 в URL (например, http://192.168.0.100/webdav), Windows может требовать логин в формате 192.168.0.100\test. При указании порта (:80) используйте просто test.

7 Настройка клиента Linux GNOME для подключения к WebDAV

Руководство по подключению из GNOME в исходной статье: https://www.howtoforge.com/how-to-set-up-webdav-with-apache2-on-debian-lenny-p3.

8 Отладка и распространённые ошибки

Наблюдайте за логом ошибок Apache при попытках подключения:

tail -f /var/log/apache2/error.log

Ошибка:

[Wed Jun 11 15:39:04 2008] [error] [client 192.168.0.46] (13)Permission denied: Could not open property database. [500, #1]

означает, что /var/lock/apache2 не принадлежит пользователю www-data. Решение:

chown www-data /var/lock/apache2

Если Windows постоянно запрашивает логин и пароль, укажите порт в URL (http://192.168.0.100:80/webdav) или используйте учётную запись в форме host\user.

9 Рекомендации по безопасности

  • Используйте HTTPS (TLS) для защиты паролей при передаче по сети. Настройте SSL на виртуальном хосте и перенаправляйте HTTP на HTTPS.
  • Ограничьте доступ по IP или с помощью дополнительных правил Authorization, если ресурсы не должны быть общедоступны.
  • Не храните пароли в открытом виде. mod_auth_mysql в этом примере использует PHP_MD5 — это устаревший хеш. По возможности переходите на более современные механизмы аутентификации (см. раздел «Миграция»).
  • Минимизируйте привилегии MySQL-пользователя webdav_admin — ему нужны только SELECT/INSERT/UPDATE/DELETE для конкретной базы.
  • Регулярно проверяйте лог доступа и ошибок Apache.

10 Миграция и альтернативы

Debian Lenny и mod_auth_mysql устарели. При планировании обновления рассмотрите:

  • Переход на более новые версии Debian/Ubuntu с поддержкой современных модулей Apache.
  • Использование mod_authn_dbd (аутентификация через базу данных с DBI) или LDAP для централизованной аутентификации.
  • Рассмотрение S3/облачных хранилищ или WebDAV-решений с нативными средствами TLS и RBAC.

Миграционные советы:

  • Экспортируйте текущую таблицу mysql_auth и преобразуйте хеши к более безопасному формату перед переносом.
  • Тестируйте на стенде перед переносом в продакшен.

Дополнительные материалы и образцы

Мини-SOP: как добавить пользователя в таблицу mysql_auth

  1. Подключитесь к MySQL как root:
mysql -u root -p
  1. Выберите базу и вставьте пользователя с MD5-паролем:
USE webdav;
INSERT INTO `mysql_auth` (`username`, `passwd`, `groups`) VALUES('newuser', MD5('newpassword'), 'users');
  1. Проверьте выборкой:
SELECT username, groups FROM mysql_auth WHERE username='newuser';
  1. При необходимости добавьте проверку active через Auth_MySQL_Password_Clause.

Чек-лист администратора перед вводом в эксплуатацию

  • Установлены apache2, mysql-server, libapache2-mod-auth-mysql
  • Создана база webdav и таблица mysql_auth
  • Создан пользователь webdav_admin с минимальными правами
  • Настроен виртуальный хост и Alias /webdav
  • Включён DAV и модуль auth_mysql
  • Проверен доступ локально с cadaver
  • Настроен HTTPS и редирект с HTTP на HTTPS
  • Ведётся мониторинг логов Apache

Ролевые задачи

  • Системный администратор: установить пакеты, создать базу, настроить права и SSL.
  • Разработчик: интегрировать клиентские приложения с WebDAV URL.
  • Оператор: мониторить логи, проверять бэкапы и доступность.

Критерии приёмки

  • WebDAV доступен по HTTPS по URL https://<ваш-хост>/webdav
  • Аутентификация проходит с учётной записью из mysql_auth
  • Логин и операции создают записи в access/error логах без ошибок 5xx

Маленький факт-бокс

  • Порт HTTP: 80. Порт HTTPS: 443. Для корректной авторизации Windows указывайте порт, чтобы избежать преобразования имени пользователя в host\user.
  • Таблица mysql_auth в примере использует поля username, passwd, groups.

Однострочные глоссарии

  • WebDAV — расширение HTTP для редактирования и передачи файлов по сети.
  • mod_auth_mysql — модуль Apache для аутентификации через MySQL.

11 Диаграмма принятия решений при проблемах с аутентификацией

flowchart TD
  A[Начать: ошибка аутентификации] --> B{Проверить сетевое соединение}
  B -- нет --> C[Проверить доступ к серверу и DNS/IP]
  B -- да --> D{Проблема с Apache?}
  D -- да --> E[Просмотреть /var/log/apache2/error.log]
  D -- нет --> F{Проблема с MySQL}
  F -- да --> G[Проверить связь: mysql -u webdav_admin -p]
  F -- нет --> H{Хеш пароля корректен?}
  H -- нет --> I[Преобразовать пароли или использовать другой механизм шифрования]
  H -- да --> J[Проверить формат имени пользователя 'host\\user для Windows']
  J --> K[Если всё проверено, включить детальный лог и повторить]

12 Тест-кейсы для проверки работоспособности

  • Подключение по локальному URL: cadaver http://localhost/webdav/ — ожидается приглашение логина и успешный вход.
  • Подключение с удалённой машины по IP: проверить доступ и корректность имени пользователя.
  • Попытка доступа без учётных данных — доступ отклонён.
  • Проверка логов на отсутствие ошибок 500 при успешной аутентификации.

13 Ссылки

Резюме

  • WebDAV можно настроить на Apache2 с аутентификацией из MySQL при помощи libapache2-mod-auth-mysql.
  • Создайте базу webdav, таблицу mysql_auth и пользователя webdav_admin.
  • Настройте Alias /webdav и секцию для включения DAV и правил аутентификации.
  • Тестируйте cadaver и наблюдайте за логами.
  • Планируйте миграцию на современные механизмы аутентификации и используйте HTTPS.

Важно: Debian Lenny и mod_auth_mysql устарели. По возможности планируйте обновление на поддерживаемую ОС и современные модули для безопасности и совместимости.

Поделиться: 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 быстро