
Configuré Apache2 para permitir WebDav en un directorio (CentOS 5/Plesk 8.6):
- WebDav está habilitado en httpd.conf
- Apache puede escribir en /var/lib/dav/lockdb
- Mi directorio de destino es chmod 777
- Mi directorio de destino es chown apache:psacln
- usando autenticación básica (configurada mediante la interfaz Plesk)
en mi vhost.conf tengo:
<Directorio /var/www/vhosts/domain.com/httpdocs/target_dir> David On Permitir anulación ninguno Orden permitida, denegada Permitir de todos </Directorio>
Puedo conectarme al directorio mediante autenticación fina y descargar archivos desde él. Pero no puedo escribir en el directorio. Recibo un error 403 cuando intento cargar o crear un directorio.
¿Alguien tiene algún consejo?
Gracias de antemano -
Actualización - 6/5Usando los comentarios a continuación, he aislado el problema como algún tipo de conflicto con los directorios protegidos .htpasswd. Puedo crear un directorio desprotegido y habilitar bien las cargas WebDAV. Pero una vez que habilito la autenticación básica en el directorio, todo va mal. Puedo leer pero ya no subir.
Este es mi vhost.conf:
<Directorio /var/www/vhosts/domain.com/subdomains/subdomain/httpdocs/> AuthUserFile /var/www/.htpasswd Nombre de autenticación "Iniciar sesión" Tipo de autenticación básico Requerir usuario válido DAV activado Permitir anulación ninguno <Limitar PONER POST BORRAR PROPFIND PROPPATCH MKCOL COPIAR MOVER BLOQUEO DESBLOQUEAR> Requerir usuario válido </límite> </Directorio>
Actualización 6/6
Pude hacer que WebDAV funcionara en un dominio diferente con un mínimo esfuerzo. La única diferencia entre los dos dominios es que en el que se niega a permitir el acceso de escritura tengo una directiva DocumentRoot:
DocumentRoot /var/www/vhosts/domain.com/httpdocs/app/webroot
¿Podría esto estar causando algunos problemas?
Respuesta1
Recientemente tuve el mismo problema en mi sistema Fedora 10. En mi caso, el culpable fue una extraña redirección que estaba haciendo en Apache. Específicamente, uso un sistema de gestión de contenidos (Drupal, para ser exactos) que dentro de su .htaccess incluye la siguiente lógica de redirección para redirigir archivos faltantes a un 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]
Tiene sentido que lo anterior solo afecte al método PUT ya que en ese caso REQUEST_FILENAME no existe.
No tener el área WebDAV dentro del área de Drupal, lo que parece una restricción razonable, soluciona el problema.
Además, creo que es probable que SELinux produzca un error diferente, pero no se menciona en la discusión anterior. ¿Intentaste deshabilitar SELinux?
Respuesta2
El mismo problema. Resuelto 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>
Respuesta3
El mismo problema.
Resuelto creando un archivo .htaccess en el directorio webdav con:
RewriteEngine off
Encontrado aquí:http://annoyingtechnicaldetails.wordpress.com/2007/07/20/webdav-vs-drupal-htaccess-redirect-rules/
Respuesta4
¿Intentaste usar límite: (por ejemplo)
<Limit PUT POST DELETE PROPFIND PROPPATCH MKCOL COPY MOVE LOCK UNLOCK>
Require valid-user
</Limit>