WebDAV no CentOS – recebendo erro 403 ao tentar fazer upload

WebDAV no CentOS – recebendo erro 403 ao tentar fazer upload

Configurei o Apache2 para permitir WebDav em um diretório (CentOS 5/Plesk 8.6):

  • WebDav está habilitado em httpd.conf
  • /var/lib/dav/lockdb é gravável pelo Apache
  • Meu diretório de destino é chmod 777
  • Meu diretório de destino é chown apache:psacln
  • usando autenticação básica (configuração pela interface Plesk)

no meu vhost.conf eu tenho:

<Diretório /var/www/vhosts/domain.com/httpdocs/target_dir>
        Davi em
    Permitir substituir nenhum
        Ordem permitir, negar
        Permitir de todos
</Diretório>

Posso me conectar ao diretório usando autenticação adequada e baixar arquivos dele. Mas não posso escrever para o diretório. Recebo um erro 403 quando tento fazer upload ou criar um diretório.

Alguém tem alguma dica?

Desde já, obrigado -

Atualização - 6/5Usando os comentários abaixo, isolei o problema como sendo algum tipo de conflito com diretórios protegidos .htpasswd. Posso criar um diretório desprotegido e ativar os uploads do WebDAV sem problemas. Mas depois que eu habilito o Basic Auth no diretório, tudo dá errado. Consigo ler, mas não faço mais upload.

Este é o meu vhost.conf:

<Diretório /var/www/vhosts/domain.com/subdomains/subdomain/httpdocs/>
        AuthUserFile /var/www/.htpasswd
        AuthName "Login"
        AuthType Básico
        Exigir usuário válido

        DAV ativado
    Permitir substituir nenhum
        <Limite PUT POST DELETE PROPFIND PROPPATCH MKCOL COPY MOVE LOCK UNLOCK>
                Exigir usuário válido
        </Limite>
</Diretório>

Atualização 6/6

Consegui fazer o WebDAV funcionar em um domínio diferente com o mínimo de esforço. A única diferença entre os dois domínios é que naquele que se recusa a permitir acesso de gravação eu tenho uma diretiva DocumentRoot:

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

Isso pode estar causando alguns problemas?

Responder1

Recentemente, enfrentei o mesmo problema em meu sistema Fedora 10. No meu caso, o culpado foi algum redirecionamento estranho que eu estava fazendo no Apache. Especificamente, eu uso um sistema de gerenciamento de conteúdo (Drupal, para ser exato) que dentro dele .htaccess inclui a seguinte lógica de redirecionamento para redirecionar arquivos ausentes para um script 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]

Faz sentido que o acima mencionado afete apenas o método PUT, pois nesse caso REQUEST_FILENAME não existe.

Não ter a área WebDAV dentro da área Drupal, o que parece uma restrição razoável, resolve o problema.

Além disso, acho provável que o SELinux resulte em um erro diferente, mas isso não foi mencionado na discussão acima. Você tentou desabilitar o SELinux?

Responder2

Mesmo problema. Resolvido por:

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

Responder3

Mesmo problema.

Resolvido criando um arquivo .htaccess no diretório webdav com:

RewriteEngine off

Encontrado aqui:http://annoyingtechnicaldetails.wordpress.com/2007/07/20/webdav-vs-drupal-htaccess-redirect-rules/

Responder4

Você tentou usar limit: (por exemplo)

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

informação relacionada