Назад | Перейти на главную страницу

WebDAV на CentOS - получение ошибки 403 при попытке загрузки

Я настроил Apache2, чтобы разрешить WebDav в каталоге (CentOS 5 / Plesk 8.6):

в моем vhost.conf у меня есть:

<Directory /var/www/vhosts/domain.com/httpdocs/target_dir>
        Dav On
    AllowOverride none
        Order allow,deny
        Allow from all
</Directory>

Я могу подключиться к каталогу с помощью проверки подлинности и загружать из него файлы. Но я не могу писать в реж. Я получаю ошибку 403 при попытке загрузить или создать каталог.

У кого-нибудь есть советы?

Заранее спасибо -

Обновление - 6/5 Используя комментарии ниже, я выделил проблему как некоторый конфликт с каталогами, защищенными .htpasswd. Я могу создать незащищенный каталог и разрешить загрузку WebDAV в порядке. Но как только я включаю базовую аутентификацию в каталоге, все идет на юг. Я могу читать, но больше не загружаю.

Это мой vhost.conf:

<Directory /var/www/vhosts/domain.com/subdomains/subdomain/httpdocs/>
        AuthUserFile /var/www/.htpasswd
        AuthName "Login"
        AuthType Basic
        Require valid-user

        DAV on
    AllowOverride none
        <Limit PUT POST DELETE PROPFIND PROPPATCH MKCOL COPY MOVE LOCK UNLOCK>
                Require valid-user
        </Limit>
</Directory>

Обновление 6/6

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

    DocumentRoot /var/www/vhosts/domain.com/httpdocs/app/webroot

Может это вызвать проблемы?

Та же проблема. Решено:

<Location /xyz>
    DAV On
    AuthType Digest
    AuthName "webdav-xmarks"
    AuthDigestProvider file
    AuthUserFile "/home/xy/xba/digest-password"
    Require valid-user
    RewriteEngine off <-- this part solved it!
</Location>

Недавно я столкнулся с той же проблемой в своей системе Fedora 10. В моем случае виновником было какое-то странное перенаправление, которое я делал в Apache. В частности, я использую систему управления контентом (точнее, Drupal), которая в .htaccess включает следующую логику перенаправления для перенаправления отсутствующих файлов в сценарий PHP:

# Rewrite URLs of the form 'x' to the form 'index.php?q=x'.
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !=/favicon.ico
RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]

Имеет смысл, что приведенное выше влияет только на метод PUT, поскольку в этом случае REQUEST_FILENAME не существует.

Отсутствие области WebDAV внутри области Drupal, что кажется разумным ограничением, решает проблему.

Кроме того, я думаю, что SELinux скорее всего приведет к другой ошибке, но это не упоминается в обсуждении выше. Вы пробовали отключить SELinux?

Та же проблема.

Решено путем создания файла .htaccess в каталоге webdav с помощью:

RewriteEngine off

Найдено здесь: http://annoyingtechnicaldetails.wordpress.com/2007/07/20/webdav-vs-drupal-htaccess-redirect-rules/

Что говорит ваш error_log? Это первое место, куда нужно смотреть.

Также загляните в обычный журнал access_log; иногда некоторые клиенты DAV будут пытаться выполнять действия с DAV в каталогах более высокого уровня, чем те, в которых вы выполняете свою работу, что требует от них, по крайней мере, доступа к DAV только для чтения вплоть до корня виртуального хоста.

Вы пробовали использовать лимит: (например)

  <Limit PUT POST DELETE PROPFIND PROPPATCH MKCOL COPY MOVE LOCK UNLOCK>
    Require valid-user
  </Limit>

Как сказал Рам Прасад, вам понадобится этот оператор Limit в записи каталога в вашем файле vhosts.config.

Вам также понадобится каталог .DAV, принадлежащий apache, в том же каталоге, что и ваш файл .htaccess. Я обнаружил, что это обычно вызывает ошибку 403, поскольку Apache использует эту папку для записи временных файлов.

Смотрите также: http://www.webdav.org/mod_dav/install.html