apache2: конфигурация mod_dav, mod_dav_fs

В точке монтирования (в частности: /var/data/) я смонтировал раздел рейда размером 3 ТБ, в котором хранятся все виды данных, и я хотел бы поделиться им через WebDAV. Итак, я установил davfs2 на свой клиент и настроил сайт сервера, добавив:

ScriptAlias "/var/www/webdav" "/var/data"
<Directory "/var/www/webdav">
   Dav On
</Directory>

Наконец, я добавил пользователя www-data в группу мультимедиа, которая является группой, имеющей доступ для чтения/записи ко всему материалу /var/data (режим файла для всего содержимого — 660, chown — «some_owner_that_is_part_of_media: media»).

Затем a2enmod mod_dav и перезапуск апача должны оживить его. Хорошо, пока здесь. Я установил davfs на свой клиентский компьютер, и он работал как взгляд. По крайней мере так выглядело. Содержимое было перечислено, и я был счастлив. Позже я попытался открыть какой-то файл на своем клиенте, но, к сожалению, это не удалось с ошибкой ввода-вывода. И тут начинаются проблемы.

==> /var/log/apache2/access.log <==
jin.local - - [26/Jun/2010:14:04:45 +0200] "PROPFIND /webdav/ HTTP/1.1" 207 25152 "-" "davfs2/1.4.5 neon/0.29.0"
jin.local - - [26/Jun/2010:14:04:46 +0200] "GET /webdav/test HTTP/1.1" 500 823 "-" "davfs2/1.4.5 neon/0.29.0"

==> /var/log/apache2/error.log <==
[Sat Jun 26 14:04:46 2010] [error] [client 192.168.2.50] (13)Permission denied: exec of '/var/data/test' failed
[Sat Jun 26 14:04:46 2010] [error] [client 192.168.2.50] Premature end of script headers: test

В предположении, что это может быть проблема с разрешениями, которые apache2 не имеет права на доступ к этому материалу, я быстро проглотил файлы, и поэтому я совершенно уверен, что все должно быть в порядке, как это:

# ls -la /var/data
-rw-r--r--  1 www-data www-data   22 2010-06-27 10:07 anotherTest
-rw-r--r--  1 www-data www-data    5 2010-06-26 19:28 test
# cat anotherTest
this is another test
# cat test
test

Недавно я также добавил аутентификацию на тот случай, если WebDAV может понадобиться, чтобы разрешить мне запрос GET. Аутентификация работает, но остальное остается прежним.

На данный момент я не знаю, что я мог бы изменить. У кого-нибудь есть идея, что я могу попробовать?

Приветствую, Д.

-- РЕДАКТИРОВАТЬ --

еще кое-что из журнала и текущая конфигурация. я просто не понимаю, что с ним не так. как вы можете видеть в журнале, я могу создавать (PUT) и удалять (DELETE) файлы. но получить просто не работает.

ScriptAlias /webdav/ /test/
        <Location /webdav/>
                DAV On
                AuthType Basic
                AuthName "Restricted Files"
                AuthBasicProvider file
                AuthUserFile /var/www/passwords
                AuthGroupFile /var/www/groups
                <LimitExcept PROPFIND>
                         require group webdav
                </LimitExcept>
        </Location>

Это так странно?!

192.168.2.158 - - [02/Jul/2010:21:11:38 +0200] "GET /webdav/test HTTP/1.1" 500 823 "-" "-"
192.168.2.158 - - [02/Jul/2010:21:11:38 +0200] "GET /webdav/test HTTP/1.1" 500 823 "-" "-"
192.168.2.158 - dominik [02/Jul/2010:21:11:39 +0200] "PROPFIND /webdav/ HTTP/1.1" 207 1882 "-" "-"
192.168.2.158 - - [02/Jul/2010:21:11:39 +0200] "GET /webdav/test HTTP/1.1" 500 823 "-" "-"
192.168.2.158 - - [02/Jul/2010:21:11:39 +0200] "GET /webdav/test HTTP/1.1" 500 823 "-" "-"
192.168.2.158 - - [02/Jul/2010:21:11:39 +0200] "GET /webdav/test HTTP/1.1" 500 823 "-" "-"
192.168.2.158 - dominik [02/Jul/2010:21:11:42 +0200] "PROPFIND /webdav/.test.swp HTTP/1.1" 404 467 "-" "-"
192.168.2.158 - dominik [02/Jul/2010:21:11:42 +0200] "PUT /webdav/.test.swp HTTP/1.1" 201 481 "-" "-"
192.168.2.158 - dominik [02/Jul/2010:21:11:42 +0200] "DELETE /webdav/.test.swp HTTP/1.1" 204 141 "-" "-"
192.168.2.158 - dominik [02/Jul/2010:21:11:45 +0200] "PROPFIND /webdav/ HTTP/1.1" 207 497 "-" "-"

==> /var/log/apache2/private-error.log <==
[Fri Jul 02 21:11:38 2010] [error] [client 192.168.2.158] (13)Permission denied: exec of '/test/test' failed
[Fri Jul 02 21:11:38 2010] [error] [client 192.168.2.158] Premature end of script headers: test
[Fri Jul 02 21:11:38 2010] [error] [client 192.168.2.158] (13)Permission denied: exec of '/test/test' failed
[Fri Jul 02 21:11:38 2010] [error] [client 192.168.2.158] Premature end of script headers: test
[Fri Jul 02 21:11:39 2010] [error] [client 192.168.2.158] (13)Permission denied: exec of '/test/test' failed
[Fri Jul 02 21:11:39 2010] [error] [client 192.168.2.158] Premature end of script headers: test
[Fri Jul 02 21:11:39 2010] [error] [client 192.168.2.158] (13)Permission denied: exec of '/test/test' failed
[Fri Jul 02 21:11:39 2010] [error] [client 192.168.2.158] Premature end of script headers: test
[Fri Jul 02 21:11:39 2010] [error] [client 192.168.2.158] (13)Permission denied: exec of '/test/test' failed
[Fri Jul 02 21:11:39 2010] [error] [client 192.168.2.158] Premature end of script headers: test

person Nachbars Lumpi    schedule 02.07.2010    source источник


Ответы (1)


Я мог удариться головой. Решение было простым:

Alias /webdav/ /var/data/
<Location /webdav/>
        DAV On
        AuthType Basic
        AuthName "Restricted Files"
        AuthBasicProvider file
        AuthUserFile /etc/passwords
        AuthGroupFile /etc/groups
        <LimitExcept PROPFIND>
                 require group webdav
        </LimitExcept>
</Location>

Обратите внимание на «Псевдоним» вместо «ScriptAlias». О том, почему это работает, можно узнать здесь.

person Nachbars Lumpi    schedule 07.07.2010