Groupe 2F (stockage)

Date de création : 10 avril 2004
Dernière modification : 10 avril 2004
Diffusion : internet

Installation du package serveur DAV esup V1

Ce document décrit l'installation du package serveur DAV esup V1. Il est préférable d'avoir lu le document explicatif auparavant.

Composition du package

modules apache

Ce sont les modules décrits dans le document explicatif :

Utilitaires

Pré-requis

On suppose qu'un apache V2 est déja installé, avec le module mod_dav actif.

Pour l'utilitaire perl fourni, le module Perl-LDAP doit être installé au préalable.
Il est disponible à :

http://perl-ldap.sourceforge.net/

Compilation et installation des modules

Si apache V2 est installé dans /usr/local/apacheV2 :

La compilation et l'installation des modulesse fait depuis le répertoire source du package :

/usr/local/apache/bin/apxs -ic mod_auth_esup.c
/usr/local/apache/bin/apxs -ic mod_userdir-esup.c

Exemple de paramétrage Apache

Est présenté ici un extrait de paramétrage type.
A charge à chaque établissement de l'adapter.

On suppose dans cet exemple que la racine du site webdav est sur l'espace File-Système (FFS) /home/www/htdocs.
C''est à priori une page d'accueil de l'espace de travail.

La racine FS des 'espaces de stockage personnel' des utilisateurs est, dans l'exemple, sous /home/www/users/
Bien entendu, ceci est complètement paramétrable dans la config apache.

Le nom du serveur DAV est : docweb.univ-fr.
L'URL de l'espace personnel de unuser est : http://docweb.univ-fr/~unuser/

Dans la config proposée, l'espace personnel de unuser n'est pas accessible par une autre URL (du genre http://docweb.univ-fr/users/u/un/unuser/)

Nous proposons une configuration qui propose :

  1. sur le port 81, un accès de confiance, dédié au portail, et qui transporte dans l'entete http le nom de l'utilisateur et un mot de passe global (un secret partagé entre le portail et le serveur DAV).
    Seul le portail y a accès (contrôle par adresse IP).
  2. en https, sur le port 443, un accès aux navigateurs W3, avec une authentification LDAP . Cet accès peut être étendu à DAV, donc à des O.S. ou clients DAV.

fichier httpd.conf

...
Listen 194.214.218.117:81
<IfDefine SSL>
Listen 194.214.218.117:443
</IfDefine>
...
LoadModule auth_esup_module modules/mod_auth_esup.so
#LoadModule auth_module modules/mod_auth.so
...
LoadModule userdir_esup_module modules/mod_userdir-esup.so
...
LoadModule dav_module modules/mod_dav.so
LoadModule dav_fs_module modules/mod_dav_fs.so
...
<Directory />
AllowOverride AuthConfig
Dav off
...
</Directory>
AccessFileName .htaccess
<Files ~ "^\.ht">
Order allow,deny
Deny from all
Satisfy All
</Files>
...
DavLockDB /tmp/DavLock
DavMinTimeout 600
DavDepthInfinity off
LimitXMLRequestBody 1000000
...
<IfModule mod_userdir-esup.c>
UserDir /home/www/users
UserDir with_hash
</IfModule>
...
<IfDefine SSL>
# globalSSL contient les directives SSL globales a la config
include conf/globalSSL.conf
</IfDefine>
...
#########################################################################
# serveur docweb 'trusted' (en environnement de confiance)
#########################################################################
<VirtualHost 194.214.218.117:81>
ServerName docweb.univ.fr
include conf/storage_trusted.conf
</VirtualHost>
#########################################################################
# serveur docweb https : authentif ldap
#########################################################################
<IfDefine SSL>
<VirtualHost 194.214.218.117:443>
ServerName docweb.univ.fr
#untrustedSSL.conf contient les directives SSL dpecifiques a docweb
include conf/storage_untrustedSSL.conf
include conf/storage_untrusted.conf
</VirtualHost>
</IfDefine>

Fichier storage_trusted.conf

A adapter selon le site. C'est le serveur virtuel dédié au portail, avec authentification par mot de passe partagé.

DocumentRoot /home/www/htdocs
AccessFileName .htaccess
DirectoryIndex index.html index.htm


#--- pour traiter les fichiers .rtf avec IE5.5, il faut un droit de --
#--- http OPTIONS non restreint, et le FilesMatch suivant --
<FilesMatch "_vti_">
Satisfy Any
</FilesMatch>

#--- pour IE, sinon demande authentif supplementaire ----
<Directory /home/www/htdocs/_vti_bin>
Satisfy Any
</Directory>

#--- secu ----
<Directory /home/www>
Dav Off
</Directory>

# home-directories des utilisateurs
<Directory /home/www/users>
AllowOverride AuthConfig
Dav on
Options Indexes
Order allow,deny
Allow from www.xxx.yyy.zzz
AuthType Basic
AuthName "espace de stockage univxx, mode trusted"
<IfModule mod_auth_esup.c>
Esup www
Esup_MustGivePassword On
Esup_Password titi
Esup_Authoritative On
</IfModule>
</Directory>

<LocationMatch "/\.ht">
Order allow,deny
Deny from all
</LocationMatch>

Remarque importante

Nous avons mis la directive 'Dav On' au niveau de la directory /home/www/users ; ceci nest pas gênant, car ce répertoire n'est pas dans le 'champ W3' du serveur virtuel.

Imaginons que les répertoires utilisateurs soient dans la directory /home/www/htdocs/users ; ça signifie par exemple que l'espace de stockage de unuser est également accèssible en W3 par l'URL :
http://docweb.univ.fr/users/u/un/unuser

Si on met la directive Dav On à la directory /home/www/htdocs/users, ça revient à donner un accès Dav à toute personne, même sans authentification, au niveau http://docweb.univ.fr/users (le require user se situe au niveau de l'espace utilisateur, donc plus bas dans l'arborescence).

La solution : ne pas mettre de Dav On à ce niveau ; en fin de config du serveur virtuel, ajouter ceci :

<LocationMatch "^/~">
Dav on
</LocationMatch>

Fichier storage_untrusted.conf

A adapter selon le site. C'est un serveur virtuel avec authentification par LDAP. Accessible par des navigateurs W3, voire des OS sachant parler DAV.

DocumentRoot /home/www/htdocs
AccessFileName .htaccess
DirectoryIndex index.html index.htm


#--- pour traiter les fichiers .rtf avec IE5.5, il faut un droit de --
#--- http OPTIONS non restreint, et le FilesMatch suivant --
<FilesMatch "_vti_">
Satisfy Any
</FilesMatch>

#--- pour IE, sinon demande authentif supplementaire ----
<Directory /home/www/htdocs/_vti_bin>
Satisfy Any
</Directory>

#--- secu ----
<Directory /home/www>
Dav Off
</Directory>

# home-directories des utilisateurs
<Directory /home/www/users>
AllowOverride AuthConfig
#Dav off si on ne veut que des navigateurs W3
Dav on
Options Indexes
Order allow,deny
Allow from all
AuthType Basic
AuthName "espace de stockage univ xx"
<IfModule util_ldap.c>
AuthLDAPAuthoritative on
AuthLDAPURL "ldap://ldap1.univ.fr ldap://ldap2.univ.fr/dc=univ,dc=fr?uid?sub?(objectClass=n2ClassPersonnel)
</IfModule>
</Directory>

<LocationMatch "/\.ht">
Order allow,deny
Deny from all
</LocationMatch>

Remarques

Home directories webDav des utilisateurs

Cette version de serveur DAV suppose que les dossiers personnels des utilisateurs sont pré-existants. Il est d'ailleurs probable que ce pré-requis soit imposé par les versions à venir, il n'est pas du rôle d'un serveur DAV de se charger de la création de cet espace.

Ce qui est décrit dans ce paragraphe ne concerne que cette version de serveur DAV. La version définitive aura d'autres modalités de création de l'espace personnel.

L'espace personnel de chaque utilisateur doit donc exister, avec les droits File système nécessaires (en fait, permettre au compte d'exécution de l'instance d'apache concernée de réaliser les opérations nécessaires sur les fichiers et sous-répertoires).

Ainsi, dans l'exemple précédent, pour l'utilisateur unuser, le répertoire /home/storage/users/u/un/unuser doir être créé lors de la création du compte utilisateur, et contenir un fichier .htaccess contenant la ligne suivante :

require user unuser

Utilitaires

Ce sont des scripts schell ou perl permettant d'automatiser certaines tâches ; ces scripts sont à exécuter avec le compte UNIX sous lequel s'exécute le serveur apache.

creeDirs.sh

C'est un script shell à usage unique, qui permet de 'formater' le répertoire support des home-directories webDav des utilisateurs.

Ce répertoire 'racine' doit exister préalablement.

Il faut indiquer le nom de ce répertoire racine dans la variable REP_USER_DAV.
Eventuellement, décommenter le seconte variable LISTE qui les répertoires de hachage peuvent contenir des caractères numériques.

syncDavLdap.pl

C'est un script perl qui va controler la synchronisation entre les home-directories des utilisateurs et des entrées LDAP ; in peut éventuellement mettre à jour ces home-directories.

Il doit donc être exécuté régulièrement, à l'aide d'une tâche programmée.

S'il est exécuté sans argument, une aide est affichée.

Il génère un fichier de résultat : syncDavLdap.txt
Il génère un code de retour différent de 0 en cas d'anomalies.

Il supporte les arguments suivants, précédés d'un tiret (-) :

syncDavLdap.sh

C'est un script shell d'exemple, qui exécute le script syncDavLdap.pl. Il est destiné à être exécuté par un cron.

Il envoie un mail aux administrateurs en cas d'anomalie d'exécution.