|
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.


|
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)
|
|

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:
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.
|

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.
|

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.
|

|
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).
|
|
.
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!
|
|

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
|
|

|
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
|
|

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 -
|
|
|
|
|
|
|

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
|
|
|

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
|
|
|

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
|
|
|

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
|
|
|

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
|
|
|

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
|
|
|

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
|
|
|

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:
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:
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.
|
|

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)
|
|

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
|
|
|

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>
|
|
|

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
|
|
|


|
|