Seance 05 - Apache et droits Unix

Transcription

Seance 05 - Apache et droits Unix
WEBMESTRE : CONCEPTION DE SITES ET
ADMINISTRATION DE SERVEURS WEB
Installation et administration d’un serveur web
Module 25793 TP A5 (1/2 valeur)
Chapitre 5
Apache et droits Unix
Le plus grand soin a été apporté à la réalisation de ce support pédagogique afin de vous fournir une information
complète et fiable. Cependant, le Cnam Champagne-Ardenne n'assume de responsabilités, ni pour son
utilisation, ni pour les contrefaçons de brevets ou atteintes aux droits de tierces personnes qui pourraient résulter
de cette utilisation.
Les exemples ou programmes présents dans cet ouvrage sont fournis pour illustrer les descriptions théoriques.
Ils ne sont en aucun cas destinés à une utilisation commerciale ou professionnelle.
Le Cnam ne pourra en aucun cas être tenu pour responsable des préjudices ou dommages de quelque nature
que ce soit pouvant résulter de l'utilisation de ces exemples ou programmes.
Tous les noms de produits ou autres marques cités dans ce support sont des marques déposées par leurs
propriétaires respectifs.
Ce support pédagogique a été rédigé par Michel Melcior, enseignant vacataire au Cnam Champagne-Ardenne.
Copyright  2001-2003 Centre d'Enseignement A Distance du Cnam Champagne-Ardenne.
Tous droits réservés.
Toute reproduction, même partielle, par quelque procédé que ce soit, est interdite sans autorisation préalable du
Cnam Champagne-Ardenne. Une copie par xérographie, photographie, film, support magnétique ou autre,
constitue une contrefaçon passible des peines prévues par la loi, du 11 mars 1957 et du 3 juillet 1995, sur la
protection des droits d'auteur.
CONSERVATOIRE NATIONAL DES ARTS ET METIERS
APACHE ET DROITS UNIX
1. OBJECTIFS
En fin de séance, vous devriez être capable :
De gérer les droits UNIX pour obtenir un accès correct aux documents mis en ligne.
De choisir sous quelle identité Apache accèdera aux fichiers UNIX.
2. INTRODUCTION
Tout processus sous UNIX utilise une identité (UID et GID ou nom + groupe) pour accéder au système
de fichiers. D'une manière générale, c'est l'identité de celui qui lance le processus qui est utilisée.
Apache ne fait pas exception à cette règle. On peut donc dire que l'accès à un fichier du disque par un
client distant dépendra des droits UNIX de ce fichier par rapport à l'identité d'Apache
Il ne faut pas oublier les droits propres à Apache que vous définissez dans les conteneurs <Directory>.
L'accès d'un client suit donc le schéma ci-dessous :
Client
Apache
Droits associés
(<Directory ….>)
Fichier
Droits UNIX
(rwxrwxrwx)
3. ACCES AU SYSTEME DE FICHIERS PAR APACHE
httpd (Apache) doit être démarré à partir du compte root. Ceci lance un processus "père" qui va écouter
les requêtes des clients. Ce processus "père" va donc fonctionner sous l'identité root.
Pour chaque requête, il passera la main à un processus "fils" qui répondra au client. Le processus "père"
veillera également à ce qu'un nombre suffisant de processus "fils" soient chargés en mémoire pour
répondre aux requêtes. L'identité des processus "fils" est définie à l'aide des directives suivantes :
Directive : User
Syntaxe : User [nom d'utilisateur Unix]
Contexte : configuration serveur, hôte virtuel
Module : core
Exemple : User nobody
L'utilisateur en question doit bien sûr exister. Si vous installez Apache par package (rpm) l'utilisateur par
défaut sera automatiquement créé.
Directive : Group
Syntaxe : Group [nom de groupe Unix]
Contexte : configuration serveur, hôte virtuel
Statut : core
Exemple : Group nobody
Installation et administration d’un serveur web 1
CONSERVATOIRE NATIONAL DES ARTS ET METIERS
1. Dans quel fichier de configuration d'Apache trouve-t-on ces deux directives ?
______________________________________________________________________
2. Sous quelle identité votre Apache accède-t-il au système de fichiers ?
______________________________________________________________________
Le choix de cette identité n'est pas neutre, la plupart du temps on choisira une identité inoffensive. Une
grave erreur serait de donner une identité avec des droits d'administration à Apache, n'oubliez pas que
n'importe qui peut accéder à Apache via un navigateur web.
3. Quel est le répertoire contenant la racine des documents html de votre serveur web ?
______________________________________________________________________
4. Qui en est le propriétaire, quel est le groupe privilégié et quels sont les droits UNIX ?
______________________________________________________________________
5. Vous (root) allez à présent créer le répertoire /home/web. Déclarez ce répertoire comme
racine du serveur web. Donnez la possibilité de lister le contenu de ce répertoire via la
directive directory d'Apache (et options indexes).
6. Créez, dans ce répertoire, une page d'accueil que vous nommerez index.html pour qu'elle soit
prise par défaut.
7. Relancez Apache et testez votre page d'accueil.
8.
Normalement, le propriétaire et le groupe privilégié du répertoire /home/web sont root, root.
Supprimez tous les droits pour le groupe other de ce répertoire.
9. Pouvez vous accéder à votre page d'accueil (attention aux effets du cache des navigateurs).
Je vous conseille pour ces petits tests d'utiliser le navigateur texte lynx dans une console. Lynx
n'ayant pas de cache, vous aurez toujours un affichage actualisé.
Exemple : lynx 127.0.0.1
10. Essayez successivement de donner les droits suivants au répertoire pour le groupe other:
r
x
rx
11. Quels sont les droits suffisants pour visualiser la page d'accueil ?
______________________________________________________________________
Apache et droits Unix 2
CONSERVATOIRE NATIONAL DES ARTS ET METIERS
12. Est-il raisonnable d'accorder le droit w au groupe other ?
______________________________________________________________________
13. Renommez la page index.html en accueil.html. Donnez les droits rwxrwx--x au répertoire
/home/web. Pouvez vous afficher l'URL http://127.0.0.1/accueil.html ?
14. Pouvez vous afficher le contenu du répertoire avec l'URL http://127.0.0.1/ ? Modifiez les droits
UNIX du répertoire pour obtenir ce résultat.
4. LES PAGES PERSONNELLES DES UTILISATEURS UNIX
Il existe une façon simple, pour l'administrateur d'Apache, d'autoriser les utilisateurs du système UNIX à
publier leurs pages personnelles.
La directive UserDir permet de définir un répertoire type que les utilisateurs devront créer dans leur
répertoire personnel. Ce répertoire type sera accessible à l'URL http//[serveur]/~[nom de l'utilisateur].
Directive : UserDir
Syntaxe : UserDir [repertoire]
Défaut : UserDir public_html
Contexte : configuration serveur, hôtes virtuels
Module : mod_userdir
Etudions un exemple. Vous gérez le serveur www.titi.com . L'utilisateur UNIX sylvestre possède un
répertoire personnel (/home/sylvestre). Vous avez déclaré dans la configuration d'Apache :
UserDir
public_html
Pour publier la page cartoon.html, sylvestre devra créer dans /home/sylvestre le répertoire public_html
puis, placer cartoon.html dans /home/sylvestre/public_html. Cette page sera accessible à l'URL :
http://www.titi.com/~sylvestre/cartoon.html
Les installations d'Apache par défaut (à partir de paquetages RPM), contiennent un (voire plusieurs)
conteneur directory chargé de définir les droits Apache pour les sous-répertoires de type userdir.
Par exemple, si UserDir est défini avec la valeur "public_html", vous trouverez la déclaration suivante
dans le fichier de configuration d'Apache.
<Directory /home/*/public_html>
…
</Directory>
Le caractère jocker "*", remplace toute chaîne de caractère. Cette directive conteneur s'appliquera donc
à tous les sous répertoires public_html des répertoires personnels créés dans /home.
Exemples:
/home/sylvestre/public_html
/home/titi/public_html
/home/toto/public_html
Installation et administration d’un serveur web 3
CONSERVATOIRE NATIONAL DES ARTS ET METIERS
15. Dans le fichier de configuration d'Apache, modifiez la directive Userdir public_html par
Userdir www afin que les répertoires www des utilisateurs soient utilisés par Apache comme
répertoire de publication de pages personnelles. Vous devrez aussi modifier le chemin pour le
conteneur <Directory /home/*/public_html>. N'oubliez pas de relancer Apache !
16. Créez l'utilisateur willy. Sous cette identité, effectuez un login. Dans votre répertoire
personnel (/home/willy) créez un répertoire www (/home/willy/www) qui
contiendra l'inévitable page index.html.
17. Testez l'accès aux pages personnelles de Willy qui devraient être accessibles à l'url :
http://127.0.0.1/~willy/
18. Que se passe-t-il ?
______________________________________________________________________
19. Le problème vient certainement des droits UNIX du répertoire /home/willy, diagnostiquez le et
corrigez le.
20. Testez à nouveau l'accès à la page d'accueil de Willy.
5. RESUME.
Le tableau ci-dessous (à compléter par vos soins) résume les notions abordées dans cette séance.
Directive
Apache
Fonction
user
group
userdir
6. ELEMENTS DE CORRECTION.
1.
2.
3.
4.
5.
Suivant les distributions, user et group se situent dans httpd.conf ou commonhttpd.conf.
Par défaut, Apache accède aux fichiers sous l'identité apache groupe apache.
La valeur de documentroot est /var/www/html par défaut.
/var/www/html, propriétaire: root, groupe privilégié: root, droits: rwxr-xr-x
Documentroot /home/web
<Directory /home/web>
Options Indexes
Order allow,deny
Allow from all
Apache et droits Unix 4
CONSERVATOIRE NATIONAL DES ARTS ET METIERS
</Directory>
Pour afficher la page d'accueil, il suffit d'avoir le droit x (accéder pour le répertoire /home/web)
pour le groupe other.
Il est déraisonnable de donner le droit w (écriture) à tout le monde.
6. La page accueil.html sera affichée avec http://127.0.0.1/accueil.html mais pour l'afficher avec
http://127.0.0.1/ il faudra donner le droit r (lister) au groupe other.
7. Bien souvent lors de la création d'un compte utilisateur UNIX, le répertoire personnel est
verrouillé pour le groupe other (rwxr-x---). Donc les pages contenues dans /home/willy/www ne
seront accessibles qu'après déverrouillage de /home/willy (rwxr-x--x au minimum).
Installation et administration d’un serveur web 5

Documents pareils