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