Как настроить WebDAV в lighttpd на OpenSUSE 11.2
Version 1.0
Author: Falko Timme
Follow me on Twitter
1 Предварительная заметка
В примерах используется сервер OpenSUSE 11.2 с IP-адресом 192.168.0.100. Подстраивайте пути, имена хостов и права доступа под свою систему.
Важно: это пошаговый практический пример. Я не даю гарантий, что всё будет работать в вашей среде без изменений.
2 Установка WebDAV и нужных модулей
Установите lighttpd (если он ещё не установлен), модуль WebDAV и утилиту htpasswd2 (в пакете apache2-utils):
yast2 -i lighttpd lighttpd-mod_webdav apache2-utilsСоздайте системные ссылки для автоматического запуска и запустите lighttpd:
chkconfig --add lighttpd
/etc/init.d/lighttpd startОткройте /etc/lighttpd/modules.conf и включите/добавьте модули mod_alias, mod_webdav и mod_auth в stanza server.modules. Обратите внимание: mod_webdav должен быть указан до mod_auth!
vi /etc/lighttpd/modules.conf[...]
server.modules = (
"mod_access",
"mod_alias",
"mod_webdav",
"mod_auth",
# "mod_evasive",
# "mod_redirect",
# "mod_rewrite",
# "mod_setenv",
# "mod_usertrack",
)
[...]Примечание: не включайте строку include “conf.d/webdav.conf” в /etc/lighttpd/modules.conf, если вы хотите включать WebDAV для отдельных vhost, а не для всех виртуальных хостов.
Перезапустите lighttpd:
/etc/init.d/lighttpd restart3 Создание виртуального хоста
В этом примере vhost будет иметь имя www.example.com и корневую директорию /srv/www/web1/web. Если у вас уже есть vhost — используйте его.
Создайте каталог и сделайте владельцем пользователя и группу lighttpd:
mkdir -p /srv/www/web1/web
chown lighttpd:lighttpd /srv/www/web1/webДобавьте vhost в конец /etc/lighttpd/lighttpd.conf:
vi /etc/lighttpd/lighttpd.conf[...]
$HTTP["host"] == "www.example.com" {
server.document-root = "/srv/www/web1/web"
}Перезапустите сервер:
/etc/init.d/lighttpd restart4 Настройка виртуального хоста для WebDAV
Создайте файл паролей WebDAV /srv/www/web1/passwd.dav с пользователем test (ключ -c создаёт файл, если его нет):
htpasswd2 -c /srv/www/web1/passwd.dav testВас попросят ввести пароль для пользователя test.
Важно: не используйте ключ -c, если файл уже существует — это перезапишет файл и удалит всех пользователей.
Ограничьте права доступа к файлу паролей, чтобы только root и члены группы lighttpd имели доступ:
chown root:lighttpd /srv/www/web1/passwd.dav
chmod 640 /srv/www/web1/passwd.davТеперь измените vhost в /etc/lighttpd/lighttpd.conf, чтобы включить WebDAV на пути /webdav:
vi /etc/lighttpd/lighttpd.conf[...]
$HTTP["host"] == "www.example.com" {
server.document-root = "/srv/www/web1/web"
alias.url = ( "/webdav" => "/srv/www/web1/web" )
$HTTP["url"] =~ "^/webdav($|/)" {
dir-listing.activate = "enable"
webdav.activate = "enable"
webdav.is-readonly = "disable"
auth.backend = "htpasswd"
auth.backend.htpasswd.userfile = "/srv/www/web1/passwd.dav"
auth.require = ( "" => ( "method" => "basic",
"realm" => "webdav",
"require" => "valid-user" ) )
}
}Пояснение: директива alias.url в сочетании с проверкой URL разрешает вызывать WebDAV по /webdav, но при этом остальные URL виртуального хоста остаются обычными HTTP.
Перезапустите lighttpd:
/etc/init.d/lighttpd restart5 Тестирование WebDAV
Установите cadaver — консольный клиент WebDAV:
yast2 -i cadaverПодключитесь к WebDAV:
cadaver http://www.example.com/webdav/Вас попросят ввести имя пользователя и пароль. Если всё правильно, вы получите доступ к вебdav-облаку и сможете выполнять команды cadaver. Для выхода введите quit.
Пример сессии:
server1:~ # cadaver http://www.example.com/webdav/
Authentication required for webdav on server `www.example.com':
Username: test
Password:
dav:/webdav/> quit
Connection to `www.example.com' closed.
server1:~ #6 Настройка клиента Windows XP
Для Windows XP может понадобиться указать порт в URL, например: http://www.example.com:80/webdav
Примечание: указание порта иногда заставляет Windows XP принять обычное имя пользователя (например, test). Без порта XP может запросить NTLM-имя вида WWW.EXAMPLE.COM\test.
7 Настройка клиента Linux (GNOME)
Подключение из GNOME описано в руководстве по WebDAV (ссылка в разделе «Ссылки»). В файловом менеджере используйте «Подключиться к серверу» и укажите URL вида http://www.example.com/webdav/.
8 Отладка и типичные проблемы
Важно: логирование lighttpd поможет найти причину ошибок. Проверьте /var/log/lighttpd/error.log и access.log.
Распространённые ошибки и решения:
- 401 Unauthorized при вводе правильного пароля — проверьте путь к файлу auth.backend.htpasswd.userfile и права доступа.
- 403 Forbidden при записи — проверьте права на файловую систему и владельца каталогов (/srv/www/web1/web). Процесс lighttpd должен иметь права на запись.
- Метод PROPFIND блокируется — убедитесь, что модуль mod_webdav включён и активирован для нужного URL.
Чек-лист для отладки:
- lighttpd запущен и слушает нужный порт.
- mod_webdav и mod_auth включены в modules.conf.
- vhost настроен правильно, alias.url и правило $HTTP[“url”] соответствуют.
- файл passwd.dav существует и имеет права root:lighttpd 640.
- права на корневой каталог позволяют записи (если webdav.is-readonly = “disable”).
9 Безопасность и рекомендации
- Используйте HTTPS (SSL/TLS) для WebDAV в продуктиве. WebDAV передаёт пароли в base64 при Basic auth, поэтому HTTP небезопасен.
- Храните файл паролей вне общедоступных каталогов веб-сервера и с минимально необходимыми правами.
- Рассмотрите ограничение доступа по IP для административных зон.
Важно: настройка SSL выходит за рамки этого руководства, но в продуктивной среде она обязательна.
10 Альтернативные подходы
- Apache (mod_dav) — более функционален и чаще встречается в документации.
- Nginx + сторонние решения — Nginx не имеет встроенного full-featured WebDAV, но можно использовать сторонние модули или проксирование на backend с WebDAV.
- Samba/SMB — если цель — совместный доступ к файлам в локальной сети, Samba может быть предпочтительнее для Windows-клиентов.
Когда WebDAV не подходит:
- Требуется дедупликация/версионирование на уровне файловой системы.
- Нужны расширенные права и ACL, неудобные для реализации через WebDAV.
11 Чек-листы ролей
Администратор сервера:
- Установить пакеты и модули.
- Настроить vhost и alias.
- Создать файл паролей и настроить права.
- Настроить HTTPS и проверить логи.
Обычный пользователь:
- Получить имя пользователя и пароль.
- Подключиться через cadaver, GNOME или указать URL с портом для Windows XP.
- Проверить возможность чтения/записи в предоставленной директории.
12 Краткий глоссарий
- WebDAV: расширение HTTP для редактирования и управления файлами на удалённом сервере.
- vhost: виртуальный хост — отдельная конфигурация сайта в одном веб-сервере.
- htpasswd2: утилита для управления файлами паролей в формате htpasswd.
13 Примеры тест-кейсов
- Успешный доступ: подключение cadaver с корректными учётными данными.
- Отказ в доступе: попытка с неверным паролем должна возвращать 401.
- Проверка записи: загрузка файла через WebDAV (если webdav.is-readonly = “disable”) и проверка владельца/прав на ФС.
14 Ссылки
- WebDAV: http://www.webdav.org/
- Lighttpd: http://www.lighttpd.net/
- OpenSUSE: http://www.opensuse.org/
Краткое резюме
- Установите lighttpd и модуль mod_webdav.
- Настройте vhost и включите WebDAV на отдельном URL (/webdav).
- Создайте файл паролей и ограничьте права доступа.
- Тестируйте с cadaver и настраивайте клиентов (Windows/GNOME).
Важно: в продуктивной среде обязательно использовать HTTPS и проверять журналы ошибок.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента