
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>