Introducción
Este artículo tratará sobre la instalación y configuración del servidor WebDAV en Ubuntu Linux. WebDAV significa creación y control de versiones distribuidas en la web y permite a los usuarios conectados editar y compartir datos en línea a través del protocolo HTTP. Esto convierte a WebDAV en una opción popular para los desarrolladores cuando se combina, por ejemplo, con Subversion u OpenLink Virtuoso. WebDAV es compatible con una cantidad de clientes que van desde davfs2, lo que hace posible montar el almacenamiento de datos de WebDAV para incluirlo en el sistema de archivos local. Esto se puede hacer con el comando de montaje para varias aplicaciones GUI con soporte WebDAV nativo como Nautilus, konqueror, etc. Además, en esta guía combinaremos WebDAV con el servidor Apache2.
Escenario
En esta sección me gustaría describir un escenario utilizado en este tutorial. WebDAV puede ser un servicio muy flexible, que permite varios escenarios y ajustes de configuración. En este tutorial de WebDAV, comenzaremos con la configuración básica más simple de inicio de WedDAV y, a partir de ahí, la construiremos para que se ajuste a un entorno más complejo. Puede pensar en WebDAV como una extensión HTTP para la configuración de su sitio web existente. Normalmente, es posible que ya tenga su sitio web Apache en funcionamiento. Por lo tanto, en ese caso, todo lo que debe hacer para incluir el servicio WevbDAV es:
- crear un directorio de carga de datos adicional para usar con WebDAV
- configure su archivo de host virtual apache2 existente
Sin embargo, en esta guía comenzaremos desde cero a partir de la instalación de apache2, la creación del host virtual, etc. Por lo tanto, siéntase libre de saltar a cualquier sección que sea más apropiada para sus requisitos de configuración.
En esta guía configuraremos:
- webdav.local:este será un host virtual que se ejecuta en el servidor IP 10.1.1.61
- webdav.local/svn:este será un directorio habilitado para WebDAV
- /var/www/webdav:directorio para alojar el archivo de índice de webdav.local
- /var/www/webdav/svn:directorio para alojar el almacenamiento de datos de webdav.local/svn WebDAV
Edite su configuración de DNS según corresponda o modifique el archivo /etc/hosts de su cliente para incluir la resolución webdav.local del host anterior.
Instalación de Apache y WebDAV
En esta sección simplemente instalaremos apache2 y habilitaremos el módulo WebDAV. El módulo WebDAV viene con la instalación de apache2, sin embargo, no está habilitado de forma predeterminada. Todo esto se puede hacer con dos simples comandos:
$ sudo apt-get install apache2
A estas alturas, debería poder acceder a su sitio web predeterminado ubicado en http://webdav.local. Si todo va bien, deshabilite la página predeterminada ya que ya no tenemos uso para ella:
$ sudo a2dissite default $ sudo service apache2 reload
Configurar servidor virtual
En este punto, debemos configurar el host virtual con ServerName:webdav.local y el directorio adjunto /var/www/webdav. Para hacerlo, vaya a /etc/apache2/sites-disponible/:
$ cd /etc/apache2/sites-available/
y cree un nuevo archivo de configuración del sitio llamado webdav.local con el siguiente contenido:
<VirtualHost *:80> ServerAdmin webmaster@localhost Servername webdav.local DocumentRoot /var/www/webdav <Directory /> Options FollowSymLinks AllowOverride None </Directory> <Directory /var/www/webdav/> Options Indexes FollowSymLinks MultiViews AllowOverride None Order allow,deny allow from all </Directory> </VirtualHost>
Una vez hecho esto, debemos crear un directorio /var/www/webdav/ apropiado:
$ sudo mkdir /var/www/webdav
Cambiar propietario a apache:
$ sudo chown www-data.www-data /var/www/webdav
y habilite el nuevo sitio webdav.local
$ sudo a2ensite webdav.local
Para probarlo, podemos crear un archivo index.html simple:
$ sudo sh -c 'echo "Welcome from WebDAV.local" > /var/www/webdav/index.html'
y finalmente recargar el servidor web apache2:
$ sudo service apache2 reload
Ahora debería poder navegar su navegador a http://webdav.local y ver el mensaje:Bienvenido de WebDAV.local en su pantalla. Esto concluye la instalación del servidor web apache2 con host virtual webdav.local
Configuración de WebDAV
Es hora de habilitar el módulo de WebDAV con:
$ sudo a2enmod dav_fs Considering dependency dav for dav_fs: Enabling module dav. Enabling module dav_fs.
y reinicie el servidor apache:
$ sudo service apache2 restart
Ahora que todo está listo, podemos configurar un servidor WebDAV básico. Esto se puede hacer fácilmente creando un directorio adicional para almacenar datos WebDAV:
Configuración básica
$ sudo mkdir /var/www/webdav/svn
También es importante que apache pueda escribirlo; de lo contrario, obtendremos el error 403 Prohibido:
$ sudo chown www-data.www-data /var/www/webdav/svn/
y habilitar WebDAV para nuestro nuevo host virtual webdav.local. Esto se puede hacer agregando las siguientes líneas en el bloque
Alias /svn /var/www/webdav/svn <Location /svn> DAV On </Location>
Lo anterior significa que el directorio habilitado para WebDAV /var/www/webdav/svn será accesible a través de http://webdav.local/svn. Realice la modificación anterior de su archivo de configuración /etc/apache2/sites-available/webdav.local existente y reinicie su servidor web apache. Así es como se ve todo el archivo /etc/apache2/sites-available/webdav.local en esta etapa:
<VirtualHost *:80> ServerAdmin webmaster@localhost Servername webdav.local DocumentRoot /var/www/webdav <Directory /> Options FollowSymLinks AllowOverride None </Directory> <Directory /var/www/webdav/> Options Indexes FollowSymLinks MultiViews AllowOverride None Order allow,deny allow from all </Directory> Alias /svn /var/www/webdav/svn <Location /svn> DAV On </Location> </VirtualHost>
Es hora de probar nuestra configuración. Una forma de hacer esto es apuntar nuestro navegador a http://webdav.local/svn o, incluso mejor, usar la herramienta cadaver. Primero instale cadaver con:
$ sudo apt-get install cadaver
Cree el mismo archivo de datos con dd para cargarlo en su directorio WebDAV y cárguelo:
$ dd if=/dev/zero of=mydata.dat bs=1M count=10 10+0 records in 10+0 records out 10485760 bytes (10 MB) copied, 0.075726 s, 138 MB/s $ cadaver http://webdav.local/svn dav:/svn/> put mydata.dat Uploading mydata.dat to `/svn/mydata.dat': Progress: [=============================>] 100.0% of 10485760 bytes succeeded. dav:/svn/> quit Connection to `webdav.local' closed.
Ahora debería tener el servidor WebDAV básico configurado y listo para usar. En la siguiente sección agregaremos algo de autenticación de usuario básica.
WebDAV con autenticación de usuario
Si tiene la intención de implementar su servidor WebDAV en un host remoto, es más que recomendable implementar al menos alguna autenticación básica. Afortunadamente, esto se puede hacer fácilmente usando htpasswd comando y reconfigurando nuestro archivo de configuración /etc/apache2/sites-available/webdav.local existente.
Primero cree un directorio donde desee almacenar el archivo de contraseña del webdav. Esta es una ubicación de su elección. En este tutorial uso /usr/local/apache2/:
$ sudo mkdir /usr/local/apache2/
Luego, use htpasswd para crear un nuevo archivo de contraseña con el que se autenticarán todos los usuarios.
$ sudo htpasswd -c /usr/local/apache2/webdav.passwords lubos
Si necesita agregar más usuarios, use la sintaxis anterior, pero omita la opción -c, ya que sobrescribirá su archivo existente.
Ahora que el archivo de autenticación está listo, debemos agregar la autenticación a nuestro /etc/apache2/sites actual -disponible/archivo de configuración webdav.local. Los nuevos cambios se resaltan en negrita:
<VirtualHost *:80> ServerAdmin webmaster@localhost Servername webdav.local DocumentRoot /var/www/webdav <Directory /> Options FollowSymLinks AllowOverride None </Directory> <Directory /var/www/webdav/> Options Indexes FollowSymLinks MultiViews AllowOverride None Order allow,deny allow from all </Directory> Alias /svn /var/www/webdav/svn <Location /svn> DAV On AuthType Basic AuthName "webdav" AuthUserFile /usr/local/apache2/webdav.passwords Require valid-user </Location> </VirtualHost>
A partir de ahora, si intenta acceder a su servidor WebDAV, primero deberá autenticarse. Aquí hay un ejemplo de autenticación WebDAV:
$ cadaver http://webdav.local/svn Authentication required for webdav on server `webdav.local': Username: lubos Password: dav:/svn/> ls Listing collection `/svn/': succeeded. mydata.dat 10485760 Feb 20 14:45 dav:/svn/>
Limitar el acceso a WebDAV
Además, es recomendable limitar el acceso WebDAV a un número limitado de usuarios. Por ejemplo, si queremos permitir que solo el usuario único "Lubos" acceda a nuestro repositorio WebDAV, podemos hacerlo agregando una cláusula
<Limit PUT POST DELETE PROPFIND PROPPATCH MKCOL COPY MOVE LOCK UNLOCK> AuthType Basic AuthName "webdav" AuthUserFile /usr/local/apache2/webdav.passwords Require user lubos </Limit>
Dado que los usuarios pueden acceder y cargar archivos en cualquier directorio habilitado para WebDAV, también se recomienda no permitir el archivo .httaccess. Por lo tanto, agregue:
AllowOverride None
dentro de la directiva
Montaje de directorio habilitado para WebDAV
Como ya se mencionó antes, WebDAV es compatible con una gran cantidad de clientes. También es posible montar el directorio WebDAV en un sistema local para que actúe como parte del sistema de archivos. Para hacerlo, primero debemos instalar davfs2 como usuario root:
# apt-get install davfs2
luego crea un punto de montaje:
# mkdir /mnt/webdav
y finalmente montarlo con un comando de montaje:
# mount.davfs http://webdav.local/svn /mnt/webdav/ Please enter the username to authenticate with server http://webdav.local/svn or hit enter for none. Username: lubos Please enter the password to authenticate user lubos with server http://webdav.local/svn or hit enter for none. Password: # cd /mnt/webdav/ # ls lost+found mydata.dat # touch linuxcareer.com.txt # sync
Conclusión
Este artículo describió una configuración básica del servicio WebDAV utilizando el servidor web Apache2 para comenzar. Hay algunos problemas de seguridad que se deben considerar, por lo que debe hacer su tarea y consultar la documentación de Apache Module mod_dav para obtener más ajustes de configuración y mejoras de seguridad para mejorar su configuración.