WebDAV на CentOS — при попытке загрузки возникает ошибка 403

WebDAV на CentOS — при попытке загрузки возникает ошибка 403

Я настроил Apache2 для разрешения WebDav в каталоге (CentOS 5 / Plesk 8.6):

  • WebDav включен в httpd.conf
  • /var/lib/dav/lockdb доступен для записи Apache
  • Мой целевой каталог — chmod 777
  • Мой целевой каталог — chowned apache:psacln
  • с использованием базовой аутентификации (настраивается через интерфейс Plesk)

в моем vhost.conf есть:

<Каталог /var/www/vhosts/domain.com/httpdocs/target_dir>
        Дэв Он
    AllowOverride нет
        Приказ разрешить,запретить
        Разрешить всем
</Каталог>

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

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

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

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

Это мой vhost.conf:

<Каталог /var/www/vhosts/domain.com/subdomains/subdomain/httpdocs/>
        Файл аутентификации пользователя /var/www/.htpasswd
        Имя_авторизации "Логин"
        Базовый тип аутентификации
        Требовать действительного пользователя

        DAV на
    AllowOverride нет
        <Ограничить РАЗМЕСТИТЬ УДАЛИТЬ PROPFIND PROPPATCH MKCOL КОПИРОВАТЬ ПЕРЕМЕЩЕНИЕ ЗАБЛОКИРОВАТЬ РАЗБЛОКИРОВАТЬ>
                Требовать действительного пользователя
        </Ограничение>
</Каталог>

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

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

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

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

решение1

Недавно я боролся с той же проблемой на моей системе 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?

решение2

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

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

решение3

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

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

RewriteEngine off

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

решение4

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

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

Связанный контент