Instalación de servidor de datos con apache, webdav y ldap

WebDav es un protocolo que proporciona funcionalidades para crear, cambiar y mover documentos en un servidor remoto (típicamente un servidor web). Esto se utiliza sobre todo para permitir la edición de los documentos que sirve un servidor web, pero puede también aplicarse a sistemas de almacenamiento generales basados en web, que pueden ser accedidos desde cualquier lugar. La mayoría de los sistemas operativos modernos proporcionan soporte para WebDAV, haciendo que los ficheros de un servidor WebDAV aparezcan como almacenados en un directorio local.

Hoy aprenderemos como instalar un servidor WebDav en nuestro sistema operativo Linux utilizando apache.

  • Configución del Servidor

Lo primero que debemos hacer es instalar la paqueteria necesaria para la configuración de los servicios los cuales serian:

  1. Openssh para las conexiones remotas al servidor
  2. Ldap para la autenticación
  3. Apache2 como servidor web
  4. Webdav como modulo de apache para la gestión de archivos

aptitude install apache2 openssh-server php-http-webdav-server ldap-utils libaprutil1-ldap libldap-2.4.2 libpam-ldap libnss-ldap

Luego modificamos los archivos /etc/pam_ldap.conf y /etc/libnss-ldap.conf para que nos queden de la siguiente manera.

host NUESTRO_SERVIDOR_LDAP
base dc=DC_LDAP
timelimit 30
bind_timelimit 2
bind_policy soft
pam_password exop

Aquí debes modificar el NUESTRO_SERVIDOR_LDAP por el nombre de tu servidor LDAP y DC_LDAP con su DC

Ahora modificamos el archivo /etc/apache2/sites-available/default de la siguiente manera.

<VirtualHost *:80>
        ServerAdmin aadrian@opensoluciones.com
        ServerName datos.opensoluciones.com
        ServerAlias datos
 
        DocumentRoot /var/www/datos
        <Directory />
                Options FollowSymLinks
                AllowOverride None
        </Directory>
        <Directory /var/www/>
                Options Indexes FollowSymLinks MultiViews
                Options -Indexes
                AllowOverride None
                Order allow,deny
                allow from all
        </Directory>
 
        ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
        <Directory "/usr/lib/cgi-bin">
                AllowOverride None
                Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
                Order allow,deny
                Allow from all
        </Directory>
 
        Alias /webdav /var/www/datos
 
        <Location /webdav>
           DAV On
 
           AuthPAM_Enabled on
           AuthGROUP_Enabled on
           AuthType Basic
           AuthName "webdav"
           AuthBasicAuthoritative off
 
           <LimitExcept GET OPTIONS>
                 Require group "admwebdav"
           </LimitExcept>
       </Location>
 
       ErrorLog ${APACHE_LOG_DIR}/error.log
 
        # Possible values include: debug, info, notice, warn, error, crit,
        # alert, emerg.
        LogLevel warn
 
        CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

Aquí debes cambiar el ServerAdmin, ServerName, ServerAlias por el que corresponda y debes tener en cuenta que para que esta configuración funcione debes crear un grupo en el servidor LDAP que para este ejemplo se llama admwebdav el cual es el que tendrá privilegios de conexión a la carpeta WebDav para agregar, modificar y eliminar archivos.

Creamos la carpeta datos en el directorio /var/www/ la cual contendra los archivos a manejar en el servidor.

mkdir /var/www/datos
chmod -R 755 /var/www/datos
chown -R "www-data.www-data" /var/www/datos

Activamos los siguientes módulos de apache.

a2enmod authn_file
a2enmod dav
a2enmod dav_fs

 

Por ultimo reiniciamos el servicio apache con.

invoke-rc.d apache2 restart

 

  • Configuración del Cliente

 

Para realizar la conexión remota desde un cliente a la carpeta compartida de nuestro servidor a traves de WEBDAV debemos hacer lo siguiente.

 

Debemos abrir una ventana de nautilus y a continuación darle en Archivo => Conectar con el Servidor

 

Se nos abrira una ventana como la siguiente debemos introducir los datos de conexión como se muestran en el ejemplo.

 

Tags: