Comment configurer l’accès WebDAV avec Apache sur Ubuntu 14.04

introduction

WebDAV est une extension du protocole HTTP qui permet aux utilisateurs de gérer des fichiers sur des serveurs. Il existe plusieurs façons d’utiliser un serveur WebDAV. Par exemple, vous pouvez partager des documents Word ou Excel avec vos collègues en les téléchargeant sur votre serveur WebDAV. Vous pouvez même partager votre collection de musique avec votre famille et vos amis en leur fournissant simplement une URL. Tout cela peut être réalisé sans rien installer.

Il existe de nombreuses façons de gérer les fichiers sur un serveur distant. WebDAV présente plusieurs avantages par rapport à d’autres solutions telles que FTP ou Samba. Dans cet article, nous verrons comment configurer votre serveur Apache pour autoriser l’accès WebDAV natif à partir de Windows, Mac et Linux avec authentification.

Pourquoi WebDAV?

WebDAV offre plusieurs avantages:

  • Intégration native sur tous les principaux systèmes d’exploitation (Windows, Mac, Linux); il n’est pas nécessaire d’installer un logiciel tiers pour utiliser WebDAV.

  • Prise en charge des transferts partiels.

  • Plus de choix pour l’authentification. Être sur HTTP signifie NTLM, Kerberos, https://en.wikipedia.org / wiki / Lightweight_Directory_Access_Protocol [LDAP], etc. sont tous possibles.

Selon votre situation, WebDAV peut être la meilleure solution pour vos besoins.

Pourquoi Apache?

Il existe de nombreux serveurs Web prenant en charge WebDAV sous Linux. Cependant, Apache possède l’implémentation la plus conforme du protocole WebDAV sur le marché. Au moment de la rédaction de ce document, WebDAV sur Nginx et Lighttpd ne fonctionne que partiellement.

Conditions préalables

Vous aurez besoin d’un serveur * Ubuntu 14.04 *.

Avant de commencer, créons d’abord un utilisateur avec un accès * sudo *. Vous pouvez exécuter des commandes en tant que * root *, mais cela n’est pas recommandé pour des raisons de sécurité. Il existe un excellent article sur adresser des utilisateurs à Ubuntu 14.04 Si vous souhaitez en savoir plus.

Créer un utilisateur

Lorsque vous créez une instance Digital Ocean pour la première fois, des informations d’identification vous permettant de vous connecter en tant que * root * vous seront fournies. En tant que * root *, ajoutons d’abord un utilisateur appelé * alex *.

adduser alex

Vous serez invité à créer un mot de passe pour l’utilisateur * alex *, comme indiqué ci-dessous. Il y aura d’autres invites pour des informations sur l’utilisateur * alex *. Vous pouvez les entrer si vous le souhaitez.

Adding user `alex' ...
Adding new group `alex' (1000) ...
Adding new user `alex' (1000) with group `alex' ...
Creating home directory `/home/alex' ...
Copying files from `/etc/skel' ...
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
Changing the user information for alex
Enter the new value, or press ENTER for the default
       Full Name []:
       Room Number []:
       Work Phone []:
       Home Phone []:
       Other []:
Is the information correct? [Y/n] y

Octroi de privilèges sudo à l’utilisateur

Après avoir créé un nouvel utilisateur, l’étape suivante consiste à lui octroyer des privilèges * alex * sudo. En supposant que vous soyez toujours connecté en tant que * root *, ajoutez l’utilisateur * alex * au groupe * sudo * en tapant la commande suivante.

usermod -aG sudo alex

Les utilisateurs du groupe * sudo * bénéficient des privilèges * sudo *. Vous pouvez maintenant vous déconnecter et vous connecter en tant qu’utilisateur * alex *.

Première étape - Installer Apache

Laissez-nous installer Apache.

sudo apt-get update
sudo apt-get install apache2

Le serveur Web Apache doit être installé et en cours d’exécution.

Deuxième étape - Configuration de WebDAV

Il existe trois étapes pour configurer WebDAV. Nous désignons un emplacement, activons les modules nécessaires et le configurons.

Préparer le répertoire

Nous devons désigner un dossier pour servir WebDAV. Nous allons créer le nouveau répertoire + / var / www / webdav + pour cela. Vous devrez également changer le propriétaire en + www-data + (votre utilisateur Apache) afin de permettre à Apache d’y écrire.

sudo mkdir /var/www/webdav
sudo chown -R www-data:www-data /var/www/

Activation des modules

Ensuite, nous activons les modules WebDAV en utilisant a2enmod

sudo a2enmod dav
sudo a2enmod dav_fs

Les modules Apache se trouvent sous + / etc / apache2 / mods-available +. Cela crée un lien symbolique de + / etc / apache2 / mods-available + vers + / etc / apache2 / mods-enabled +.

Configuration

Ouvrez ou créez le fichier de configuration dans + / etc / apache2 / sites-available / 000-default.conf + en utilisant votre éditeur de texte favori.

nano /etc/apache2/sites-available/000-default.conf

Sur la première ligne, ajoutez la configuration de la directive * DavLockDB *:

DavLockDB /var/www/DavLock

Et les directives * Alias ​​* et * Directory * à l’intérieur de la section VirtualHost:

Alias /webdav /var/www/webdav

<Directory /var/www/webdav>
   DAV On
</Directory>

Le fichier devrait ressembler à ceci après l’édition.

DavLockDB /var/www/DavLock
<VirtualHost *:80>
       # The ServerName directive sets the request scheme, hostname and port that
       # the server uses to identify itself. This is used when creating
       # redirection URLs. In the context of virtual hosts, the ServerName
       # specifies what hostname must appear in the request's Host: header to
       # match this virtual host. For the default virtual host (this file) this
       # value is not decisive as it is used as a last resort host regardless.
       # However, you must set it for any further virtual host explicitly.
       #ServerName www.example.com

       ServerAdmin webmaster@localhost
       DocumentRoot /var/www/html

       # Available loglevels: trace8, ..., trace1, debug, info, notice, warn,
       # error, crit, alert, emerg.
       # It is also possible to configure the loglevel for particular
       # modules, e.g.
       #LogLevel info ssl:warn

       ErrorLog ${APACHE_LOG_DIR}/error.log
       CustomLog ${APACHE_LOG_DIR}/access.log combined

       # For most configuration files from conf-available/, which are
       # enabled or disabled at a global level, it is possible to
       # include a line for only one particular virtual host. For example the
       # following line enables the CGI configuration for this host only
       # after it has been globally disabled with "a2disconf".
       #Include conf-available/serve-cgi-bin.conf

       Alias /webdav /var/www/webdav

       <Directory /var/www/webdav>
           DAV On
       </Directory>
</VirtualHost>

# vim: syntax=apache ts=4 sw=4 sts=4 sr noet

La directive DavLockDB désigne le nom de la base de données DAV Lock. Ce devrait être un chemin d’accès à un fichier. Le fichier n’a pas besoin d’être créé. Le répertoire doit être accessible en écriture pour le serveur Apache.

La directive Alias mappe les demandes sur + http: // your.server / webdav + au + / var / www / webdav + dossier.

La directive Directory indique à Apache d’activer WebDAV pour le dossier + / var / www / webdav +. Vous pouvez en savoir plus sur mod_dav à partir de la documentation Apache.

Si vous redémarrez le serveur Apache, vous disposerez d’un serveur WebDAV en état de fonctionnement sans authentification.

Redémarrez le serveur Apache comme ceci:

sudo service apache2 restart

Essai

WebDAV sans authentification ne permet qu’un accès en lecture pour les utilisateurs. Pour tester, créons un exemple de fichier.

echo "this is a sample text file" | sudo tee -a /var/www/webdav/sample.txt

Un fichier texte appelé * sample.txt * doit être créé dans * / var / www / webdav *. Il doit contenir le texte. Ceci est un exemple de fichier texte.

Maintenant, nous pouvons essayer de vous connecter depuis un ordinateur externe. Le serveur WebDAV doit être trouvé à l’adresse * http: // <votre.serveur.com> / webdav *. Par souci de brièveté, nous montrons seulement comment se connecter sans informations d’identification sur un Mac.

Sur Mac, ouvrez * Finder *. Dans la barre de menus, recherchez * Go * et sélectionnez l’option * Connect to Server *.

image: https: //assets.digitalocean.com/articles/webdav_access/1.png [WebDAV Mac Étape 1]

Sélectionnez l’option * Connecter en tant qu’invité *. Ensuite, cliquez sur * Connect *.

image: https: //assets.digitalocean.com/articles/webdav_access/2.png [WebDAV Mac Étape 2]

Vous devriez être connecté. Si vous vous connectez à ce système de fichiers partagé et entrez dans le dossier + webdav +, vous devriez pouvoir voir le fichier + sample.txt + créé précédemment. Le fichier devrait être téléchargeable.

image: https: //assets.digitalocean.com/articles/webdav_access/3.png [WebDAV Mac Étape 3]

Troisième étape - Ajouter une authentification

Un serveur WebDAV sans authentification n’est pas sécurisé. Dans cette section, nous allons ajouter une authentification à votre serveur WebDAV à l’aide du schéma d’authentification Digest.

Authentification de base ou Digest?

Il existe de nombreux schémas d’authentification disponibles. Ce tableau illustre la compatibilité des différents schémas d’authentification sur différents systèmes d’exploitation. Notez que si vous utilisez HTTPS, nous supposons que votre certificat SSL est valide (non auto-signé).

image: https: //assets.digitalocean.com/articles/webdav_access/4.png [Compatibilité WebDAV]

Si vous utilisez * HTTP *, utilisez Digest authentication car cela fonctionnera sur tous les systèmes d’exploitation. Si vous utilisez * HTTPS *, vous avez la possibilité d’utiliser Basic authentication.

Nous allons couvrir le schéma d’authentification * Digest * car il fonctionne sur tous les systèmes d’exploitation sans avoir besoin d’un certificat SSL.

Authentification Digest

Générons le fichier (appelé + users.password +) qui stocke les mots de passe des utilisateurs. Dans l’authentification Digest, il y a le champ * realm * qui agit comme un espace de noms pour les utilisateurs. Nous allons utiliser * webdav * comme * domaine *. Notre premier utilisateur s’appellera * alex *.

Pour générer le fichier de résumé, nous devons installer les dépendances.

sudo apt-get install apache2-utils

Nous allons ajouter des utilisateurs ensuite. Laissez-nous générer le fichier de mot de passe de l’utilisateur à l’aide de la commande ci-dessous.

sudo htdigest -c /etc/apache2/users.password webdav alex

Cela ajoute l’utilisateur * alex * au fichier de mots de passe. Il devrait y avoir une invite de mot de passe pour créer le mot de passe pour * alex *.

Pour l’ajout ultérieur d’utilisateurs, vous devez supprimer le drapeau * c *. Voici un autre exemple d’ajout d’un utilisateur appelé * chris *. Créez un mot de passe lorsque vous y êtes invité.

sudo htdigest /etc/apache2/users.password webdav chris

Nous devons également autoriser Apache à lire le fichier de mot de passe. Nous en changeons donc le propriétaire.

sudo chown www-data:www-data /etc/apache2/users.password

Une fois le fichier de mots de passe créé, vous devez modifier la configuration dans + / etc / apache2 / sites-available / 000-default.conf +.

Ajoutez les lignes suivantes à la directive * Directory *

AuthType Digest
AuthName "webdav"
AuthUserFile /etc/apache2/users.password
Require valid-user

La version finale devrait ressembler à ceci (avec les commentaires supprimés).

DavLockDB /var/www/DavLock

<VirtualHost *:80>
   ServerAdmin webmaster@localhost
   DocumentRoot /var/www/html

   ErrorLog ${APACHE_LOG_DIR}/error.log
   CustomLog ${APACHE_LOG_DIR}/access.log combined

   Alias /webdav /var/www/webdav

   <Directory /var/www/webdav>
       DAV On
       AuthType Digest
       AuthName "webdav"
       AuthUserFile /etc/apache2/users.password
       Require valid-user
   </Directory>
</VirtualHost>

Le module mod_authn contient les définitions des directives d’authentification.

La directive * AuthType * indique à Apache que pour le répertoire + / var / www / webdav +, il doit exister une authentification utilisant le schéma * Digest *.

L’authentification * Digest * requiert une valeur pour * royaume * que nous définissons comme * webdav *. * Realm * agit comme un espace de noms. Lorsque vous avez des utilisateurs qui portent le même nom, vous pouvez les séparer en utilisant des valeurs différentes pour * real *. Nous utilisons la directive * AuthName * pour définir la valeur de * realm *.

La directive * AuthUserFile * est utilisée pour indiquer l’emplacement du fichier de mots de passe.

La directive * Require * indique que seuls les utilisateurs valides qui s’authentifient peuvent accéder à ce répertoire.

Enfin, activez le module Digest et redémarrez le serveur pour que les paramètres prennent effet.

sudo a2enmod auth_digest
sudo service apache2 restart

Quatrième étape - Accéder aux fichiers

Nous allons vous montrer comment accéder à votre serveur WebDAV à partir des navigateurs de fichiers natifs de Mac, Windows et Linux (Ubuntu). Par souci de brièveté, nous allons démontrer les opérations de fichier et de dossier sur le Mac uniquement, bien que vous puissiez ajouter, éditer et supprimer des fichiers sur le serveur à partir de tous les systèmes d’exploitation.

Vous pouvez également accéder aux fichiers via Internet à l’aide d’un navigateur Web.

Vous devrez peut-être éjecter le lecteur et vous y reconnecter si vous l’avez déjà testé avant l’ajout de l’authentification.

Mac

Sur un Mac, ouvrez * Finder *. Dans la barre de menus, recherchez * Go * et sélectionnez l’option * Connect to Server *.

image: https: //assets.digitalocean.com/articles/webdav_access/5.png [WebDAV Mac Étape 1]

Entrez l’adresse du serveur. Ce devrait être * http: // <votre.serveur> / webdav *. Appuyez sur * Connect *.

image: https: //assets.digitalocean.com/articles/webdav_access/6.png [WebDAV Mac Étape 2]

Vous serez invité à entrer un nom d’utilisateur et un mot de passe. Entrez l’un des utilisateurs créés sur le serveur et appuyez sur * Connect *.

image: https: //assets.digitalocean.com/articles/webdav_access/7.png [WebDAV Mac Étape 3]

Une fois que vous êtes connecté, le répertoire devrait apparaître dans * Finder *.

image: https: //assets.digitalocean.com/articles/webdav_access/8.png [WebDAV Mac Étape 4]

Vous pouvez copier et enregistrer des fichiers dans le répertoire + webdav + et créer des sous-répertoires. Voici l’état initial du répertoire sur le serveur:

image: https: //assets.digitalocean.com/articles/webdav_access/9.png [Étape 5 de WebDAV Mac]

Vous pouvez ajouter ou renommer des fichiers et créer de nouveaux répertoires exactement comme d’habitude avec le Finder. Voici le résultat final.

image: https: //assets.digitalocean.com/articles/webdav_access/10.png [WebDAV Mac Étape 6]

les fenêtres

Sous Windows, ouvrez * Explorateur de fichiers *. Dans la barre latérale gauche, vous devriez trouver l’icône * Réseau *.

image: https: //assets.digitalocean.com/articles/webdav_access/11.png [WebDAV Windows Étape 1]

Faites un clic droit sur l’icône * Réseau *. Il devrait afficher le menu contextuel avec l’option * Connecter un lecteur réseau *. Cliquez dessus.

image: https: //assets.digitalocean.com/articles/webdav_access/12.png [Étape 2 de WebDAV Windows]

Entrez l’adresse du serveur dans le champ du dossier. Ce devrait être * http: // <votre.serveur> / webdav *. Sélectionnez * Se connecter avec des identifiants différents * si votre identifiant est différent. Appuyez sur * Terminer *.

image: https: //assets.digitalocean.com/articles/webdav_access/13.png [Étape 3 de WebDAV Windows]

Vous serez invité à entrer un nom d’utilisateur et un mot de passe. Entrez-les et appuyez sur * OK *.

image: https: //assets.digitalocean.com/articles/webdav_access/14.png [Étape 4 de WebDAV Windows]

Une fois que vous vous êtes connecté, il devrait apparaître en tant que lecteur réseau dans la barre latérale gauche de votre * Explorateur de fichiers *.

image: https: //assets.digitalocean.com/articles/webdav_access/15.png [Étape 5 de WebDAV Windows]

Linux (Ubuntu)

Nous utilisons Ubuntu 14.04 comme système d’exploitation de bureau Linux. Sur Ubuntu, ouvrez * Fichiers *. Il existe une option * Connect to Server * dans la barre latérale gauche. Cliquez dessus.

image: https: //assets.digitalocean.com/articles/webdav_access/16.png [WebDAV Linux Étape 1]

Entrez l’adresse du serveur. Ce devrait être * dav: // <votre.serveur> / webdav *. Appuyez sur * Connect *.

image: https: //assets.digitalocean.com/articles/webdav_access/17.png [WebDAV Linux Étape 2]

Vous serez invité à entrer un nom d’utilisateur et un mot de passe. Entrez-les et appuyez sur * Connect *.

image: https: //assets.digitalocean.com/articles/webdav_access/18.png [Étape 3 de WebDAV Linux]

Une fois que vous êtes connecté, le répertoire devrait apparaître sous la liste * Réseau *.

image: https: //assets.digitalocean.com/articles/webdav_access/19.png [WebDAV Linux étape 4]

Conclusion

Dans cet article, nous avons expliqué comment configurer un serveur WebDAV à l’aide d’Apache sur Ubuntu 14.04. Nous avons également expliqué comment configurer l’authentification Digest pour sécuriser le serveur. Enfin, nous vous avons montré comment se connecter au serveur WebDAV à partir des trois principaux systèmes d’exploitation à l’aide de leur navigateur de fichiers natif.