HowtoHtaccess

From AleikoumWiki

Revision as of 14:41, 16 November 2007 by Erwan (Talk | contribs)
(diff) ←Older revision | Current revision (diff) | Newer revision→ (diff)
Jump to: navigation, search

Howto use Htaccess

Restreindre l'accès à un serveur Web par .htaccess
v1.0 par Erwan 'Laby' Ben Souiden e.bensouiden<@>gmail.com


Contents

Objectif et contexte

Le but de ce howto est de proposer une procédure qui permet de restreindre l'accès à un serveur Web à un ensemble d'utilisateurs.
Cet accès sera accordé après une authentification réussie auprès du serveur.


Manipulation

Pour cela nous allons procéder en plusieurs étapes

Création du fichier regroupant les users

Dans le répertoire de votre choix (par exemple le répertoire des fichiers de configurations d'apache) créer le fichier .htpasswd qui sera en fait la base des utilisateurs ayant le droit de se connecter au serveur après une authentification réussie.
Pour cela il faut utiliser une commande d'administration d'apache qui est htpasswd.

htpasswd -c /chemin/jusqu_a/.htpasswd nom_du_user

Puis il sera nécessaire de rentrer le mot de passe correspondant.
A noter l'option -c qui permet de créer un utilisateur, les prochains utilisateurs pourront être déclaré de la façon suivante :

htpasswd /chemin/jusqu_a/.htpasswd nom_du_user

Création du .htaccess

Dans le répertoire dont vous souhaitez protéger l'accès, créer le fichier .htaccess (attention ce nom dépend directement de votre configuration apache cf. le nom défini dans l'option AccessFileName qui par defaut donne .htaccess).
Il suffit ensuite d'éditer .htaccess de la manière suivante :

AuthName "Invitation à la commande"
AuthType Basic
AuthUserFile /chemin/jusqu_a/.htpasswd.users
require valid-user

A partir de ce moment uniquement les personnes déclarées dans le /chemin/jusqu_a/.htpasswd pourront avoir accès via HTTP en réussissant à s'authentifier.
A noter que le .htaccess est récursif sur les répertoire contenu dans le répertoire où il se trouve.

Pour n'autoriser que certains users définis dans le .htpasswd, il suffit de légérement modifier la ligne "require..." de la façon suivante :

require user plop plip plap

Pour autoriser des groupes complets de users, il suffit de créer un nouveau fichier par exemple /chemin/jusqu_a/.htgroup qui sera structuré de la façon suivante :

premier-grp: plop plip plap
deuxieme-grp: yo yi yu
troisieme-grp: ouech

Puis dans le .htaccess :

AuthName "Invitation à la commande"
AuthType Basic
AuthUserFile /chemin/jusqu_a/.htpasswd
AuthGroupFile /chemin/jusqu_a/.htgroup
require group premier-grp

Pour retirer l'accès à un user donné il suffit d'éditer le fichier /chemin/jusqu_a/.htpasswd et de supprimer la ligne correspondant à cet user.

A noter que la valeur de AllowOverride dans la déclaration des répertoires au niveau d'Apache, intervient à ce niveau là ! En effet si la valeur associée est None alors le .htaccess sera tout simplement ignoré. A l'opposé All signifie que tout type de requête sur ce répertoire sera fait seulement si l'utilisateur a été authentifié par le .htaccess
Pour connaître toutes les subtilités, il suffit de se réferrer à la documentation concernant Apache et la directive AllowOverride.


Cas d'erreur

Les fichiers de password (typiquement .htpasswd) ainsi que le .htaccess doivent être en lecture pour tous !! ou du moins pour l'utilisateur Apache !
Droit en 644 !


Protéger un répertoire d'un compte free

Il est possible de la même manière de protéger (enfin disons plus de limiter l'accès) le contenu de votre site hébérgé chez free.fr .
Le principe reste toujours le même : un fichier contenant des utilisateurs et leur mot de passe et un fichier définissant la politique d'accès au répertoire.

Dans un premier temps créons le fichier regroupant les users : en ftp connectez vous sur votre compte et créez un répertoire : par exemple labase/ . Et dans ce répertoire collez un fichier par exemple "userdb" qui contiendra les lignes suivantes :

erwan:test
ouech:plop

Attention il est obligatoire de laisser les mots de passe en clair ! C'est à dire que pour me loger en tant que "erwan" le mot de passe sera "test" !!

Créer le fichier .htaccess qui contiendra les lignes suivantes :

PerlSetVar AuthFile labase/userdb
AuthName "Acces Restreint"
AuthType Basic
require valid-user

Ensuite il suffit de copier le .htaccess dans les répertoire à restreindre.

A noter que pour être sur que personne ne puisse voir le fichier userdb (excepté ceux qui ont accès en ftp au compte !), il suffit de coller dans le répertoire labase/ le .htaccess suivant :

PerlSetVar AuthFile secure/users
AuthName "Acces Restreint"
AuthType Basic
deny from all

Il sera alors impossible d'avoir accès via le Web aux fichiers.

Personal tools