Mise en place de WebDAV sur Apache2
Mise en place du module WebDAV pour Apache2
Sur Linux / Debian
Webdav permet d’utiliser le protocole HTTP comme un partage réseau.
WebDAV (Web-based Distributed Authoring and Versioning) est une extension du protocole HTTP.
Il permet de rajouter les fonctions d'écritures, de synchronisation, de versionning, etc... à un simple site Web.
Grâce à WebDAV, vous pourrez utiliser votre site Internet comme un espace de stockage distant.
Vous pourrez alors modifier vore site Internet en direct (sans passer par le protocole FTP), créer des répertoires, des fichiers etc.... dans un simple navigateur de fichier (Explorateur Windows via les favoris réseaux, Nautilus, Konqueror, Finder...).
Et vous pourrez travailler à plusieurs sur le même espace, car WebDAV gère le système de 'Lock', c'est à dire qu'il va vérouiller un fichier ouvert par un utilisateur et le dévérouillera à sa fermeture.
SOMMAIRE
I. Caractéristiques du serveur Apache2
II. Installation de WebDAV
2.1. Ajout des modules à Apache2
2.2. Création de la base WebDAV
III. Sécurité de WebDAV
3.1. Arborescence
3.2. Les fichiers de sécurité
3.2.1. .DAVlogin
3.2.2. .DAVgroup
3.2.3. .htaccess
IV. Activation de WebDAV sur un VirtualHost
4.1. VirtualHost
4.2. Activation du VirtualHost
4.3. Restart du service Web
V. Tests
5.1. Windows XP
5.2. Linux
5.2.1. Konqueror
5.2.2. Nautilus
5.2.3. Montage système
5.3. MAC
5.4. Windows Vista
VI. Liens
VII. Ajout support SSL
7.1. Génération des clés SSL
7.2. Ajout d'un Virtual Host
7.3. Url à uiliser pour le partage WebDAV
I. Caractéristiques du serveur Apache2
Apache2 : /etc/apache2
Vhosts : /etc/apache2/sites-available/
Sites : /var/www/webdav
Répertoire Webdav : /var/www/webdav/private
Logs : /var/www/logs
Droits Apache2 : www-data : www-data
II. Installation de WebDAV
2.1. Ajout des modules à Apache2
Utilisation de la commande système : a2enmod
a2enmod dav
a2enmod dav_fs
a2enmod dav_lock
2.2. Création de la base WebDAV
mkidr /var/lock/DAVLock
touch /var/lock/DAVLock/DAVLock
chown www-data:www-data /var/lock/DAVLock
chown www-data:www-data /var/lock/DAVLock/DAVLock
III. Sécurité de WebDAV
WebDAV utilise la sécurité du serveur Web. A savoir, les .htaccess et compagnies.
Je vais présenter l’utilisation d’utilisateurs, de groupes et d’accès selon les répertoires.
Je vais prendre pour exemple deux utilisateurs et un répertoire partagé.
3.1. Arborescence
Site web : /var/www/webdav/
Accueil WebDAB : /var/www/webdav/private
Répertoire user1 : /var/www/webdav/private/user1
Répertoire user2 : /var/www/webdav/private/user2
Répertoire partage : /var/www/webdav/private/partage
3.2. Les fichiers de sécurité
Ils sont aux nombres de trois et un seul se trouvera dans les répertoires à protéger.
3.2.1. .DAVlogin
Fichier regroupant les utilisateurs.
Emplacement : /var/www/.DAVlogin
Création :
htpasswd -c /var/www/.DAVlogin admin
New password:
Re-type new password:
Adding password for user admin
Ajout des utilisateurs :
htpasswd /var/www/.DAVlogin user1
New password:
Re-type new password:
Adding password for user user1
htpasswd /var/www/.DAVlogin user2
New password:
Re-type new password:
Adding password for user user2
Le fichier ressemble à ça :
admin:pbsEaKL0HI0rs user1:nTygCNgdFQQ0E user2:1vXY036eIIJ/6 |
3.2.2. .DAVgroup
Fichier regroupant les groupes d’utilisateurs.
Emplacement : /var/www/.DAVgroup
admin-grp: admin user1-grp: client1 user2-grp: client2 |
Exemple plus complexe pour mieux comprendre la structure :
admin-grp: admin chef-supreme-grp : chefsupreme chef-reseau-grp: chef-windows chef-linux chef chef-dev-grp: chef-php chef-asp chef-java chef-compta-grp: chef-bilan chef-resultat chef-paye users-reseau-grp: toto1 toto2 toto3 users-dev-grp: gus1 gus2 gus3 users-compta-grp: fric1 fric2 fric3 ###################################################################### Avec ce modèle, nous pourrons donner : - des droits de lecture à tout, au groupe chef-supreme; - des droits de lecture aux users-reseaux-grp à chef-reseau-grp ; - des droits de lecture aux users-dev-grp à chef-dev-grp ; - des droits de lecture aux users-compta-grp à chef-compta-grp ; - des droits complets à chaque utilisateur dans son répertoire ; - des droits complets à l’admin (^^) ; - etc… . |
3.2.3. .htaccess
Fichier donnant ou non, des autorisations en fonction de groupes ou utilisateurs.
Emplacement : dans chaque répertoire utilisateurs (à partir de /var/www/webdav/private)
ATTENTION : chaque répertoire hérite du .htaccess parent !!!
.htaccess principal : /var/www/webdav/private/.htaccess
<Limit GET POST PROPFIND> require valid-user </Limit> <Limit PUT DELETE COPY MOVE> require group admin-grp </Limit> |
Seul un utilisateur valide et authentifier pourra accéder à ce répertoire.
Les utilisateurs valident ne pourront que lire le contenu.
Les utilisateurs du groupe ‘admin-grp’ pourront en plus de lire, écrire, effacer, créer un répertoire etc…
.htaccess utilisateurs : /var/www/webdav/private/user1/.htaccess
Il sera à modifier en fonction des utilisateurs ou de vos propres choix.
require group user1-grp admin-grp |
Ne pourra accéder à ce répertoire et sous répertoires, que les utilisateurs du groupe user1-grp et admin-grp. Ils auront tous les droits.
Vous pouvez utiliser les utilisateurs à la place des groupes.
Remplacer ‘group’ par ‘user’.
IV. Activation de WebDAV sur un VirtualHost
4.1. VirtualHost
vim /etc/apache2/sites-available/webdav
<VirtualHost *:80>
|
4.2. Activation du VirtualHost
a2ensite webdav
4.3. Restart du service Web
/etc/init.d/apache2 restart
V. Tests
5.1. Windows XP
Ajouter un ‘favori réseau’
Un seul choix
Adresse du favori
Connexion à WebDAV
Explorateur Windows du dossier WebDAV
5.2. Linux
5.2.1. Konqueror
Il suffit de mettre dans la barre d'adresse: webdav://hostname.domaine.tld/private
Connexion
Répertoires
5.2.2. Nautilus
A FAIRE
5.2.3. Montage système
Montage d’un lecteur réseau avec le système de fichier ‘davfs2’
A FAIRE
5.3. MAC
A FAIRE
5.3. Windows Vista
Installation du module 'Webfldrs-KB907306-FRA.exe'
Il est disponibleà cette adresse: http://www.microsoft.com/downloads/
CAPTURES A FAIRE
VI. Liens
http://www.pervasive-network.org
http://www.debian-administration.org
http://www.ibiblio.org/pub/Linux/docs/HOWTO/translations/fr
VII. Ajout support SSL
7.1. Génération des clés SSL
Dossier SSL : /var/www/ssl
Commandes:
cd /var/www/ssl
openssl genrsa -out ssl.key 1024
Generating RSA private key, 1024 bit long modulus
.......++++++
.++++++
e is 65537 (0x10001)
openssl req -new -x509 -days 365 -key ssl.key -out ssl.crt
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:FR
State or Province Name (full name) [Some-State]:REGION
Locality Name (eg, city) []:Fr
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Kookyoo
Organizational Unit Name (eg, section) []:Blog
Common Name (eg, YOUR name) []:farwarx
Email Address []:email@domaine.tld
Restart du service Web:
/etc/init.d/apache2 restart
7.2. Ajout d'un Virtual Host
Fichier : /etc/apache2/sites-available/webdav-ssl
<VirtualHost *:443>
# SSLCertificateFile directive is needed. SSLCertificateFile /var/www/ssl/ssl.crt SSLCertificateKeyFile /var/www/ssl/ssl.key AddDefaultCharset ISO-8859-15 AddCharset ISO-8859-15 .iso-8859-15 .latin15 .fr SSLOptions +FakeBasicAuth +ExportCertData +StrictRequire <FilesMatch ".(cgi|shtml|phtml|php)$"> SSLOptions +StdEnvVars </FilesMatch> <Directory /usr/lib/cgi-bin> SSLOptions +StdEnvVars </Directory> </VirtualHost> |
Activation du VirtualHost:
a2ensite webdav-ssl
/etc/init.d/apache2 reload
7.3. Url à uiliser pour le partage WebDAV
Il faut utiliser l'url suivante: https://hostname.domaine.tld:443/private
Et voilà ;)
Maxime T.
Rédacteur chez Kookyoo.net > blog/farwarx
Billets similaires | Tagswebdav apache linux windows debian http htaccess securite fichier partage virtualhost davlock login group protocole |
Commentaires 13 commentaires
farwarx le 15 Mai 2009 à 11:50
A venir:- autre méthode d'authentification (http-digest)
- intégration du ssl pour crypter les échanges
Seb le 15 Mai 2009 à 12:46
Très intéressant, si j'ai un peu de temps j'aimerais bien tester ça. Une alternative à SVN ou Samba qui pourrait m'être pratique. Il manque juste une petite présentation du système, quelques mots pour expliquer à quoi ça sert aux nouveaux venus.farwarx le 15 Mai 2009 à 13:55
Okidoki! Je rajouterai cela sous peu.farwarx le 15 Mai 2009 à 17:57
Bon, en fait, pas de http-digest.Ca permet de crypter le mot de passe, mais c'est autant crackable que l'authentification basique.
Donc utilisez le SSL et tout ira bien ;)
Tonio le 16 Mai 2009 à 3:03
Intéressant comme sujet... même si en ce moment j'ai pas trop le temps de tester.Par contre vu l'ampleur que prend le billet, il me semble que ce serait mieux de faire un dossier. Ton billet ne sera que mieux référencé.
;)
Le Grand Nain le 16 Mai 2009 à 15:19
Salut,e te remercie beaucoup pour ton aide et tes explications qui reste simples et compréhensibles. Je suis étudiant, et mon projet de fin d’année est de créer un serveur Webdav, ton site m’a été d’une grande utilité. J’ai pu remarquer qu’il était peu utilisé sur les serveurs. Je trouve ça bien dommage, car on trouve peu d’explications simples et clairs.
___________________
Par contre, j’avais une question, est ce que tu sais s’il est possible d’inclure plusieurs chemins vers des dossiers dans une seule balise (pour eviter de réecrire plusieurs fois la meme chose) ? Du genre :
< Directory /var/www/enseignant/latourte-françois/ /var/www/enseignant/henri-delacourt/ >
Mais bon, j’ai bien sur essayé cela, cela ne fonctionne pas... J’ai essayé également en m’aidant des alias, mais rien n’y fait...
_________________________
De plus, je n'arrive pas à utiliser des limites seulement pour un utilisateur, et d'autres limites pour des groupes pour le même dossier, je crois <Directory /var/www/etudiant/RT/jeremy>
DAV on
AuthName "WebDAV Storage"
AuthType Basic
AuthUserFile /var/www/htpasswd-webdav
<Limit GET PROPPATCH MKCOL COPY MOVE LOCK UNLOCK>
Require user thibaut
</Limit>
<Limit GET PUT DELETE PROPPATCH MKCOL COPY MOVE LOCK UNLOCK>
Require user jeremy
</Limit>
<Limit GET PUT DELETE PROPPATCH MKCOL COPY MOVE LOCK UNLOCK>
Require group webdav-enseignant
</Limit>
</Directory>
farwarx le 16 Mai 2009 à 17:30
Salut 'Le Grand Nain',J'essaye de faire des tutos simples et complet, donc si ça marche, tant mieux ;)
Pour ton problème, j'utiliserai ceci:
< Directory /var/www/enseignant>
Cela inclura tous les sous dossiers.
A l'intérieur, tu peux mettre des limites de lecture (GET POST).
Et à chaque répertoire (ceux des enseignants) tu mets le require user 'enseignant'.
Je ne connais pas ta politique de sécurité.
Exemple, si chaque enseignant peut tout voir, et ne peut modifier que son propre dossier ou pas.
Si oui, il faut que tu mettes en limite GET POST les valid-user, et que tu ne mettes aucune limite au bon utilisateur. (un peu comme au 3.2.3 du tuto).
Le Grand Nain le 17 Mai 2009 à 1:24
Content de voir que tu as repondu rapidement. :)Le premier problème est résolu grâce à toi, ça m'est pas trop venu à l'idée qu'on pouvait mettre des limites sur un dossier et que cela se répercute sur tous les sous-dossiers (pourtant, ça parait si logique...) :)
J'ai reussi à trouver la solution pour mon second problème, j'avais juste des problèmes de droits sur fichiers, mais ce que j'avais écris étais juste, et également ce que tu as dit. Enfin, presque juste, je me suis rendu compte également que j'avais oublié de mettre : "AuthGroupFile /var/www/htgroup-webdav ". En clair, on peux belle et bien mettre des limites juste pour certains utilisateurs et des limites pour des groupes, pour le même dossier.
Merci du coup de pouce, et encore merci pour ce bon tuto ! ;)
Jérémy Wanderscheid le 19 Mai 2009 à 14:03
Pour la partie 5.2.3 j'ai procéder comme suit sur ma Ubuntu Jaunty.sudo apt-get install davfs2
mkdir /home/user/montage_dav
# montgae
sudo mount.davfs http://monserveurdav.domaine.tld /home/user/montage_dav/
# demontage
sudo umount /home/user/montage_dav
farwarx le 19 Mai 2009 à 19:27
Merci Jérémy Wanderscheid, j'avais zappé la fin du tuto ;)Je le mettrais à jour sous peu.
Dionysoos le 04 Octobre 2012 à 17:19
Merci pour excellent billet qui m'a permit de mettre en place un serveur Web-Dav. Par contre il n'y a pas de grosse faille de sécurité avec les fichiers .htaccess ? Il me semble que l'utilisation est même déconseillé par Apache.Encore merci.