Logo EPFL
 CRPPIT (Information Technology) Graphe SB
 Ecole Polytechnique Fédérale de Lausanne   Service informatique du Centre de Recherche en Physique des Plasmas
      CRPPIT > Documentation

 

HOME

INTERNET

WEB PAGE

CONFIGURATION

 

 

 

 

email

 

 

Auteur(s)

Pierre ETIENNE- CRPP / EPFL

 

 

Référence

#2004-08-11- Configuration du fichier .htaccess

Latest update

  11 08 2004 - 23:30 / version 1.0

 

 

 

Envoyez cette page à un ami

 

Imprimez

 

 



CONFIGURATION DU SERVEUR WEB APACHE (Coté utilisateur)

Beaucoup de serveurs Web tournent sous le logiciel Apache, qui existe sous plusieurs plateformes (Linux, Windows, ...). Avec ce dernier, l'utilisateur peut créer des règles d'accès complètes, grâce à des fichiers de configuration, comme .htaccess, .htpasswd, .htgroup.

Apache a pour avantage d'être "open source", c'est-à-dire que le code source est à disposition. Développé sous le monde Linux à l'origine, la documentation en ligne est (comme souvent) réservée aux experts qui ont des années d'expérience!

Le but de ce document est de donner les informations nécessaires à un utilisateur, qui a obtenu un accompte, pour la création d'un site Web, auprès d'un administrateur system.

Ce document se limitera à l'aspect fichiers et configuration du site Web; il n'abordera pas la programmation HTML.

Retour au sommaire


Sommaire :

 

1) Conditions requises pour mettre en application ce qui est expliqué:

 

1.1) Logiciels nécessaires
1.2) Manipulation des fichiers sous Linux/Unix
1.3) Manipulation de VI sous Linux/Unix

2) Accompte sur le Serveur Web (Apache)

 

2.1) Droits d'accès
2.2) Upload de votre site Web sur le serveur 

3) Le fichier .htaccess

 

3.1) Règles d'héritage des commandes du fichier .htaccess

4) Commandes du fichier .htaccess

 

4.1) Affichage personnalisé des messages d'erreur (ErrorDocument)
4.2) Autorisation ou non, du listing d'un répertoire ou d'un type de fichiers (Options, IndexIgnore)
4.3) Présentation de l'affichage du listing d'un répertoire (IndexOrderDefault)
4.4) En tête et pied de page du listing d'un répertoire (HeaderName, ReadmeName)
4.5) Choix de la page par défaut du répertoire (DirectoryIndex)
4.6) Redirection des pages Web ou des répertoires (Redirect)
4.7) Filtrage des adresses IP (order allow deny)
4.8) Gestion des accès pour des utilisateurs authentifiés (.htpasswd .htgroup)
4.8a) Cas particulier: Création d'accompte sans accès avec TELNET/SSH
4.9) Contrôle d'accès mixte: IP et utilisateurs (Satisfy)
4.10) Contrôle de l'accès à certains fichiers (<FILES>)
4.11) Gestion des extensions: ajout des types MIME (AddType)

 5) Liens

Retour au sommaire



1) Conditions requises pour mettre en application ce qui est expliqué:


 

Pour mettre en application ce qui est décrit dans ce document, vous devez avoir les conditions requises suivantes:

 

- Avoir un accompte (user + password) sous un serveur Web Apache

- L'administrateur devra avoir paramétré les fichiers system qui gèrent le serveur Web Apache, de manière à autoriser l'utilisateur à employer le fichier .htaccess dans ses répertoire. (AllowOverride  all)

Retour au sommaire



1.1) Logiciels nécessaires:

 

Certains editeurs HTML sophistiqués, incluent des clients FTP, pour le transfert des fichiers.

Dans notre cas, il nous faudra les deux logiciels spécialisés suivants:

 

- Client FTPSFTP


Filezilla
http://prdownloads.sourceforge.net/filezilla/FileZilla_2_2_7c.zip?download

 

- Client Telnet / SSH


Putty
http://the.earth.li/~sgtatham/putty/latest/x86/putty.exe


Le client Filezilla permet de uploader/downloader des fichiers par les protocoles FTP (port 21) et SFTP (port 22) avec une interface graphique. Le logiciel a une interface graphique standart et le transfert s'effectue au moyen du "drag&drop".

Le client Putty permet de se connecter par TELNET (port 23) et SSH (port 22). Il s'agit du mode terminal standard.

Retour au sommaire



1.2) Manipulation des fichiers sous Linux/Unix:

 

Actuellement, on utilise principalement des gestionnaires de fichiers (explorateur sous Windows) pour créer, déplacer et effacer des répertoires ou des fichiers. Mais si vous êtes dans un mode Terminal (TELNET ou SSH), il faudra taper des commandes propres à Linux/Unix (l'équivalent de ce bon vieux Microsoft DOS).

Les commandes présentées ici, sont celles qui vous serviront aux manipulations courantes; pour de plus amples informations, utilisez le manuel en ligne "man commande".

Connectez-vous au serveur par Telnet/SSH, entrez-y votre user et password.

Vous aurez une fenêtre de Terminal, avec un "#~" ou ">" ou ... suivant la configuration de votre serveur.

Tapez les commandes suivantes, pour gérer vos fichiers, avec [RETURN] à la fin:

Attention, il n'Y A PAS DE DEMANDE CONFIRMATION!!! REFLECHISSEZ AVANT DE TAPER [RETURN] !!!


 

Lister les fichiers

ls

 

Lister tous les fichiers (cachés)

ls  -al

 

 

 

 

Aller dans un répertoire (vers le bas)

cd  répertoire

 

Remonter un répertoire plus haut

cd ..

 

 

 

 

Créer un répertoire

mkdir  répertoire

 

 

 

 

Effacer un fichier

rm  nom_du_fichier

 

Effacer un répertoire

rmdir  nom_du_répertoire

 

Effacer un répertoire AVEC ses sous répertoires

rm  -r  nom_du_répertoire

 

 

 

 

Copier un fichier

cp  nom_du_fichier   nouveau_fichier

 

Copier un répertoire avec son contenu

cp  -r  nom_du_répertoire  nouveau_répertoire

 

 

 

 

Renomer un fichier

mv  nom_du_fichier  nouveau_fichier

 

Renomer un répertoire

mv  nom_du_répertoire  nouveau_répertoire

 

 

 

 

Afficher le contenu d'un fichier texte

cat  nom_du_fichier

 

Afficher le contenu d'un fichier texte, page par page

more  nom_du_fichier


Il existe le moyen de se faciliter la vie, en fonction du client TELNET/SSH; par exemple la fonction "doskey" permet de rapeller la dernière commande au moyen des touches du clavier haut/bas. Il est aussi possible de faire des "copier-coller" avec la souris.

Retour au sommaire



1.3) Manipulation de "VI" sous Linux/Unix:

 

On a beau être au XXIème siècle, avec des ordinateurs très puissants, il y a des traces du passé qui restent gravées pour l'éternité! L' "éditeur basique de fichiers textes" dans le monde Linux/Unix s'appelle VI. Il date de l'époque héroique ou posséder quelques kB de mémoire était un luxe réservé aux professionnels!

Il en existe évidemment d'autre qui sont réellement des éditeurs de texte (qui connaissent les concepts de menus à cliquer avec une souris), mais cela dépendra de la configuration de votre serveur; posez la question à votre administrateur system, c'est lui qui (est censé) savoir quels sont les logiciels installés dans le serveur.

Afin d'être le plus universel, nous traiterons de VI, qui est présent, à la base sous tout system Linux/Unix.


 

Dans le monde Linux/Unix, la casse (c'est-à-dire les majuscules et les minuscules) sont différenciées. Le fichier "Configuration.conf" est différent de fichier "configuration.conf". Cela pose d'ailleurs un problème lors du téléchargement simultané de ces deux fichiers sous une plateforme qui ne fait pas la différence (comme Windows). Afin d'éviter des problèmes, n'utilisez QUE des minuscules pour les nom de fichier!

Certains fichiers de configuration, comme le ".htaccess" à un "."(point)! Il ne faut pas l'oublier, car c'est un fichier au même titre que "configuraration.conf". Là aussi, d'autres plateformes comme Windows, ne permettent pas de créer un fichier ".htaccess"; mais après le téléchargement, il est possible de l'éditer avec le Notepad.


 

La séquence   [touche]  [lettre]   s'applique comme suit: vous appuyez sur [touche], lâchez-la, puis appuyez sur [lettre] et lâchez-la. (et ainsi de suite ...)

 

 

a) Créer, modifier un fichier texte avec VI:

 

vi  nom_de_fichier

 

Exemple: éditer ou modifier le fichier "configuration.conf"

: vi configuration.conf

 

Exemple: éditer ou modifier le fichier ".htaccess"

: vi .htaccess


Vous verrez à ce moment, une fenêtre, avec des "~". Pour écrire, modifier ou effacer des données, vous devrez vous mettre dans le mode "insertion".


 

Pour éditer, modifier, effacer

:   [ESC]  [I]


A ce moment, vous verrez en bas, à gauche de la fenêtre VI, le mode "--INSERT--"

La souris n'existe pas dans ce mode! Pour vous déplacer, vous devez utiliser les curseurs du clavier gauche/droite et haut/bas.

Tapez le texte désiré.

 

Pour effacer du texte

:   [BACKSPACE]  (autant de fois que c'est nécessaire)

 

Pour un retour à la ligne

:   [RETURN]        (autant de fois que c'est nécessaire)



b) Sauver ou quitter SANS sauver un fichier texte:

 

Tapez la séquence

:   [ESC]  [:]


A ce moment, vous verrez en bas, à gauche de la fenêtre VI, le mode ":"

 

Pour  sauver le fichier texte (write quit)

:  [w] [q] [RETURN]

 

Pour quitter SANS sauver

:  [q] [!] [RETURN]


Bien que des *unixiens convaincus vous démontrerons la puissance de VI, utilisez-le seulement pour modifier les fichiers system qui vous concerne.

Note: il est possible de transférer un fichier texte crée depuis une autre plateforme (comme Windows ou Macintosh), mais il faut faire attention, lors du transfert, des séquences LF et CR. Le mode de transfert doit être ASCII dans ce cas.

Retour au sommaire



2) Accompte sur le Serveur Web (Apache):

 

Votre administrateur devra configurer les fichiers de configuration du serveur Apache, de manière à vous laisser le droit de paramétrer l'accès aux divers répertoires, selon vos désirs.

Il devra aussi vous préciser les conditions d'accès au serveur Web, intranet et Internet; il devra vous expliquer exactement la procédure à suivre pour chacune des configurations.

Il devra vous communiquer les informations suivantes:

 

- Accès depuis l'Internet (Intranet)


- Nom du serveur et protocole (FTP/SFTP  et/ou  TELNET/SSH)

- Accompte utilisateur

- Path complet du répertoire WWW, pour la gestion des utilisateurs authentifiés (user et password)

   http://www.webserver.dom/~user
   http://www.webserver.dom

   ftp.webserver.dom

   user et password

   /home/user/WWW
 

En général, vous aurez une configuration dans le genre: /home/user/

Vous trouverez divers répertoires ainsi que des fichiers (cachés) de configuration (avec un ".")

Un répertoire spécialement prévu pour vos pages Web aura été crée; son nom aura été défini par votre administrateur. Nous prendons l'exemple avec "WWW"

 

 

Ne CHANGEZ RIEN dans votre configuration, ne renommez RIEN, ne supprimez RIEN. Relevez exactement le nom répertoire root de vos pages Web (ici WWW).

.Retour au sommaire



2.1) Droits d'accès:


 

Pour que vos pages Web soient accessibles depuis le monde Internet, vous devez autoriser l'accès à vos fichiers. Pour le faire, vous avez deux methodes:

 

- Par le client (S)FTP, au moyen d'un menu contextuel avec la souris; il suffit de sélectionner le fichier ou le répertoire et de faire "touche de droite" avec la souris. Vous trouverez un menu "file attribut ou attribut de fichier".
Vous choisirez la valeur "755"

- Par le client Telnet ou SSH, avec la commande: "chmod -R 755 WWW"

La valeur 755 correspond aux droits d'accès suivant:

 

Propriétaire (Owner) permissions

Lecture, écriture, exécution

 

Groupe permissions

Lecture, exécution

 

Public permissions

Lecture, exécution

La valeur 644 correspond aux droits d'accès suivant:

 

Propriétaire (Owner) permissions

Lecture, écriture

 

Groupe permissions

Lecture

 

Public permissions

Lecture


Suivant les configurations désirées, vous pourez changer cette valeur. Consulter la documentation adéquate, pour des configurations particulières.

Si une page Web n'est pas accessible après l'upload sur le serveur, pensez à regarder les droits d'accès du fichier ou du répertoire.

Il est possible de créer une règle pour que les nouveaux fichiers aient des droits d'accès déterminés.

Pour notre usage, nous utiliserons la commande "umask 022", qui aura pour fonction, lors de la création de nouveaux fichiers ou répertoires:

 

Tous les nouveau répertoires crées auront un

CHMOD de 755

 

Tous les fichiers crées auront un

CHMOD de 644


Attention:
 

le répertoire "user" (/home/user, ou user est votre accompte sur le serveur) doit avoir les droits MINIMUM CHMOD 711:

La valeur 711 correspond aux droits d'accès suivant:

 

Propriétaire (Owner) permissions

Lecture, écriture, exécution

 

Groupe permissions

Execution

 

Public permissions

Execution

Si vous bloquez l'exécution pour Group ainsi que Public, les visiteurs n'auront pas d'accès à vos pages Web!

Retour au sommaire



2.2) Upload de votre site Web sur le serveur :
 

 

Avec un client FTP ou SFTP, il suffira de transférer les répertoires ainsi que les fichiers dans le répertoire prévu (exemple: WWW). Cela peut se faire automatiquent avec votre éditeur HTML.


Si l'on entre un URL avec un répertoire comme http://www.webserver.dom/repertoire, le serveur va rechercher dans un ordre précis, des fichiers HTML ayant comme nom "welcome.html", "welcome.htm", "index.html", "index.htm", ... Cela dépendra de la configuration du serveur Web. Interrogez votre administrateur à ce sujet.

Afin d'éviter tout problème, la solution la plus simple est de nommer le fichier à charger, dans le répertoire, par "index.html" ou "index.htm".


Si dans le répertoire, il n'y a aucun fichier index.html (ou équivalent), il y a deux solutions possibles:

 

- Le serveur autorise le listing du contenu du répertoire appelé
- Le serveur bloque le listing du contenu du répertoire appelé et affiche un message "403 FORBIDDEN"

Par défaut, les règles de configuration liée à l'autorisation du listage ou non du répertoire en l'absence d'un fichier index.html (ou similaire) sont définies par l'administateur.

Si il autorise le listing, il suffira de mettre un fichier index.html, dans le répertoire, pour en bloquer le listing.

Dans l'autre cas, il faut que l'administrateur autorise l'emploi du fichier .htaccess (qui sera traité dans les chapitres suivants), pour autoriser le listing.


Vous êtes libre de gérer comme bon vous semble, les fichiers ainsi que les répertoires, dans le répertoire (WWW dans notre exemple); Cela peut être dicté par le logiciel de création des pages Web.

Par contre, il faut poser une organisation des répertoire à la base du répertoire root (WWW) pour un accès purement interne à l'entreprise ou à l'Ecole (Intranet), avec des utilisateurs authentifiés (users et mots de passe) ainsi que public (Internet).

Faites une étude du cahier des charges de votre site Web:

 

Autorisation du listing du contenu du répertoire

oui - non

 

Blocage lors du listing de certains fichiers (*.jpg *.gif *.mp3 ...)

oui - non

 

Accès depuis une zone Internet déterminées (Filtrage des adresses IP)

oui - non

 

Accès du répertoire à des utilisateurs précis

oui - non

 

Accès du répertoire par un groupe précis

oui - non

 

Accès à des fichiers seulement à des utilisateurs, groupes ou zone Internet

oui - non

Retour au sommaire



3) Le fichier .htaccess:

 

Ce qui est expliqué ici est soumis aux conditions suivantes:

 

- Vos pages Web doivent être hébergées sur un serveur Apache
- L'administrateur aura configuré le serveur, de manière à vous autoriser l'utilisation des fichiers .htaccess


Le fichier .htaccess permet de configurer différentes règles, par répertoires. Le chapitre 4 va vous permettre de configurer les principales fonctions les plus utilisées. Il en existe d'autres, plus spécialisées. Quand vous aurez compris le principe, vous pourrez tweaker encore plus finement votre site Web!

Pour faire appliquer une règle particulière à un répertoire, placez un fichier .htaccess contenant les règles à appliquer, dans ce dernier.

Pour créer un fichier .htaccess, depuis le monde Windows, vous serez confronté à un problème: il n'est pas possible de le générer! Mais il est possible de l'éditer ... une fois crée.

Lancez le notepad, écrivez quelque chose et sauvez le fichier en (par exemple) : file.htaccess

(Si vous essayez de supprimer la particule file pour ne laisser que le .htaccess, vous aurez une erreur de la part de Windows!)

Transférez ce fichier, avec votre client FTP/SFTP et remommez-le en .htaccess. Téléchargez-le à nouveau sur votre PC.Il est possible de l'éditer avec le Notepad. Vous pouvez télécharger ici un fichier .htaccess.


Il est utile de commenter ses fichiers de configuration. Pour en mettre un, il suffit de placer en début de ligne, le symbole "#":

 

# Ceci est un commentaire, et le serveur n'en tient pas compte
Options +Indexes


Mettez un "RETURN" à la fin du fichier, afin d'éviter certains problèmes.


Explications de la syntaxe des commandes:

 

commande   paramètre   [option]   possibilité1|possibilité2|possibilité3

 

 

 

 

commande

nom de la commande

 

Paramètre

valeur à entrer (chaîne de caractère, ...) doit être entrée

 

[option]

Cette option est facultative (entre crochets [])

 

possib1|possib2

Paramètre ayant des possibilités prédéfinies; il faut seulement utiliser celles-ci

Retour au sommaire



3.1) Règles d'héritage des commandes du fichier .htaccess:

 

Les règles héritées par défaut sont celles définies par l'administrateur au moyen des fichiers de configuration du serveur Web Apache.


Toutes les commandes décrites au chapitre 4, sont liées à un concept d'héritage et de priorité.

Les règles d'un répertoire donné sont héritées de celles du répertoire supérieur.

Il est possible d'annuler une règle, pour un répertoire donné, sauf si un accès avec password a été héritée.

Si des règles de limitation d'accès (Zone Internet par filtrage des adresse IP ou accès par password) ont été déclarées, elles seront prioritaires.

Toutes les commandes sont des options que l'on peut ajouter dans le fichier .htaccess, en fonction des règles que l'on veut appliquer.


Voici une exemple d'héritage de commande:

 

Index (+/-)
Password
Zone Intranet

Autorisation du listing du répertoire courant
Accès seulement par des utilisateurs authentifiés
Accès seulement depuis des adresses IP ou domaines déterminés


Les couleurs sont là pour montrer les héritages successifs.


 

Conditions inscrites dans les fichiers .htaccess

Règles d'accès que "subira" le visiteur"

 

 

 

 

 

 

/ Documentation

Password

 

Zone Intranet

 

Index +

 

 

 

 

 

  Index +

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

/ Intranet

/ Database

Index -

 

Password

 

(accès mondial)

 

 

 

  Password

 

  Zone Internet

 

 

 

 

 

 

 

 

 

  Zone Intranet

 

 

 

 

 

 

 

 

 

 

 

 

/ Member

Index -

 

Password

 

Zone Intranet

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

/

/ Public

Index +

 

 

 

 

 

  Index -

 

  Index +

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

/ Web

Index -

 

 

 

 

 

Retour au sommaire



4) Commandes du fichier .htaccess:


4.1) Affichage personnalisé des messages d'erreur (ErrorDocument):
 

 

Si une page Web n'existe pas, qu'une page nécessite une autorisation, qu'un accès est interdit, ..., le serveur vous donne sous un fond blanc, un message comme "404 Page not Found".

Il est possible d'afficher un message personalisé, avec le logo de l'entreprise ou de l'Ecole, détaillant les raisons du problème. Par ce principe, en cas d'un code d'erreur précis, on peut aussi rediriger l'utilisateur sur un autre site Web.

 

Syntaxe: (affichage d'une page Web)

ErrorDocument   error_code  /directory/filename.ext

 

 

 

 

Syntaxe: (affichage d'un message court)

ErrorDocument   error_code   "Message"

 

 

 

 

Syntaxe: (redirection vers un répertoire)

ErrorDocument   error_code   /directory

 

 

 

 

Syntaxe: (redirection vers un autre site Web)

ErrorDocument   error_code   URL

 

 

 

 

 

 

 

Définition des codes d'erreur:

Client Request Errors Codes

 

 

400  Bad Request
401  Authorization Required
402  Payment Required (not used yet)
403  Forbidden
404  Not Found
405  Method Not Allowed
406  Not Acceptable (encoding)
407  Proxy Authentication Required
408  Request Timed Out
409  Conflicting Request
410  Gone
411  Content Length Required
412  Precondition Failed
413  Request Entity Too Long
414  Request URI Too Long
415  Unsupported Media Typ
 

 

 

Server Errors

 

 

500  Internal Server Error
501  Not Implemented
502  Bad Gateway
503  Service Unavailable
504  Gateway Timeout
505  HTTP Version Not Supported

 

 

 

 

URL

http://www.webserver.dom

 

 

 


Les messages d'erreur principaux sont les suivantes:

 

 

401  Authorization Required
403  Forbidden
404  Not Found



# Applications pratiques:

 

a) Si un fichier n'existe pas, on veut afficher une page web qui décrit précisément l'erreur:

    Créez un fichier /404.html, qui décrit l'erreur "404 Not Found".

 

Le fichier .htaccess

# Gestion des messages d'erreur

 

 


ErrorDocument 404 /404.html



b) Si un fichier n'existe pas, on veut afficher un petit message "Ce fichier n'existe pas sur le serveur":

 

Le fichier .htaccess

# Gestion des messages d'erreur

 

 


ErrorDocument 404 "Ce fichier n'existe pas sur le serveur"



c) Si un fichier n'existe pas, on veut que le serveur redirige sur un répertoire /rapport:

 

Le fichier .htaccess

# Gestion des messages d'erreur

 

 


ErrorDocument 404 /rapport



d) Si un fichier n'existe pas, on veut que le serveur redirige sur un autre site web http://www.siteweb.dom/repertoire :

 

Le fichier .htaccess

# Gestion des messages d'erreur

 

 


ErrorDocument 404 http://www.siteweb.dom/repertoire

Retour au sommaire



4.2) Autorisation ou non, du listing d'un répertoire ou d'un type de fichiers (Options, IndexIgnore):

 

Quand vous créez un site Web, vous pointez directement sur les bons fichiers; l'utilisateur ne voit pas immédiatement où sont placés les fichiers.

Il arrive qu'il soit plus pratique de donner accès à un répertoire, où se tient plusieurs fichiers. Cela peut être considéré comme une faille de sécurité suivant les configurations.

L'administrateur a intérêt de bloquer, par défaut, le listing de tous répertoires. Il suffit d'autoriser les répertoires que l'on désire rendre accessible au listing.

 

Syntaxe:

Options +|-Indexes

 

 

 

 

Listing du répertoire

Options +Indexes

 

Blocage du listing du répertoire

Options -Indexes



Il est possible de filtrer exactement des fichiers, avec des extensions précises (.jpg .txt .mp3 ...)

 

Syntaxe:

IndexIgnore filename.ext  [filename.ext]  [filename.ext] ...

 

 

 

 

Non affichage du fichier readme

IndexIgnore readme

 

Non affichage des fichiers *.gif *.jpg *.mp3

IndexIgnore *.gif *.jpg *.mp3

 

Non affichage de tous les fichiers

IndexIgnore *



# Applications pratiques:

 

La configuration par défaut bloque l'affichage du listing des répertoires

a) On désire autoriser le listing d'un répertoire précis:


 

Le fichier .htaccess

# Gestion de l'affichage du contenu du listing du répertoire:

 

 


Options +Indexes


b) On désire autoriser le listing d'un répertoire précis, mais ne pas afficher les images *.gif et *.jpg :

 

Le fichier .htaccess

# Gestion de l'affichage du contenu du listing du répertoire:

 

 


Options +Indexes
IndexIgnore *.gif *.jpg

Retour au sommaire



4.3) Présentation de l'affichage du listing d'un répertoire (IndexOrderDefault):

 

Il est possible de personaliser la présentation du listing d'un répertoire; on peut choisir comment doivent être listés les fichiers et les répertoires (par ordre ascendant ou descendant ainsi que selon des critères comme le nom, la date, la taille ou la description.


 

Syntaxe:

   IndexOrderDefault  Ascending|Descending  Name|Date|Size|Description

 

 

 

 

Affichage par nom, en ordre croissant

   IndexOrderDefault  Ascending  Name
 

 

Affichage par date, en ordre décroissantl

   IndexOrderDefault  Descending  Date
 


# Application pratique:

 

La configuration par défaut bloque l'affichage du listing des répertoires.

On désire afficher le contenu du répertoire, par nom, par ordre croissant:

 

Le fichier .htaccess

# Gestion de l'affichage du contenu du listing du répertoire:

 

 


Options +Indexes
IndexOrderDefault  Ascending  Name 

Retour au sommaire



4.4) En tête et pied de page du listing d'un répertoire (HeaderName, ReadmeName):

 

Il est possible de remplacer l'en-tête constitué du path ainsi que le pied de page constitué de la version du serveur, par votre version personnalisée.


 

Syntaxe pour l'en-tête:

HeaderName  /directory/filename.ext

 

 

 

 

Syntaxe pour le pied de page

ReadmeName /directory/filename.ext


Il est possible d'utiliser des fichier texte et HTML.


# Application pratique:

 

La configuration par défaut bloque l'affichage du listing des répertoires.

On désire afficher un en-tête et un pied de page personnalisé, pour le mode listing du répertoire:

    Créez un fichier /en_tete.txt
    Créez un fichier /pied_de_page.txt

 

Le fichier .htaccess

# Affichage d'un en-tete et d'un pied de page

 

 


Options +Indexes
HeaderName /en_tete.txt
ReadmeName /pied_de_page.txt

Retour au sommaire



4.5) Choix de la page par défaut du répertoire (DirectoryIndex):

 

Par défaut, si l'utilisateur appelle dans le lien URL, un répertoire, le serveur Apache chargera, dans un ordre défini, les fichiers ayant les noms comme "welcome.html", "welcome.htm", "index.html", "index.htm", ...

Comme déjà dit, le plus simple est de charger la page ayant un nom comme index.html.

Mais dans certains cas, lors de migration de site Web, ou autres configurations speciales, il est possible de charger un nom de fichier déterminé.

Il est aussi possible de créer une liste des fichiers qui doivent être chargés (s'il existent dans le répertoire) dans un ordre précis.

 

Syntaxe:

DirectoryIndex  filename.ext  [filename.ext]  [filename.ext]   ...


# Applications pratiques:

 

a) On désire, lorsque un utilisateur entre le nom d'un répertoire dans un URL précis, que le serveur Apache charge le fichier bienvenue.html :

    Créez une page web que vous enregistrerez sous bienvenue.html dans le répertoire en question.

 

Le fichier .htaccess

# Chargement de la page par defaut:

 

 


DirectoryIndex  bienvenue.html


b) On désire, lorsque un utilisateur entre le nom d'un répertoire dans un URL précis, que le serveur Apache recherche et charge dans cet ordre, les fichiers ayant les noms index.html index.htm welcome.html bienvenue.html :

    Créez une page web que vous enregistrerez sous bienvenue.html dans le répertoire en question.

Si il existe, dans le répertoire, un fichier index.html, il sera chargé même si vous avez le fichier bienvenue.html. Par contre, si il n'existe que le fichier bienvenue.html (par rapport a la liste énumérée ci-dessus), c'est cette page qui sera chargée.

 

Le fichier .htaccess

# Chargement de la page par defaut:

 

 


DirectoryIndex  index.html index.htm welcome.html bienvenue.html

Retour au sommaire



4.6) Redirection des pages Web ou des répertoires (Redirect):

 

Il arrive, que l'on change la structure de son site Web. Les visiteurs peuvent bookmarker certaines pages, qui peuvent être changées de place. Dans ce cas, il faut faire une redirection automatique.

Il est possible de le faire en HTML, mais aussi avec le fichier .htaccess:

Voici une solution en HTML, qui redirige automatiquement sur le site http://www.monsite.dom/repertoire:

 

Le fichier index.html

 

 

 

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <meta http-equiv="refresh"content="0;URL=http://www.monsite.dom/repertoire">
    <TITLE>Redirection</TITLE>
  </head>
  <BODY BGCOLOR="white" TEXT="black" LINK="blue" VLINK="purple" ALINK="red">
</html>


Cette solution est universelle et fonctionne sous tous les types de serveurs.


 Un solution plus simple et élégante consiste à faire cette déclaration dans le fichier .htaccess:

 

Syntaxe:

Redirect  [status]   /olddirectory/oldfile.ext   http://yoursite.com/newdirectory/newfile.ext

 

 

 

 

Syntaxe:

Redirect  [status]   /olddirectory   http://yoursite.com/newdirectory

 

 

 

 

Status:

Redirection

 

 

Valeur par défaut





300 Multiple Choices
301 Moved Permanently
302 Found
303 See Other
304 Not Modified
305 Use Proxy
306 unused
307 Temporary Redirect

 

 

 

 

 

Client Request Errors

 

 

410 Gone


Pour les codes ayant une valeur 3xx, vous devez mettre un URL de redirection, pour les autres, il ne doit pas être mis.



Il est fait mention du code (status) pour la Redirection. Vous connaissez déjà le "404 Not Found", qui apparaît très clairement en cas de requête d'un fichier ou d'un répertoire infructeuse!

Par contre, dans le cas des redirection, vous ne les verrez pas forcément (voir pas du tout) avec les navigateurs actuels; en effet, ils vous redirigent automatiquement, sans rien vous dire. C'est pratique, sauf que, un jour, la redirection ne se fera plus, car le répertoire aura été supprimé par l'administrateur. Et cela arrive souvent!

Il est donc utile de regarder si vous êtes toujours sur le site Web de départ, ou si vous avez été redirigés!

Le code HTML décrit plus haut est préférable, car il est possible de faire une page Web qui redirige automatiquement, mais si vous changez la valeur x [content="x;URL= ...] par la durée en secondes, vous pourrez donner une explication sur la raison (changement d'hébergeur, changement de status, ...)

L'utilisateur pourra changer ses BookMark et ses liens dans ses pages Web, de manière à être à jour.



Comme il à été fait mention, dans la redirection, beaucoup de navigateur redirigent automatiquement, sans rien vous dire. Si vous voulez comprendre la différence, et voir l'effet, il vous faut un logiciel d'analyse de traffic Web.

Le logiciel "Viewhead" (voir le chapitre 5), vous permettra de voir la différence entre les codes de redirection.

Avec ce logiciel "httpspy" (voir le chapitre 5), vous verrez les transactions qui sont échangées entre le serveur web et votre Browser.


Si vous mettez aucune valeur dans l'option Status, ce sera la valeur "302 Found" qui sera utilisée.

Il est possible de mettre, dans l'option Status, tous les code reconus par la norme RFC 2616 (et reconnue par le serveur Apache). Maintenant, le but est de mettre un code qui à un sens (a moins que vous vouliez faire une chose de précis)!

Vous pouvez lire la RFC 2616 qui détaille exactement tous les codes (dont ceux liée à la redirection) et de choisir celui qui vous convient le mieux.

Après analyse de plusieurs site Web commerciaux, le plus souvent utilisé est le "302 Found". Dans ce cas, il n'est pas nécessaire de faire figurer l'option Status (valeur par défaut: 302).

Ne vous compliquez pas la vie, voici les cas les plus fréquents:


* 302 Found:

 

Vous voulez gérer votre site web, de manière à migrer très facilement en cas de changement; il est donc intéressant de créer des répertoires type public, intranet, ... Dans ce cas, quand l'utilisateur tape votre nom de domaine, il sera redirigé automatiquement dans le répertoire voulu. C'est le cas de beaucoup de site web commerciaux. Dans ce cas, vous utiliserez la veuleur par défaut, c'est à dire "302 Found".



* 301 Moved Permanantly

 

Si vous possédez plusieurs nom de domaine, et que vous vouliez séparer les activités, (loisir, professionnel), ce code est le plus adapté.

Si vous hébergiez un répertoire dont le contenu n'est plus chez vous (il pointe sur un autre site Web), et que vous n'êtes plus concerné par son contenu (vous vous contentez de faire suivre), il est preférable d'utiliser l'option page web décrit plus haut. Vous en expliquerez les raisons aux visiteurs, qui devront IMPERATIVEMENT mettre à jours leur bookmark et liens Web.


* 410 Gone

 

Vous aviez un répertoire que vous avez supprimé, et il n'existe plus ailleurs.

Un exemple pratique, est par exemple une offre promotionnelle, un event, ... ou toute chose qui à une valeur limitée dans le temps et qui n'a plus de raison d'être accessible.



Vous pouvez gérer les redirection dans chaque répertoire concernés, ou dans le .htaccess qui se tient a la racine du site Web /.


# Applications pratiques:

 

a) Redirection de nom de fichiers

    Nous avons la structure suivante:

    URL:http://www.monserveur.dom

    /documentation/rapport/liste.html
    /rapport/liste.html

Nous voulons que lorsque l'utilisateur tape l'URL suivant:
    http://www.monserveur.dom/documentation/rapport/liste.html
soit automatiquement redirigé sur l'URL suivant:
    http://www.monserveur.dom/rapport/liste.html

Le fichier .htaccess devra être placé dans le répertoire /documentation/rapport

 

fich .htaccess

# Redirection automatique

 

 


Redirect /documentation/rapport/liste.html http://www.monserveur.dom/rapport/liste.html



b) Redirection de répertoires:

    Nous avons la structure suivante:

    URL:http://www.monserveur.dom

    /documentation/rapport
    /rapport

Nous voulons que lorsque l'utilisateur tape l'URL suivant:
    http://www.monserveur.dom/documentation/rapport
soit automatiquement redirigé sur l'URL suivant:
    http://www.monserveur.dom/rapport

Le fichier .htaccess devra être placé dans le répertoire /documentation/rapport


Remarque:



 

dans cet exemple, la fonction redirect aura pour but de remplacer /documentation/rapport par /rapport. Si le visiteur entre un nom de fichier documentation/rapport/fichier1.ext, cela aura pour effet de rediriger sur /rapport/fichier1.ext.
Cet exemple s'applique quand on deplace un répertoire entier vers un autre emplacement, sans rien changer dans son contenu!


 

Le fichier .htaccess

# Redirection automatique de

 

 


Redirect /documentation/rapport http://www.monserveur.dom/rapport



c) Redirection "complexe":

Si vous avez un répertoire un peu "compliqué" que vous vouliez déplacer, et que votre visiteur soit automatiquement redirigé dedans, même si certains fichiers ont été supprimés, il est possible d'utiliser la commande ErrorDocument en parallèle comme suit:


Nous avons la structure suivante:

    URL:http://www.monserveur.dom

    /documentation/rapport
    /rapport

Nous voulons que lorsque l'utilisateur tape l'URL suivant:
    http://www.monserveur.dom/documentation/rapport/liste.html
soit automatiquement redirigé sur l'URL suivant:
    http://www.monserveur.dom/rapport/liste.html

    http://www.monserveur.dom/documentation/rapport/(file)
soit automatiquement redirigé sur l'URL suivant:
    http://www.monserveur.dom/rapport/(file)

    et que si un fichier "file" demandé par le visiteur dans le répertoire
  http://www.monserveur.dom/documentation/rapport/(file)
n'existe plus, soit automatiquement redirigé dans le répertoire
  http://www.monserveur.dom/documentation/rapport


Ce fichier .htaccess devra être placé dans le répertoire /documentation/rapport

 

Le fichier .htaccess

# Gestion de la redirection d'un répertoire

 

 


Redirect  /documentation/rapport  http://www.monserveur.dom/rapport 


Il suffit de faire lister le répertoire, si un fichier, ou un répertoire n'existe pas.

Ce fichier .htaccess devra être placé dans le répertoire /rapport

 

Le fichier .htaccess

# Gestion de la redirection d'un répertoire

 

 


ErrorDocument  404 /rapport
Options  +Indexes


Ce principe s'applique aussi dans le cas d'un changement de nom de domaine et de serveur.


Vous pouvez mettre un en-tête (et un pied de page), qui décrit les modifications qui sont intervenues, pour que le visiteurs puisse plus facilement s'y retrouver. Il suffit d'ajouter la commande HeaderName (ReadmeName) avec le nom du fichier à charger. Voir chapitre 4.4.
Si vous placez ces fichiers d'en-tête et pied de page dans le même répertoire, il sera possible de ne pas le(s) faire apparaître lors du listing du répertoire avec la commande IndexIgnore. Voir le chapitre 4.2.


d) Redirection avec Status "301 Moved Permanetly"

Nous avons la structure suivante:

    URL:http://www.monserveur.dom

    /documentation/rapport

Nous voulons que lorsque l'utilisateur tape l'URL suivant:
    http://www.monserveur.dom/documentation/rapport
soit automatiquement redirigé sur l'URL suivant:
    http://www.monnouveauserveur.dom/rapport

Nous voulons qu'il soit déclarés comme "301 Moved Permanently"

Le fichier .htaccess devra être placé dans le répertoire /documentation/rapport

 

Le fichier .htaccess

# Redirection automatique de

 

 


Redirect 301  /documentation/rapport  http://www.monnouveauserveur.dom/rapport

Retour au sommaire



4.7) Filtrage des adresses IP (order allow deny):

 

Nous nous bornerons ici, à pratiquer des règles simples! Les manuels de référence indiquent d'autres moyen de filtrer l'accès à Internet de votre serveur, grace aux masque de sous-réseau. Cela permet un filtrage très fin, mais demande plus de connaissances; cela complique aussi les explications à ce sujet. Dans la majorité des cas, on s'occupe de filtrer des subnet entier (xxx.xxx.subnet.xxx)

Le filtrage, c'est-à-dire la création de régles, gérant l'autorisation ou le refus de certaines adresses IP est nécessaire si l'on veut faire un zone Intranet, par exemple. Cela sert aussi à l'accès de certains documents sensibles, qui ne doivent être consultés seulement depuis des zones Internet bien déterminées. Naturellement, si vous avez des visiteurs "parasites", vous pourrez aussi leur interdire l'accès à vos pages Web!


Le principe est le suivant: on définit d'abord l'ordre de traitement des règles, autorisation (allow) et blocage. (deny). Ensuite on donne pour chaque cas (autorisation et blocage), les adresses IP's ou nom de domaine concernés.

L'ordre (order) de deny et allow est TRES important: le serveur va traiter toutes les déclarations de la première règle, et ensuite traiter toutes les déclarations de la deuxième règle; si il y a "contradiction", ce sera les conditions de la deuxième règle qui seront appliquées.

Il est préférable de regrouper les règles allow et deny; mais le serveur ne les lit pas à la suite, mais les traite selon l'ordre choisi dans la commande order.


ATTENTION, IL N'Y A PAS D'ESPACE ENTRE deny,allow!


 

Syntaxe:


order deny,allow
deny from  IP address|domain|all
allow from  IP address|domain|all

 

 

 

 

Syntaxe:


order allow,deny
allow from  IP address|domain|all
deny from  IP address|domain|all

 

 

 

 

 

 

IP Adress

Complète

xxx.xxx.xxx.xxx

123.123.123.123

 

 

Partielle

xxx.xxx.xxx

123.123.123

 

 

 

xxx.xxx

123.123

 

 

 

xxx

123

 

 

 

 

 

***

domain

Complet

host.domain.top_level_domain

www.server.com

 

 

Partiel

        domain.top_level_domain

         server.com

 

 

 

                    top_level_domain

                    com

 

 

 

 

 

 

all

Tout le monde

 

 


***



 

Remarque:




La résolution DNS est soumise à des conditions. Vous pouvez résoudre le domain1, et avoir une adresse IP. Si vous faites une résolution de cette adresse IP, vous devriez avoir le domain1, mais cela n'est pas toujours le cas.
Suivant les configuration du serveur Web, il peut y avoir une résolution double ou une simple du nom de domaine. (Une résolution simple permet de limiter le trafic)



# Applications pratiques:

 

a) On désire bloquer l'accès au domaine clicclic.tw ainsi que l'adresse IP 123.123.123.123 (Mais autoriser le reste du monde) :

 

Le fichier .htaccess

# Restriction d'acces

 



 

 



 


order allow,deny
allow from all
deny from clicclic.tw
deny from 123.123.123.123



b) On désire donner seulement l'accès au domaine clicclic.tw ainsi que l'adresse IP 123.123.123.123 (Mais bloquer le reste du monde) :

 

Le fichier .htaccess

# Restriction d'acces

 



 

 



 


order deny,allow
deny from all
allow from clicclic.tw
allow from 123.123.123.123

Retour au sommaire



4.8) Gestion des accès pour des utilisateurs authentifiés (.htpasswd .htgroup):

 

Il est possible, de gérer les droit d'accès (simplifiés) avec le fichier .htaccess. Nous nous limiterons à l'autorisation d'accès à un répertoire, avec des utilisateurs ou des groupes.

Avant d'aller plus loin, commencez à faire la liste des utilisateurs ainsi qu'à quels groupes (facultatif) auquels ils feront partie. Si vous pensez avoir très peu d'utilisateurs, ce n'est pas critique. Mais dès que le nombre d'utilisateurs devient important, il faut penser à cette organisation avant, afin d'éviter d'avoir un "Moulin à vent"!

Ce qui est expliqué ici est pour un nombre raisonnable d'utilisateurs; pour un nombre très important, il faut utiliser d'autres methodes, liées à l'utilisation de base de données.


La déclaration des utilisateurs consiste à les inscrire dans un fichier (.htpasswd) avec leur password, sous une forme cryptée.

La gestion des groupes se gère par un fichier (.htgroup); on associe des utilisateurs à un ou des groupes.

Les noms de fichiers .htpasswd, ainsi que .htgroup sont une convention. Il est possible (et c'est conseillé) de les renommer autrement! Ils peuvent se trouver dans le répertoire courant à protéger, à condition d'en bloquer l'accès à Internet par des règles spécifiques. Cela est nécessaire si vous avez seulement accès à votre compte que par FTP; ce cas est traité dans le chapitre 4.8a.

Il est possible de créer plusieurs fichiers utilisateurs et groupes; chaque répertoire peut faire référence à un fichier utilisateur ou groupe précis. Cela permet une gestion plus facile suivant les conditions.

Jusqu'à présent, nous avons désigné "/" par le root du serveur Web. Les fichiers de sécurité devront se retrouver en dehors, de manière à être hors d'atteinte depuis Internet (cas idéal).

Nous avons une structure dans notre compte Linux/Unix "/home/user/" (User étant votre accompte).

Pour le serveur web, cela donne "/home/user/WWW". (User étant votre accompte)

Il faudra créer un répertoire dans lequel vous aurez tous les fichiers concernant les droits d'accès, en dehors du répertoire WWW.


a) Création des utilisateurs:

 

ATTENTION :VOUS DEVREZ FAIRE UN chmod -R 755 [repertoire]


Dans le répertoire "/home/user", créez un répertoire "account", et sélectionnez-le:

 

mkdir account
 
cd account


Les fichiers que nous allons créer ici, sont de simples fichiers texte. Il est possible de les éditer, modifier avec n'importe quel éditeur de texte. La commande htpasswd est là pour vous vous générer le cryptage du mot de passe, et de faciliter la gestion.

Pour créer un nouveau fichier avec les utilisateurs:

 

htpasswd  [-c]  nom du fichier  utilisateur


Nous avons choisi exprès de choisir un nom de fichier pour les utiliateurs, différent de .htpasswd, pour vous démontrer que vous êtes libre de le choisir.


a.1) Créer un nouveau fichier .motdepasse, en y ajoutant l'utilisateur "joe":

 

htpasswd -c .motdepasse joe

Il vous suffira d'entrer deux fois le même mot de passe.


a.2) Ajouter un nouvel utilisateur "eve" dans le fichier .motdepasse:

 

htpasswd .motdepasse eve

Il vous suffira d'entrer deux fois le même mot de passe.


Si vous affichez le contenu du fichier .motdepasse (more .motdepasse), vous observerez quelque chose comme:

 

joe:wBtlP/INDQjBE
eve:Q3GIByTbjLbG.


Si vous changez à la suite, deux fois de mot de passe, en remettant exactement le même, vous verrez que le résultat crypté (algorithme MD5, mais avec une version propre a Apache), est complètement différent. Mais quand vous entrerez le mot de passe en question depuis la page Web, cela fonctionnera dans les deux cas. Cela permet une très grande sécurité, car même si quelqu'un a accès en lecture de ce fichier, il ne pourra pas facilement en déduire le mot de passe.


a.3) Supprimer un utilisateur:

 

Utilisez un éditeur de texte, comme VI, et supprimez la ligne   utilisateur:mot de passe

vi .motdepasse


b) Création  des groupes:

 

Nous créerons, dans le répertoire /home/user/account le fichier .group

Utilisez un éditeur de texte, comme VI. Créez un fichier .group

vi .group

 

group1: [user1] [user2] [user3] ...
group2: [user4] [user5] [user6] ...
... : ... ... ... 


Afin d'éviter d'avoir des lignes trop longues, il est possible de mettre à la suite:

 

group1: [user1] [user2]
group1: [user3] [user4]

group2: [user5] [user6]
group2: [user7] [user8]

....



Un utilisateur peut faire partie de plusieurs groupes.

Exemple:

 

managers: eve john bob
technical: tim peter xavier  
sale: bob daisy ruth



c) Définition du fichier .htaccess pour les accès avec des utilisateurs authentifiés:


 

Syntaxe:




AuthUserFile /absolute/path/to/file
AuthGroupFile   /absolute/path/to/file
AuthName "Text that prompts the user"
AuthType Basic
Require   user|group|valid-user  paramètre

 

 

 

 

Paramètre Require

 

Require  user user1   [user2]   [user3] ...
Require group  group_name1  [group_name2]  [group_name3] ...
Require  valid-user

 

 

 

 

Paramètre Require

 

Require  user  user1
Require  user  user2
Require  user  user3

 

 

Require  group  group_name1
Require  group  group_name2
Require  group  group_name3

 

 

 

 

 

user

:Seuls les utilisateurs nommés peuvent accéder au répertoire.

 

 

group

:Seuls les utilisateurs des groupes cités peuvent accéder au répertoire

 

 

valid-user
 

:Tout utilisateur reconnu peut accéder au répertoire (par opposition aux non-utilisateurs).


# Applications pratiques:

 

Nous avons définis le fichier des utilisateurs: /home/user/account/.htpasswd
  (bob john eve)

Nous avons définis le fichier des utilisateurs: /home/user/account/.htgroup
  (managers technical sale)


a) Nous voulons donner l'accès aux utilisateurs suivants : bob john eve


 

Le fichier .htaccess

# Controle des l'acces aux utilisateurs





 





 


AuthUserFile /home/user/account/.htpasswd
AuthGroupFile /home/user/account/.htgroup
AuthName "Acces reserve aux membres"
AuthType Basic
Require user bob john eve



b) Nous voulons donner l'accès aux utilisateurs du group : manager


 

Le fichier .htaccess

# Controle des l'acces aux utilisateurs

 



 

 



 


AuthUserFile /home/user/account/.htpasswd
AuthGroupFile /home/user/account/.htgroup
AuthName "Acces reserve aux manager's"
AuthType Basic
Require group manager



c) Nous voulons donner l'accès à tous les utilisateurs référencés dans le fichier .htpasswd


 

Le fichier .htaccess

# Controle des l'acces aux utilisateurs

 



 

 



 


AuthUserFile /home/user/account/.htpasswd
AuthGroupFile /home/user/account/.htgroup
AuthName "Acces reserve aux membres"
AuthType Basic
Require valid-user



Les règles définies par Require, peuvent être mixées, c'est à dire de mélanger des user et group, et de placer plusieurs paramètres sur une ligne come l'exemple ci-dessous:

 

Require




 

Require user bob
Require user john
Require user eve
Require group sale marketing
Require group technical
Require user sophie


Dans ce cas, les utilisateurs bob john eve sophie ainsi que les groupes sale marketing technical auront accès au répertoire.

Retour au sommaire



4.8a) Cas particulier: Création d'accompte sans accès avec TELNET/SSH:

 

Jusqu'à présent, nous avons décrit quelques commandes Linux/Unix pour donner des droits d'accès (CHMOD -R 755 répertoire) et la création d'accomptes comme expliqué dans le chapitre 4.8.

Il est possible que vous ayiez un compte FTP/SFTP uniquement, et que vous vouliez créer des droits d'accès avec des utilisateurs authentifiés aux répertoires voulus.

Dans ce cas, vous devrez connaître impérativement le path complet du répertoire WWW (par exemple /home/user/WWW). Vous devrez demander cette information à votre administrateur. Sans elle, vous ne pourrez pas appliquer ce qui suit!


Le principe est exactement le même qu'au chapitre 4.8, sauf que la génération du password crypté en MD5 Apache, devra être fait depuis votre plateforme et que les fichiers .htpassword et .htgroup devront être placés dans le répertoire protégé.


# Application pratique:

 

Path absolu du répertoire WWW:  /home/user/WWW


On veut protéger le répertoire "comptabilite" par un accès par accompte (user et password) avec une gestion des groupes; seuls les membres du groupe manager aura accès à ce répertoire.

Par contre, les fichiers contenant les accomptes et les groupes ne seront pas accessibles!


Par sécurite, on renommera les deux fichiers sensibles .htpasswd par .motdepasse et .htgroup par .ensemble.

CECI EST UN EXEMPLE! VOUS DEVREZ RENOMMER CES NOMS DE FICHIERS PAR DES NOMS QUE VOUS SEULS CONNAITREZ! (Plus ils seront difficiles à deviner, meilleurs sera la sécurité.

Le "." (point) devant les fichiers Linux/Unix indique que ce sont des fichiers cachés. Ils ne seront pas visibles en mode listing du répertoire.


 

Le fichier .htaccess

# Controle des l'acces aux utilisateurs

 



 

 



 


AuthUserFile /home/user/WWW/comptabilite/.motdepasse
AuthGroupFile /home/user/WWW/comptabilite/.ensemble
AuthName "Acces reserve aux personnes authentifiees"
AuthType Basic
Require group manager

<FILES .motdepasse>
deny from all
</FILES>

<FILES .ensemble>
deny from all
</FILES>


La commande <FILES> permet de créer des règles particulières; dans ce cas, on interdit l'accès à ces fichiers, depuis Internet.


a) Creation des accomptes:

Comme vous n'avez pas accès au monde Linux/Unix, il vous faudra le programme htpasswd pour votre plateforme.

La solution la plus simple est de télécharger, chez Apache, le serveur complet, et de l'installer. Vous récupérerez, dans le répertoire \program files\Apache group\Apache 2\bin\htpasswd.exe que vous copierez ailleurs; désinstallez Apache, si vous ne l'utilisez pas. La version htpasswd, pour Windows 32 bits est disponible dans le chapitre 5.


Le principe est le même que sous Linux/Unix, sauf que vous ne générerez pas de fichiers avec un "." (point) devant le nom du fichier.

 

htpasswd  [-c]  motdepasse  user


Le fichier aura le même principe que décrit dans le chapitre 4.8, c'est-à-dire, user:password.

Note: la partie passsword sera légèrement différente, mais cela fonctionne exactement de la même manière.


b) Création des groupes:

Avec un éditeur de texte (Notepad), vous créerez le fichier "ensemble":

 

Group:  user1   [user2]  [user3]  ...


- Uploadez les fichier "motdepasse" et "ensemble" dans le répertoire "Comptabilite".

- Renommez les fichiers "motdepasse" en ".motdepasse"  et  "ensemble" en ".ensemble".


Vous devrez mettre le CHMOD avec la valeur de 755 sur le répertoire "Comptabilite", ".modedepasse" ".ensemble" et ".htaccess". (Ceci au moyen de la touche de droite de la souris)

Retour au sommaire



4.9) Contrôle d'accès mixte: IP et utilisateurs (Satisfy):

 

Nous avons étudié, au chapitres 4.7 et 4.8 comment gérer les droits d'accès par rapport aux adresses IP et aux utilisateurs / groupes.

Si vous voulez contrôler les accès des adresses IP ainsi que des utilisateurs authentifiés simultanément, vous devrez ajouter la commande suivante:

 

Syntaxe:

Satisfy all|any

 

 

 

 

Satisfy all

Le visiteur doit être un utilisateur valide ET surfer depuis une adresse IP autorisée

 

Satisfy any

Le visiteur doit être un utilisateur valide OU surfer depuis une adresse IP autorisée

 

 

 



# Applications pratiques:

 

Nous avons définis le fichier des utilisateurs: /home/user/account/.htpasswd
  (bob john eve)

Nous avons définis le fichier des utilisateurs: /home/user/account/.htgroup
  (managers technical sale)


a) Nous voulons que les visiteurs accèdent depuis le domaine clicli.tw ou depuis l'adresse IP 123.123.123.123, ET qu'ils soient des utilisateurs authentifiés. Il s'agit d'un exemple de gestion Intranet (accès depuis une zone donnée); il n'est possible que d'accéder depuis la zone Intranet, et seulement par des utilisateurs précis.

 

Le fichier .htaccess

# Controle des l'acces aux utilisateurs et accès depuis Internet

 



 

 



 


AuthUserFile /home/user/account/.htpasswd
AuthGroupFile /home/user/account/.htgroup
AuthName "Acces reserve aux membres"
AuthType Basic
Satisfy all
order deny,allow
deny from all
allow from clicclic.tw
allow from 123.123.123.123
Require valid-user



b) Nous voulons que les visiteurs accèdent depuis le domaine clicli.tw ou depuis l'adresse IP 123.123.123.123, OU qu'ils soient des utilisateurs du groupe technical. Il s'agit d'un exemple de gestion Intranet (accès depuis une zone donnée); mais un groupe référencé peut accéder depuis Internet, au répertoire.

 

Le fichier .htaccess

# Controle des l'acces aux utilisateurs et accès depuis Internet

 



 

 



 


AuthUserFile /home/user/account/.htpasswd
AuthGroupFile /home/user/account/.htgroup
AuthName "Acces reserve aux membres"
AuthType Basic
Satisfy any
order deny,allow
deny from all
allow from clicclic.tw
allow from 123.123.123.123
Require group technical



Il est possible de combiner ce qui à été expliqué aux chapitres 4.7 et 4.8. Posez bien les conditions que vous devez réaliser.

 

Accès depuis les adresses IP/domaine

(liste) | toute (attention à l'ordre allow/deny)

 

Blocage depuis les adresses IP/domaine

(liste) | toute (attention à l'ordre allow/deny)

 

Contrôle de l'accès des utilisateurs

(liste) | toute | aucun

 

Contrôle de l'accès des groupes

(liste) | aucun

Retour au sommaire



4.10) Contrôle de l'accès à certains fichiers (<FILES>):

 

Nous avons étudié, dans le chapitre 4.9, un contrôle d'accès mixte (adresse IP et utilisateur).

Il est possible d'appliquer ces règles, à des fichiers précis, ou à des extensions précises:

 

Syntaxe:

 

<FILES file>
    rule(s)
</FILES>

 

 

 

 

file : fichier précis "fichier.ext"
      : tous les fichiers avec l'extension "ext"

 fichier.ext
 *.ext

 

 

 

 

rule(s)
 

order  deny allow
require user|group|valid-user


Les régles d'accès les plus restrictives (accès général ou au fichiers précis) sont prioritaire

Les fichiers n'apparaissent pas, (même en mode listing), si l'utilisateurs n'a pas le droit d'accès.


# Application pratique:


 

Nous avons définit les utilisateurs, ainsi que les groupes.

Nous voulons que le répertoire "comptabilite" soit accessible seulement par des utilisateurs authentifiés.

Les fichiers *.exe ne devront être accessibles par le groupe "admin"

Les fichiers *.xls ne devront être accessibles seulement par le groupe "manager" et seulement accessible depuis le domaine "company.com"


 

Le fichier .htaccess

# Controle des l'acces des fichiers

 





AuthUserFile /home/user/account/.htpasswd
AuthGroupFile /home/user/account/.htgroup
AuthName "Acces reserve aux personnes authentifiees"
AuthType Basic
Require valid-user


<FILES *.exe>
require group admin
</FILES>  


<FILES *.xls>
satisfy all

order deny,allow
deny from all
allow from company.com

require group manager
</FILES>

Retour au sommaire



4.11) Gestion des extensions: ajout des types MIME (AddType):

 

MIME = Multipurpose Internet Mail Extensions

Sous cette appelation peu claire, il est possible de gérer la gestion des extensions de certains fichiers.

Il vous est sûrement arrivé, de cliquer sur un fichier .pps (Microsoft PowerPoint) avec un navigateur comme Nestcape, et de ne pas avoir l'option ouvrir/télécharger, mais d'avoir l'affichage du contenu qui est binaire. De plus, tous les navigateurs ne savent pas forcément manipuler correctement tous les fichiers multimedia (image, video, son, ...)

Il est possible de redéfinir le type de fichier pour une extension donnée:

 

Syntaxe:

AddType  MIME-type extension  [extension]  ...

 

 

 

 

MIME-type

 
 

application/octet-stream

Par cette définition, quand le visiteur appellera ce fichier, il aura automatiquement la boite de dialogue "open with / save as"; le fichier ne sera pas visualisé dans le navigateur.

 

 

 

 

extension

.jpg .jpeg .gif .mp3 .pdf .doc .xls .pps ...



# Application pratique:

 

Nous voulons que les fichiers de Microsoft Office ne soient pas visualisé dans Internet Explorer ou un autre navigateur, mais qu'il y ait un menu "open with / save as"


 

Le fichier .htaccess

# Gestion MIME

 

 


AddType application/octet-stream .doc .xls .pps

Retour au sommaire



5) Liens:

 

URL:

 

 

 

Logiciel "open-source" Web Server Apache

http://www.apache.org

 

 

 

 

Documentation et fichiers:

 

 

 

Documentation des modules Apache
 

http://httpd.apache.org/docs/mod/
Copie locale

 

 

Documentation RFC RFC 2616  
Chapitre 10 - Status Code Definitions

Copie locale
 

 

 

 

 

Fichier .htaccess à télécharger

Copie locale

 

 

 

 

Logiciels :

 

 

 

Logiciel htpasswd (Windows 32b)

Copie locale

 

 

Logiciel FTP/SSH        Filezilla
 

http://prdownloads.sourceforge.net/filezilla
         /FileZilla_2_2_7c.zip?download

 

 

Logiciel TELNET/SSH  Putty

http://the.earth.li/~sgtatham/putty/latest/x86/putty.exe

 

 

 

 

Logiciel Viewhead (Windows 32b)

http://www.pc-tools.net/
Copie locale

 

 

Logicel Httpspy (Windows 32b)
 

http://www.rwtemple.com/software/HttpSpy
Copie locale (backup zippe)

 

 

 

Retour au sommaire




 

 

 

 

 

 

 

 

 

 

Cet article à été consulté  

Compteur

fois

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Lecture des fichiers .pdf

Get Adobe Reader

 

Décompression des fichiers .zip

Get Winzip

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Service Informatique du CRPP (CRPPIT) - CRPP PPH 269 - EPFL - Station 13 - CH 1015 LAUSANNE - Switzerland Europa

 

Copyright © 2004



©2004 CRPP, CH-1015 Lausanne, Tél. ++41 (0) 21 / 693 34 74,