Настройка виртуального хоста 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 DIRECTIVESgunzip USAGE.gz
vi USAGEПосле чтения создадим базу данных MySQL с именем webdav и таблицу mysql_auth для пользователей и паролей. Также создадим пользователя MySQL webdav_admin — он будет использоваться модулем mod_auth_mysql для подключения к базе:
mysqladmin -u root -p create webdavmysql -u root -pGRANT 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 |
Директива Alias вместе с
Параметры 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 * |
Перезагрузите (reload) Apache после изменений:
/etc/init.d/apache2 reload5 Тестирование 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)
- Проверить лог Apache: tail -f /var/log/apache2/error.log.
- Проверить права на /var/lock/apache2 и /var/www: chown -R www-data /var/www && chown www-data /var/lock/apache2.
- Проверить доступность MySQL и правильность GRANT: mysql -u webdav_admin -p -e “SELECT * FROM webdav.mysql_auth;”
- Временно включить более подробный лог в Apache для модуля auth (если возможно).
- Проверить, что параметры 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 Ссылки
- WebDAV: http://www.webdav.org
- Apache: http://httpd.apache.org
- Debian: http://www.debian.org
- mod_auth_mysql: http://modauthmysql.sourceforge.net
Важно: тестируйте изменения на стенде перед применением в производства. Если используете Windows-клиенты, попробуйте указывать порт в URL, чтобы избежать проблем с преобразованием имени пользователя.
Резюме: настройка включает создание базы и таблицы, предоставление привилегий для webdav_admin, добавление соответствующего блока в vhost и проверку с помощью cadaver и клиентских ОС. Следуйте контрольным спискам и плану действий при неисправностях.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента