Présentation
Cet article traitera de l'installation et de la configuration du serveur WebDAV sur Ubuntu Linux. WebDAV signifie Web Distributed Authoring and Versioning et permet aux utilisateurs connectés de modifier et de partager des données en ligne via le protocole HTTP. Cela fait de WebDAV un choix populaire pour les développeurs lorsqu'il est combiné, par exemple, avec Subversion ou OpenLink Virtuoso. WebDAV est pris en charge par un certain nombre de clients allant de davfs2, ce qui permet de monter le stockage de données WebDAV à inclure dans le système de fichiers local. Cela peut être fait avec la commande mount vers diverses applications GUI avec le support WebDAV natif telles que Nautilus, konqueror, etc. De plus, dans ce guide, nous combinerons WebDAV avec le serveur Apache2.
Scénario
Dans cette section, je voudrais décrire un scénario utilisé dans ce tutoriel. WebDAV peut être un service très flexible, qui permet un certain nombre de paramètres de configuration et de scénarios. Dans ce didacticiel WebDAV, nous commencerons par la configuration WedDAV de démarrage de base la plus simple et à partir de là, nous la construirons pour s'adapter à un environnement plus complexe. Vous pouvez considérer WebDAV comme une extension HTTP pour la configuration de votre site Web existant. Normalement, votre site Web Apache est peut-être déjà opérationnel. Ainsi, dans ce cas, tout ce que vous devez faire pour inclure le service WevbDAV est de :
- créer un répertoire de données de téléchargement supplémentaire à utiliser par WebDAV
- configurer votre fichier d'hôte virtuel apache2 existant
Cependant, dans ce guide, nous partirons de zéro en commençant par l'installation d'Apache2, la création d'un hôte virtuel, etc. Par conséquent, n'hésitez pas à passer à la section la plus appropriée à vos besoins de configuration.
Dans ce guide, nous allons configurer :
- webdav.local - ce sera un hôte virtuel fonctionnant sur le serveur IP 10.1.1.61
- webdav.local/svn - ce sera un répertoire compatible WebDAV
- /var/www/webdav – répertoire pour héberger le fichier d'index de webdav.local
- /var/www/webdav/svn – répertoire pour héberger le stockage de données de webdav.local/svn WebDAV
Modifiez vos paramètres DNS en conséquence ou modifiez le fichier /etc/hosts de votre client pour inclure la résolution webdav.local de l'hôte ci-dessus.
Installation Apache et WebDAV
Dans cette section, nous allons simplement installer apache2 et activer le module WebDAV. Le module WebDAV est fourni avec l'installation apache2, cependant, il n'est pas activé par défaut. Tout cela peut être fait avec deux commandes simples :
$ sudo apt-get install apache2
À présent, vous devriez pouvoir accéder à votre site Web par défaut situé à l'adresse http://webdav.local. Si tout se passe bien, désactivez la page par défaut car nous n'en avons plus l'utilité :
$ sudo a2dissite default $ sudo service apache2 reload
Configurer l'hôte virtuel
À ce stade, nous devons configurer l'hôte virtuel avec ServerName :webdav.local et le répertoire attaché /var/www/webdav. Pour ce faire, accédez à /etc/apache2/sites-available/ :
$ cd /etc/apache2/sites-available/
et créez un nouveau fichier de configuration de site appelé webdav.local avec le contenu suivant :
<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>
Une fois cela fait, nous devons créer un répertoire /var/www/webdav/ approprié :
$ sudo mkdir /var/www/webdav
Remplacez le propriétaire par apache :
$ sudo chown www-data.www-data /var/www/webdav
et activer le nouveau site webdav.local
$ sudo a2ensite webdav.local
Pour le tester, nous pouvons créer un simple fichier index.html :
$ sudo sh -c 'echo "Welcome from WebDAV.local" > /var/www/webdav/index.html'
et enfin recharger le serveur web apache2 :
$ sudo service apache2 reload
Vous devriez maintenant pouvoir naviguer dans votre navigateur jusqu'à http://webdav.local et voir le message :Welcome from WebDAV.local sur votre écran. Ceci conclut l'installation du serveur Web apache2 avec l'hôte virtuel webdav.local
Configuration WebDAV
Il est temps d'activer le module de WebDAV avec :
$ sudo a2enmod dav_fs Considering dependency dav for dav_fs: Enabling module dav. Enabling module dav_fs.
et redémarrez le serveur apache :
$ sudo service apache2 restart
Maintenant que tout est prêt, nous pouvons configurer un serveur WebDAV de base. Cela peut être facilement fait en créant un répertoire supplémentaire pour stocker les données WebDAV :
Configuration de base
$ sudo mkdir /var/www/webdav/svn
Il est également important de le rendre inscriptible par apache sinon nous obtenons l'erreur 403 Forbidden :
$ sudo chown www-data.www-data /var/www/webdav/svn/
et l'activation de WebDAV pour notre nouvel hôte virtuel webdav.local. Cela peut être fait en ajoutant les lignes suivantes dans le bloc
Alias /svn /var/www/webdav/svn <Location /svn> DAV On </Location>
Ce que signifie ce qui précède est que WebDAV a activé le répertoire /var/www/webdav/svn qui sera accessible via http://webdav.local/svn. Effectuez la modification ci-dessus de votre fichier de configuration /etc/apache2/sites-available/webdav.local existant et redémarrez votre serveur Web apache. Voici à quoi ressemble l'ensemble du fichier /etc/apache2/sites-available/webdav.local à ce stade :
<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>
Il est temps de tester notre configuration. Une façon de le faire est de pointer notre navigateur vers http://webdav.local/svn ou encore mieux d'utiliser l'outil cadaver. Installez d'abord cadavre avec :
$ sudo apt-get install cadaver
Créez le même fichier de données avec dd à télécharger dans votre répertoire WebDAV et téléchargez-le :
$ 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.
Vous devriez maintenant avoir le serveur WebDAV de base configuré et prêt à l'emploi. Dans la section suivante, nous ajouterons une authentification utilisateur de base.
WebDAV avec authentification utilisateur
Si vous avez l'intention de déployer votre serveur WebDAV sur un hôte distant, il est plus que conseillé d'implémenter au moins une authentification de base. Heureusement, cela peut être facilement fait en utilisant le htpasswd commande et reconfigurer notre fichier de configuration /etc/apache2/sites-available/webdav.local existant.
Créez d'abord un répertoire dans lequel vous souhaitez stocker le fichier de mot de passe du webdav. Il s'agit d'un emplacement de votre choix. Dans ce tutoriel, j'utilise /usr/local/apache2/ :
$ sudo mkdir /usr/local/apache2/
Ensuite, utilisez htpasswd pour créer un nouveau fichier de mots de passe par rapport auquel tous les utilisateurs seront authentifiés.
$ sudo htpasswd -c /usr/local/apache2/webdav.passwords lubos
Si vous avez besoin d'ajouter plus d'utilisateurs, utilisez la syntaxe ci-dessus mais omettez l'option -c car elle écrasera votre fichier existant.
Maintenant que le fichier d'authentification est prêt, nous devons ajouter l'authentification à notre /etc/apache2/sites actuel -fichier de configuration available/webdav.local. Les nouvelles modifications sont mises en évidence avec la police en gras :
<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>
Désormais, si vous essayez d'accéder à votre serveur WebDAV, vous devrez d'abord vous authentifier. Voici un exemple d'authentification 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/>
Limiter l'accès WebDAV
De plus, il est conseillé de limiter l'accès WebDAV à un nombre limité d'utilisateurs. Par exemple, si nous voulons permettre à un seul utilisateur "Lubos" d'accéder à notre référentiel WebDAV, nous pouvons le faire en ajoutant une clause
<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>
Étant donné que les utilisateurs peuvent accéder et télécharger des fichiers dans n'importe quel répertoire compatible WebDAV, il est également recommandé d'interdire le fichier .httaccess. Par conséquent, ajoutez :
AllowOverride None
à l'intérieur de la directive
Montage du répertoire compatible WebDAV
Comme cela a déjà été mentionné auparavant, WebDAV est pris en charge par un grand nombre de clients. Il est également possible de monter le répertoire WebDAV dans un système local pour agir comme une partie du système de fichiers. Pour ce faire, nous devons d'abord installer davfs2 en tant qu'utilisateur root :
# apt-get install davfs2
puis créez un point de montage :
# mkdir /mnt/webdav
et enfin montez-le avec une commande mount :
# 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
Conclusion
Cet article décrit une configuration de base du service WebDAV utilisant le serveur Web Apache2 pour vous aider à démarrer. Il y a peu de problèmes de sécurité à prendre en compte, vous devez donc faire vos devoirs et consulter la documentation Apache Module mod_dav pour plus de paramètres de configuration et des améliorations de sécurité pour améliorer votre configuration.