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

Настройка виртуального хоста Apache для WebDAV с аутентификацией через MySQL

• 5 min read • Инфраструктура • Обновлено 25 Nov 2025
Apache WebDAV + MySQL: настройка виртуального хоста
Apache WebDAV + MySQL: настройка виртуального хоста

Кратко: В этой инструкции показано, как настроить WebDAV в виртуальном хосте Apache и аутентификацию пользователей через MySQL (mod_auth_mysql). Приведены необходимые команды, пример конфигурации vhost, тестирование клиентами и рекомендации по устранению неполадок.

Цели и варианты использования

  • Основная цель: настроить WebDAV с аутентификацией пользователей из таблицы MySQL.
  • Варианты: доступ для Linux/Windows клиентов, интеграция с существующими таблицами пользователей.

4 Настройка виртуального хоста для WebDAV

Документация по 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

После чтения создадим базу данных MySQL с именем 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 обращается по URL http://192.168.0.100/webdav и вы вводите имя test, Windows может преобразовать это в 192.168.0.100\test. В таком случае создайте ещё одну запись:

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

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

Если в URL указать порт, например http://192.168.0.100:80/webdav, Windows будет искать просто пользователя test, а не 192.168.0.100\test.

Завершите работу с MySQL:

quit;

Теперь изменим виртуальный хост в /etc/apache2/sites-available/default и добавим блок для 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 предотвращают ошибки в логе Apache типа:

[Wed Jun 11 17:02:45 2008] [error] Internal error: pcfg_openfile() called with NULL filename  
[Wed Jun 11 17:02:45 2008] [error] [client 127.0.0.1] (9)Bad file descriptor: Could not open password file: (null)

Если в таблице есть поле, определяющее активность пользователя (например, active), добавьте директиву Auth_MySQL_Password_Clause:

| [...] Auth_MySQL_Password_Clause " AND active=1" [...] |

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

Директива require valid-user разрешает вход любому пользователю, присутствующему в mysql_auth при условии правильного пароля. Чтобы разрешить доступ только отдельным пользователям или группам, используйте:

| [...] require user jane joe [...] |

или

| [...] require group testgroup [...] |

Пример окончательного виртуального хоста:

| NameVirtualHost * 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 |

Перезагрузите (reload) Apache после изменений:

/etc/init.d/apache2 reload

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

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

apt-get install cadaver

Проверка подключения:

cadaver http://localhost/webdav/

Вы увидите запрос имени пользователя. Введите test и пароль test. При успешной аутентификации вы попадёте в WEBdav-оболочку. Для выхода используйте quit:

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, если клиент ожидает такого формата:

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

Подробно описано на https://www.howtoforge.com/setting-up-webdav-with-apache2-on-debian-etch-p2.

Если Windows постоянно запрашивает имя и пароль — укажите порт в URL, например http://192.168.0.100:80/webdav (см. раздел выше).

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

Подробно описано на https://www.howtoforge.com/setting-up-webdav-with-apache2-on-debian-etch-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 не принадлежит пользователю Apache (www-data на Debian). Исправление:

chown www-data /var/lock/apache2

Если Windows продолжает запрашивать учётные данные — укажите порт в URL: http://192.168.0.100:80/webdav.

Частые причины проблем

  • Неправильные права на каталоги/файлы (включая /var/lock/apache2 и /var/www).
  • Неверные параметры доступа в конфигурации vhost.
  • Неправильно заданы поля и названия таблиц в MySQL-конфигурации модуля.
  • Модуль mod_auth_mysql не загружен или несовместим с текущей версией Apache/PHP.

Контрольный список администратора перед запуском

  • База webdav создана и таблица mysql_auth существует.
  • Пользователь webdav_admin создан и имеет права SELECT/INSERT/UPDATE/DELETE.
  • Конфигурация vhost обновлена и перезагружен Apache.
  • Права владельца каталогов (www-data) корректны.
  • Проверка на клиенте (cadaver) проходит успешно.

Быстрый план действий при проблемах (Playbook)

  1. Проверить лог Apache: tail -f /var/log/apache2/error.log.
  2. Проверить права на /var/lock/apache2 и /var/www: chown -R www-data /var/www && chown www-data /var/lock/apache2.
  3. Проверить доступность MySQL и правильность GRANT: mysql -u webdav_admin -p -e “SELECT * FROM webdav.mysql_auth;”
  4. Временно включить более подробный лог в Apache для модуля auth (если возможно).
  5. Проверить, что параметры AuthMySQL* в конфигурации совпадают с именами полей и таблицы.

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

flowchart TD
    A[Попытка входа в WebDAV] --> B{Есть запись в mysql_auth?}
    B -- Да --> C{Пароль совпадает?}
    B -- Нет --> Z[Пользователь не найден: добавить запись]
    C -- Да --> SUCCESS[Доступ предоставлен]
    C -- Нет --> D{Windows клиент?}
    D -- Да --> E[Попробовать имя вида host\\user или указать порт в URL]
    D -- Нет --> F[Проверить алгоритм шифрования 'PHP_MD5']
    E --> RETRY[Повторить вход]
    F --> RETRY
    RETRY --> B

Роли и чек-листы

Администратор (sysadmin):

  • Установить mod_auth_mysql и cadaver.
  • Настроить базу данных и привилегии.
  • Обновить vhost и перезагрузить Apache.
  • Тестировать с cadaver и клиентскими ОС.

Пользователь (конечный):

  • Получить корректное имя пользователя/пароль и формат имени (если требуются \rhost\user).
  • При возникновении проблем проверить URL с указанием порта.
  • Сообщить администратору скриншоты ошибок и временный лог.

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

  • WebDAV доступен по URL /webdav и возвращает файловый список.
  • Аутентификация проходит для пользователей из mysql_auth.
  • Логи не содержат ошибок прав доступа при корректных запусках.

Мини-глоссарий

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

Советы по безопасности и совместимости

  • Модуль mod_auth_mysql устарел в некоторых дистрибутивах: рассмотрите современные альтернативы (LDAP, PAM, модуль authn_dbd с драйвером DBI).
  • Избегайте хранения паролей в открытом виде; используйте поддерживаемые типы хеширования.
  • Ограничьте доступ по IP или включите TLS (HTTPS) для защиты учётных данных в пути.

9 Ссылки


Важно: тестируйте изменения на стенде перед применением в производства. Если используете Windows-клиенты, попробуйте указывать порт в URL, чтобы избежать проблем с преобразованием имени пользователя.

Резюме: настройка включает создание базы и таблицы, предоставление привилегий для webdav_admin, добавление соответствующего блока в vhost и проверку с помощью cadaver и клиентских ОС. Следуйте контрольным спискам и плану действий при неисправностях.

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