WebDAV (Web-based Distributed Authoring and Versioning - Autoría y versionado distribuidos por Web - Creación y control de versiones distribuidos en Web), desarrollado por tres grupos de trabajo de la IETF, es una serie de extensiones del protocolo HTTP/HTTPS que permite a los usuarios editar y administrar archivos de forma colaborativa en servidores web remotos.
WebDAV permite, de forma sencilla a los usuarios, guardar, editar, copiar, mover y compartir archivos directamente en los servidores web, como si de un servidor Samba o FTP se tratara. Actualmente el protocolo WebDAV es un estándar, y lo tenemos disponible de manera predeterminada en todos los sistemas operativos de escritorio, haciendo que los ficheros de un servidor WebDAV aparezcan como almacenados en un directorio.
Podemos decir que WebDAV nos permitirá que varios usuarios puedan estar trabajando con los ficheros (imágenes, documentos, vídeos, etc.) almacenados en el servidor sin que este trabajo entorpezca el de los demás usuarios, puesto que cuando un usuario esté manipulando un fichero, WebDAV lo bloqueará, y hasta que no sea liberado, otro usuario no podrá hacer uso de él.
Apache soporta WebDAV, y también otros servidores web. Dependiendo del servidor web que tengamos, la sintaxis de la configuración de WebDAV es diferente, pero al ser un protocolo estándar, el funcionamiento en todos ellos es el mismo.
También existen diferentes clientes WebDAV para los diferentes sistemas operativos, con más o menos características.
Como se ha dicho, WebDAV está basado en HTTP/HTTPS, por lo cual para la transferencia utiliza el puerto 80/443, los cuales suelen estar desbloqueados en los cortafuegos. Todo funciona a través de estos puertos, y se puede resumir diciendo que HTTP dio acceso de lectura a la Web y WebDAV le da acceso de escritura.
La configuración de WebDAV en Apache necesita de la activación de dos módulos: mod_dav y mod_dav_fs.
# a2enmod dav dav_fs
Por otro lado, para configurar WebDAV sobre un directorio concreto, es imprescindible que después de crearlo se le asigne el usuario y grupo de Apache, que en Debian es www-data en los dos casos.
Los directorios usados con WebDAV deben ser usados exclusivamente a través de Apache, y no además por otros servicios como por ejemplo FTP.
Supongamos que dentro del sitio www.asir.com, queremos crear un directorio denominado nube, con el objetivo de que sirva de almacenamiento de ficheros dentro del servidor web.
# mkdir /var/www/asir/nube
# chown www-asir:www-asir /var/www/asir/nube
Por último, necesitamos hacer la configuración dentro de Apache, para lo que utilizaremos dos directivas: DavLockDB y Dav.
Directiva DavLockDB
Sintaxis: DavLockDB ruta-a-prefijo-de-fichero
Contexto: server config, virtual host
Con esta directiva especificamos la ruta y el prefijo de los nombres de ficheros que utiliza Apache para gestionar los bloqueos de los ficheros que estén siendo manipulados a través de WebDAV. El usuario y/o el grupo de Apache debe tener permiso de escritura sobre el directorio donde se van a crear las bases de datos de bloqueos.
Los directorios relativos son con respecto a ServerRoot.
Directiva Dav
Sintaxis: Dav on|off
Contexto: directory
Esta directiva permite activar o desactivar WebDAV sobre el directorio donde se aplique. Y una vez que se active, no podrá ser desactivado para ninguno de sus subdirectorios.
Para el directorio nube haremos los siguiente:
<VirtualHost *:80>
ServerName www.asir.com
...
DavLockDB /tmp/asir-DavLock
<Directory "/var/www/asir/nube">
Dav on
</Directory>
</VirtualHost>
Con todo esto, y tras reiniciar el servicio, ya podemos acceder remotamente al directorio nube a través de un cliente WebDAV. Por ejemplo, con el administrador de ficheros Caja que encontramos en el escritorio Mate de Debian, podemos pulsar sobre el menú "Ir a" y elegir la opción "Ubicación", donde escribiremos lo siguiente:
O bien, elegimos la opción "Lugares" del menú principal del escritorio Mate, y ahí seleccionamos la opción "Conectarse al servidor". Se nos muestra una ventana que rellenamos:

Por supuesto, esta forma de configuración es muy insegura, pues cualquier usuario podría usar el recurso nube de WebDAV, es imprescindible, que a dicho directorio, le apliquemos una configuración de autenticación de las que hemos visto, para que solo se conecten los usuarios que queremos. De todas formas, no es posible evitar que un usuario de los permitidos se dedique a llenar todo el espacio asignado, es algo que hay que vigilar, y solo usuarios de confianza debería usar el recurso.
Evidentemente, también se puede acceder al recurso WebDAV de ejemplo, pero solo en modo lectura, utilizando la URL http://www.asir.com/nube.
Otra posibilidad para trabajar con un recurso WebDAV es a través del cliente davfs2, que nos da la capacidad de acceder a dichos recursos como un sistema de archivos típico, lo que permite su uso con aplicaciones estándar que no traen integrado el soporte para WebDAV, por ejemplo, con LibreOffice no podríamos editar documentos accediendo con los métodos anteriores, pero sí a través de davfs2.
Para disponer del cliente davfs2 hay que instalar el paquete del mismo nombre:
# apt install davfs2
Durante la instalación se nos pregunta si queremos permitir a los usuarios sin privilegios montar recursos WebDAV, a lo que contestamos afirmativamente.
Tras la instalación, se ha creado el grupo davfs2, y a él deben pertenecer todos los usuarios que queramos que puedan montar recursos WebDAV con el cliente davfs2.
# adduser davfs2 usuario
Posteriormente, creamos el punto de montaje y modificamos /etc/fstab para que los usuarios puedan montar el recurso WebDAV en el sistema.
# mkdir -p /var/webdav/nube
# echo "http://www.asir.com/nube /var/webdav/nube davfs rw,noauto,user 0 0" >> /etc/fstab
# reboot
A partir de ahora, "usuario" puede montar el recurso WebDAV.
$ mount /var/webdav/nube
Please enter the username to authenticate with server
http://www.asir.com/nube or hit enter for none.
Username:
Please enter the password to authenticate user with server
http://www.asir.com/nube or hit enter for none.
Password:
Las posibilidades de montaje son muy variadas, incluyendo la configuración de sudo para los usuarios, la situación concreta hará que busquemos lo más adecuado.
Por último, es posible también evitar que se pida el usuario y la clave de forma interactiva, consiguiéndose una mayor automatización del montaje. Para ello, el usuario debe introducir en el fichero ~/.davfs2/secrets (ya existe) una línea con el siguiente formato:
URL_del_servidor_WebDAV usuario_del_servidor_webDAV clave_del_usuario_del_servidor_webDAV
Como la contraseña quedará visible en el fichero, deberíamos protegerlo correctamente para que no se pueda acceder a él, por ejemplo, poniéndole la máscara de permisos 600.
Si el acceso al recurso WebDAV lo hubiéramos hecho sin autenticación, algo no aconsejable, la línea anterior debería tener el siguiente formato:
URL_del_servidor_WebDAV "" ""