You are on page 1of 193

Linux RedHat 8.

0 Installation de base Linux station de travail Installation des services Internet Complments systme Installation de bases de donnes Dveloppement sous Linux

Serge TAH, mai 2003 ISTIA - INSTITUT DES SCIENCES ET TECHNIQUES DE LINGNIEUR DANGERS

Linux RH8

1/193

Avertissement
Ce document a t crit en 2003 pour Linux RedHat 8.0 (RH8). Depuis Linux a volu : diverses distributions matures sont disponibles et les modes d'installation de celles-ci sont diffrentes de celle explique ici. Il y a donc beaucoup d'informations dsormais obsoltes dans ce document, et galement beaucoup d'informations toujours d'actualit... Le lecteur intress par suivre ce document trouvera la distribution Linux RedHat 8.0 l'Url : [ftp://archive.download.redhat.com/pub/redhat/linux/8.0/fr/iso/i386]. Le document prsente l'installation de RH8 dans un cadre particulier : celui du rseau priv d'une cole. En effet, le document a servi de TP des tudiants pendant de nombreuses annes. Le lecteur devra donc adapter ce qui est crit son propre environnement et ne pas s'tonner du vocabulaire particulier utilis : celui d'un TP. Serge Tah, aot 2006.

Introduction
Le but de ce document et du travail pratique qui laccompagne est de montrer quon peut monter en quelques heures un serveur Linux avec les principaux services internet (web, ftp, telnet, sendmail, pop, ...) qui soit galement un serveur de fichiers pour un rseau local de PC/Windows (samba). Linux tant gratuit et fonctionnant sur un simple PC, un administrateur peut se permettre dinstaller, de dsinstaller puis de rinstaller plusieurs fois Linux. Cest une possibilit inestimable de formation. Ce document permet de monter une machine Linux qui pourrait tre mise en exploitation dans un site rel comme lISTIA qui a plusieurs machines Linux semblables celles que vous allez monter. Si vous tes novice, vous aurez parfois limpression de ne pas bien comprendre ce que vous faites. Lorsque vous monterez ultrieurement une deuxime machine, les choses vous paratront dj plus claires. Ce nest que lorsque vous administrerez rellement une machine Linux que vous comprendrez les dtails qui pourront vous chapper lors de cette premire installation dont le rle premier est de vous mettre le pied ltrier . Dans le monde Unix, on distingue : les utilisateurs, ceux qui sont amens travailler avec une machine Unix comme dautres avec une machine Windows. Ceux-l connaissent les commandes de base et/ou les interfaces graphiques. les administrateurs, ceux qui grent les diffrents services prsents sur le serveur Unix (web, mail, ftp, comptes utilisateurs, service de noms, service de fichiers, service de bases de donnes...). Ceux-l font longueur de journe de loptimisation, de la surveillance, des installation de nouveaux services, ... Ils sont souvent amens, dans le cadre de loptimisation de services, dvelopper des scripts dadministration. Ils le font dans un des langages de base dUnix (sh, ksh, csh, bash, ...) ou avec des langages plus performants (Perl, Python,...) les dveloppeurs, ceux qui crivent les programmes que vous utilisez sous Unix. Dans ce document, on fait surtout un travail dadministrateur. Il serait sain dtre un utilisateur avanc avant dtre un administrateur. Celui qui connat les commandes de base dUnix, qui travaille dj sous Unix aura bien sr ici plus de facilits que quelquun qui dcouvre le monde Unix pour la premire fois. On a cherch cependant rendre possible pour tous cette installation de Linux en dcrivant les commandes Unix qui doivent tre utilises pour installer les divers services. Il faudra cependant garder lesprit pour lavenir, quun administrateur doit tre dabord un utilisateur averti. On peut ajouter quun administrateur gagne beaucoup tre galement un dveloppeur de scripts averti, point qui nest nullement abord ici. Une fois chez vous, vous pourrez refaire cette installation sur votre ordinateur personnel. Procurez-vous l'un des nombreux livres sur Linux, tlchargez les CD de la distribution linux de votre choix et allez-y ! Serge Tah

Linux RH8

2/193

Notions de base des rseaux TCP-IP

L'installation d'une machine Linux au sein d'un rseau TCP-IP ncessite la connaissance de notions de base sur ce type de rseau. Nous les prsentons ici avec des exemples tirs du rseau de l'ISTIA.

1.1

Un rseau ...de ressources

Lorsqu'on dsire mettre en commun des ressources en vue de les partager ou mieux les utiliser, on installe un rseau. Un rseau peut tre vu comme une collection de machines (pas forcment des ordinateurs) pouvant communiquer entre elles, et se rendant des services. L'ensemble des rgles qui rgissent la communication est appel protocole. La mise en place d'un rseau passe par une phase d'installation physique (cbles, cartes, etc), une phase de configuration (paramtrage des fichiers) et une phase d'exploitation et de maintenance. Avec une carte Ethernet on peut connecter sa machine Unix au reste du monde en passant par TCP/IP (Transport Control Protocol/Internet Protocol). Une machine Unix quipe pour TCP/IP dispose par exemple des services comme telnet ou ftp pour la connexion distance sur une machine et le transfert de fichiers.

1.2

Gnralits

Un rseau local utilisant les protocoles de l'Internet est souvent appel un Intranet. Le rseau informatique de l'ISTIA est essentiellement un rseau de PC. Parmi les machines sur le rseau, certaines jouent un rle particulier : les serveurs. Ce sont des machines auxquelles d'autres machines, appeles machines clientes, demandent des services. On trouve l'ISTIA, des serveurs NT et Linux.

Linux RH8

3/193

Illustration 1Un schma de rseau Le protocole d'changes de donnes sur Internet appel protocole IP est un protocole d'changes de rseau rseau. Des machines appeles routeurs et reprsentes ci-dessus par le symbole Ri sont charges de relier les rseaux locaux entre-eux. Au sein d'un rseau local Ri, ce ne sont plus les adresses Internet IP qui font la loi. En effet, on peut trouver diffrents protocoles rseau au sein d'un rseau local et pas seulement le protocole IP de l'internet. Pour en citer quelques-uns : le protocole IPX/SX de Novell ou Netbios de Microsoft. Il existe diffrents types de rseaux locaux, le plus rpandu tant le rseau Ethernet. Au sein d'un tel rseau, une machine est repre par son adresse Ethernet (et non Internet), une adresse inscrite dans la mmoire de la carte rseau qui relie l'ordinateur au rseau Ethernet. Tous les protocoles utiliss sur un rseau Ethernet devront au final rfrencer une machine par son adresse Ethernet. Comment cela se passe-t-il pour le protocole IP par exemple ? Si dans un mme rseau local Ethernet, une machine d'adresse IP IP1 et d'adresse ethernet ETH1 veut envoyer des donnes la machine d'adresse IP IP2, elle procde ainsi :

La machine IP1 envoie un message toutes les machines du rseau local o elle se trouve (broadcast) demandant " Qui a l'adresse IP IP2 ? ". Dans cette demande, elle envoie galement son adresse thernet ETH1. Toutes les machines reoivent ce message. Seule la machine d'adresse IP IP2 rpond "C'est moi". Elle envoie cette rponse la seule machine d'adresse ethernet ETH1 en ajoutant sa propre adresse thernet ETH2. La machine ETH1 peut alors envoyer les donnes la machine ETH2 selon le protocole ETHERNET.

1.3

Un peu de formalisme : Les rseaux, vus selon l'architecture OSI


L'ISO (International Standards Organization) a dfini un modle architectural des rseaux, appel architecture OSI (Open Systems Interconnect). Cette architecture constitue un modle de rfrence 7 couches, reprsent sur la figure 2 . Chaque couche du modle reprsente une fonction effectue lorsque des donnes sont transfres entre des applications en communication. Ce chapitre tant consacr aux diffrentes technologies rseau utilises pour le stage, seules les 4 premires couches seront abordes. Il convient, nanmoins, de noter que l'architecture OSI n'est qu'un modle. A ce titre, il n'est pas forcment implant de cette faon dans les rseaux

Illustration 2Le modle de rfrence OSI

Linux RH8

4/193

existants. Certaines technologies font des entorses au modle OSI, d'autres utilisent un modle de rfrence trs diffrent du modle OSI. Il est souvent peu commode de trouver des quivalents entre les deux mondes. Malgr tout, le choix du modle OSI est assez pratique dans ce chapitre, car, actuellement, il est toujours fait rfrence aux 3 premires couches dans la littrature technique. De plus, la signification de ces couches est assez claire pour tout le monde. Cela permet d'avoir une rfrence commune ds que l'on considre l'ensemble des technologies existantes. La premire couche physique est constitue, pour simplifier, par le cablge. Le rseau de l'ISTIA est cabl en toile. Tous les PC sont connects un matriel central (le commutateur) :

Illustration 3Topologie rseau en toile

La connexion entre les PC et le commutateur se fait via des cables en paire torsade, (RJ45, 10-100 Mbits/s). Maintenant, il faut normaliser la faon dont ces machines communiquent entre elles pour qu'elles puissent s'entendre. C'est le rle de la couche 2 (Liaison de donnes). Les machines communiquent via le protocole Ethernet. Les PC sont quips d'une carte rseau Ethernet. Le commutateur est un commutateur Ethernet. Chaque carte Ethernet dispose d'une adresse unique (donne par le constructeur). C'est l'adresse Ethernet, apelle aussi adresse MAC. La couche 2 utilise est Ethernet. Si nos PC taient uniquement connects un seul et unique rseau, cela serait suffisant. Mais ce n'est pas le cas. Chaque PC doit pouvoir se connecter d'autres machines, un peu partout dans le monde (pour aller consulter un serveur, une page WWW). Il est donc ncessaire de pouvoir localiser un PC et son rseau au niveau mondial. C'est le rle de la couche 3 (Rseau). La couche de niveau 3 est ici IP (Internet Protocol). La couche 3 assure une communication de machine machine. Une machine peut hberger divers services (web, ftp, mail, ...). Dans une application client-serveur sur le rseau TCP-IP, le client s'adresse un service particulier. La communication client-serveur est assure par la couche 4, dite couche transport. Cette couche a connaissance de la notion de n de service (port) alors que la couche rseau 3 n'a elle connaissance que de la notion d'adresse IP. Les applications client-serveur s'appuient sur les couches 1-4 pour communiquer. Elles se situent dans les couches 5 7.

1.4

Zoom sur la couche de niveau 3 : le protocole IP

Les machines de l'Internet sont repres par des adresses dites adresses IP du nom du protocole qui sous-tend les changes sur l'Internet (IP=Internet Protocol). Deux machines de l'Internet ont ncessairement des adresses IP diffrentes. Celles-ci ont pour le moment la forme I1.I2.I3.I4 ou Ij est un nombre entre 1 et 254. Par exemple, l'adresse IP de la machine istia.univ-angers.fr est 193.49.146.171. Lorsqu'une machine d'adresse A1 envoie un message une machine d'adresse A2, celui-ci va passer par un certain nombre de machines intermdiaires. Internet est un rseau de rseaux. Chaque machine, avant d'appartenir Internet, appartient un rseau dit rseau local. Internet est le rseau qui connecte ces rseaux locaux entre eux. C'est pourquoi on l'appelle le rseau des rseaux. Introduit par Unix, TCP/IP est l'ensemble des protocoles standardiss pour faire communiquer des machines Unix entre elles. D'autres protocoles existent, ou ont exist (IPX/SPX de Novell, NetBEUI de IBM/Microsoft, AppleTalk d'Apple). TCP/IP s'est impos au milieu des annes 1990 comme LE protocole de communication, et est dsormais utilis par tous les systmes. La version actuelle de TCP/IP est la version 4. On parle d'IPv4. Une nouvelle version d'IP est disponible et en cours de dploiement. Il s'agit d'IPv6. Linux RH8 5/193

Une machine de l'INTERNET dispose d'une adresse IP (unique) permettant de l'identifier et de l'adresser. C'est l'ICANN (organisme international, succdant au NIC) qui attribue les (dcoupages d')adresses par pays. Cet organisme dlgue des blocs d'adresses aux RIR (Regional Internet Registries). Ces RIR sont actuellement au nombre de trois : 1. l'APNIC (Asia Pacific Network Information Centre) 2. l'ARIN (American Registry for Internet Numbers) 3. le RIPE-NCC: Rseau IP Europen (Network Coordination Centre) La France dpend donc du RIPE-NCC. Celui-ci dlgue l'AFNIC , qui gre spcifiquement les rseaux franais et le domaine .fr . Le protocole IP est un protocole qui a t dcrit pour la premire fois en 1981. Il a, bien sr, volu, et la version actuelle est la version 4. On parle parfois d'IPv4, en opposition IPv6 (IP version 6) qui est la nouvelle version. La version 6 n'est pas dploye trs largement pour l'instant. Certains systmes d'exploitation ne savent pas encore la traiter. IPv4 souffre d'un certain nombre de limites. Entre autres, les adresses de source et de destination sont codes sur 32 bits. Ces adresses reprsentent, de manire unique un quipement rseau. De prime abord, cela peut sembler suffisant, puisque 232=4294967296, ce qui fait plus de 4 milliards d'adresses disponibles. Malheureusement, les numros IPv4 ne sont pas attribus squentiellement. En effet, les ordinateurs sont regroups en rseau qu'il faut aussi numroter. Si 16 des 32 bits sont consacrs au rseau, on s'aperoit que seuls 65536 rseaux peuvent exister sur la plante, ce qui ne serait pas suffisant. Si on consacre 24 bits au rseau, on ne peut plus mettre que 256 ordinateurs par rseau, ce qui est trop faible pour de grosses entreprises mondiales. Un plan d'adressage a donc t cr pour tenter de rsoudre ces problmes, ce qui a donn 5 classes d'adresses, reprsentes sur la figure 4,page 6 en fonction du nombre de bits consacr au rseau.

Illustration 4Le plan d'adressage d'IPv4 La classe A dont les adresses sont comprises entre 1.0.0.0 et 127.0.0.0, le premier octet dsignant l'adresse du rseau. La classe B entre 128.0.0.0 et 191.255.0.0. Les deux premiers octets dsignant le numro du rseau. La classe C entre 192.0.0.0 et 223.255.255.0, les trois premiers octets dsignant le numro du rseau. La classe D est rserve au multicast. Les classes E et F sont des adresses rserves ou exprimentales. Ce plan d'adressage a atteint ses limites. En effet, la classe B, la mieux adapte des tablissement disposant de nombreux ordinateurs a t trs vite puise. D'une manire gnrale, les adresses IPv4 sont en phase d'puisement. Il est trs difficile de se faire allouer de nouvelles classes d'adresses, mme pour des rseaux de classe C. IPv6 est l'aboutissement du travail du groupe de travail IPng (IP Next generation), et constitue l'volution logique d'IPv4. Les diffrents groupes de travail ont fait voluer IPv4 pour qu'il puisse grer nettement plus d'adresses, mais aussi pour qu'il soit mieux adapt aux rseaux rapides. IPv6 dispose d'adresses sur 128 bits. De plus, la notion de classes d'adresses, finalement trs limitative et peu souple a disparue et est remplace par la notion de prfixe : L'adresse d'une machine est spare en deux parties. La partie gauche reprsente le rseau, la partie droite identifie la machine sur ce rseau. L'quivalence avec les classes d'adresses est visible. Cependant, l'intrt est que le nombre de bits rservs au rseau est variable. (Ce principe d'agrgation de rseaux contigus en un seul prfixe a t conu au dpart pour IPv4) (CIDR : Classless Inter Domain Routing).

1.5

Illustration

Voyons sur un exemple, comment se passent les changes entre machines de rseaux locaux diffrents. Considrons le schma suivant :

Linux RH8

6/193

L'envoi par la machine M11 du rseau R1 d'un message la machine Mi3 du rseau Ri se fait en plusieurs tapes :

la machine M11 doit connatre l'adresse IP de la machine Mi3. Trs souvent, elle n'en connat pas l'adresse mais le nom. Ainsi, si avec votre navigateur, vous demandez l'url http://www.ibm.com, vous n'utilisez pas une adresse IP (vous pourriez) mais le nom d'une machine, ici www.ibm.com. Pour envoyer votre demande la machine www.ibm.com, votre ordinateur devra en demander l'adresse IP car seule cette adresse est utilise dans les changes sur Internet. Il existe sur Internet, un service appel service de noms qui fait la correspondance entre un nom de machine et son adresse IP. Ce service est assur par des machines appeles serveurs de noms. Ainsi dans l'exemple prcdent, votre ordinateur va demander un serveur de noms l'adresse IP de la machine www.ibm.com. A quel serveur de noms va-t-il s'adresser ? Cela dpend de la configuration rseau de votre ordinateur. Il y a deux grandes mthodes : 1. l'adresse IP d'un serveur de noms a t inscrit dans l'un des fichiers de configuration rseau de votre ordinateur. 2. votre ordinateur est configur pour demander cette information chaque fois qu'il redmarre. Il envoie sur le rseau auquel il appartient une demande du genre "Quelqu'un peut-il me donner ma configuration Internet ? ". Un serveur appel serveur DHCP lui donne alors sa configuration : son adresse IP, l'adresse IP du serveur de noms qu'il peut interroger, adresse du routeur qui relie le rseau local sur lequel se trouve votre ordinateur Internet,... une fois obtenue l'adresse IP Ai3 de la machine Mi3, la machine M11 envoie ses donnes au routeur R1. Cette machine est la porte de sortie du rseau R1 vers les autres rseaux. On l'appelle souvent la passerelle, gateway en anglais, du rseau R1 vers Internet. Le routeur R1 va transmettre les donnes un autre routeur pour que, de proche en proche, celles-ci arrivent au routeur qui dessert le rseau Ri o se trouve la machine M i3. Il existe divers chemins qui mnent du routeur R 1 au routeur Ri. Le choix d'un chemin plutt qu'un autre est fait par les routeurs selon divers critres ( tat d'encombrement d'un chemin vis vis d'un autre, chemin ferm pour cause de routeur en panne,...) le routeur Ri va dlivrer les donnes la machine Mi3.

1.6

Rseaux publics, rseaux privs

Parmi toutes les adresses IP possibles de la forme I1.I2.I3.I4, certaines ne sont pas routes. Cela veut dire que si un routeur reoit des donnes pour une machine ayant une adresse IP non routable, le routeur dclarera qu'il ne peut pas acheminer ces donnes destination. Ceci a donn naissance deux types de rseaux : les rseaux publics et les rseaux privs. Les rseaux publics sont constitus de machines ayant des adresse IP accessibles de n'importe quelle autre machine ayant elle aussi une adresse IP accessible, les rseaux privs de machines ayant des adresses IP inaccessibles partir d'une machine qui n'est pas sur le mme rseau priv.

Linux RH8

7/193

Quelle est l'intrt d'un rseau priv ? Reprenons le schma dj tudi :

Routeur Ri
Illustration 5Rseaux publics et privs Le dessin prcdent reprsente trois rseaux : deux rseaux publics R1 et Ri un rseau priv, le rseau R2

Voyons les caractristiques d'un poste de ces diffrents rseaux. Une machine du rseau public R1 - peut atteindre et tre atteinte par une machine d'un autre rseau public Une machine du rseau priv R2 - peut atteindre et tre atteinte par toute machine du rseau priv R2, notamment par le routeur R2 - ne peut atteindre ni tre atteinte par une machine n'appartenant pas au rseau priv R2 Un rseau priv est donc un intranet coup de l'Internet. On l'utilise essentiellement pour des raisons de scurit. Une machine d'un rseau priv ne peut tre la cible d'attaques logicielles provenant de machines extrieures au rseau priv puisque celles-ci ne peuvent pas entrer dans le rseau priv. Cependant, il n'est pas intressant de se couper de l'Internet car on y trouve des ressources dont on a besoin. Si on prend l'exemple du rseau priv R 2, le routeur R2 fait l'interface entre le rseau priv et l'Internet. C'est une machine publique et donc, elle peut atteindre toute machine de l'Internet. On l'utilise alors comme machine relais pour permettre une machine du rseau priv R2 d'accder aux ressources de l'Internet. Cela se passe grossirement de la faon suivante :

une machine M2j du rseau R2 veut faire une demande une machine de l'Internet. Cette demande est alors transmise la passerelle R2. la machine R2 fait alors la demande la place de la machine M2j. Elle le peut puisqu'elle se trouve sur le rseau public. la machine R2 reoit une rponse qu'elle transmet alors la machine M2j qui a fait la demande initiale

On notera divers points : 1. 2. 3. la machine R2 fait plus qu'un simple routage. Elle fait du relayage de demande. On l'appelle une machine relais ou proxy. la connexion vers l'extrieur est initie par la machine du rseau priv et non par une machine de l'extrieur. La connexion initie par l'extrieur vers une machine du rseau priv R2 reste impossible. une fois la connexion tablie entre la machine du rseau priv et la machine extrieure via la machine relais, une attaque reste possible de la part de la machine extrieure. Aussi l'intrieur d'un rseau priv scuris, on 8/193

Linux RH8

cherchera limiter le type de services que peut demander une machine l'extrieur, des services connus pour tre inoffensifs.

Linux RH8

9/193

INSTALLATION DE LINUX RH8

Linux RH8

10/193

Linux est un systme dexploitation, clone gratuit dUnix pour des ordinateurs personnels. Linux a t dvelopp au dpart par Linus TORVALDS lUniversit de HELSINKI en 1991. La base de Linux est un autre systme : Minix. Mais rapidement dautres personnes se sont intresses Linux et le systme sest dvelopp. La version 1.0 est sortie au mois de mars 1992. Aujourdhui Linux est un systme vritablement stable et totalement compatible avec les applications du monde Unix. Il s'est tout d'abord dans le monde des serveurs du fait de ses excellentes performances et de sa gratuit. Il commence devenir une alternative crdible Windows dans le monde de l'informatique personnelle. On utilise alors linux comme station de travail plutt que comme serveur.

2
2.1

Le travail raliser
Introduction

Vous allez installer des serveurs Linux jouant un rle analogue celui des machines Linux dcrites plus haut. A lissue de linstallation, vous aurez acquis les comptences de base dadministration dune machine Linux et des services Internet les plus utiliss. La machine que vous aurez monte pourrait tre mise en production dans une entreprise. A luniversit dAngers, de telles machines ont t installes dans diffrents sites o lorigine il ny avait pas dinformaticiens pour les grer. Elles taient allumes et on ne sen occupait plus sauf pour crer des comptes utilisateurs dessus. Elles ont fonctionn plusieurs annes ainsi. A lISTIA, la machine SHIVA a t installe en Juin 97 avec tous les services que vous allez installer. On ne ladministre depuis que pour y grer les comptes utilisateurs (cration et suppression) et passer les patchs de scurit. Au fil du temps c'est cette dernire activit qui est devenue la plus frquente. Le document a t crit initialement en 1997 par deux tudiants dans le cadre dun projet. Ils ont tudi comment avait t installe la machine SHIVA et ont reproduit la mme configuration sur une machine de test en notant toutes les tapes afin de produire un document utilisable par le plus grand nombre. Ce document est la base dun TP pour certains tudiants de lISTIA. Le but recherch est de montrer quinstaller un serveur Linux oprationnel sur Internet nest pas compliqu. Lapparente simplicit du document, o tout a t dcrit prcisment, ne doit pas cependant cacher le fait que, si vous tes amens administrer un systme Linux, vous aurez vous former Unix et ladministration systme. Nammoins, avec laide de ce document, il est plutt facile de monter rapidement une machine Linux. Ceci permet de monter des machines de test o lon ne craint pas de dtruire le systme. Cela donne une grande libert ladministrateur. Il peut sans crainte tester les services quil souhaite installer ultrieurement sur des serveurs en production. Lutilisation de ce document nexige que des connaissances de base dUnix. Il peut tre utilis mme par un nophyte. En revanche, des connaissances rseau gnrales, notamment sur le rle des services qui seront installs, seront utiles pour apprcier lintrt de ce qui sera fait. On trouve dans les librairies des livres sur Linux avec des CD permettant son installation. Cest mon avis, une excellente mthode dapprofondir vos connaissances si vous le souhaitez.

2.2

Les diffrentes versions de Linux

Il existe diffrentes versions de linux : Linux RedHat, Linux Mandrake, Linux Suse, Linux Debian, Linux Slackware. Une distribution linux, cest un ensemble de logiciels du domaine public dont lassemblage forme un systme linux. Des distributions linux vont diffrer : par la manire dont se fait linstallation par le sous-ensemble de logiciels du domaine public qui a t inclus dans la distribution par la manire dont on peut mettre jour le systme en lui ajoutant par exemple de nouvelles applications par des complments propres la distribution elle-mme Par exemple, lapplication MySQL est une base de donnes relationnelle du domaine public. Une distribution peut dcider de linclure par dfaut, une autre non portant son choix sur la base de donnes PostGres. On peut donc avoir au dpart, un ensemble dapplications diffrentes. On peut avoir des procdures dinstallation plus ou moins sophistiques. Celle de la Mandrake est par exemple plus graphique que la Debian et sera considre pour cela comme plus attrayante par certains. Tous les linux sont des Unix, donc malgr toutes les diffrences, il y a un fonds commun important. Nanmoins, les diffrences de surface existent et ne sont pas ngligeables : les diffrentes distributions peuvent ainsi ne pas mettre leurs fichiers de configuration aux mmes endroits. Aussi un administrateur systme habitu les trouver un certain endroit avec une distribution donne pourra tre un certain temps dsorient en passant une autre distribution. Linux RH8 11/193

Le choix de la distribution RedHat a t fait en raison de la grande diffusion de celle-ci. Le droulement de linstallation de Linux serveur & station de travail sera le suivant :

2.3

Installation de Linux sur un PC

Nous commenons par installer Linux sur un PC. Cette installation suivie par les premires configurations de base (cration de groupes, dutilisateurs) dure environ 2 h. Chaque groupe possde un PC sur lequel est install le couple Dos/Win9x et qui est reli au rseau de lISTIA. Chaque PC possde deux disques. Linux sera install en gnral sur le deuxime. Linstallation se fait au moyen dun CD ou d'une disquette.

2.4

Installation des services

Comme il a dj t dit, le serveur que vous allez installer aura un rle comparable celui des machines Linux de lISTIA. Vous y installerez les services suivants :

Service denvoi/rception du courrier (SMTP) Service de relve externe du courrier (POP) Service Web Service de transfert de fichiers (FTP) Service des Quotas qui permet de contrler lespace disque des utilisateurs sur le serveur Scurisation du serveur

Un service important, le service de noms (NAMED) ne sera pas install sur vos serveurs. Ce service assure le lien nom machine <--> adresse IP. Il sera assur ici par la machine prive vishnou.istia.uang. quoi sert un serveur de noms ? Lorsquun tudiant utilise un navigateur sur un PC du rseau tudiant et demande lURL http://www.ibm.com, le navigateur commence par demander ladresse IP de la machine www.ibm.com car sur Internet, ce sont les adresses IP des machines qui sont utilises et non leurs noms. qui cette information est-elle demande ? un serveur de noms. Cest la machine vishnou.istia.uang qui assure ce service pour les rseaux privs de lISTIA. Ce sera galement elle qui devra tre interroge par vos serveurs. Les serveurs Linux que vous allez installer joueront un rle analogue aux machines linux en exploitation lISTIA. Ils seront sur le rseau priv tudiant 172.20.81.0. Ils joueront le rle de serveurs pour des machines situes elles-aussi sur le rseau tudiant. Vos serveurs Linux seront dpourvus du client Socks qui leur permettrait de sortir sur lInternet via le serveur Socks de l'universit.Ce seront donc des serveurs au sein dun rseau priv. Cela ne change rien vis vis dun serveur public visible sur linternet. La seule diffrence est justement cette visibilit qui nest pas de une configuration particulire du serveur linux, mais du rseau physique o on la plac. Vos serveurs auront nanmoins un accs web via le proxy HTTP eproxy.istia.uang.

2.5

Installation d'applications complmentaires

Une fois installs les principaux services Internet, on peut vouloir installer d'autres applications telles des systmes de gestion de bases de donnes par exemple. La dure de l'installation est fonction de la complexit du produit. Une fois celleci faite, intervient gnralement une phase de personnalisation du produit qui peut tre longue car ncessitant de bien comprendre les fonctionnalits de celui-ci. Cette personnalisation se fait souvent tout au long de la vie du produit install. Ce document vous propose d'installer diverses applications, notamment des gestionnaires de bases de donnes et des outils de dveloppement.

3
3.1

Installation de Linux RedHat 8.0


Configuration du BIOS

Les deux faons les plus courantes d'installer linux est d'utiliser des CD ou le rseau. Dans le cas d'utilisation de CD, il faut pouvoir booter sur CD. Il faut donc que le BIOS de votre machine ait une squence de boot o le CD vient avant le disque C. Dans le cas d'utilisation du rseau, l'installation commence avec un boot sur disquete. Il faut donc que le BIOS de votre machine ait une squence de boot o la disquette vient avant le disque C.

Linux RH8

12/193

3.2

Rcuprer l'adresse IP du poste windows

A l'ISTIA, vous allez installer linux sur une machine possdant dj un systme windows (9x ou 2000). La machine a par ailleurs deux disques : le premier est ddi windows, le second linux. La machine que vous utilisez a dj une adresse internet (adresse IP) sur le rseau tudiant de l'ISTIA. Lorsque vous affecterez une adresse IP votre serveur linux, il faudra utiliser la mme adresse. Pour l'obtenir, procdez ainsi :

sous windows, ouvrez une fentre DOS et tapez la commande winipcfg. L'application winipcfg donne un certain nombre de renseignements sur la configuration rseau de votre poste.

Notez les renseignements suivants : adresse IP du poste nom du poste masque de sous-rseau adresse IP du serveur de noms adresse IP de la passerelle sous windows 2000, faites la mme chose que ci-dessus et tapez la commande ipconfig /all :

C:\winnt\system32>ipconfig /all Configuration IP de Windows 2000 Nom de l'hte . . . . Suffixe DNS principal Type de noud. . . . . Routage IP activ . . Proxy WINS activ . . PPP carte Olitec USB ADSL : Suffixe DNS spc. la connexion. : Description . . . . . . . . . . . : WAN (PPP/SLIP) Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . : : : : : tahe Diffuser Non Non

Linux RH8

13/193

Adresse physique. . . DHCP activ . . . . . Adresse IP. . . . . . Masque de sous-rseau Passerelle par dfaut Serveurs DNS. . . . .

00-53-45-00-78-12 Non 81.51.154.88 255.255.255.255 81.51.154.88 193.252.19.3 193.252.19.4 NetBIOS sur Tcpip . . . . . . . . : Dsactiv

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

: : : : : :

Ces renseignements vous seront utiles par la suite. Vrifiez que vous avez not correctement l'adresse IP de votre poste. Les autres renseignements sont communs tous les postes d'une mme salle.

3.3

installation par FTP ou par CD

Installer linux par FTP consiste se connecter par ftp un site possdant la distribution linux que l'on veut installer. Ces sites ont galement des images ISO de CD d'installation qu'on peut tlcharger pour ensuite graver les CD d'installation. La distribution RH 8.0 a cinq CD d'installation. Parce qu'il n'est pas facile de dupliquer 5 CD pour chaque groupe installant linux lors d'un stage ou un TP, l'installation se fera par FTP. Pour une installation personnelle chez soi, il est plus agrable d'avoir les CD. Il existe diffrents sites o on peut trouver les distributions de linux Redhat. Le site principal est ftp://ftp.redhat.com. Ce site est souvent surcharg. On pourra utiliser alors l'un des sites miroirs du site. A l'ISTIA, la distribution Redhat installer a t tlcharge sur un serveur ftp priv. C'est ce serveur que nous utiliserons. Nanmoins, pour rester gnral nous dcrivons les quelques tapes observer si nous utilisons un serveur ftp public. Le plus simple est de se procurer les images iso des CD d'installation :

Dans le rpertoire ci-dessus, on trouvera les images des CD d'installation. On peut les tlcharger et graver des CD partir d'elles. Les outils de gravure de CD savent en gnral utiliser ces images iso. Ensuite on fait une installation avec les CD. L'installation par ftp ncessite la cration d'une disquette spciale sur laquelle on va booter le poste. Cette disquette possde un mini-systme linux qui va connecter votre poste au service ftp que vous allez lui indiquer. Pour crer cette disquette, procdez ainsi :

Linux RH8

14/193

Le dossier ci-dessus, prsente un dossier dosutils dans lequel on trouvera un sous-dossier rawritewin :

On tlchargera les fichiers rawwritewin.exe et diskio.dll dans un mme dossier. Dans le dossier dosutils/images on trouve des images de disquettes : tlchargez l'image bootnet.img.

Le site officiel de la Redhat est souvent surcharg. La distribution RH8 a donc t tlcharge sur un serveur ftp priv de l'ISTIA. Procdez ainsi :

prenez un explorateur windows et dans le champ adresse tapez l'URL du serveur ftp contenant la distribution linux RH8. Cette URL vous sera donne par votre instructeur. une fois la connexion au service ftp opre, allez successivement dans les dossiers suivants :

Linux RH8

15/193

RedHat8.0

dosutils

rawritewin

Contenu de rawritewin

copiez dans un dossier (e:\temp\rh8 par exemple) les fichiers suivants : du dossier dosutils/rawritewin du serveur ftp, copiez (avec la souris) les fichiers rawwritewin.exe et diskio.dll du dossier Redhat8.0/images du serveur ftp, copiez le fichier bootnet.img

Note : pour copier un fichier, cliquez droit dessus et prenez l'option [Copier dans dossier]. Le contenu du dossier e:\temp\rh8 sera alors le suivant :

Le fichier bootnet.img contient l'image de la disquette crer. L'utilitaire rawwritewin.exe accompagn de la dll diskio.dll permet de copier cette image sur une disquette. Lancez cet utilitaire :

Linux RH8

16/193

Mettez une disquette dans le lecteur et utilisez le bouton [Write]. Une fois la disquette cre, tiquetez-la 'BOOTNET.IMG'. Placez cette disquette dans le lecteur et rebootez votre machine dessus. Un cran d'explications apparat avec la ligne :
boot:

Tapez [entre]. Un systme linux va dmarrer et va vous demander les renseignements dont il a besoin pour se connecter au serveur ftp ayant la distribution Redhat. Nous dcrivons la suite des crans qui vont se succder avec pour chacun d'eux son titre et ce qu'il faut faire. L'installation par FTP n'est pas graphique alors que celle par CD l'est. Il y a alors des crans qui diffrent lgrement entre les deux modes d'installation. titre
Choose a language Type de clavier Mthode d'installation Configuration TCP-IP

saisies & explications French OK fr-latin1 OK FTP OK [x] Configuration IP dynamique (BOOT/DHCP) OK // les machines de l'ISTIA peuvent obtenir leur adresse IP en la demandant un serveur appel serveur DHCP. C'est cette solution qui est choisie ici Nom du site FTP : donn par l'instructeur Rpertoire RedHat : idem [x] Utilisation d'un ftp non anonyme // les informations ncessaires vous seront donnes par votre instructeur Nom de compte : donn par l'instructeur Mot de passe : idem // pars OK, votre machine va se connecter au servur FTP avec les informations que vous lui avez donnes. Si la connexion choue, revoyez ces informations et recommencez. Si la connexion russit, votre machine va commencer tlcharger les assistants d'installation. message de bienvenue

Configuration FTP

Further FTP setup

Red Hat Linux

Linux RH8

17/193

Slection souris

PS2 [Personnalise] // ce choix nous permet de dire exactement ce que l'on veut [Disk Druid] // on va faire les partitions du disque nous-mmes // on peut avoir ce type d'cran si le programme d'installation ne dtecte pas correctement les caractristiques des partitions dj en place. On prendra alors l'option [ignorer]. // on peut l'avoir galement si Disk Druid ne reconnat pas les partitions d'un disque. Il demande alors l'autorisation de recrer la table des partitions. Dans ce cas, prendre l'option [oui].

Type d'installation

Configuration du partitionnement du disque

Avertissement

Partitionnement

l'installation se fait sur le 2ime disque /dev/hdb. C'est l que vous crerez deux partitions. Il ne faut toucher au disque /dev/hda qui contient un systme windows. Un espace disque de 6 10 Go est convenable pour une installation Linux. On peut mme se contenter de beaucoup moins si on installe peu de services. Positionnez le curseur sur l'espace libre du disque hdb. Si vous n'avez pas 6 Go libres, supprimez des partitions existantes sur hdb aprs avoir obtenu l'accord de votre instructeur. crer la 1re partition : [Nouveau] Point de montage : / Type de systmes de fichiers : ext3 Disque : hdb Taille de la partition : au moins 6 Go valider

On peut de nouveau avoir un message [Avertissement] qu'on ignorera. On cre maintenant la partition de swap : [Nouveau] Pas de point de montage Type de systmes de fichiers : swap Disque : hdb Taille : entre 500 Mo et 1 Go valider
Configuration du chargeur de dmarrage

[*]Ignorer le chargeur de dmarrage message [Avertissement] possible : ignorer // En situation relle, nous aurions install linux sur une machine ddie et celui-ci aurait t lanc par le chargeur de dmarrage GRUB. A cause de considrations techniques propres l'ISTIA (machine multi-OS avec au dmarrage un logiciel de restauration de disques), nous choisissons par prudence de ne pas installer le chargeur qui viendrait modifier des secteurs de boot peut-tre dj utiliss par le logiciel de restauration.

Configuration du rseau

adresse IP : IP1.IP2.IP3.IP4 Masque rseau : 255.255.0.0 Passerelle par dfaut : 172.20.0.254 Serveur de noms primaire : 172.20.81.5 [*] Activation au dmarrage ---------------// adresse IP : IP1.IP2.IP3.IP4

Linux RH8

18/193

Le chapitre des gnralits vous a montr que toute machine de l'internet avait une adresse unique appele adresse IP. Votre machine fera partie du rseau tudiant de l'ISTIA 172.20.81. ou 172.20.82. Ici, vous mettrez l'adresse IP que vous avez note au dbut de l'installation (Prliminaires). Ne vous trompez pas. Masque rseau : 255.255.0.0 Supposons que votre machine veuille communiquer avec la machine d'adresse IP I1.I2.I3.I4. Pour savoir si cette adresse fait partie du mme rseau qu'elle, votre machine va faire un "Et logique" de cette adresse avec le masque rseau : I1.I2.I3.I4 & 255.255.0.0. Sans entrer dans les dtails, le rsultat de cette opration sera I1.I2.0.0. Votre machine va faire de mme avec sa propre adresse IP : 172.20.81.xxx & 255.255.0.0 ce qui va donner 172.20.0.0. Si on a I1.I2.0.0=172.20.0.0 donc I1=172 et I2=20, alors la machine destinatrice est sur le mme rseau que la machine mettrice. Les donnes lui seront alors directement envoyes. Si on a I1.I2.0.0<>172.20.0.0 alors la machine destinatrice n'est pas sur le mme rseau que la machine mettrice. Les donnes seront alors envoyes la passerelle (gateway) qui relie le rseau 172.20 l'internet. Passerelle par dfaut : 172.20.0.254 L'adresse IP de la passerelle dont on vient de parler. Serveur de noms primaire : 172.20.81.5 L'adresse IP du serveur de noms que votre machine pourra interroger. Rappelons que le serveur de noms fait la correspondance adresse IP <--> nom de machine dans les deux sens. Celui-ci est sur le rseau tudiant et s'appelle vishnou.istia.uang.
Configuration du nom d'hte

Ci-dessus, vous avez repris l'adresse IP d'une machine existante et connue du serveur de noms vishnou.istia.uang. Celui-ci va tre interrog par l'installateur qui devrait donc rcuprer un nom. Celui-ci sera de la forme X.istia.uang. Si ce n'tait pas le cas, il faudra revenir la page prcdente pour vrifier votre configuration rseau. [Pas de pare-feu] // un pare-feu sert protger le serveur. Pour une machine en production, il est ncessaire. Pour une premire installation, la prsence d'un pare-feu risque de nous amener des considrations qui dpasseront le dbutant. La mise en place du pare-feu peut se faire ultrieurement. [French (France)] Mot de passe root : azerty Confirmer : azerty //Ici on donne le mot de passe d'un utilisateur particulier appel root. C'est le seul utilisateur qui a tous les droits sur un systme Unix. En gnral seul l'administrateur du systme est amen travailler sous cette identit. Ce sera le cas pour vous pour toutes les installations et configurations d'applications que vous allez faire. On choisit un mot de passe qu'on va se rappeler. Si on oublie ce mot de passe, il faudra recommencer l'installation. On vous propose de crer un autre utilisateur que root, ce compte ne devant tre utilis que pour des tches d'administration systme. Il est dconseill de l'utiliser pour une simple utilisation d'unix car alors on peut tout "casser" par mgarde. Voici un exemple que vous adapterez votre cas : ID utilisateur : tahe // pas d'espaces, pas de caractres accentus, en minuscules en gnral Nom complet : Serge Tah Mot de passe : azerty Vrification : azerty

Configuration du pare-feu

Support supplmentaire Ajouter utilisateur

langue

Configuration utilisateir

du

compte

[OK] // l'installateur affiche ici la liste des comptes utilisateurs crs. On pourrait en crer de nouveaux. Nous ne le faisons pas. 19/193

Linux RH8

Configuration l'authentification

de

accepter les valeurs par dfaut

// Les utilisateurs sont enregistrs dans le fichier /etc/passwd avec diverses informations les concernant. C'est un fichier texte lisible par tous. Historiquement on trouvait dedans les mots de passe des utilisateurs sous forme crypte. A partir de ce mot de passe crypt, il est impossible de trouver le mot de passe partir duquel il a t cr. Pour y arriver, il faut essayer des mots de passe au hasard, les crypter et regarder si le rsultat se trouve dans le fichier /etc/passwd. Ce qui au dpart pouvait tre une opration longue est devenue de plus en plus rapide avec les ordinateurs actuels. On peut donc essayer tous les mots d'un dictionnaire en quelques heures. Si donc un utilisateur a choisi comme mot de passe un mot de ce dictionnaire, celui-ci sera dcouvert. Il y a l un trou de scurit. Pour y remdier, on peut placer les mots de passe crypts non pas dans le fichier /etc/passwd qui est lisible par tous mais dans le fichier /etc/shadow qui n'est lui lisible que par l'utilisateur root. C'est le sens du choix Utiliser les mots de passe masqus. Par ailleurs, historiquement les mots de passe avaient au plus 8 caractres. Le choix Utiliser les mots de passe MD5 permet d'aller au-del de cette limite.
Slection paquetages du groupe de

// ici, il nous faut choisir les applications installer. Prendre les applications suivantes : Administration Tools (oui), Authoring and Publishing (oui), DNS Name Server (non), Development Tools (oui), Editors (oui), Engineering and Scientific (non), FTP Server (oui), GNOME Desktop Environment (oui), GNOME Software Development (non), Games and Entertainment (non), Graphical Internet (oui), Graphics (oui), KDE Desktop Environment (oui), KDE Software Development (non), Kernel Development (oui), Mail Server (oui), News Server (non), Office/Productivity (oui), Printing Support (oui), SQL Database Server (oui), Server Application Tools (oui), Sound and Video (oui), System Tools (oui), Text-Based Internet (oui), Web Server (oui), Windows File Server (oui), X Software Development (non), W Windows System (oui). [*] Slection individuelle des paquetages

Slection individuelle des paquetages Installation des paquetages Cration d'une d'amorage disquette

- prendre le paquetage Application/Databases et tout cocher

l'installation des paquetages demands se fait

[oui] // cette disquette va vous permettre de lancer le systme Linux. En situation relle, il est prudent de dupliquer cette disquette. Toujours en situation relle, nous aurions install linux sur une machine ddie et celui-ci aurait t lanc par l'utilitaire GRUB. A cause de considrations techniques, nous n'avons pas choisi cette option ici.

Configuration de l'interface graphique Configuration de l'cran Personnalisation de X Flicitations

- doit dcouvrir le type de carte graphique du PC

doit dcouvrir le type de l'cran du PC

- faites un test graphique avec le bouton [Test], puis faites OK s'il est concluant. - c'est termin

3.4

installation avec CD

Mettre le CD Linux dans le lecteur et rebootez votre machine. Celle-ci va dtecter qu'il y a un CD bootable et dmarrer avec. Un premier cran vous propose plusieurs types d'installation. Celle par dfaut est une installation graphique. Le programme d'installation va essayer de reconnatre la carte graphique du PC. S'il y arrive, il lancera une installation Linux RH8 20/193

graphique permettant notamment d'utiliser la souris. S'il n'y arrive pas, il fera une installation en mode texte. Nous ferons ici une installation en mode graphique. Le programme d'installation a affich la fin de son cran d'explications la ligne
boot:

Tapez [entre] pour indiquer que vous voulez une installation en mode graphique. Nous dcrivons les premiers crans de l'installation avec pour chacun d'eux son titre et ce qu'il faut faire. titre
CD found

saisies & explications [Skip] // on vite la vrification du CD le programme d'installation va dtecter la carte graphique, l'cran ce qui va permettre l'installation graphique [Next] // lire les explications [French] [French (latin1)] [3 Button Mouse (PS/2)]

Welcome Language Selection Clavier Configuration souris

L'installation se fait avec une suite d'crans o l'utilisateur va donner un certain nombre de renseignements au programme d'installation. Nous dcrivons ici la suite d'crans d'installation de Linux RedHat 8.0. Pour d'autres versions de RedHat, les crans peuvent tre diffrents. Nous donnons pour chaque cran :

le nom de l'cran prsent dans sa barre de titre les renseignements donner des explications si ncessaires titre

saisies & explications [Personnalise] // ce choix nous permet de dire exactement ce que l'on veut [Disk Druid] // on va faire les partitions du disque nous-mmes [ignorer] // on peut avoir ce type d'cran si le programme d'installation ne dtecte pas correctement les caractristiques des partitions dj en place

Type d'installation

Configuration du partitionnement du disque

Avertissement

Partitionnement

l'installation se fait sur le 2ime disque /dev/hdb trouver un espace disque libre d'au moins 6 G0 pour la partition principale de Linux trouver un espace de 500 mo pour la partition de swap au besoin supprimer d'anciennes partitions linux crer la 1re partition : [Ajouter partition] Point de montage : / Type de systmes de fichiers : ext3 Disque : hdb Dbut du cylindre : ne pas changer la valeur affiche Fin du cylindre : dimensionner jusque le champ [Taille] ait atteint la valeur dsire (6 go) valider

On peut de nouveau avoir un message [Avertissement] qu'on ignore. On cre maintenant la partition de swap : [Ajouter partition] Type de systmes de fichiers : swap Linux RH8 21/193


Configuration du chargeur de dmarrage

Disque : hdb Dbut du cylindre : ne pas changer la valeur affiche Fin du cylindre : dimensionner jusque le champ [Taille] ait atteint la valeur dsire (500 mo)

valider

[Modifier le chargeur de dmarrage] [Ne pas installer le chargeur de dmarrage] message Avertissement possible : ignorer // En situation relle, nous aurions install linux sur une machine ddie et celui-ci aurait t lanc par le chargeur de dmarrage GRUB. A cause de considrations techniques propres l'ISTIA (machine multi-OS avec au dmarrage un logiciel de restauration de disques), nous choisissons par prudence de ne pas installer le chargeur qui viendrait modifier des secteurs de boot peut-tre dj utiliss par le logiciel de restauration.

Configuration du rseau

adresse IP : IP1.IP2.IP3.IP4 Masque rseau : 255.255.0.0 Passerelle par dfaut : 172.20.0.254 Serveur de noms primaire : 172.20.81.5 ---------------// adresse IP : IP1.IP2.IP3.IP4 Le chapitre des gnralits vous a montr que toute machine de l'internet avait une adresse unique appele adresse IP. Votre machine fera partie du rseau tudIant de l'ISTIA 172.20.81. Ici, vous mettrez l'adresse IP que vous avez note au dbut de l'installation (Prliminaires). Ne vous trompez pas. Masque rseau : 255.255.0.0 Supposons que votre machine veuille communiquer avec la machine d'adresse IP I1.I2.I3.I4. Pour savoir si cette adresse fait partie du mme rseau qu'elle, votre machine va faire un "Et logique" de cette adresse avec le masque rseau : I1.I2.I3.I4 & 255.255.0.0. Sans entrer dans les dtails, le rsultat de cette opration sera I1.I2.0.0. Votre machine va faire de mme avec sa propre adresse IP : 172.20.81.xxx & 255.255.0.0 ce qui va donner 172.20.0.0. Si on a I1.I2.0.0=172.20.0.0 donc I1=172 et I2=20, alors la machine destinatrice est sur le mme rseau que la machine mettrice. Les donnes lui seront alors directement envoyes. Si on a I1.I2.0.0<>172.20.0.0 alors la machine destinatrice n'est pas sur le mme rseau que la machine mettrice. Les donnes seront alors envoyes la passerelle (gateway) qui relie le rseau 172.20 l'internet. Passerelle par dfaut : 172.20.0.254 L'adresse IP de la passerelle dont on vient de parler. Serveur de noms primaire : 172.20.81.5 L'adresse IP du serveur de noms que votre machine pourra interroger. Rappelons que le serveur de noms fait la correspondance adresse IP <--> nom de machine dans les deux sens. Celui-ci est sur le rseau tudiant et s'appelle vishnou.istia.uang.

Configuration du pare-feu

[Pas de pare-feu] // un pare-feu sert protger le serveur. Pour une machine en production, il est ncessaire. Pour une premire installation, la prsence d'un pare-feu risque de nous amener des considrations qui dpasseront le dbutant. La mise en place du pare-feu peut se faire ultrieurement. [French (France)] Mot de passe root : azerty Confirmer : azerty

Support langue supplmentaire Configuration du compte

Linux RH8

22/193

//Ici on donne le mot de passe d'un utilisateur particulier appel root. C'est le seul utilisateur qui a tous les droits sur un systme Unix. En gnral seul l'administrateur du systme est amen travailler sous cette identit. Ce sera le cas pour vous pour toutes les installations et configurations d'applications que vous allez faire. On choisit un mot de passe qu'on va se rappeler. Si on oublie ce mot de passe, il faudra recommencer l'installation. On vous propose de crer un autre utilisateur que root, ce compte ne devant tre utilis que pour des tches d'administration systme. Il est dconseill de l'utiliser pour une simple utilisation d'unix car alors on peut tout "casser" par mgarde. Voici un exemple que vous adapterez votre cas : ID utilisateur : tahe // pas d'espaces, pas de caractres accentus, en minuscules en gnral Nom complet : Serge Tah Mot de passe : azerty Vrification : azerty
Configuration l'authentification de

accepter les valeurs par dfaut

// Les utilisateurs sont enregistrs dans le fichier /etc/passwd avec diverses informations les concernant. C'est un fichier texte lisible par tous. Historiquement on trouvait dedans les mots de passe des utilisateurs sous forme crypte. A partir de ce mot de passe crypt, il est impossible de trouver le mot de passe partir duquel il a t cr. Pour y arriver, il faut essayer des mots de passe au hasard, les crypter et regarder si le rsultat se trouve dans le fichier /etc/passwd. Ce qui au dpart pouvait tre une opration longue est devenue de plus en plus rapide avec les ordinateurs actuels. On peut donc essayer tous les mots d'un dictionnaire en quelques heures. Si donc un utilisateur a choisi comme mot de passe un mot de ce dictionnaire, celui-ci sera dcouvert. Il y a l un trou de scurit. Pour y remdier, on peut placer les mots de passe crypts non pas dans le fichier /etc/passwd qui est lisible par tous mais dans le fichier /etc/shadow qui n'est lui lisible que par l'utilisateur root. C'est le sens du choix Utiliser les mots de passe masqus. Par ailleurs, historiquement les mots de passe avaient au plus 8 caractres. Le choix Utiliser les mots de passe MD5 permet d'aller au-del de cette limite.
Slection paquetages du groupe de

// ici, il nous faut choisir les applications installer. Prendre les applications suivantes : Systme X-Window (oui), Environnement de bureau GNOME (oui), Environnement de bureau KDE (oui), Editeurs (non), Engineering et scientifique (non), Internet graphique (oui), Internet bas sur texte (non), Bureau/Productivit (oui), Son et vido (non), Authoring et Publishing (oui), Graphismes (oui), Jeux et divertissements (non), Outils de configuration du serveur (oui), Serveur web (oui), Serveur de courrier (oui), Serveur de fichiers windows (oui), Seveur de noms DNS (oui), Serveur FTP (oui), Serveur de bases de donnes SQL (oui), Serveur de news (non), Serveur de rseau (oui), Outils de dveloppement (oui), Dveloppement du noyau (oui), Dveloppement du logiciel X (non), Dveloppement du logiciel GNOME (non), Dveloppement du logiciel KDE (non), Outils d'administration (oui), Outils de systme (oui), Support d'impression (oui).

Installation des paquetages Cration d'une d'amorage disquette

l'installation des paquetages demands se fait

[oui] // cette disquette va vous permettre de lancer le systme Linux. En situation relle, il est prudent de dupliquer cette disquette. Toujours en situation relle, nous aurions install linux sur une machine ddie et celui-ci aurait t lanc par l'utilitaire GRUB. A cause de considrations techniques, nous n'avons pas choisi cette option ici.

Linux RH8

23/193

Configuration de l'interface graphique Configuration de l'cran Configuration personnalise Flicitations graphique

- doit dcouvrir le type de carte graphique du PC

doit dcouvrir le type de l'cran du PC

- c'est termin

3.5

Fin de linstallation

Linstallation est termine. La machine va redmarrer. Mettez la disquette d'amorage et rebootez. Au boot de la disquette, vous devriez voir une invite :
boot :

Validez. Le poste boote sur Linux. Un certain nombre de services sont installs. Au bout de quelques minutes arrivent des fentres de post-configuration. Acceptez les propositions par dfaut de chacune d'elles sauf pour l'option [RedHat Update Agent] o il faut cocher la phrase [x] Non, je ne veux pas enregistrer mon systme avec RedHat Network. L'enregistrement auprs de RedHat permet d'avoir des mises jour des paquetages qui ont t installs. C'est important car Redhat diffuse rgulirement des patchs qui corrigent des trous de scurit. Il y a diffrents types d'abonnements ces mises jour. L'abonnement le plus simple permet d'avoir les mises jour gratuitement mais de faon non prioritaire. Dans ce cas, si au moment o on veut faire des mises jour, le serveur est charg, on recevra le message qu'il nous faut attendre. Moyennant un abonnement peu onreux, il est possible d'avoir un accs garanti au serveur de mises jour. Ici, on refuse l'enregistrement car nous sommes sur un rseau priv et l'assistant de mises jour ne le sait pas. Il va donc faire un accs direct Internet et dans la pratique il se plante au point qu'on est oblig de rebooter la machine. En-dehors de cette page particulire, nous acceptons toutes les propositions faites par dfaut avec le bouton [Suivant]. Lorsqu'arrive la fentre d'authentification nous dfinissons l'environnement de travail souhait : cliquez sur le lien Session choisissez KDE Pour vous authentifier, tapez le login root puis le mot de passe azerty. Il vous sera demand si vous souhaitez que KDE soit votre environnement par dfaut. Rpondez oui. Il vous sera toujours possible ultrieurement de faire de GNOME votre environnement par dfaut.

Linux RH8

24/193

LINUX STATION DE TRAVAIL

Linux RH8

25/193

4
4.1

Dcouvrir l'environnement de travail Linux


Lenvironnement de travail KDE

Si tout s'est bien pass, vous tes maintenant dans l'environnement de travail KDE, un environnement analogue celui de windows. Nous ne prsentons ci-dessous que les quelques outils dont nous aurons besoin par la suite. Il est dconseill de passer trop de temps dcouvrir l'interface KDE. Vous aurez tout le loisir de le faire en-dehors du stage. Nous utiliserons principalement les outils suivants :

l'explorateur de fichiers Konqueror le terminal Konsole l'diteur de texte Kwrite le navigateur Mozilla

Nous travaillerons largement la mode windows avec des outils proches ou parfois identiques ceux qu'on trouve dans le monde windows. Cela permettra au dbutant de ne pas tre drout et d'utiliser ses habitudes windows . Dans la ralit, les administrateurs systme travaillent peu avec les interfaces graphiques. Ils travaillent en mode ligne en tapant des commandes Unix. C'est le cas lorsque l'administrateur administre son serveur distance avec une simple fentre terminal, ce qui est un cas trs frquent. On ne perdra donc pas de vue qu'un bon administrateur systme matrise parfaitement les commandes Unix. Ici, nous alternerons le travail en mode texte et celui en mode graphique. Cela facilitera le travail du dbutant et fera dcouvrir de faon naturelle un aspect non formalis dans ce document : linux peut servir de station de travail personnelle plutt que de serveur. C'est une tendance actuelle. On voit apparatre, notamment dans les universits et administrations, des salles de PC linux o les tudiants disposent des outils fondamentaux, notamment bureautiques avec OpenOffice, qui leur permettent de travailler. L'intrt est qu'en termes de logiciels cela ne cote rien puisque tout est du domaine public.

4.1.1

Le terminal Konsole

Le terminal Konsole est obtenu par l'option de menu Outils systme/Terminal. Le terminal est un outil interactif permettant d'excuter des commandes Unix :

Il nous servira mettre des commandes Unix n'ayant pas d'quivalent graphique.

4.1.1.1

Commandes de base d'Unix

Les tests suivants visent donner les notions de base des commandes Unix. Ceux qui connaissent celles-ci peuvent passer au paragraphe suivant. Action
Cration dun rpertoire

Commande Unix mkdir rpertoire rmdir rpertoire

Equivalent Dos mkdir rpertoire md rpertoire rmdir rpertoire rd rpertoire 26/193

Suppression vide

dun

rpertoire

Linux RH8

Suppression non vide

dun

rpertoire

deltree repertoire rm -r rpertoire rm -rf rpertoire : pour le supprimer sans confirmation ls la rpertoire dir rpertoire cd rpertoire copy fichier1 fichier2 copy fichier1 rpertoire

Contenu dun rpertoire Se positionner rpertoire Copier un fichier sur un

cd rpertoire cp fichier1 fichier2 cp fichier1 rpertoire

Supprimer un fichier

del fichier rm fichier rm -f fichier : pour le supprimer sans confirmation


dun

Visualiser le fichier texte

contenu

cat fichier more fichier less fichier tail -n fichier : pour visualiser les n dernires lignes tail -n fichier | more : pour les visualiser page par page grep chane fichier grep -i chane fichier : pour ne pas faire de diffrence majuscules/minuscules ln s fic1 fic2 ps aux ps aux | grep texte : pour chercher dans les lignes produites par ps, celles qui contiennent texte chmod mode fichier chown utilisateur:groupe fichier

type fichier

Visualiser la fichier texte

fin

dun

Chercher une chane dans un fichier texte

Crer fic1

un

lien

de

fic2

vers

Liste des processus actifs

Changer fichier

les

droits

d'un

Changer le propritaire d'un fichier

Vous serez amens travailler sous diverses identits. Il est donc important de savoir un moment donn sous quelle identit vous travaillez. Dans une fentre terminal, vous pouvez avoir ce renseignement avec la commande id :
[root@tahe root]# id uid=0(root) gid=0(root) groupes=0(root),1(bin),2(daemon),3(sys),4(adm),6(disk),10(wheel)

Chaque utilisateur a un numro. Le superutilisateur root a le numro 0. Cet utilisateur particulier a tous les droits. C'est sous ce compte que travaille habituellement l'administrateur du serveur. Chaque utilisateur a un groupe principal dfini par un nom et un numro. Ici c'est le groupe root de numro 0. Un utilisateur peut appartenir des groupes secondaires, ici les groupes bin, daemon, sys, adm, disk et wheel. Dans un systme multi-utilisateurs, les objets (fichiers, dossiers, processus, ...) ont des propritaires. Ceux-ci peuvent donner des droits d'accs deux types d'utilisateurs : ceux appartenant un groupe donn tous les autres Rattacher des utilisateurs plusieurs groupes permet de leur donner les droits d'accs de ces groupes. C'est pourquoi il est parfois ncessaire de rattacher un utilisateur plusieurs groupes afin de lui donner divers droits d'accs aux objets du systme.

Linux RH8

27/193

Chaque utilisateur a un rpertoire de connexion qui lui appartient. Pour connatre celui-ci, tapez les commandes suivantes :
[root@tahe root]# cd [root@tahe root]# pwd /root cd pwd

Positionne sur le rpertoire de connexion affiche le rpertoire sur lequel on est positionn

Lorsque vous aurez crer des dossiers ou des fichiers, c'est dans le rpertoire de connexion de l'utilisateur sous le nom duquel vous oprez que vous les crerez. Aussi aurez-vous toujours besoin de connatre votre identit (commande id). En tant qu'utilisateur non root, vous ne pourrez crer de dossiers ou de fichiers en-dehors de votre rpertoire de connexion. En tant qu'utilisateur root, vous pouvez tout faire et vous aurez parfois changer les droits d'accs de certains objets du systme essentiellement des dossiers et rpertoires. Dcouvrons ces droits en listant le contenu du rpertoire de connexion de root avec la commande ls :
[root@tahe root]# ls -l total 104 -rw-r--r-1 root drwxr-xr-x 2 root drwx-----3 root drwxr-xr-x 5 root -rw-r--r-1 root -rw-r--r-1 root

root root root root root root

2390 4096 4096 4096 21896 4096

mar 4 19:23 anaconda-ks.cfg mar 20 16:32 autosave mar 26 07:38 Desktop mar 21 16:09 downloads mar 4 19:18 install.log mar 4 19:18 install.log.syslog

Ce que vous obtenez peut tre diffrent de ce que vous voyez ci-dessus. On voit une liste de fichiers et dossiers. La signification des colonnes est la suivante :
1 2 3 4 5 6 7

droits d'accs au fichier ou dossier nombre de liens sur ce fichier utilisateur propritaire du fichier ou dossier groupe propritaire du fichier ou dossier taille en octets du fichier ou dossier date et heure de dernire modification du fichier ou dossier nom du fichier

La colonne 1 reprsente les droits d'accs au fichier ou dossier. Ceux-ci sont reprsents par une suite de 10 caractres :

le 1er caractre indique le type de l'objet : d=directory(dossier), -=fichier les 3 caractres suivants reprsentent les droits d'accs de l'utilisateur propritaire du fichier ou dossier avec les conventions suivantes : ils sont dans l'ordre rwx. Pour un fichier : r=droit de lire le fichier, w=droit d'crire dans le fichier, x=droit d'excuter le fichier. Pour un dossier, r=droit de lister le contenu du dossier, w=droit d'ajouter des entres dans le dossier, x=droit de traverser le dossier. le signe signifie l'absence du droit correspondant les 3 caractres suivants reprsentent les droits d'accs du groupe propritaire du fichier ou dossier avec les mmes conventions que prcdemment. les 3 derniers caractres reprsentent les droits sur l'objet de ceux qui ne sont pas propritaire de celui-ci et qui n'appartiennent pas non plus au groupe qui en est propritaire.

Ainsi la ligne
-rw-r--r-1 root root 4096 mar 4 19:18 install.log.syslog

indique qu'on a affaire un fichier (1er caractre) appartenant l'utilisateur root et au groupe root. Les droits rw- du propritaire indiquent que celui-ci peut lire(r) et crire(w) dans le fichier. Les droits r-- du groupe indiquent que les membres de celui-ci ne peuvent que lire le fichier. Les droits r-- (3 derniers caractres) indiquent que les utilisateurs non concerns par les deux premiers groupes de droits ont le droit de lire le fichier. Maintenant, affichons les droits du rpertoire de connexion de l'utilisateur root : Linux RH8 28/193

root@tahe root]# ls -ld /root drwxr-x--21 root root

4096 mar 26 07:37 /root

L'option -d utilise pour la commande ls permet d'afficher les proprits d'un dossier. Sans cette option, ce sont les proprits des objets contenus dans ce dossier qui auraient t affichs. Ici, le 1er caractre d indique qu'on a affaire un rpertoire il appartient l'utilisateur root et au groupe root (colonnes 3 et 4) le propritaire a les droits rwx indiquant qu'il peut lister le contenu du dossier (r), lui ajouter des entres (w), le traverser (x). le groupe propritaire a lui les droits r-w. Les membres de ce groupe ne pourront donc pas ajouter d'entres au dossier les autres utilisateurs n'ont aucun droit. On trouvera ci-dessous quelques exemples que le lecteur est amen reproduire s'il n'est pas l'aise avec les commandes Unix.
// crer un rpertoire [root@tahe root]# mkdir test // vrification [root@tahe root]# ls -l total 108 -rw-r--r-1 root drwxr-xr-x 2 root -rw-r--r-1 root drwx-----3 root drwxr-xr-x 5 root -rw-r--r-1 root -rw-r--r-1 root drwxr-xr-x 2 root

root root root root root root root root

2390 4096 56437 4096 4096 21896 4096 4096

mar mar mar mar mar mar mar mar

4 20 22 26 21 4 4 26

19:23 16:32 12:21 07:38 16:09 19:18 19:18 08:48

anaconda-ks.cfg autosave capture1.png Desktop downloads install.log install.log.syslog test

// changer de rpertoire courant [root@tahe root]# cd test // visualiser le contenu du rpertoire courant [root@tahe test]# ls -l total 0 // crer un fichier [root@tahe test]# echo test >fic1 // visualiser le contenu du rpertoire courant [root@tahe test]# ls -l total 4 -rw-r--r-1 root root 5 mar 26 08:50 fic1 // visualiser le contenu du fichier fic1 [root@tahe test]# cat fic1 test // dupliquer le fichier fic1 [root@tahe test]# cp fic1 fic2 // visualiser le contenu du rpertoire courant [root@tahe test]# ls -l total 8 -rw-r--r-1 root root 5 mar 26 08:50 fic1 -rw-r--r-1 root root 5 mar 26 08:50 fic2 // visualiser le contenu du fichier fic2 [root@tahe test]# cat fic2 test // crer deux dossiers [root@tahe test]# mkdir rep1 rep2 // contenu du dossier courant [root@tahe test]# ls -l total 16 -rw-r--r-1 root root -rw-r--r-1 root root drwxr-xr-x 2 root root drwxr-xr-x 2 root root

5 5 4096 4096

mar mar mar mar

26 26 26 26

08:50 08:50 08:51 08:51

fic1 fic2 rep1 rep2

// cration d'un fichier [root@tahe test]# echo test2 >rep1/fic3

Linux RH8

29/193

// vrification [root@tahe test]# ls -l rep1 total 4 -rw-r--r-1 root root // contenu de fic1 [root@tahe test]# cat rep1/fic3 test2 // suppression rep2 qui est vide [root@tahe test]# rmdir rep2 // vrification [root@tahe test]# ls -l total 12 -rw-r--r-1 root -rw-r--r-1 root drwxr-xr-x 2 root

6 mar 26 08:52 fic3

root root root

5 mar 26 08:50 fic1 5 mar 26 08:50 fic2 4096 mar 26 08:52 rep1

// suppression rep1 qui est non vide [root@tahe test]# rm -rf rep1/ // vrification [root@tahe test]# ls -l total 8 -rw-r--r-1 root -rw-r--r-1 root

root root

5 mar 26 08:50 fic1 5 mar 26 08:50 fic2

// suppression fichiers fic1, fic2 [root@tahe test]# rm fic1 fic2 rm: remove regular file `fic1'? y rm: remove regular file `fic2'? y // vrification [root@tahe test]# ls -l total 0 // cration fichier [root@tahe test]# echo test >test // vrification [root@tahe test]# ls -l total 4 -rw-r--r-1 root

root

5 mar 26 08:55 test

// droit x pour l'utilisateur propritaire [root@tahe test]# chmod u+x test // vrification [root@tahe test]# ls -l total 4 -rwxr--r-1 root

root

5 mar 26 08:55 test

// on enlve le droit x au propritaire [root@tahe test]# chmod u-x test // vrification [root@tahe test]# ls -l total 4 -rw-r--r-1 root

root

5 mar 26 08:55 test

4.1.1.2

Aide sur les commandes Unix

Les commandes Unix ont en gnral de multiples options introduites par le caractre -, par exemple ls -ld. Pour connatre la syntaxe exacte d'une commande Unix, on utilisera la commande man. Voici ce que donne par exemple la commande man ls :

Linux RH8

30/193

Pour se dplacer dans l'aide, on utilisera les touches suivantes :


PageUp PageDown Flche haute Flche basse q

: page prcdente : page suivante : remonte dune ligne : descend dune ligne : termine lapplication man

4.1.2

L'diteur de texte Kwrite

L'diteur Kwrite est obtenu par l'option de menu Extras/Accessoires/Kwrite. En mode ligne, il peut tre obtenu par la commande kwrite :
# kwrite &

qui lancera l'diteur kwrite en tche de fond. Cet diteur nous permettra de modifier des fichiers texte existants, notamment des fichiers de configuration et/ou parfois en crer de nouveaux.

Linux RH8

31/193

4.1.2.1

Tests

'Ecrivez un texte et sauvegardez-le dans le dossier /root. Puis rechargez-le.

4.1.3

Le gestionnaire de fichiers Konqueror

Le gestionnaire de fichiers Konqueror est disponible sur le bureau sous le nom Dossier personnel :

En mode ligne, il peut tre lanc avec la commande konqueror :


# konqueror &

On obtient une fentre analogue celle de l'explorateur windows :

L'explorateur se positionne par dfaut sur le dossier personnel de l'utilisateur qui l'a lanc (ici root). La touche F9 permet d'avoir ou non l'arborescence des fichiers dans la partie gauche de la fentre (essayez). Cet outil vous permettra de grer vos fichiers et rpertoires sans avoir taper les commandes Unix quivalentes. Voici quelques actions possibles :
crer un dossier aller dans un dossier supprimer un dossier ou fichier changer les droits d'un dossier ou fichier duplication de fichiers

clic droit/nouveau double clic sur le dossier clic droit sur objet/supprimer clic droit sur objet/proprits/permissions utiliser le copier/coller

Linux RH8

32/193

Konqueror peut aller sur Internet avec diffrents protocoles (HTTP, FTP, ...). Pour cela, il devra passer par une machine relais puisque votre machine se trouve sur un rseau priv. Nous le configurons ainsi : Configuration/Configurer Konqueror :

Prendre l'option [Configuration manuelle] et indiquer le nom de la machine relais pour les protocoles HTTP, HTTPS et FTP. Par ailleurs, l'aide du bouton [Nouveau], prciser les domaines pour lesquels le proxy ne doit pas tre utilis : la machine locale (localhost) et les machines du rseau priv (.uang) :

Aprs avoir valid cette configuration, demandez l'URL http://istia.univ-angers.fr. Vous devriez voir la page d'entre du site web de l'istia. Faites F9 ventuellement pour supprimer le partitionnement en deux de la fentre. Essayez diverses URL de votre connaissance. Essayez ensuite l'URL ftp://ftp.univ-angers.fr :

Linux RH8

33/193

Descendez dans l'arborescence du dossier angers.fr/pub/linux/french/docs/HOWTO/a-jour/pdf :

pub

jusqu'au

dossier

ftp://ftp.univ-

Avec la souris, prendre droite le fichier Access-HOWTO.pdf.gz et le dposer dans le dossier /root gauche puis doublecliquez sur ce dossier pour voir son contenu :

Le fichier tlcharg est un fichier zipp (suffixe gz). Double-cliquez dessus : un utilitaire d'archivage va tre automatiquement lanc :

Cliquez droit sur le fichier Access-HOWTO.pdf et prenez l'option [Extraire]. Extrayez le fichier dans le dossier /root :

Linux RH8

34/193

Double-cliquez maintenant sur le fichier Access-HOWTO.pdf. Il est alors visualis par un afficheur PDF :

Les oprations prcdentes ont montr la puissance et la convivialit de Konqueror et de l'interface KDE :

gestion facilite des fichiers et dossiers. Ceux-ci peuvent tre sur internet. comme pour windows, des utilitaires sont associs certains suffixes de fichiers et automatiquement lancs lorsqu'on double-clique sur ceux-ci.

Voyons maintenant un dernier point qui nous sera utile : la gestion des droits sur un dossier ou un fichier. Slectionnez un fichier du dossier /root et cliquez droit dessus. Prenez l'option Proprits puis l'onglet Permissions :

Cette fentre permet de :

connatre l'utilisateur propritaire, le groupe propritaire et les droits d'accs de l'objet (fichier ou dossier) 35/193

Linux RH8

de changer ces mmes informations si vous en avez le droit (vous tes root ou propritaire de l'objet)

Nous serons amens utiliser cet outil pour parfois changer des droits d'accs.

4.1.4

Le navigateur Mozilla

Le navigateur Mozilla est disponible dans la barre des tches :

Le navigateur Mozilla nous permettra d'aller chercher des informations sur le web et de grer le courrier. C'est surtout pour cette dernire application qu'il nous sera utile. Nous avons vu en effet que Konqueror nous permettait galement d'aller sur le web. Le navigateur Mozilla peut galement tre lanc partir d'un terminal :
# mozilla &

4.1.4.1

Configuration du proxy HTTP

Comme pour Konqueror, il nous faut indiquer Mozilla par quelle machine passerelle il doit passer pour aller sur l'internet. Prendre l'option Edit/Preferences/Advanced/Proxies :

cocher [Manual Proxy Configuration] HTTP Proxy : eproxy.istia.uang, port : 3128 FTP Proxy : idem HTTP Proxy No proxy for : localhost, .istia.uang (ne pas oublier le . devant istia).

Avec cette configuration, le navigateur passera par le proxy HTTP indiqu sauf lorsque l'URL demande rfrence la machine locale (localhost) ou une machine du rseau priv istia.uang. Essayez diverses URL et vrifiez que vous les atteignez.

4.2
4.2.1

Systmes de fichiers, priphriques et arborescence


Gestion des priphriques

La philosophie d'Unix est de considrer toutes les ressources (essentiellement des priphriques) comme des fichiers accessibles ou non aux utilisateurs. De ce fait, l'installation et l'administration en sont simplifies (montage de systmes de fichiers). Ces fichiers spciaux sont rangs dans un rpertoire spcial : /dev

4.2.2

Gestion des systmes de fichiers

Un systme de fichiers (filesystem) dsigne l'organisation logique utilise par le systme d'exploitation pour grer l'espace disque (physique) ou les partitions. Il est ncessaire de crer les systmes de fichiers avant de pouvoir utiliser les disques et partitions. De faon gnrale les systmes Unix utilisent une organisation des systmes de fichiers en blocs (superblocs, inodes et blocs de donnes). On peut crer plusieurs types de systmes de fichiers : minix, ext2 (le plus populaire sous Linux), msdos,

Linux RH8

36/193

vfat, ntfs... Plus rcemment, d'autres systmes de fichiers plus modernes ont t introduits : ext3, reiserfs, xfs(silicon graphics), jfs (IBM). Chacun a des avantages et des inconvnients. La cration d'un systme de fichiers se ralise avec la commande mkfs. Il est possible de crer un systme de fichiers sur une disquette ou sur un disque. En fait, chaque systme de fichier dispose de ses propres utilitaires pour crer et vrifier son espace de stockage. mkfs est une commande universelle, qui permet d'avoir une vue unifie, avec des paramtres standards. Elle appelle ensuite le bon utilitaire, en fonction du systme de fichiers utilis. Exemple :
mkfs -t ext2 -c /dev/fd0

appellera, en fait, mke2fs (le programme qui cre une systme de fichiers ext2). Pour rendre un systme de fichiers accessible aux utilisateurs, il doit tre mont sur un rpertoire. Par exemple, les disques durs disponibles sur une machine Unix sont monts automatiquement au dmarrage de la machine. Le systme de fichiers appel racine ou root est mont ainsi sur le rpertoire /, le systme de fichiers pour les programmes est mont sur le rpertoire /usr, etc... Toutes les informations sur le montage (initial) des fichiers sont dcrites dans le fichier nomm /etc/fstab. C'est ce fichier qui est lu au dmarrage (boot) du systme pour monter les systmes de fichiers ncessaires. Dans une fentre [Kconsole] visualisez le contenu du fichier /etc/fstab :
[root@tahe root]# more /etc/fstab LABEL=/ / none /dev/pts none /proc none /dev/shm /dev/hdb3 swap /dev/cdrom /mnt/cdrom /dev/cdrom1 /mnt/cdrom1 /dev/hdd4 /mnt/zip /dev/fd0 /mnt/floppy ext3 devpts proc tmpfs swap iso9660 iso9660 auto auto defaults 1 1 gid=5,mode=620 0 0 defaults 0 0 defaults 0 0 defaults 0 0 noauto,owner,kudzu,ro 0 0 noauto,owner,kudzu,ro 0 0 noauto,owner,kudzu 0 0 noauto,owner,kudzu 0 0

Sur la machine de test, il y avait un lecteur de CD (/dev/cdrom), un graveur de C (/dev/cdrom1), un lecteur zip (/dev/hdd4), un lecteur de disquettes (/dev/fd0). Les quatre lignes correspondantes dans /etc/fstab vont provoquer le montage de ces quatre systmes de fichiers au dmarrage du serveur. Ils seront monts aux points d'arborescence indiqus :
/dev/cdrom /dev/cdrom1 /dev/hdd4 /dev/fd0

/mnt/cdrom /mnt/cdrom1 /mnt/zip /mnt/floppy

Visualisez le contenu du dossier /mnt :


[root@tahe root]# ls -la /mnt/ drwxr-xr-x 2 root root drwxr-xr-x 2 root root drwxr-xr-x 2 root root drwxr-xr-x 2 root root 4096 4096 4096 4096 mar mar mar mar 4 4 4 4 18:27 18:27 18:27 18:27 cdrom cdrom1 floppy zip

On trouve bien les quatre dossiers rfrencs (appels points de montage) par le fichier /etc/fstab. Ces dossiers peuvent tre vides si au boot il n'y avait rien dans le priphrique correspondant :
[root@tahe root]# ls -l /mnt/cdrom total 0

La commande prcdente montre qu'il n'y a pas de systme de fichiers mont sous le dossier /mnt/cdrom. La commande mount permet de monter un systme de fichiers sur un rpertoire. Elle est accessible l'administrateur, mais pas aux autres utilisateurs pour des raisons de scurit. La syntaxe standard de la commande est : mount -t type device dir mais elle s'utilise aussi sous diverses autres formes :

Linux RH8

37/193

mount -a [-fnrvw] [-t vfstype] mount [-fnrvw] [-o options [,...]] device | dir mount [-fnrvw] [-t vfstype] [-o options] device dir Faites un man de la commande mount pour dcouvrir la signification des diffrentes options. Utilison cette commande pour accder au contenu d'un CD. Pour ce faire, il faut monter le systme de fichiers de celui-ci. Lorsque le priphrique monter est dcrit dans le fichier /etc/fstab, il peut tre mont avec une commande mount simplifie : mount priphrique ou mount point_de_montage. Ainsi pour monter le priphrique /dev/cdrom on pourra utiliser la commande :
mount /dev/cdrom

Nous le faisons. Nous introduisons un CD, nous le montons et affichons son contenu :
[root@tahe root]# mount /dev/cdrom [root@tahe root]# ls -l /mnt/cdrom total 598455 -r-xr-xr-x 1 root root 612817854 ao

2002 oracle.zip

Pour dmonter un systme de fichiers, on utilise la commande umount :


[root@tahe root]# umount /dev/cdrom [root@tahe root]# ls -l /mnt/cdrom total 0

On voit ci-dessus, qu'aprs la commande umount, il n'y a plus de systme de fichiers sous /mnt/cdrom alors que le CD est toujours dans le lecteur. En utilisant la syntaxe complte de mount, on peut monter un systme de fichiers n'importe o dans l'arborescence comme le montre l'exemple suivant :
[root@tahe root]# mkdir [root@tahe root]# mount mount : Priphrique de [root@tahe root]# ls -l total 598455 -r-xr-xr-x 1 root /mnt/oracle1 -t iso9660 /dev/cdrom /mnt/oracle1/ bloc/dev/cdrom est protg en criture. Montage en lecture seule. /mnt/oracle1/ root 612817854 ao 7 2002 oracle.zip

Ici, le mme CD que prcdemment a t mont sous /mnt/oracle1. Il sera dmont par :
[root@tahe root]# umount /dev/cdrom

ou
[root@tahe root]# umount /mnt/oracle1/

Appliquons ce qui vient d'tre vu une disquette. Nous prenons une disquette vierge et nous la formatons au format ext3 :
[root@tahe root]# mkfs -t ext3 /dev/fd0 mke2fs 1.27 (8-Mar-2002) Filesystem label= OS type: Linux Block size=1024 (log=0) Fragment size=1024 (log=0) 184 inodes, 1440 blocks 72 blocks (5.00%) reserved for the super user First data block=1 1 block group 8192 blocks per group, 8192 fragments per group 184 inodes per group Writing inode tables: done Filesystem too small for a journal Writing superblocks and filesystem accounting information: done This filesystem will be automatically checked every 38 mounts or 180 days, whichever comes first. Use tune2fs -c or -i to override.

Montons cette disquette (syntaxe simplifie parce que priphrique prsent dans /etc/fstab) :
[root@tahe root]# mount /dev/fd0

Linux RH8

38/193

[root@tahe root]# ls -l /mnt/floppy/ total 12 drwx-----2 root root 12288 mar 28 14:18 lost+found

On voit que le formatage a cr un dossier appel lost+found. Maintenant, copions un fichier sur la disquette :
[root@tahe root]# cp /etc/passwd /mnt/floppy/fic1 [root@tahe root]# ls -l /mnt/floppy/fic1 -rw-r--r-1 root root 2003 mar 28 14:24 /mnt/floppy/fic1

Lorsque nous n'avons plus besoin de la disquette, nous dmontons le priphrique /dev/fd0 :
[root@tahe root]# umount /dev/fd0 [root@tahe root]# ls -l /mnt/floppy/ total 0

Maintenant formatons la mme disquette au format DOS. Cela permettra de l'utiliser avec un systme windows par exemple :
[root@tahe mkfs.msdos [root@tahe [root@tahe [root@tahe -rwxr-xr-x root]# mkfs -t msdos /dev/fd0 2.8 (28 Feb 2001) root]# mount -t msdos /dev/fd0 /mnt/floppy/ root]# cp /etc/passwd /mnt/floppy/fic2 root]# ls -l /mnt/floppy/fic2 1 root root 2003 mar 28 14:28 /mnt/floppy/fic2

Ci-dessus, on a :

format la disquette au format DOS mont la disquette en prcisant son type msdos

Ceci fait, la disquette est vue comme le dossier /mnt/floppy et est gre comme le reste de l'arborescence. Seulement, les fichiers qui y sont copis le sont au format MS-DOS. Il y a l un concept trs puissant. Ce qui vient d'tre fait pourrait tre rpt pour le lecteur Zip. Les gestionnaires de fichiers, intgrs dans les bureaux volus, comme GNOME ou KDE, permettent le montage ou dmontage en un clic de souris - encore faut-il que la ressource soit montable par un utilisateur (il faut que les attributs noauto,user soient positionns dans /etc/fstab). Des mini applications (``applets'' peuvent aussi faire ce travail).

4.2.3

Organisation des donnes sur le systme de fichiers

Sur un systme Unix, les donnes du systme et des utilisateurs ne sont pas mlanges. L'arborescence d'un systme Unix est relativement bien dfinie. Avec Konqueror, placez vous sur la racine de l'arborescence des fichiers du serveur :

bin : les binaires ncessaires au fonctionnement de la base du systme. etc : les fichiers de configuration du systme et des programmes (paramtrage par dfaut). lib : les librairies partages du systme (et les modules dynamique du noyau) mnt : un rpertoire ddi pour le montage d'autre systmes de fichiers. root : le rpertoire o sont stockes les donnes du super utilisateur. tmp : sont stockes ici les donnes temporaires cres par les programmes des utilisateurs. Ce rpertoire est normalement vid chaque dmarrage de la machine. 39/193

Linux RH8

var : sont stocks ici tous les fichiers crs par les programmes, mais qui doivent tre conservs sur une certaine priode : Les courriers lectroniques arrivs ou en partance, l'historique de connexion des utilisateurs, etc... boot : rpertoire spcifique Linux, dans lequel sont stocks les noyaux de la machine. dev : Tous les pseudo fichiers reprsentant les priphriques du systme y sont stocks; /dev/floppy dsigne la disquette par exemple. home : dessous home, il y a d'autres sous rpertoires (un par compte Unix) dans lequel sont stockes les donnes de chaque utilisateur. ex: /home/dupont proc : rpertoire spcifique quelques Unix (Linux, Digital Unix), sur lequel est mont un pseudo systme de fichiers qui reprsente l'tat du systme. sbin : les binaires du systme. Y sont stocks tous les binaires ncessitant d'tre super utilisateur pour les utiliser : (gestion des interfaces rseaux, montage et dmontage de systme de fichiers...) usr : ce rpertoire n'est pas proprement parler ncessaire au bon fonctionnement du systme de base. Par contre, tous les binaires et librairies ncessaires aux programmes (autres que ceux qui sont considrs comme partie systme) y sont stocks. Ce sous rpertoire contient donc une arborescence complte, et est souvent trs volumineux (on peut y trouver XWindow, Latex, Gnome, KDE,traitement de textes, navigateurs WWW, etc...) Les distributions Linux suivent ce standard, et sont encore plus strictes sur l'emplacement des programmes et de leurs donnes. Elles suivent un document appel FHS.

4.3

Gestion des comptes utilisateurs

Les utilisateurs dun systme Unix sont rpartis en groupes dutilisateurs. Sur quels critres met-on des utilisateurs dans un groupe ou un autre ? Quelquefois cest vident. lISTIA, on met les tudiants dune mme filire dans un mme groupe. Cela offre de multiples avantages : on donne au groupe le nom de la filire. Ainsi on sait quel type dtudiants sont dans le groupe les oprations sur les membres dun groupe sont nombreuses : affecter le mme quota disque tous les membres du groupe envoyer un ml tous les membres du groupe dplacer tous les membres dun groupe dans un autre (changement de filire en fin danne) On peut mettre galement dans un mme groupe des utilisateurs qui pourraient avoir se partager des fichiers. Ce cas est cependant peu frquent. Les droits sur les fichiers se rpartissent en trois groupes de droits : 1. ceux pour lutilisateur propritaire du fichier 2. ceux pour le groupe propritaire du fichier 3. ceux pour les utilisateurs nentrant pas dans les cas 1 et 2 On mettra dans un mme groupe des utilisateurs ayant partager des fichiers. Le groupe serait propritaire des fichiers et ainsi tous les utilisateurs membres du groupe auraient les mmes droits d'accs aux fichiers appartenant au groupe. La gestion des utilisateurs se fait sous l'identit root. On peut le faire en mode texte ou graphique. Nous le ferons ici en mode graphique. Lancez le gestionnaire d'utilisateurs par Menu KDE/Paramtres de systme/Gestionnaire d'utilisateurs :

Linux RH8

40/193

4.3.1

Cration de groupes dutilisateurs

Commenons par crer deux groupes appels groupe1 et groupe2 avec l'icne [Ajouter Groupe] ci-dessus :

Une fois crs, les groupes apparaissent dans la liste des groupes :

4.3.2

Cration d'utilisateurs

Maintenant, slectionnons l'onglet [Utilisateurs] pour crer de nouveaux utilisateurs :

Avec le bouton [Ajouter Utilisateur] ci-dessus, crons quatre utilisateurs uti1, uti2, uti3, uti4. Le mot de passe de chacun d'eux sera azerty.

Linux RH8

41/193

On rptera l'opration quatre fois. On a alors la liste d'utilisateurs suivante :

Le gestionnaire a cr un nouveau groupe pour chacun de ces quatre utilisateurs comme le montre la liste des groupes :

On peut changer les proprits d'un utilisateur. Revenir sur l'onglet [Utilisateurs], slectionnez uti1 et cliquez sur le bouton [Proprits] de la barre d'outils :

Linux RH8

42/193

On voit qu'on peut changer certains des attributs de l'utilisateur. Pour grer son appartenance diffrents groupes, cliquez sur l'onglet [groupes] :

Nous allons faire de groupe1, le groupe primaire de l'utilisateur uti1. Ce sera par ailleurs son unique groupe. Procdez comme suit :

cochez le groupe groupe1 dans la liste des groupes dcochez le groupe uti1 dans la liste des groupes slectionnez groupe1 dans la liste droulante du groupe primaire validez

Procdez ainsi pour chacun des quatre utilisateurs : uti1 et uti2 iront dans le groupe groupe1 et uti3 et uti4 dans le groupe groupe2 :

Revenez dans l'onglet [Groupes] et supprimez les groupes uti1 uti4 avec le bouton [Effacer] :

Lorsque l'utilisateurs uti1 a t cr, le groupe uti1 a t cr et l'utilisateur uti1 a t mis dedans. Par ailleurs, un dossier /home/uti1, appel rpertoire de connexion a t cr. Son propritaire tait l'utilisateur uti1, son groupe propritaire le groupe uti1. Le fait de mettre l'utilisateur uti1 dans le groupe groupe1 n'a pas chang ces droits. Ainsi maintenant le groupe propritaire du dossier /home/uti1 est un groupe qui n'existe plus... Pour le vrifier, utilisez [Konqueror] et visualisez les droits du dossier /home/uti1 :

Linux RH8

43/193

Le groupe 503 n'existe pas et c'est pourquoi c'est un numro qui apparat et non le nom du groupe. Cela peut se vrifier galement en mode texte dans la fentre [Konsole] :
[root@tahe root]# ls -ld /home/uti1/ drwx-----x 25 uti1 503 4096 mar 25 18:39 /home/uti1/

Pour changer le groupe propritaire de /home/uti1, mettez groupe1 dans le champ Groupe ci-dessus et cochez la case Appliquez les ... aux sous-dossiers ... :

Le groupe propritaire de /home/uti1 et de ses sous-dossiers devient groupe1 comme le montre les rsultats de la commande suivante dans [Konsole] :
[root@tahe root]# ls -ld /home/uti1/ drwx-----x 25 uti1 groupe1 4096 mar 25 18:39 /home/uti1/

Faites la mme chose pour uti2 (groupe1), uti3 (groupe2), uti4(groupe2). On retiendra de toutes ces manipulations qu'il est prfrable de fixer ds la cration de l'utilisateur le groupe auquel il doit appartenir. Linux RH8 44/193

4.3.3

Les fichiers /etc/passwd, /etc/shadow, /etc/group

Les groupes d'utilisateurs sont enregistrs dans le fichier /etc/group. Dans la fentre terminal (Kconsole) tapez la commande suivante qui visualise le fichier /etc/group page par page :
# more /etc/group

Vous verrez quelque chose du genre :


.... admin:x:500:st postdrop:x:90: postfix:x:89: mailman:x:41: groupe1:x:501:uti1,uti2 groupe2:x:502:uti3,uti4

On retouve bien les deux groupes groupe1 et groupe2 que nous avons crs. Chaque ligne comporte quatre champs : nom du groupe : mot de passe du groupe : numro du groupe : membres Les comptes utilisateurs sont eux regroups dans le fichier /etc/passwd. Tapez la commande :
# more /etc/passwd

Vous obtiendrez un affichage analogue ce qui suit :


.... webalizer:x:67:67:Webalizer:/var/www/html/usage:/sbin/nologin mysql:x:27:27:MySQL Server:/var/lib/mysql:/bin/bash st:x:500:100:Serge Tah/home/st:/bin/bash postfix:x:89:89::/var/spool/postfix:/sbin/nologin mailman:x:41:41:GNU Mailing List Manager:/var/mailman:/bin/false uti1:x:501:501:Utilisateur 1:/home/uti1:/bin/bash uti2:x:502:501:utilisateur 2:/home/uti2:/bin/bash uti3:x:503:502:Utilisateur 3:/home/uti3:/bin/bash uti4:x:504:502:Utilisateur 4:/home/uti4:/bin/bash

On retrouve les quatre utilisateurs uti1 uti4 que nous avons crs. Chaque ligne de ce fichier a sept champs :
login : mot de passe (cod) : son numro didentit : son numro de groupe : son identit : son rpertoire : le shell utilis

Dans l'exemple ci-dessus, le champ [mot de passe] contient toujours x. Le mot de passe est en fait stock dans le fichier /etc/shadow. Visualisez ce fichier l'aide de la commande :
# more /etc/shadow

L'affichage devrait tre analogue ce qui suit :


... uti1:7kySlexQwrPfg:12138:-1:99999:-1::: uti2:FeEwPwhlG5GUc:12138:-1:99999:-1::: uti3:BeNj/O9D/xk.k:12138:-1:99999:-1::: uti4:DtfGVCEUR7bhc:12138:-1:99999:-1::: ....

On retrouve les quatre utilisateurs uti1 uti4 avec cette fois-ci leur mot de passe (crypt quand mme) et d'autres informations sur la dure de validit de ces mots de passe. Pourquoi les mots de passe ne sont-ils pas stocks dans le fichier /etc/passwd ? Regardons les droits des deux fichiers :
[root@tahe root]# ls -l /etc/passwd -rw-r--r-1 root root [root@tahe root]# ls -l /etc/shadow -r-------1 root root 2003 mar 27 17:17 /etc/passwd 1266 mar 27 17:17 /etc/shadow

On voit que le fichier /etc/passwd est lisible par tout le monde (droits r-- dans les trois derniers caractres des droits) alors que le fichier /etc/shadow n'est lisible que par son propritaire root. Seul root a donc accs aux mots de passe Linux RH8 45/193

crypts des utilisateurs. Ces mots de passe taient autrefois crypts dans /etc/passwd lui-mme. Des programmes pouvaient alors les lire et les casser .

4.3.4

Gestion des utilisateurs en mode texte

Les groupes et les utilisateurs peuvent tre grs l'aide de commandes Unix : groupadd pour crer un groupe groupdel pour supprimer un groupe groupmod pour modifier les proprits d'un groupe useradd pour crer un utilisateur userdel pour supprimer un utilisateur usermod pour modifier les proprits d'un utilisateur

On utilisera la commande man pour obtenir la syntaxe exacte de ces diffrentes commandes.

4.3.5

Droits d'accs attachs aux utilisateurs

Nous allons tenter d'illustrer ici la notion de droits d'accs aux fichiers et rpertoires. A la cration d'un utilisateur est galement cr un dossier qui lui appartient et sur lequel il est plac lorsqu'il se connecte. C'est ce qu'on appelle son rpertoire de connexion (home directory). Les copies d'cran prcdentes ont ainsi montr que le rpertoire de connexion de l'utilisateur uti1 tait /home/uti1. Regardons les droits d'accs de celui-ci :
[root@tahe root]# ls -ld /home/uti1 drwx-----26 uti1 groupe1 4096 mar 28 15:49 /home/uti1

On voit que le propritaire uti1 a tous les droits (1er groupe de droits=rwx), que les membres de son groupe (groupe1) n'en ont aucun (2ime groupe de droits=---), et que les autres utilisateurs n'en ont aucun galement (3ime groupe de droits=---). Ces droits sont positionns par dfaut pour une scurit maximale. Pour les besoins de notre dmonstration, changeons-les. Donnons les droits r-x aux membres du groupe groupe1, et aux autres les droits --x :
[root@tahe root]# chmod g+r,g+x,o+x /home/uti1 [root@tahe root]# ls -ld /home/uti1 drwxr-x--x 26 uti1 groupe1 4096 mar 28 15:49 /home/uti1

La commande chmod permet de changer les droits d'accs d'un fichier ou dossier. Seul root ou le propritaire du fichier ou dossier peut changer les droits d'accs de celui-ci. Il y a, nous l'avons vu trois groupes de droits : 1. les droits pour le propritaire du fichier ou dossier, reprsents par les trois premires permissions 2. les droits pour le groupe propritaire du fichier ou dossier, reprsents par les trois permissions suivantes 3. les droits des autres utilisateurs, reprsents par les trois dernires permissions Le 1er groupe est reprsent par la lettre u (user), le second par la lettre g (group), le troisime par la lettre o (others). Pour ajouter un droit D au propritaire, on crira chmod u+D. Pour lui enlever ce mme droit, on crira chmod u-D. On peut changer plusieurs droits en mme temps. On crit alors chmod u+/-D1,u+/-D2,... Pour donner les droits r et x au groupe propritaire (lettre g) et le droit x aux autres utilisateurs (lettre o), on crira donc chmod g+r,g+x,o+x :
[root@tahe root]# chmod g+r,g+x,o+x /home/uti1 [root@tahe root]# ls -ld /home/uti1 drwxr-x--x 26 uti1 groupe1 4096 mar 28 15:49 /home/uti1

On peut, de faon plus simple, utiliser [Konqueror] pour changer ces droits. Affichez pour cela les proprits du dossier /home/uti1 :

Linux RH8

46/193

L'utilisation de Konqueror n'est possible qu'en mode interactif. L'intrt des commandes Unix est qu'elles peuvent tre incluses dans un fichier batch. Maintenant, lancez une autre application [Konsole] et prenez l'identit de uti1 :
[root@tahe root]# su uti1 [uti1@tahe root]$ id uid=501(uti1) gid=501(groupe1) groupes=501(groupe1)

La commande su permet de changer d'identit. Ici c'est root qui change d'identit, aussi aucun mot de passe n'est demand. Sinon, un mot de passe aurait t demand. Lancez deux autres applications [Konsole] et connectez-vous successivement comme les utilisateurs uti2 et uti3. On se rappelle que uti1 et uti2 sont dans le mme groupe groupe1 alors que uti3 est dans le groupe groupe2 : Dans le terminal n 3 :
[root@tahe root]# su uti2 [uti2@tahe root]$ id uid=502(uti2) gid=501(groupe1) groupes=501(groupe1)

Dans le terminal n 4 :
[root@tahe root]# su uti3 [uti3@tahe root]$ id uid=503(uti3) gid=502(groupe2) groupes=502(groupe2)

On remarquera que dans le message d'attente du systme, le nom de l'utilisateur connect est indiqu. Cela vous permettra de savoir qui est l'utilisateur dans chaque fentre terminal. Les utilisateurs uti1, uti2, uti3 vont tenter d'afficher le contenu de /home/uti1 : Terminal uti1 :
[uti1@tahe root]$ ls -l /home/uti1 drwx-----x 3 uti1 groupe1 4096 drwx-----x 2 uti1 groupe1 4096 -rw------1 uti1 groupe1 342125 -rw------1 uti1 groupe1 342096 -rw------1 uti1 groupe1 342123 -rw------1 uti1 groupe1 342126 -rw------1 uti1 groupe1 4789869 mar mar mar mar mar mar mar 25 7 25 25 25 25 25 18:38 18:01 15:52 15:53 15:52 15:52 15:52 Desktop downloads gnome gnome.ui gtk signal sys

Terminal uti2 :
[uti2@tahe root]$ ls -l /home/uti1 drwx-----x 3 uti1 groupe1 4096 drwx-----x 2 uti1 groupe1 4096 -rw------1 uti1 groupe1 342125 -rw------1 uti1 groupe1 342096 -rw------1 uti1 groupe1 342123 -rw------1 uti1 groupe1 342126 -rw------1 uti1 groupe1 4789869 mar mar mar mar mar mar mar 25 7 25 25 25 25 25 18:38 18:01 15:52 15:53 15:52 15:52 15:52 Desktop downloads gnome gnome.ui gtk signal sys

Terminal uti3 :
[uti3@tahe root]$ ls -l /home/uti1 ls: /home/uti1: Permission non accorde

Linux RH8

47/193

Pour pouvoir lister le contenu de /home/uti1, il faut disposer du droit de lecture (r) sur ce dossier. Rappelons les droits d'accs du dossier :
[root@tahe root]# ls -ld /home/uti1/ drwxr-x--x 25 uti1 groupe1 4096 mar 25 18:39 /home/uti1/

L'utilisateur uti1 a le droit r en tant que propritaire. L'utilisateur uti2 l'a galement en tant que membre du groupe1 qui a le droit de lecture. L'utilisateur uti3 tombe dans les autres cas (3ime groupe de droits x) et n'a pas le droit de lecture. Ce qui explique qu'il n'a pas pu lister le contenu de /home/uti1. Maintenant ces droits montrent que le groupe propritaire groupe1 n'a pas de droit d'criture (w) sur /home/uti1. Il ne peut donc pas ajouter d'entres au dossier (un fichier ou un rpertoire). L'utilisateur uti1 a lui un droit d'criture. Vrifions ces deux points : Terminal uti1 :
[uti1@tahe root]$ mkdir /home/uti1/test1 [uti1@tahe root]$ ls -ld /home/uti1/test1 drwxr-xr-x 2 uti1 groupe1 4096 mar 28 15:46 /home/uti1/test1

Terminal uti2 :
[uti2@tahe root]$ mkdir /home/uti1/test2 mkdir: Ne peut crer le rpertoire `/home/uti1/test2'.: Permission non accorde

Tout se passe comme attendu. Terminons par le droit x. Crons un fichier dans /home/uti1 lisible par tous. Dans le terminal uti1 :
[uti1@tahe root]$ echo test >/home/uti1/fic1 [uti1@tahe root]$ ls -l /home/uti1/fic1 -rw-r--r-1 uti1 groupe1 [uti1@tahe root]$ more /home/uti1/fic1 test 5 mar 28 15:49 /home/uti1/fic1

Rendons le fichier fic1 lisible par tous :


[uti1@tahe root]$ chmod +r /home/uti1/fic1 [uti1@tahe root]$ ls -l /home/uti1/fic1 -rw-r--r-1 uti1 groupe1 5 mar 28 15:49 /home/uti1/fic1

Faisons lire ce fichier par uti2 et uti3 : Terminal uti2 :


[uti2@tahe root]$ more /home/uti1/fic1 test

Terminal uti3 :
[uti3@tahe root]$ more /home/uti1/fic1 test

L'utilisateur uti3 qui ne pouvait lister le contenu de /home/uti1 (absence du droit r sur /home/uti1) a pu lire le fichier fic1 pour deux raisons : 1. il a le droit d'entrer dans le dossier /home/uti1 (droit x sur /home/uti1) 2. il a le droit de lire fic1 (droit r sur fic1) Revenons dans le terminal uti1 pour enlever le droit x uti3 sur le dossier /home/uti1 :
[uti1@tahe root]$ chmod o-x /home/uti1 [uti1@tahe root]$ ls -ld /home/uti1 drwxr-x--26 uti1 groupe1 4096 mar 28 15:49 /home/uti1

Linux RH8

48/193

Dans le terminal uti3, essayons de nouveau d'afficher le contenu de fic1 :


[uti3@tahe root]$ more /home/uti1/fic1 /home/uti1/fic1: Permission non accorde

Maintenant que uti3 n'a plus le droit x, il ne peut plus entrer dans le dossier /home/uti1. Le raisonnement qui a t tenu pour le dossier /home/uti1 peut tre tendu un fichier, le droit x signifiant alors le droit d'excuter le fichier. Les manipulations de droits faites avec la commande Unix chmod peuvent tre faites avec Konqueror ce qui vite de se rappeler la syntaxe de la commande chmod. Pour terminer, rendons au dossier /home/uti1 ses droits initiaux dans le terminal uti1 :
[root@tahe root]# chmod u+r,u+w,u+x,g-r,g-w,g-x,o-r,o-w,o-x /home/uti1 [root@tahe root]# ls -ld /home/uti1 drwx-----26 uti1 groupe1 4096 mar 28 15:49 /home/uti1

De ces manipulations, on se rappellera les deux points suivants :


l'utilisateur root peut tout faire un autre utilisateur peut gnralement tout faire dans son dossier personnel et rien dans ceux des autres utilisateurs.

Linux RH8

49/193

Guide dinstallation des services rseau sous Linux

Linux RH8

50/193

5
5.1

Introduction linstallation de services


Mode opratoire

L'interface KDE offre la possibilit de travailler avec quatre bureaux qui peuvent tre considrs comme quatre crans diffrents. Les quatre bureaux sont prsents dans la barre des tches :

Il suffit de cliquer sur l'un des quatre bureaux pour y travailler. Par dfaut, c'est le nureau n 1 qui est actif. Par dfaut toujours, les applications lances dans les diffrents bureaux sont affiches dans la barre des tches. Il est alors difficile de savoir quel bureau appartient telle tche. Nous allons configurer la barre des tches pour qu'elle n'affiche que les tches du bureau actif un moment donn. Cliquez droit sur la barre des tches. Un menu contextuel s'affiche. Choisissez l'option [Configuration] :

Faites en sorte que l'option [Afficher les fentres de tous les bureaux] soit dsactive comme ci-dessus. Validez cette configuration par [OK]. Dans la suite de ce document, nous utiliserons les bureaux suivants :

bureau 1, proprit de l'utilisateur uti1 bureau 2, proprit de l'utilisateur uti1 mais dlgu uti2 bureau 4, proprit de l'utilisateur uti1 mais dlgu root

Par la suite, nous les appellerons bureau1(uti1), bureau2(uti2) et bureau4(root) pour rappeler sous quelle identit vous devez oeuvrer dans ces bureaux. Dans chacun d'eux, au moins quatre outils seront utiliss :

une fentre terminal (Konsole) un diteur de texte (Kwrite) un explorateur de fichiers (Konqueror) un navigateur (Mozilla)

Tous ces outils devront tre proprit de l'utilisateur qui a t ddi le bureau. La procdure suivre est la suivante :

faites en sorte que la connexion KDE se fasse sous l'identit uti1. Si ce n'est pas le cas, quittez KDE avec l'option Menu KDE/Quitter l'environnement puis reconnectez-vous sous l'identit uti1/azerty. dans le bureau 1, lancez les quatre applications ncessaires aux tests. Vous pouvez le faire par les options de menu ou par des commandes Unix. Par exemple, ouvrez une fentre [Konsole] puis tapez les commandes suivantes :
[uti1@tahe uti1]$ id uid=500(uti1) gid=500(groupe1) groupes=500(groupe1) [uti1@tahe uti1]$ kwrite & [1] 10079 [uti1@tahe uti1]$ konqueror & [2] 10080 [uti1@tahe uti1]$ mozilla & [3] 10084

Linux RH8

51/193

La premire commande permet de vrifier votre identit. Les autres lancent successivement les application Kwrite, Konqueror et Mozilla en tches de fond (prsence du signe &).

dans le bureau 2, on fait de mme aprs avoir pris l'identit uti2 :


[uti1@tahe uti1]$ su - uti2 Password: [uti2@tahe uti2]$ id uid=502(uti2) gid=501(groupe1) groupes=501(groupe1) [uti2@tahe uti2]$ kwrite & [1] 10186 [uti2@tahe uti2]$ konqueror & [2] 10199 [uti2@tahe uti2]$ mozilla & [3] 10203

dans le bureau 4, on fait de mme aprs avoir pris l'identit root :


[uti1@tahe uti1]$ su Password: [root@tahe root]# id uid=0(root) gid=0(root) groupes=0(root),1(bin),2(daemon),3(sys),4(adm),6(disk),10(wheel) [root@tahe root]# kwrite & [1] 10295 [root@tahe root]# konqueror & [2] 10296 [root@tahe root]# mozilla & [3] 10298

Dans toute la suite, on suppose que vous travaillez dans la configuration prcdente. Si vous utilisez une autre interface que KDE, remplacez les outils KDE prciss ci-dessus, par les outils quivalents de votre interface. L'essentiel des manipulations se fera dans le bureau 4 en tant que root. Parfois, il faudra aller dans les bureaux 1 ou 2 pour travailler en mode non super utilisateur.

5.2

Applications client-serveur dans le monde TCP-IP


Machine A Machine B

Considrons la communication entre deux machines distantes A et B :

Port PA
Rseau

Port PB

Lorsque une application AppA d'une machine A veut communiquer avec une application AppB d'une machine B de l'Internet, elle doit connatre plusieurs choses :

l'adresse IP ou le nom de la machine B le numro du port avec lequel travaille l'application AppB. En effet la machine B peut supporter de nombreuses applications qui travaillent sur l'Internet. Lorsqu'elle reoit des informations provenant du rseau, elle doit savoir 52/193

Linux RH8

quelle application sont destines ces informations. Les applications de la machine B ont accs au rseau via des guichets appels galement des ports de communication. Cette information est contenue dans le paquet reu par la machine B afin qu'il soit dlivr la bonne application. les protocoles de communication rseau compris par la machine B. Ici, il s'agit des protocoles TCP (couche OSI 4) IP (couche OSI 3). le protocole de dialogue accept par l'application AppB (couches 5 7). En effet, les machines A et B vont se "parler". Ce qu'elles vont dire va tre encapsul dans les protocoles TCP-IP. Nanmoins, lorsqu'au bout de la chane, l'application AppB va recevoir l'information envoye par l'applicaton AppA, il faut qu'elle soit capable de l'interprter. Ceci est analogue la situation o deux personnes A et B communiquent par tlphone : leur dialogue est transport par le tlphone. La parole va tre code sous forme de signaux par le tlphone A, transporte par des lignes tlphoniques, arriver au tlphone B pour y tre dcode. La personne B entend alors des paroles. C'est l qu'intervient la notion de protocole de dialogue : si A parle franais et que B ne comprend pas cette langue, A et B ne pourront dialoguer utilement. Aussi les deux applications communicantes doivent-elles tre d'accord sur le type de dialogue qu'elles vont adopter. Par exemple, le dialogue avec un service ftp n'est pas le mme qu'avec un service pop : ces deux services n'acceptent pas les mmes commandes. Elles ont un protocole de dialogue diffrent.

Souvent, la communication sur Internet est dissymtrique : la machine A initie une connexion pour demander un service la machine B : il prcise qu'il veut ouvrir une connexion avec le service SB1 de la machine B. Celle-ci accepte ou refuse. Si elle accepte, la machine A peut envoyer ses demandes au service SB1. Celles-ci doivent se conformer au protocole de dialogue compris par le service SB1. Un dialogue demande-rponse s'instaure ainsi entre la machine A qu'on appelle machine cliente et la machine B qu'on appelle machine serveur. L'un des deux partenaires fermera la connexion.

5.3

Le rseau priv tudiant

Vous installez Linux sur une machine qui appartient au rseau priv tudiant de lISTIA. Ce rseau priv a la particularit de ne pouvoir sortir directement sur lInternet. Toute machine de ce rseau doit, pour accder au rseau public de lInternet, passer par une machine particulire du rseau appele serveur Socks . Ce serveur sert deux choses : - il permet une machine du rseau tudiant daccder au rseau public de lInternet - il le fait moyennant une authentification de type login/password. Ainsi tout accs lInternet est authentifi : les administrateurs du rseau peuvent savoir qui fait quoi. Cest une mesure de scurit qui permet, lorsquune plainte est dpose pour une action dlictueuse sur Internet faite partir dun poste tudiant de luniversit dAngers de retrouver son auteur. Pour accder au serveur Socks, on dispose sous Windows dun client Socks. Cest lui qui est charg de lancer toutes les applications Internet afin quelles passent toutes par le serveur Socks et puissent ainsi fonctionner. Ici, nous n'utiliserons pas un tel client Socks. Nous utiliserons une autre machine passerelle qui relaie les protocoles HTTP (web) et FTP (transfert de fichiers). Les services rseau que vous installerez seront tests partir dun poste se trouvant sur le mme rseau priv. Il ny a donc pas besoin de sortir sur lInternet pour tester les services que vous installerez. Vous pouvez cependant avoir besoin de naviguer sur le web pour consulter des sources d'informations ou tlcharger des fichiers pour certaines installations. Pour cela, vous configurerez les applications Konqueror et Mozilla pour qu'elles passent par le proxy HTTP eproxy.istia.uang. Cette configuration a dj t explique dans le chapitre prcdent et le lecteur est invit s'y reporter. Avant de continuer, configurez correctement ces deux applications dans les bureaux 1, 2 et 4. A chaque fois, vrifiez que vous pouvez aller sur le web une URL quelconque.

5.4

Identifier une machine de l'internet

Lors de linstallation de votre serveur vous lui avez donn une adresse IP 172.20.81.X. Lors des tests vous pourrez dsigner votre serveur ou celui de vos voisins par son nom (XX.istia.uang) ou son adresse IP (172.20.81.X). Voyons comment rcuprer ces deux informations. Dans la fentre terminal du bureau 4, tapez la commande suivante :
[root@localhost root]# ifconfig ....

La commande ifconfig donne des informations sur la configuration rseau de la machine (faire man ifconfig). Notez cidessus l'adresse IP de votre poste de la forme 172.20.81.X. Pour connatre son nom, tapez maintenant la commande suivante : Linux RH8 53/193

# host 172.20.81.X

Il faudra bien sr remplacer 172.20.81.X par la valeur de votre adresse IP. La commande host permet de connatre le nom de machines dont on passe l'adresse IP (faire man host). Notez ici, le nom XX.istia.uang de votre machine. Dornavant, pour dsigner votre machine, vous pourrez indiffremment utiliser son adresse IP ou son nom. Vous vous souvenez peut-tre qu linstallation vous avez dsign un serveur de noms ayant l'adresse IP 172.20.81.5. C'est la machine vishnou.istia.uang. Dans les fichiers de configuration de ce serveur de noms, sont associ des noms de machines des adresses IP. C'est le serveur vishnou.istia.uang qui a donn le renseignement que la commande host demandait. Vous pouvez obtenir plus directement le nom de votre machine avec la commande hostname :
[root@tahe root]# hostname tahe.istia.uang

Vous utiliserez le nom localhost ou ladresse IP 127.0.0.1 chaque fois que vous aurez besoin de dsigner votre propre machine.

5.5

Les fichiers de configuration rseau du poste Linux

Lors de l'installation de votre machine Linux, vous avez donn quelques indications pour sa configuration rseau. Rappelons-les :
Configuration du rseau

adresse IP : 172.20.81.X Masque rseau : 255.255.0.0 Passerelle par dfaut : 172.20.0.254 Serveur de noms primaire : 172.20.81.5 ---------------// adresse IP : 172.20.81.X Le chapitre des gnralits vous a montr que toute machine de l'internet avait une adresse unique appele adresse IP. Votre machine fera partie du rseau tudant de l'ISTIA 172.20.81. Masque rseau : 255.255.0.0 Supposons que votre machine veuille communiquer avec la machine d'adresse IP I1.I2.I3.I4. Pour savoir si cette adresse fait partie du mme rseau qu'elle, votre machine va faire un "ET logique" de cette adresse avec le masque rseau : I1.I2.I3.I4 & 255.255.0.0. Sans entrer dans les dtails, le rsultat de cette opration sera I1.I2.0.0. Votre machine va faire de mme avec sa propre adresse IP : 172.20.81.X & 255.255.0.0 ce qui va donner 172.20.0.0. Si on a I1.I2.0.0=172.20.0.0 donc I1=172 et I2=20, alors la machine destinatrice est sur le mme rseau que la machine mettrice. Les donnes lui seront alors directement envoyes. Si on a I1.I2.0.0<>172.20.0.0 alors la machine destinatrice n'est pas sur le mme rseau que la machine mettrice. Les donnes seront alors envoyes la passerelle (gateway) qui relie le rseau 172.20 l'internet. Passerelle par dfaut : 172.20.0.254 L'adresse IP de la passerelle dont on vient de parler. Serveur de noms primaire : 172.20.81.5 L'adresse IP du serveur de noms que votre machine pourra interroger. Rappelons que le serveur de noms fait la correspondance adresse IP <--> nom de machine dans les deux sens. Celui-ci est sur le rseau tudiant.

Comment faire si vous vous apercevez que les renseignements que vous avez donns taient incorrects ? Ces renseignements ont t enregistrs dans divers fichiers texte o vous pouvez les retrouver et les modifier. Dans une fentre terminal du bureau 4, tapez les commandes suivantes :
# more /etc/resolv.conf

# more /etc/sysconfig/network

// contient l'IP du serveur de noms utilis par votre machine // contient le nom de votre machine 54/193

Linux RH8

# more /etc/sysconfig/network-scripts/ifcfg-eth0

// contient l'adresse IP de votre machine

Si vous modifiez l'une des valeurs de ces fichiers, il faut redmarrer la machine pour que cette nouvelle configuration rseau soit prise en compte.

5.6

Les services installer

Pour chaque service seront fournis le nom du service, les fichiers de configuration crer ou modifier, la mise en route du service et les moyens de le tester. Nous ferons chaque fois une configurations minimale. Pour des informations complmentaires et pour une optimisation des services, des sources d'informations vous seront conseilles. Les services sont prsents sous forme de fiches. Il est conseill de les installer dans lordre suivant :

Les services de connexion distance (telnet, ssh). Les services de courrier (envoi et relve). Le service de transfert de fichiers. Le service World Wide Web. Le service Samba. Le service des Quotas. La scurisation des services TCP-IP par le service tcpd.

Rappel : pour linstallation de chaque service il est ncessaire dtre root et donc d'oprer dans le bureau 4.

5.7

Les tests des services installs


Tests du service partir dune fentre terminal locale au serveur Soit S le service install sur votre serveur et C un client local de ce service, local voulant dire prsent sur votre serveur. Ainsi le service telnetd et son client telnet, le service ftpd et son client ftp. Alors le service S peut en gnral tre test par la commande : C localhost. Ainsi, le service telnetd peut tre test par la commande telnet localhost et le service ftpd par la commande ftp localhost.

Lorsquun service a t install sur votre serveur, il faudra le tester. Il y a plusieurs mthodes possibles :

Tests partir d'un client graphique local au serveur Ici on teste le service S avec un client graphique sous KDE et spcifique au service S. Ainsi nous utiliserons l'application Mozilla pour envoyer et lire du courrier.

Tests du service partir dun terminal Unix distant Soit S le service install sur votre serveur et C un client Unix distant. Ce client atteindra votre service en gnral par la commande : C nom_de_votre_serveur ou C adresseIP_de_votre_serveur. On est dans le mme cas que le cas 1 o localhost est remplac par le nom de la machine distante abritant le service tester.

Tests partir d'un client graphique Unix distant On retombe dans le cas 2, si ce n'est que le client KDE est sur une machine distante.

Tests du service partir dun client Windows C'est le cas 4, si ce n'est que le client graphique fonctionne sous Windows.

Dans la pratique, on proposera un ou plusieurs de ces tests. Vous pourrez ne faire que certains d'entre-eux ds que les premiers tests montreront clairement que le service que vous avez install fonctionne correctement.

Linux RH8

55/193

5.8

Les fichiers de logs

Un fichier de logs est un fichier texte dans lequel un programme crit des informations permettant ladministrateur de suivre son bon fonctionnement. Il y a des fichiers de logs derreurs. Cest le cas du fichier /var/log/messages dans lequel les principaux services Unix crivent leurs messages derreurs. On en trouve galement dans le fichier /var/log/secure. Aprs avoir lanc un service et avant mme de le tester partir dun poste client vous pouvez vrifier ces deux fichiers en faisant : $ tail /var/log/messages ou tail /var/log/secure La commande tail (queue en anglais) affiche les 10 dernires lignes dun fichier. On peut modifier ce point : $ tail 50 /var/log/messages affichera les 50 dernires lignes de /var/log/messages. Celles-ci vont dfiler sur votre cran de 25 lignes et vous ne verrez que les 25 dernires. Utilisez alors la commande : $ tail 50 /var/log/messages | more qui provoquera un affichage des 50 lignes, page par page. Tapez [q] pour stopper la commande more. Enfin, $ tail f /var/log/messages permet de suivre les volutions du ficher /var/log/messages en temps rel. C'est dire que les lignes qui sont ajoutes au fichier sont visualises automatiquement par la commande. On a alors intrt consacrer une fentre terminal rien que pour cette commande. Dans le bureau 4 (root), lancez une nouvelle fentre Terminal et tapez la commande suivante :
[uti1@localhost uti1]$ su Password: [root@localhost root]# tail -f /var/log/messages Mar 30 11:02:29 localhost syslogd 1.4.1: restart. mar 30 11:07:43 localhost su(pam_unix)[1788]: session opened for user root by uti1(uid=500)

Cette fentre ne vous servira qu' cela. Elle vous permettra souvent d'obtenir des informations lorsque l'un de vos services ne fonctionnera pas.

5.9

Les dmons

Dans le vocabulaire Unix, on entend souvent parler de dmons (daemons). Le mot anglais daemon, qui est en fait un sigle, a t francis en dmon. Un dmon est un programme qui travaille en tche de fond. Il n'est pas li une console, et est donc un peu invisible (on le voit quand mme avec la commande ps). Ce programme fait un certain travail. Les dmons sont souvent les programmes qui assurent les services rseau de la machine, mais ils peuvent servir n'importe quelle autre tche. Par exemple, crond est un dmon qui lance automatiquement certains services certaines heures, la sauvegarde journalire des donnes utilisateur, par exemple.

5.9.1

Quelques dmons

Tout service est fourni par un programme spcialis (le dmon) et est accessible via un programme client. Sous Linux, le programme client du service telnetd s'appelle telnet. Ne faites pas de confusion entre les deux programmes telnetd et telnet. Sous Unix, les services s'appellent souvent Sd (d=daemon) et les clients associs S. Voici quelques exemples :

Linux RH8

56/193

Nom du Service
telnet ftp news finger Ssh ...

Programme serveur associ


telnetd ftpd innd fingerd sshd

Programme client associ


telnet ftp inn finger ssh

5.9.2

Le super dmon rseau xinetd

Une machine Unix peut fournir de nombreux services. (WWW, FTP, DNS, Mail, telnet, etc...). Il en existe des dizaines. Lancer sur un serveur, tous les dmons correspondant aux services possibles sur cette machine peut tre coteux en occupation mmoire, surtout lorsque l'on sait que cette machine n'a offrir ces services que de temps en temps. C'est pour cela qu'existe le super dmon xinetd. Ce dmon prend en charge certains (pas tous) des services que cette machine peut offrir, mais ne fait qu'couter les ports de ces services. Lorsqu'une requte arrive sur un de ces ports, le super dmon active le dmon capable de rendre le service demand. Tous les services rseaux sont dcrits dans les fichiers /etc/services. Visualisez le contenu du fichier /etc/services par la commande suivante (bureau 4 terminal - root) :
... echo discard discard systat systat daytime daytime qotd qotd .... 7/udp 9/tcp 9/udp 11/tcp 11/udp 13/tcp 13/udp 17/tcp 17/udp

sink null sink null users users quote quote

La ligne
echo 7/udp

signifie qu'un service appel echo opre sur le port n 7 avec le protocole udp. Le fichier /etc/services n'est qu'un fichier de dclaration des services pouvant tres lancs par le super dmon rseau. Ce n'est pas pour autant que ces services sont rellement activs.

5.9.3

Configuration du super dmon xinetd

Le super dmon rseau standard sur les Unix est inetd. La configuration de inetd (notamment, les dmons lancer en sous main) est dans le fichier /etc/inetd.conf. Dans les versions rcentes de Linux Redhat, le dmon inetd a t remplac par le dmon xinetd qui amne une meilleure scurit. Il est configur l'aide du fichier /etc/xinetd.conf :
[root@localhost root]# more /etc/xinetd.conf # # Simple configuration file for xinetd # # Some defaults, and include /etc/xinetd.d/ defaults {

instances log_type log_on_success log_on_failure cps

= = = = =

60 SYSLOG authpriv HOST PID HOST 25 30

Linux RH8

57/193

includedir /etc/xinetd.d

Nous ne nous tendrons pas sur la signification des paramtres ci-dessus. Elle peut tre obtenue par man xinetd.conf. On remarque que la dernire ligne inclut le dossier /etc/xinetd.d. Visualisons le contenu de celui-ci :
[root@localhost -rw-r--r-1 -rw-r--r-1 -rw-r--r-1 .... -rw-r--r-1 -rw-r--r-1 -rw-r--r-1 -rw-r--r-1 -rw-r--r-1 -rw-r--r-1 -rw-r--r-1 -rw-r--r-1 .... root]# ls -la /etc/xinetd.d/ root root 297 ao 15 root root 317 ao 15 root root 297 ao 15 root root root root root root root root root root root root root root root root 370 365 453 356 335 361 378 431 2002 chargen 2002 chargen-udp 2002 daytime

sep 1 2002 imap sep 1 2002 imaps sep 1 2002 ipop2 mar 8 14:14 ipop3 sep 1 2002 pop3s jun 24 2002 rexec jun 24 2002 rlogin jun 24 2002 rsh

On y trouve des fichiers qui portent le nom de services dclars dans /etc/services. Examinons le contenu de l'un d'entreeux, le fichier telnet :
[root@localhost root]# more /etc/xinetd.d/telnet # default: on # description: The telnet server serves telnet sessions; it uses \ # unencrypted username/password pairs for authentication. service telnet { flags = REUSE socket_type = stream wait = no user = root server = /usr/sbin/in.telnetd log_on_failure += USERID disable = yes }

Ce fichier dcrit le mode de fonctionnement du dmon telnet, service qui rpond aux demandes de connexion distantes. Notons les points suivants dans la configuration prcdente :

user=root : root sera le propritaire du dmon telnet lorsqu'il aura t lanc server=/usr/sbin/in.telnetd : le nom du programme qui rend le service telnet disable=yes : le dmon telnet est inhib. Si un client demande le service telnet, le dmon xinetd rpondra qu'il n'est pas disponible.

Vrifions ce dernier point. Un client pour le dmon telnetd est le programme telnet (faire man telnet). Sa syntaxe la plus simple est telnet machine pour se connecter machine. Connectons-nous notre propre machine appele localhost :
[root@localhost root]# telnet localhost Trying 127.0.0.1... telnet: connect to address 127.0.0.1: Connection refused

Dtaillons ce qui s'est pass. Le dmon telnet est dclar dans le fichier /etc/services :
[root@localhost root]# grep -i telnet /etc/services telnet 23/tcp telnet 23/udp ....

On voit que le service telnet travaille sur le port 23 avec le protocole udp ou tcp. La commande
[root@localhost root]# telnet localhost

tente de crer une connexion au port 23 de la machine localhost. C'est le super dmon xinetd qui coute les demandes arrivant sur tous les ports dclars dans /etc/services. Il rpond donc la demande qui arrive sur le port 23. Il voit qu'il s'agit d'une demande pour le service telnet et consulte alors le fichier /etc/xinetd.d/telnet. L, il voit que le service est dsactiv (disable=yes). Il refuse donc la connexion. Avec l'diteur kwrite, mettez disable=no dans le fichier /etc/xinetd.d/telnet puis vrifiez : Linux RH8 58/193

[root@localhost root]# more /etc/xinetd.d/telnet # default: on # description: The telnet server serves telnet sessions; it uses \ # unencrypted username/password pairs for authentication. service telnet { flags = REUSE socket_type = stream wait = no user = root server = /usr/sbin/in.telnetd log_on_failure += USERID disable = no }

De nouveau, essayez d'utiliser le client telnet :


[root@localhost root]# telnet localhost Trying 127.0.0.1... telnet: connect to address 127.0.0.1: Connection refused

Rien n'a chang. Pourquoi ? Parce que le dmon xinetd lit ses fichiers de configuration au dmarrage du serveur. Il ne les relit plus ensuite moins qu'on ne le force le faire. Ceci peut tre obtenu de diverses faons notamment en relanant le service :
[root@localhost root]# /etc/rc.d/init.d/xinetd restart Arrt de xinetd : Dmarrage de xinetd : [ [ OK OK ] ]

Dans le dossier /etc/rc.d/init.d (faire ls -l /etc/rc.d/init.d), on trouve des scripts permettant de lancer (start), arrter (stop) ou relancer (restart) des services. xinetd ayant t relanc, essayons de nouveau le client telnet :
[root@localhost root]# telnet localhost Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. Red Hat Linux release 8.0 (Psyche) Kernel 2.4.18-14 on an i686 login:

Ici, on voit que le service telnet est devenu accessible.

5.9.4

Conclusion

On se rappellera donc que si un service est dclar dans /etc/services mais que son fichier de configuration est absent de /etc/xinetd.d ou prsent mais dsactiv, alors il n'est pas activable par xinetd. C'est une amlioration vis vis du fonctionnement du super-serveur inetd o tous les services possibles taient systmatiquement prsents dans le fichier /etc/inetd.conf et donc activables, ceci l'insu des administrateurs nophytes qui ne matrisaient pas bien leur systme. Il y avait l un problme de scurit, car plus il y a de services actifs sur une machine plus il y a une chance de trouver un trou de scurit sur l'un d'eux.

Linux RH8

59/193

6
6.1

Les services de connexion distance telnet et ssh


Fonction

Le service telnet est le service qui permet un utilisateur d'avoir accs une machine Unix distante en mode terminal. Il est assur par un dmon appel telnetd. Le client associ s'appelle telnet. Le service ssh a la mme fonction que le service telnet. La seule diffrence est qu'il chiffre les communications. Il est assur par le dmon sshd. Le client associ s'appelle ssh. Il est recommand d'utiliser le client ssh en place et lieu du client telnet. Le service telnet est dsormais inhib par dfaut dans les versions rccentes de Linux Redhat.

6.2

Installation du service telnet

Le service telnet est dj install mais dsactiv comme nous l'avons vu dans l'tude du dmon xinetd. Pour activer le service, il nous a fallu

modifier le fichier de configuration /etc/xinetd.d/telnet relancer le dmon xinetd

Rappelons le contenu du fichier de configuration /etc/xinetd.d/telnet


[root@localhost uti1]# more /etc/xinetd.d/telnet # default: on # description: The telnet server serves telnet sessions; it uses \ # unencrypted username/password pairs for authentication. service telnet { flags = REUSE socket_type = stream wait = no user = root server = /usr/sbin/in.telnetd log_on_failure += USERID disable = no }

Le dmon xinetd a t relanc par la commande :


[root@localhost uti1]# /etc/rc.d/init.d/xinetd restart Arrt de xinetd : Dmarrage de xinetd :

[ [

OK OK

] ]

6.3

Test 1 du service telnet

Nous utilisons le programme client telnet pour tester le service telnetd. La syntaxe d'appel de telnet est la suivante : telnet machine [port] avec
machine

nom ou adresse IP de la machine sur laquelle rside le service telnetd contacter ou un service obissant au protocole telnet. La machine localhost dsigne la machine locale. port sur lequel opre le service demand (23 pour telnetd - port utilis par dfaut si le port n'est pas prcis)

port

On teste d'abord le service telnet de notre machine. Mettez vous dans le bureau 1(uti1) et dans la fentre terminal connectezvous localhost sous l'identit uti1/azerty : Linux RH8 60/193

[uti1@localhost uti1]$ telnet localhost Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. Red Hat Linux release 8.0 (Psyche) Kernel 2.4.18-14 on an i686 login: uti1 Password: Last login: Sun Mar 30 09:57:57 on :0 [uti1@localhost uti1]$ id uid=500(uti1) gid=500(groupe1) groupes=500(groupe1)

Vous tes connect votre propre machine sous l'identit uti1. Vous avez tabli une nouvelle session de travail sur votre serveur Linux. Vous pouvez taper les commandes habituelles (essayez). Vous quittez la session avec la commande [exit] qui vous ramne la session de travail prcdente. Vous obtenez alors l'affichage suivant :
Connection closed by foreign host. [uti1@localhost uti1]$

6.4

Test 2 du service telnet

Testons maintenant le service telnetd d'une autre machine. Demandez un autre groupe les informations suivantes : nom de leur serveur linux (X.istia.uang) nom d'un de leurs utilisateurs avec le mot de passe associ (user, passwd) Connectez-vous maintenant leur serveur :
# telnet X.istia.uang

Si la connexion russit, cela signifie deux choses : le nom de la machine a t reconnu. C'est le serveur de noms qui a fourni son adresse IP. le service telnetd de la machine contacte est oprationnel. Donnez le login/password demand. Vrifiez que vous pouvez travailler. Quittez la session par la commande exit.

6.5

Installation du service ssh

Ssh/sshd sont dja installs et prts fonctionner. SSH ayant t conu ds le dpart avec la scurit en ligne de mire, il est possible de le configurer de nombreuses faons. Il est malheureusement impossible de dtailler ici toutes ses possibilits. Le lecteur, s'il est intress aura coeur de lire la documentation (man sshd pour le dmon, man ssh pour le client). Le service ssh est dclar dans le fichier /etc/services (bureau 4 root fentre terminal) :
[root@localhost root]# grep -i ssh /etc/services ssh 22/tcp # SSH Remote Login Protocol ssh 22/udp # SSH Remote Login Protocol

Si on regarde dans le dossier /etc/xinetd.d, on ne trouve cependant aucun dossier son nom :
[root@localhost total 92 -rw-r--r-1 -rw-r--r-1 -rw-r--r-1 ... -rw-r--r-1 -rw-r--r-1 root]# ls -l /etc/xinetd.d root root root root root root root root root root 297 ao 15 317 ao 15 297 ao 15 2002 chargen 2002 chargen-udp 2002 daytime

317 ao 15 2002 time-udp 275 mar 8 17:17 vsftpd

Il se trouve que si ssh est bien dclar dans le fichier /etc/services, il n'est cependant pas lanc par le super dmon xinetd. Il est lanc ds le dmarrage du serveur comme le montre la commande suivante qui cherche parmi les processus (ps) une ligne qui aurait le texte ssh dedans (grep) :

Linux RH8

61/193

[root@localhost root]# ps aux | grep -i ssh root 535 0.0 0.4 3276 1156 ? uti1 790 0.0 0.3 2916 864 ?

S S

09:57 09:57

0:00 /usr/sbin/sshd 0:00 /usr/bin/ssh-agen

On voit qu'un programme /usr/sbin/sshd est actif. C'est le dmon du service ssh. On constate ainsi que certains services sont dj actifs. Comme connatre ceux-ci ? Toujours dans le bureau 4(root), lancez l'application Menu KDE/Paramtres de systme/Services. Seul root a accs cette application. Comme vous travaillez sous l'identit uti1, le mot de passe de root (azerty) vous sera demand.

Cette application graphique vous montre une liste de services. Il y en a deux sortes :

ceux lancs par xinetd les autres

Les services lancs par xinetd (comme ci-dessus telnet) et qui sont cochs, sont des services actifs, c'est dire que dans leur fichier de configuration dans /etc/xinetd.d, on trouve la ligne disable=no. Ceux qui ne sont pas cochs ont dans leur fichier de configuration la ligne disable=yes. On peut activer ou dsactiver ces dmons lancs par xinetd en cochant/dcochant la case. Cela vite d'aller modifier les fichiers de configuration. Les services non lancs par xinetd (comme ci-dessus sshd) et qui sont cochs, sont des services lancs ds le dmarrage du serveur. Si on ne souhaitait pas qu'ils soient lancs ds le dmarrage, on dcocherait la case. En cliquant droit sur le nom du service, on peut lancer, arrter ou relancer le service. On pourra garder cette fentre ouverte dans le bureau 4 pour la suite des installations.

6.6

Test du service ssh

Dans une fentre terminal du bureau 1 (uti1), tapez les commandes suivantes :
[uti1@localhost uti1]$ ssh localhost The authenticity of host 'localhost (127.0.0.1)' can't be established. RSA key fingerprint is 77:0d:eb:e4:f9:64:30:13:d6:a9:a4:4d:e3:de:1c:bf. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added 'localhost' (RSA) to the list of known hosts. uti1@localhost's password: [uti1@localhost uti1]$ id uid=500(uti1) gid=500(groupe1) groupes=500(groupe1) [uti1@localhost uti1]$ pwd /home/uti1

On se connectera en tant que uti1/azerty. Les changes cient-serveur sont crypts et ncessitent l'installation de cls de cryptage. D'o un premier dialogue sur l'installation de ces cls. Ce dialogue ne se produit qu'une fois. Une fois la connexion tablie, on a une session terminal classique dont on sort avec la commande exit. Le client ssh permet de se connecter sous l'identit que l'on veut. Toujours dans la mme fentre, quittez la session que vous avez ouverte et reconnectez-vous en tant que uti2/azerty :
[uti1@localhost uti1]$ ssh -l uti2 localhost uti2@localhost's password: [uti2@localhost uti2]$ id uid=502(uti2) gid=100(users) groupes=100(users),502(groupe2) [uti2@localhost uti2]$ pwd /home/uti2

Linux RH8

62/193

7
7.1

Les services de courrier lectronique


Fonction

Le service SMTP (Simple Mail Transport Protocol) permet un utilisateur de votre machine denvoyer du courrier. Le service POP (Post Office Protocol) permet lui la relve de ce courrier.

7.2

Installation et configuration

Le service SMTP est dj install et pr-configur. Cest une chance car sa configuration est complexe. Il est lanc ds le dmarrage comme le montre la fentre des services (bureau 4) :

On peut le constater aussi en regardant la liste des processus actifs (ps) et en cherchant parmi ceux-ci le processus sendmail :
[root@localhost root]# ps aux | grep -i sendmail root 603 0.0 0.5 5040 1412 ? S smmsp 613 0.0 0.5 4856 1364 ? S 09:57 09:57 0:00 sendmail: accepti 0:00 sendmail: Queue r

Le service POP est lui aussi install mais pas forcment activ. Il est lanc par le super dmon xinetd. Dans la fentre des services (bureau 4), cochez la case ipop3 si ce n'est pas dj fait :

Sauvegardez la nouvelle configuration avec l'option Fichier/Mettre jour la liste des services. Constatez, dans une fentre terminal, que le fichier de configuration de xinetd pour le service ipop3 a la ligne disable=no :
[root@localhost root]# more /etc/xinetd.d/ipop3 # default: off # description: The POP3 service allows remote users to access their mail \ # using an POP3 client such as Netscape Communicator, mutt, \ # or fetchmail. service pop3 { disable = no socket_type = stream wait = no user = root server = /usr/sbin/ipop3d log_on_success += HOST DURATION log_on_failure += HOST }

7.3

Test 1

Pour tester les services SMTP et POP, nous pouvons dans un premier temps simplement tester leur prsence. Pour cela, nous pouvons utiliser le client telnet dj rencontr. La commande telnet machine port ouvre une connexion tcp avec le Linux RH8 63/193

service qui oeuvre sur le port port du serveur machine. Si la connexion peut tre ouverte, cela montre dj que le service est prsent. Dcouvrons sur quels ports officient les services smtp et pop. Ces renseignements sont donns dans le fichier /etc/services. Dans bureau4(root), fentre terminal, tapez les commandes suivantes :
[root@tahe root]# grep -i smtp /etc/services smtp 25/tcp mail smtp 25/udp mail [root@tahe root]# grep -i pop /etc/services ... pop3 110/tcp pop-3 ...

# POP version 3

Le service SMTP opre donc sur le port 25 et le service POP sur le port 110. Mettons-nous dans bureau1(uti1), dans une fentre terminal et tapons les commandes suivantes :
[uti1@tahe uti1]$ telnet localhost 25 Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. 220 tahe.istia.uang ESMTP Sendmail 8.12.5/8.12.5; Sun, 30 Mar 2003 15:51:05 +0200

Le service smtp a envoy un message montrant qu'une connexion avait t ouverte. Le service smtp est donc bien prsent. A partir de maintenant, nous pourrions dialoguer avec ce service. Il faut pour cela connatre les rgles de ce dialogue. Nous n'irons pas jusque l. Nous fermons la connexion en tapant la commande quit :
quit 221 2.0.0 tahe.istia.uang closing connection Connection closed by foreign host.

Faisons la mme chose pour le service POP, port 110 :


[uti1@tahe uti1]$ telnet localhost 110 Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. +OK POP3 tahe.istia.uang v2001.78rh server ready quit +OK Sayonara Connection closed by foreign host.

Le service POP est donc bien actif lui aussi.

7.4

Test 2

Nous allons maintenant utiliser l'utilitaire de ml Mozilla pour envoyer et recevoir des courriers. Pour cela nous utiliserons les bureaux 1 et 2 des utilisateurs uti1 et uti2. Allez dans bureau1(uti1) et lancez le navigateur Mozilla si ce n'est dj fait. Utilisez l'option Window/Mail & Newsgroups pour avoir accs l'utilitaire de gestion de courrier de Mozilla.

Prenez ci-dessus, l'option Edit/Mail & Newsgroups Accounts Settings pour configurer un compte de courrier. Choisissez l'option [Add Account]. Un assistant dmarre. Choisir [Email Account] puis dfinissez les premires caractristiques du compte :

Linux RH8

64/193

A la place de tahe.istia.uang, mettez le nom de votre machine X.istia.uang. Tout utilisateur U de la machine X.istia.uang a une adresse lectronique de la forme U@X.istia.uang. Ensuite dfinissez les caractristiques du serveur POP qui va stocker le courrier de l'utilisateur uti1 :

L'utilisateur uti1 va recevoir son courrier sur votre machine. Le serveur POP est donc votre machine. Utilisez le nom X.istia.uang de votre machine.

Ici, il faut mettre le login de l'utilisateur, donc ici uti1. L'cran suivant demande un nom pour le compte que vous venez de crer. Vous pouvez laisser celui propos par dfaut ou mettre autre chose.

Le dernier cran de l'assistant donne un rcapitulatif des caractristiques du compte :

Aprs validation, l'assistant prsente l'cran suivant :

Linux RH8

65/193

Nous revenons alors dans le gestionnaire de courrier :

Nous sommes maintenant prts pour un premier test. L'utilisateur uti1 va s'envoyer un ml lui-mme (service SMTP) et le lire (service POP). Prenez l'option Message/New Message et envoyez un message uti1@X.istia.uang o X.istia.uang est votre machine.

Une fois le message envoy, demandez lire le courrier reu par l'utilisateur uti1 en cliquant droit sur le nom du compte uti1@X.istia.uang et prenez l'option Get messages for account :

Linux RH8

66/193

Si tout s'est bien pass, vous devriez avoir un message dans la bote Inbox (cf ci-dessus). Cliquez sur la bote Inbox, le message reu apparat alors :

Nous retrouvons bien le message qui a t envoy, ce qui montre que les services smtp (envoi du courrier) et pop (relve du courrier) sont fonctionnels.

7.5

Test 3

Dans bureau2(uti2), lancez mozilla et configurez un compte courrier pour l'utilisateur uti2 de la mme faon que vous l'avez fait pour l'utilisateur uti1. On se rappellera que mozilla ne doit pas tre lanc directement partir du menu, mais partir d'une fentre terminal sous l'identit uti2 :
[uti1@tahe uti1]$ su - uti2 Password: [uti2@tahe uti2]$ mozilla & [1] 1688

Lorsque le compte de l'utilisateur uti2 a t configur :


revenez dans bureau1(uti1) et envoyez un ml uti2@X.istia.uang. revenez dans bureau2(uti2) et vrifiez qu'il a reu le ml envoy

7.6

Utilisation dalias

Si lutilisateur uti1 de votre machine X.istia.uang sappelle Jean Dupont, il serait agrable quon puisse lui crire ladresse jean.dupont@X.istia.uang plutt qu uti1@X.istia.uang. Cest possible. Tout utilisateur de votre machine peut avoir un ou plusieurs alias, ici jean.dupont pour lutilisateur uti1. La dfinition des alias se fait dans le fichier /etc/aliases.

Linux RH8

67/193

Dans bureau4(root), utilisez l'diteur kwrite pour diter le contenu du fichier /etc/aliases. L'diteur kwrite doit tre lanc partir de la fentre terminal sous l'identit root :
[uti1@tahe uti1]$ su - root Password: [root@tahe root]# kwrite & [1] 1762

Le contenu du fichier /etc/aliases ressemble ce qui suit :

Les lignes de ce fichier ont la forme alias:[tabulation]login. Crons donc la ligne suivante : jean.dupont: uti1 qui associe lalias jean.dupont lutilisateur uti1. On noubliera pas la tabulation sparant lalias du login.

On pourrait crer autant dalias que lon veut pour lutilisateur uti1 ou pour dautres utilisateurs en ajoutant dautres lignes. Sauvegardez le fichier. Le fichier /etc/aliases est en fait un fichier texte utilis pour gnrer la vritable base des alias utiliss par le service sendmail. Cette base dalias est gnre par la commande suivante (bureau4(root) terminal) :
[root@tahe root]# newaliases /etc/aliases: 65 aliases, longest 10 bytes, 651 bytes total

Une fois cette commande mise :

revenez dans bureau1(uti1) et avec mozilla envoyez un courrier jean.dupont@X.istia.uang

Linux RH8

68/193

relevez le courrier de uti1 et vrifiez qu'il a reu le courrier envoy jean.dupont

7.7

Grer le relayage de courrier

Votre serveur peut dsormais servir de serveur denvoi de courrier (smtp) pour les utilisateurs se trouvant sur votre machine. Il peut galement servir de serveur SMTP thoriquement pour nimporte qui sur lInternet. Par exemple quelquun utilisant un utilitaire de courrier Paris peut indiquer son logiciel que le serveur SMTP que celui-ci doit utiliser est Lyon. Lorsque lutilisateur envoie un message, l'utilitaire de courrier lenvoie en ralit au serveur SMTP qui lui a t dsign et cest ce serveur SMTP qui sera charg dacheminer le courrier son destinataire. On appelle cela du relayage de courrier : un serveur SMTP sert de relais des utilisateurs se trouvant ailleurs que sur le serveur lui-mme. Cela pose des problmes de scurit et les dernires versions du programme sendmail inhibent par dfaut le relayage de courrier. Ainsi faites le test suivant : Ouvrez une fentre terminal (peu importe le propritaire du terminal) et tapez les commandes suivantes :
[root@tahe uti1]# telnet localhost 25 Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. 220 tahe.istia.uang ESMTP Sendmail 8.12.8/8.12.8; Thu, 5 Jun 2003 17:20:46 +0200 quit 221 2.0.0 tahe.istia.uang closing connection Connection closed by foreign host.

Le code ci-dessus montre que le service smtp coute sur le port 25 de la machine localhost. Maintenant refaites la mme chose, en remplaant localhost par le nom internet de votre machine :
[root@tahe uti1]# hostname tahe.istia.uang [root@tahe uti1]# telnet tahe.istia.uang 25 Trying 172.19.81.121... telnet: connect to address 172.19.81.121: Connection refused

De faon assez tonnante, le service smtp ne semble plus prsent sur le port 25 de la machine si on donne celle-ci son nom internet plutt que localhost. Il faut comprendre que les services rseau coutent en gnral sur toutes les interfaces rseau prsentes sur la machine et de plus sur une interface particulire appele loopback d'adresse IP 127.0.0.1. On peut obtenir la liste des interfaces rseau actives avec la commande ifconfig :
[root@tahe uti1]# ifconfig eth0 Lien encap:Ethernet HWaddr 00:01:02:18:C5:43

Linux RH8

69/193

inet adr:172.19.81.121 Bcast:172.19.255.255 Masque:255.255.0.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:50876 errors:0 dropped:0 overruns:309 frame:0 TX packets:2187 errors:0 dropped:0 overruns:0 carrier:0 collisions:234 lg file transmission:100 RX bytes:6815391 (6.4 Mb) TX bytes:277712 (271.2 Kb) Interruption:10 Adresse de base:0xec00 lo Lien encap:Boucle locale inet adr:127.0.0.1 Masque:255.0.0.0 UP LOOPBACK RUNNING MTU:16436 Metric:1 RX packets:119 errors:0 dropped:0 overruns:0 frame:0 TX packets:119 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 lg file transmission:0 RX bytes:10954 (10.6 Kb) TX bytes:10954 (10.6 Kb)

Les lignes ci-dessus prsentent les caractristiques de deux interfaces rseau :


lo (loopback) qui est l'interface de la machine vers elle-mme. Elle ne correspond pas physiquement une carte rseau. Grce cette interface, on peut utiliser des applications rseau locales sans carte rseau. eth0 (carte ethernet n 0) est l'interface correspondant une carte rseau ethernet.

Un service rseau coute habituellement sur toutes les interfaces affiches par la commande ifconfig. Ce n'est pas le cas du service smtp livr avec la RH8. Cette option est contrl par le fichier /etc/mail/sendmail.mc. Ce fichier permet de configurer le service sendmail. Le vritable fichier de configuration de sendmail est le fichier /etc/mail/sendmail.cf. Ce dernier est trs complexe. Le fichier sendmail.mc permet lui une configuration plus simple de sendmail. Un utilitaire permet de gnrer le fichier sendmail.cf partir du contenu du fichier sendmail.mc. Ceci nous est indiqu par les premires lignes du fichier sendmail.mc :
[root@tahe uti1]# more /etc/mail/sendmail.mc divert(-1)dnl dnl # dnl # This is the sendmail macro config file for m4. If you make changes to dnl # /etc/mail/sendmail.mc, you will need to regenerate the dnl # /etc/mail/sendmail.cf file by confirming that the sendmail-cf package is dnl # installed and then performing a dnl # dnl # make -C /etc/mail dnl #

On voit ci-dessus qu'on a besoin d'un paquetage appel sendmail-cf pour gnrer le fichier de configuration de sendmail. Le fichier sendmail.mc quoique technique reste cependant lisible. Lorsqu'on le parcourt, on dcouvre la squence suivante de lignes :
dnl # dnl # The following causes sendmail to only listen on the IPv4 loopback address dnl # 127.0.0.1 and not on any other network devices. Remove the loopback dnl # address restriction to accept email from the internet or intranet. dnl # DAEMON_OPTIONS(`Port=smtp,Addr=127.0.0.1, Name=MTA')dnl dnl #

Les lignes de commentaires indiquent clairement que la ligne DAEMON_OPTIONS force sendmail n'couter que l'adresse IP 127.0.0.1 c'est dire l'interface loopback. Ainsi sendmail n'coute pas la carte rseau. Comme suggr par les commentaires, nous mettons en commentaires la ligne DAEMON_OPTIONS :
dnl # dnl # DAEMON_OPTIONS(`Port=smtp,Addr=127.0.0.1, Name=MTA')dnl dnl #

Aprs avoir sauvegard le fichier sendmail.mc, vrifions la prsence du paquetage sendmail-cf :


[root@tahe uti1]# rpm -qa | grep -i sendmail sendmail-8.12.8-5.80 sendmail-cf-8.12.8-5.80

Ci-dessus, le paquetage est bien prsent mais bien souvent ce n'est pas le cas. Cela dpend du choix de paquetages fait lors de l'installation initiale. Nous dcrivons comment installer le paquetage :

prenez l'option de menu KDE/Paramtres de Systme/Paquetages :

Linux RH8

70/193

prendre l'option Dtails ci-dessus pour le [Serveur de courrier]

cochez comme ci-dessus le paquetage sendmail-cf et valider choisissez l'option [Mise jour] pour installer le ou les nouveaux paquetages.

Ceci fait, vrifiez la prsence du paquetage sendmail-cf :


[root@tahe uti1]# rpm -qa | grep -i sendmail-cf sendmail-cf-8.12.8-5.80

Maintenant nous sommes prts gnrer le nouveau fichier de configuration sendmail.cf. Nous le faisons comme il tait indiqu dans les commentaires du fichier sendmail.mc :
[root@tahe uti1]# make -C /etc/mail make: Entre dans le rpertoire `/etc/mail' make: Quitte le rpertoire `/etc/mail' [root@tahe uti1]# ls -l /etc/mail/sendmail* -rw-r--r-1 root root 57359 jun -rw-r--r-1 root root 57422 avr -rw-r--r-1 root root 5802 jun

5 17:58 /etc/mail/sendmail.cf 8 09:03 /etc/mail/sendmail.cf.bak 5 17:42 /etc/mail/sendmail.mc

Un nouveau fichier sendmail.cf a t cr, l'ancien ayant t renomm .bak. Maintenant, nous devons demander au service smtp de relire son fichier de configuration. Nous le faisons en relanant le service :
[root@tahe uti1]# /etc/rc.d/init.d/sendmail restart Arrt de sendmail : Arrt de sm-client : Dmarrage de sendmail : Dmarrage de sm-client : [ [ [ [ OK OK OK OK ] ] ] ]

Maintenant essayons l'opration qui avait chou avec la configuration prcdente :


[root@tahe uti1]# telnet tahe.istia.uang 25 Trying 172.19.81.121... Connected to tahe.istia.uang. Escape character is '^]'. 220 tahe.istia.uang ESMTP Sendmail 8.12.8/8.12.8; Thu, 5 Jun 2003 18:03:54 +0200 quit 221 2.0.0 tahe.istia.uang closing connection Connection closed by foreign host.

Cette fois-ci, on voit que le service smtp a bien rpondu sur le port 25 de l'interface eth0 d'IP 172.19.81.121 ce qu'il ne faisait pas auparavant. Nous sommes maintenant prts faire du relayage de courrier. Pour mettre en vidence cette notion de relayage, faites le test suivant : Dans le bureau 1 de uti1, configurez l'utilitaire de courrier de la faon suivante :

prenez l'option Edit/Mail & Newsgroups Accounts Settings

Linux RH8

71/193

prenez ci-dessus l'option Outgoing Server (SMTP)

o Y.istia.uang est une autre machine du rseau (demandez un autre groupe, le nom de sa machine).

essayez maintenant denvoyer un courrier uti1@X.istia.uang comme vous savez le faire. Cela devrait chouer : pour envoyer votre courrier, Mozilla va s'adresser la machine Y.istia.uang en lui demandant de relayer ce courrier. Par dfaut, la machine Y.istia.uang est configure pour refuser tout relayage de courrier et devrait donc refuser. Mozilla devrait signaler l'erreur.

Le relayage est configur dans le fichier /etc/mail/access.


[root@tahe root]# more /etc/mail/access # Check the /usr/share/doc/sendmail/README.cf file for a description # of the format of this file. (search for access_db in that file) # The /usr/share/doc/sendmail/README.cf is part of the sendmail-doc # package. # # by default we allow relaying from localhost... tahe.istia.uang RELAY localhost RELAY 127.0.0.1 RELAY

On y trouve des lignes de la forme : domaine1 domaine2 ... RELAY RELAY

Chaque ligne indique pour quel domaine de linternet, votre serveur accepte de faire du relayage de courrier. Dans lexemple ci-dessus, seule les demandes provenant de la machine locale (localhost) ou de la machine (tahe.istia.uang) sont acceptes. Pour tendre le relayage toute demande provenant du domaine istia.uang, ajoutez la ligne suivante au fichier /etc/mail/access (bureau4(root) kwrite) : istia.uang RELAY

Linux RH8

72/193

[root@tahe root]# more /etc/mail/access tahe.istia.uang RELAY localhost RELAY 127.0.0.1 RELAY istia.uang RELAY

Relancer le service smtp afin quil prenne en compte sa nouvelle configuration :


[root@tahe root]# /etc/rc.d/init.d/sendmail restart Arrt de sendmail : Arrt de sm-client : Dmarrage de sendmail : Dmarrage de sm-client : [ [ [ [ OK OK OK OK ] ] ] ]

Maintenant demandez un autre groupe Y de faire le test suivant partir de sa machine :


le groupe Y doit configurer le serveur SMTP d'un de ses utilisateurs pour que ce serveur soit votre machine X.istia.uang ceci fait, le groupe Y utilise Mozilla ainsi configur pour envoyer un ml l'utilisateur uti1 de votre machine (uti1@X.istia.uang) vrifiez que votre utilisateur uti1 a bien reu le ml envoy

Si cela a fonctionn, c'est que votre machine X.istia.uang a accept de relayer une demande d'envoi de courrier d'une autre machine Y.istia.uang. Ainsi l'ISTIA, la machine istia.univ-angers.fr a t configure pour relayer toute demande d'envoi de courrier provenant d'une machine X@istia.univ-angers.fr mais n'accepte aucune autre machine.

7.8

Crer un rpondeur

Lorsqu'on s'absente de son travail et qu'on n'a plus accs son ml, on voudrait faire savoir tous ceux qui vont nous crire qu'on est absent afin qu'ils ne s'tonnent pas de notre silence. C'est possible en utilisant un programme qui joue le rle d'un rpondeur. Nous utiliserons ici un programme appel vacation. Il n'est pas dans la distribution RH8 aussi allons-nous le chercher sur Internet. Avec Konqueror, demandez l'URL fr2.rpmfind.net site o l'on trouve des paquetages pour diffrentes versions de linux :

Dans la zone de saisie, on tape vacation et on lance la recherche qui ramne les rsultats suivants :

Les fichiers contenant le mot cl src sont des fichiers source compiler. Les autres contiennent les binaires des excutables et les fichiers qui les accompagnent. Cliquons ici sur le lien vacation-1.2.7.rc1-1.i386.rpm :

Linux RH8

73/193

Konqueror dtecte que le fichier tlcharger est un paquetage rpm. Il demande alors si on veut simplement le tlcharger [Enregistrer sur disque] ou bien l'installer [Ouvrir]. Nous choisissons cette dernire option et le gestionnaire de paquetages va installer ce nouveau paquetage. On peut vrifier son installation lorsque tout est fini :
[root@tahe uti1]# rpm -qa | grep -i vacation vacation-1.2.7.rc1-1

On pourra faire un [man vacation] pour dcouvrir la faon d'utiliser ce programme :


vacation(1) NAME User Manuals vacation(1)

vacation reply to mail automatically

SYNOPSIS vacation [ I | i ] vacation [ j ] [ a alias ] [ tN ] [ r ] [ ? ...

] username

Mettez-vous dans bureau 1 pour crer un rpondeur uti1. Commenons par crer le texte de la rponse automatique :
[uti1@tahe uti1]$ export EDITOR=kwrite [uti1@tahe uti1]$ vacation

La 1re ligne fixe un diteur convivial pour crire le texte de la rponse automatique. Si ceci n'est pas fait, un diteur par dfaut est utilis, gnralement l'diteur vi. La seconde ligne lance le programme vacation qui va automatiquement lancer l'diteur. On tape alors le texte de la rponse :

Aprs avoir quitt l'diteur, le programme vacation cre et met jour divers fichiers. Le texte de la rponse automatique a t plac dans le fichier .vacation.msg du rpertoire de uti1 :
[uti1@tahe uti1]$ ls -l .vacation.msg -rw-r--r-1 uti1 groupe1 [uti1@tahe uti1]$ more .vacation.msg Subject: absence Bonjour, Je suis absent jusqu'au 5 juillet et ne peux rpondre votre ml. J'y rpondrai ds que possible. Cordialement, Serge Tah 160 jun 7 09:34 .vacation.msg

Le fichier .forward de l'utilisateur uti1 a t modifi ou cr :


[uti1@tahe uti1]$ ls -l .forward*

Linux RH8

74/193

-rw------1 uti1 groupe1 -rw------1 uti1 groupe1 [uti1@tahe uti1]$ more .forward \uti1, "|/usr/bin/vacation uti1"

33 jun 33 jun

7 09:35 .forward 7 09:35 .forward.old

L'ancien fichier .forward a t sauvegard dans .forward.old. La ligne place dans .forward redirige tout courrier reu par uti1 vers l'utilisateur uti1 (\uti1) et vers le programme /usr/bin/vacation (|/usr/bin/vacation uti1). Celui-ci va alors gnrer la rponse automatique. Testons. Nous nous plaons dans le bureau 2 de uti2 et celui-ci va envoyer un message uti1 :

On envoie le message. Ceci fait, on doit recevoir tout de suite la rponse automatique de uti1. Vrifions le courrier reu :

Si on met de ct le problme des caractres accentus, on peut voir que le rpondeur a bien fonctionn. Si maintenant uti2 envoie un second message uti1, il ne reoit plus la rponse automatique. Le programme vacation n'envoie pas deux fois le message du rpondeur la mme personne. Vrifions maintenant ce qu'a reu l'utilisateur uti1. Placez-vous dans le bureau 1 de uti1 et lancez mozilla pour lire le courrier de uti1 :

L'Utilisateur uti1 a bien reu les diffrents messages de uti2.

Linux RH8

75/193

Pour arrter le rpondeur, l'utilisateur uti1 doit supprimer le fichier .forward ou le remplacer par l'ancien (.forward.old). Lorsqu'il voudra remettre en route le rpondeur, il reprendra la procdure telle qu'elle a t dcrite prcdemment. On vitera de modifier le fichier .vacation.msg directement avec un diteur de texte sans passer par le programme vacation car celui-ci ne fait pas que grer le texte de la rponse. Il gre aussi une base de donnes .vacation.db dans laquelle il met les adresses auxquelles il a dj envoy la rponse automatique. Celles-ci ne reoivent alors pas le message une seconde fois. Il faut donc remettre ce fichier zro chaque nouvelle absence, ce que fait le programme vacation chaque fois qu'il est utilis.
[uti1@tahe uti1]$ ls -l .vac* -rw-r--r-1 uti1 groupe1 -rw-r--r-1 uti1 groupe1 -rw-r--r-1 uti1 groupe1 12312 jun 160 jun 160 jun 7 09:47 .vacation.db 7 09:34 .vacation.msg 7 09:35 .vacation.old

Linux RH8

76/193

8
8.1

Le transfert de fichiers
Fonction

Le service ftp de transfert de fichiers permet aux utilisateurs dautres machines davoir accs : leur rpertoire sils sont des utilisateurs enregistrs sur votre serveur : laccs est alors contrl par mot de passe des fichiers mis disposition du public dans une arborescence prcise sinon : lutilisateur se dclare anonymous et aucun mot de passe nest demand. On parle alors de ftp anonyme. Ce service est appel service FTP : File Transfer Protocol.

8.2

Installation et configuration

Comme le mail, le service ftp est configur automatiquement linstallation. Il est lanc par le super dmon xinetd et est inhib par dfaut. Il faut donc l'activer. Pour cela, dans le bureau 4 (root), on utilise le gestionnaire de services (Menu KDE/Paramtres de systme/Services). On coche alors si besoin est le service de transfert de fichiers appel ci-dessous vsftpd :

Ceci fait, on sauvegarde la configuration : Fichier/Mettre jour la liste des services. On peut avoir des informations sur le serveur vsftpd par la commande : man vsftpd. Le fonctionnement de ce service est contrl par le fichier de configuration /etc/vsftpd.conf :
[root@tahe root]# more /etc/vsftpd.conf # Example config file /etc/vsftpd.conf # # The default compiled in settings are very paranoid. This sample file # loosens things up a bit, to make the ftp daemon more usable. # # Allow anonymous FTP? anonymous_enable=YES # # Uncomment this to allow local users to log in. local_enable=YES # # Uncomment this to enable any form of FTP write command. write_enable=YES #......................

Nous acceptons pour l'instant tel quel ce fichier de configuration.

8.3

Test 1

Nous utilisons tout d'abord le service telnet pour vrifier la prsence du service ftp. Dans la fentre terminal de bureau4 (root) :
[root@tahe root]# grep -i ftp /etc/services ftp 21/tcp ftp 21/udp fsp fspd

On voit que le service ftp opre sur le port 21. Connectons-nous ce port :
[root@tahe root]# telnet localhost 21 Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. 220 ready, dude (vsFTPd 1.1.0: beat me, break me) quit

Linux RH8

77/193

221 Goodbye. Connection closed by foreign host.

La connexion au port 21 s'est faite correctement. Nous l'avons ferme avec la commande quit.

8.4

Test 2

Dans bureau4(root), lancez si besoin est, l'explorateur Konqueror :


[uti1@tahe uti1]$ su - root Password: [root@tahe root]# konqueror & [1] 2552

Affichez le contenu du rpertoire /var/ftp :

Le dossier pub est le dossier dans lequel ladministrateur du service ftp met les fichiers quil veut mettre la disposition de tous. Les dossiers bin, etc et lib sont l pour le bon fonctionnement du serveur ftp. Placez un fichier dans le rpertoire /var/ftp/pub (bureau4(root) terminal)
[root@tahe root]# cp /etc/group /var/ftp/pub/ [root@tahe root]# ls -l /var/ftp/pub/ total 4 -rw-r--r-1 root ftp 720 mar 30 18:00 group

Vrifiez avec konqueror :

Maintenant, passez dans le bureau1(uti1) et lancez Konqueror si besoin est. Connectez-vous l'URL ftp://localhost/pub :

On a bien accs au fichier group. Avec Konqueror, vous pouvez alors le copier quelque part dans le dossier de uti1 (/home/uti1). Faites-le.

8.5

Test 3

Demandez un autre groupe (Y) d'atteindre votre machine par ftp. Pour cela, le groupe Y doit avec Konqueror, demander l'URL ftp://X.istia.uang o X.istia.uang est le nom de votre machine. Linux RH8 78/193

8.6

Test 4

Dans bureau1(uti1), avec Konqueror demandez l'URL ftp://uti1@localhost. Un mot de passe vous est alors demand :

Tapez le mot de passe (azerty). Vous avez alors accs au rpertoire personnel de l'utilisateur uti1 :

8.7

Test 5

Faites la mme chose que prcdemment partir d'une autre machine linux du rseau.

8.8

Commentaires

Cette section montre plusieurs choses : le service FTP de votre machine fonctionnant, vous pouvez mettre des fichiers disposition du public (ftp anonyme). Il suffit de les placer dans le rpertoire /var/ftp/pub. En gnral, on crera diffrents rpertoires sous pub. Ces fichiers et rpertoires doivent tre proprit de lutilisateur root et du groupe ftp. Laccs ftp anonyme place le client dans le rpertoire /var/ftp qui contient 4 rpertoires : etc, bin, lib, pub. Aucun de ces rpertoires ne doit tre en criture pour tous, sinon nimporte qui pourra y stocker des fichiers. Mme si un utilisateur de votre machine na pas daccs telnet, il peut quand mme stocker des fichiers sur son rpertoire Unix en y faisant des transferts par ftp. Cela peut tre considr comme dsirable ou indsirable selon les cas : dsirable Si vous dsirez procurer vos utilisateurs un espace disque de stockage protg par leur mot de passe. Il vous faut alors contrler la taille de ces rpertoires pour viter la saturation du disque. Le service des Quotas permet dassurer ce contrle. indsirable Si vous navez pas despace disque offrir vos utilisateurs. Vous pouvez alors soit supprimer leur rpertoire soit le mettre en lecture seulement.

Linux RH8

79/193

9
9.1

Le service World Wide Web (WWW)


Fonction

Le service WWW est celui qui permet un serveur de publier des pages Web sur lInternet. Ces pages sont accessibles via des clients WWW. Ce service est galement appel service http (HyperText Transfer Protocol). Sur des postes Windows, on trouve couramment les clients Netscape ou Internet Explorer. Sur les postes Linux Redhat, Netscape est install par dfaut.

9.2

Installation

Pour visualiser des pages Web sur un site, il est ncessaire davoir un serveur HTTP. Celui utilis sur votre serveur Linux est un serveur appel APACHE (http://www.apache.org).

9.3

Le fichier de configuration httpd.conf

Le fichier de configuration du serveur web Apache est le fichier /etc/httpd/conf/httpd.conf. Sous l'identit root (bureau4), prenez un diteur de texte pour diter ce fichier :

Nous n'allons pas dtailler le rle des diffrentes sections de ce fichier. Nous allons nous contenter de faire une installation minimale. Si vous administrez un jour un service Web/Apache, vous devrez comprendre les subtilits de ce fichier. Cherchez une ligne de la forme ServerName xxxx. Avec l'diteur kwrite, vous pouvez procder ainsi :

CTRL-F pour lancer la 1re recherche ou Edition/Chercher. Cherchez le mot ServerName sans distinction majuscules/minuscules et lancez la recherche. Vous trouvez une 1re occurrence. faites F3 pour trouver les suivantes jusqu' trouver la suivante :

Linux RH8

80/193

La ligne ServerName xxx peut tre en commentaires (# en dbut de ligne). Vous pouvez la laisser en commentaires et ajouter la ligne dfinissant le nom de votre serveur web :
ServerName X.istia.uang:80

Mettez le nom de votre serveur. Cette ligne indique galement que le service web sera assur sur le port 80. Trouvez maintenant une ligne ayant le texte DocumentRoot :

La ligne DocumentRoot /var/www/html indique que les documents web dlivrs par le serveur sont placer sous /var/www/html. On en sait assez pour faire les premiers tests. Sauvegardez httpd.conf.

9.4

Dmarrage/Arrt du service HTTP

Maintenant, il nous faut lancer le serveur web Apache. On dispose pour lancer/arrter ce service de plusieurs scripts : Pour arrter : [/etc/rc.d/init.d/httpd stop] Pour dmarrer : [/etc/rc.d/init.d/httpd start] Pour faire les deux successivement : [/etc/rc.d/init.d/httpd restart] Nous avons vu aussi que nous disposions d'un gestionnaire de services permettant de lancer/arrter n'importe quel service. Dans bureau4(root), lanons ce service : Menu KDE/Paramtres de systme/Services. Le mot de passe de root est demand.

On voit que pour l'instant le service HTTP n'est pas lanc au dmarrage (case httpd non coche). On peut choisir de le lancer au dmarrage ou non. Dans la pratique c'est souvent le cas. Cochons donc la case et sauvegardons la nouvelle configuration par Fichier/Mettre jour la liste des services. Pour lancer le service, cliquez droit sur le service http et prenez l'option dmarrer. Le service HTTP va tre lanc et vous aurez un message indiquant comment s'est pass ce lancement.

Linux RH8

81/193

9.5

Test 1

Comme nous l'avons fait pour les prcsents services, dans la fentre terminal du bureau4(root) nous utilisons le client telnet :
[root@tahe root]# telnet localhost 80 Trying 127.0.0.1... Connected to localhost. Escape character is '^]'.

Nous avons eu une rponse. Le service HTTP opre bien sur le port 80. Nous pourrions commencer un dialogue avec ce service. Nous n'allons pas le faire. Pour clre la connexion, nous faisons ctrl-C et [Entre].

9.6

Test 2, navigateur sous linux

Dans bureau1(uti1), lancez Konqueror et demandez l'URL http://localhost. On rappelle que localhost dsigne la machine sur laquelle vous travaillez. Vous devez obtenir une page analogue la suivante (Inhibez Affichage/Arborescence si besoin est).

L'URL ci-dessus http://localhost n'est pas l'URL d'un document mais celle d'un dossier. Dans ce cas, le serveur Apache est configur pour afficher le document index.html du dossier. Avec Konqueror, affichez le contenu du dossier /var/www/html qui est la racine de l'arborescence du serveur web et qui correspond l'url http://localhost prcdente :

On voit qu'il n'y a pas de fichier index.html. Le serveur Apache est configur, dans ce cas d'erreur prcis, pour afficher une autre page, prsente dans /var/www/html/error/noindex.html :

Linux RH8

82/193

9.7

Test 3 - modifier la page d'entre du site

La page d'entre de votre site web est le fichier texte /var/www/html/index.html. Faisons les manipulations suivantes dans bureau4(root) pour le crer :

avec l'diteur kwrite, construisez un fichier index.html:

sauvegardez ce texte dans /var/www/html/index.html. demandez l'URL http://localhost avec Konqueror (peu importe le bureau)

Faites ce mme test avec le navigateur Mozilla maintenant. On retiendra que : le point dentre de votre site Web est le fichier /var/www/html/index.html. Cest partir de cette page que vous dvelopperez votre site Web. le gestionnaire de services vous permet d'arrter/relancer le service HTTP

9.8

Sites web personnels

Linux RH8

83/193

Votre serveur Web/Apache peut tre configur pour donner vos utilisateurs la possibilit de crer leurs propres pages Web et de les rendre accessibles toute personne prsente sur lInternet. Pour accder aux pages cres par lutilisateur de login uti1 de votre serveur X.istia.uang, il faut utiliser lURL : http://X.istia.uang/~uti1 La page relle associe cette URL dpend de la configuration du serveur Apache. Ce point est contrl par la ligne UserDir ... du fichier /etc/httpd/conf/httpd.conf. Si dans ce fichier, on crit cette ligne de la faon suivante : UserDir WWW LURL http://X.istia.uang/~uti1 sera associe au fichier ~uti1/WWW/index.html, o ~uti1 (syntaxe admise sous Unix) dsigne le rpertoire personnel de lutilisateur uti1. Vous pouvez vrifier les pages personnelles de la faon suivante (bureau4 - root) : dans le fichier /etc/httpd/conf/httpd.conf, recherchez (CTRL-F, F3) la squence suivante :

Modifiez cette squence comme indiqu ci-dessus :


la ligne UserDir disable doit tre mise en commentaires ajoutez la ligne UserDir WWW qui indique que chaque utilisateur pourra avoir un site web personnel dans le dossier WWW de son rpertoire personnel. arrtez puis relancez le serveur http avec le gestionnaire de services (clic droit/relancer sur service httpd)

Dans le bureau 1 de uti1, lancez Konqueror et Kwrite si besoin est.

avec Konqueror, crez un dossier WWW dans /home/uti1 :

donnez les droits suivants aux dossiers /home/uti1 et /home/uti1/WWW

Linux RH8

84/193

Quelle est la signification de ces droits ? Le serveur web est un processus qui s'excute sous l'identit d'un utilisateur appel apache. Ce processus va devoir pntrer dans le dossier /home/uti1/WWW. Il faut donc le droit x sur le dossier /home/uti1 et tous ses sous dossiers pour l'utilisateur appel apache. Une faon de lui donner ces droits est de donner le droit x au groupe 'tous'.

Avec kwrite, construisez le fichier /home/uti1/WWW/index.html suivant :

Avec Konqueror ou Mozilla demandez lURL http://localhost/~uti1

Demandez lURL http://X.istia.uang/~uti1 o X.istia.uang est le nom de votre machine

Rptez les diffrentes oprations prcdentes partir d'un autre poste de la salle, ou demandez un autre groupe d'interroger votre service web. De mme, vous, interrogez le service web d'un autre groupe

Linux RH8

85/193

10
10.1

Le service Samba
Fonction

Samba est un service permettant (entre autres choses) une machine Windows de voir une machine Linux comme un serveur Windows NT. La machine Linux peut alors servir de serveur de fichiers pour les machines Windows : celles-ci voient certains rpertoires de Linux comme des disques locaux Dos/Windows. Par ailleurs, Samba permet aux utilisateurs Windows de voir leur rpertoire Unix comme un disque rseau Dos/Windows. Cest un moyen pratique de fournir aux utilisateurs un rpertoire personnel contrl par mot de passe et accessible de faon transparente par une machine Dos/Win.

10.2

Installation et configuration

Samba a t normalement install en mme temps que Linux. Vous pouvez avoir de laide par [man samba] ou [man smbd] pour samba lui-mme et par [man smb.conf] pour son fichier de configuration. Samba est pilot par le fichier /etc/samba/smb.conf. Celui fourni par dfaut ne convient pas toujours. Il est galement assez touffu. Pour simplifier, nous ne lutiliserons pas. Comme il contient de nombreux commentaires instructifs, sauvegardez-le par les commandes suivantes :
[cd /etc/samba] [ls -l smb.conf] [more smb.conf] [mv smb.conf smb.conf.original]

// pour vrifier la prsence du fichier // pour vrifier le contenu du fichier // change le nom du fichier

Construire maintenant un nouveau fichier smb.conf avec le contenu suivant (en omettant les commentaires //) : [global] // configurations valides pour toutes les ressources workgroup = groupe.X.istia.uang // groupe de travail. Seuls les clients appartenant ce groupe ont accs au service SAMBA. // Remplacez X.istia.uang par le nom de votre serveur security=share // Votre serveur Samba sera un serveur de ressources partages (security=share)et non un serveur dautentification (security=user). allow hosts = 172.20.81. // seuls les clients appartenant au rseau 172.20.81.0 seront accepts // ne pas oublier le point derrire 81 log file = /var/log/samba.log // dsigne le fichier o samba placera ses logs max log size = 5000 // taille maxi du fichier de logs (en Kilo octets) mangle case=no case sensitive=no // Lorsquon met yes, il arrive que le service Samba ne fonctionne plus. short preserve case=yes preserve case=yes // la casse majuscules/minuscules des noms de fichiers sera prserve dans les changes DosWin/Unix. default case = lower // lorsque Samba est amen crer des fichiers pour lesquels il na pas dinformations sur la casse utiliser, il crira en minuscules le nom des fichiers. lock directory = /home/samba/locks // rpertoire contenant des fichiers de synchronisation de processus. Il faudra crer ce rpertoire. share modes = yes Linux RH8 86/193

create mode = 0755 // les fichiers & rpertoires seront crs avec les droit rwxr-xr-x browseable=no // les ressources offertes par Samba napparatront pas dans lexplorateur Windows des postes clients revalidate=yes // suivent les ressources partages offertes par Samba [private] comment = Logiciels privs public = no valid users = uti1 force group= admprivate writeable = yes path = /home/samba/private create mode = 0775 ; pour l'utilisation de logiciels [public] comment = Logiciels publics public = yes writeable=yes dessous path = /home/samba/public write list=@admsamba ; rpertoires personnels [homes] enregistrs sur leur rpertoire public=no writeable = yes // personnel // accs par mot de passe // en lecture/criture // nom de la ressource // commentaire // utilisateurs autoriss accder la ressource // accs par mot de passe // une fois connect, lutilisateur uti1 sera plac dans le groupe admprivate // ressource disponible en lecture/criture // rpertoire linux associ la ressource - il faudra le crer // fichiers & rpertoires crs dans la ressource avec les droits rwxrwxr-x

// accs public sans mot de passe pour un accs en lecture seule // en lecture/criture pour les utilisateurs de la write list ci// en lecture seule pour les autres // rpertoire linux associ la ressource - il faudra le crer // utilisateurs autoriss crire - ici les membres du groupe // admsamba // ressource permettant aux utilisateurs

// la machine Linux davoir accs, via Samba,

10.3

Commentaires

Le service SAMBA est trs utile si vous avez un rseau de machines Win95/98 ou NT. Avec votre serveur actuel, nous avons vu que chaque tudiant avait un rpertoire Unix auquel il pouvait accder par ftp. SAMBA permet de voir ce rpertoire Unix distant comme un disque local au PC windows sur lequel travaille ltudiant. Il peut alors grer son rpertoire Unix avec lexplorateur Windows ou le gestionnaire de fichiers. Cela apporte un confort important vis vis de ftp. Comme la taille de ce rpertoire Unix peut tre contrle par le service des Quotas que nous verrons ultrieurement, ladministrateur na pas dinquitude se faire sur la saturation du disque Unix. Par ailleurs, SAMBA permet de faire dune machine Linux, un serveur de fichiers linstar de serveurs tels que Microsoft NT ou Novell NETWARE. Les 3 services SAMBA installer sont les suivants : Private Cest un dossier daccs priv (public=no), rserv certains utilisateurs (valid users=). Le document vous propose de mettre uti1 comme utilisateur. Sachez que vous pouvez mettre autant dutilisateurs que vous voulez sous la forme user1, user2, ou mieux sous la forme @groupe1, @groupe2, o groupei dsigne un groupe dfini dans le fichier /etc/group. Vous donnez ainsi accs au service tous les membres dun groupe. Tous les utilisateurs autoriss utiliser le service devront donner leur mot de passe (Unix) pour passer. Ceci fait, ils pourront crire dans le dossier private (writeable=yes). Lorsquils criront dedans, ils criront en fait dans le rpertoire Unix dfini par (path=/home/samba/private). Il vous faudra bien sr crer ce rpertoire et vous assurer que les utilisateurs autoriss crire dans la ressource Samba [private] ont galement Linux RH8 87/193

les droits dcriture dans le rpertoire Unix associ /homesamba/private. Ce sont des droits dcriture diffrents quil faut positionner de faon spare. Le dossier private peut tre utilis pour y mettre des logiciels dont on na quune ou quelques licences. Seuls quelques utilisateurs sont autoriss utiliser ce dossier. Comme en fait, ce ne sont pas forcment les mmes utilisateurs pour chacun des logiciels, il faudrait crer un service par logiciel. On peut crer ainsi une liste dutilisateurs par logiciel. Il faudrait probablement mettre (writeable=no) pour viter que ces utilisateurs ncrasent le logiciel. Public Ce service est daccs public, cest dire sans mot de passe (public=yes), en criture seulement pour les gens du groupe admsamba (writeable=yes, write list=@admsamba). Il est associ au rpertoire Unix /home/samba/public (path=/home/samba/public). Ce rpertoire peut tre utilis pour mettre des logiciels accessibles en lecture pour tous. On met dans la write list les administrateurs qui doivent installer les logiciels dans cette ressource [public]. Homes Cest ce service qui permet aux utilisateurs de voir leur rpertoire Unix comme un disque local Dos/Windows. Ce service nest pas publi dans Voisinage Rseau : il faut donc connecter un lecteur rseau au service. Celui-ci est accd (dune faon diffrente des deux services prcdents) par \\X.istia.uang\login. SAMBA reconnat que login nest pas un service dclar dans son fichier de configuration (comme le sont les services private ou public prcdents). Il le dclare alors la vole avec la mme configuration que le service homes. Il demande alors un mot de passe (public=no) et associe le service au rpertoire de connexion de lutilisateur dfini par login. Ainsi, si on demande la connexion au service \\X.istia.uang\uti1 il faudra donner le mot de passe de lutilisateur uti1 de la machine X.istia.uang. Ceci fait, un dossier uti1 apparat dans le Voisinage rseau du poste Win95 ou NT. Ce dossier est en fait le rpertoire Unix de lutilisateur uti1. Dans notre exemple, il peut y crire (writeable=yes). Comme dit prcdemment, les services SAMBA apparaissent dans le Voisinage Rseau de tous les postes clients Microsoft. Il nest pas utile, qu chaque fois quun utilisateur se connecte son rpertoire Unix, que celuici soit publi dans le Voisinage Rseau de tous les postes Win95/98 du rseau. On empche ceci par loption browseable=no, option qui a t mise ici dans la section [global].

10.4

Prparatifs

Dans bureau4(root). Crez les rpertoires ncessaires aux tests :


[root@tahe root]# mkdir /home/samba [root@tahe root]# mkdir /home/samba/private [root@tahe root]# mkdir /home/samba/public [root@tahe root]# ls -l /home/samba/ total 8 drwxr-xr-x 2 root root drwxr-xr-x 2 root root

4096 mar 31 10:38 private 4096 mar 31 10:38 public

Copiez quelques fichiers dans ces dossiers :


[root@tahe root]# cp /etc/passwd /home/samba/private/ [root@tahe root]# ls -l /home/samba/private/ total 4 -rw-r--r-1 root root 1930 mar 31 10:39 passwd [root@tahe root]# cp /etc/group /home/samba/public/ [root@tahe root]# ls -l /home/samba/public/ total 4 -rw-r--r-1 root root 731 mar 31 10:40 group

Crez le groupe admsamba et mettez l'utilisateur adm1 dedans :


[root@tahe root]# groupadd admsamba

Linux RH8

88/193

[root@tahe root]# useradd -g admsamba adm1 [root@tahe root]# id adm1 uid=504(adm1) gid=503(admsamba) groupes=503(admsamba)

Fixez-lui un mot de passe (azerty par exemple):


[root@tahe root]# passwd adm1 Changing password for user adm1. New password: Retype new password: passwd: all authentication tokens updated successfully.

10.5

Dmarrage du service

Le service Samba est arrt par [/etc/rc.d/init.d/smb stop] et relanc par [/etc/rc.d/init.d/smb start]. On peut enchaner un arrt/dmarrage par [/etc/rc.d/init.d/smb restart]. relancez samba pour quil relise son nouveau fichier de configuration smb.conf vrifiez quil a t lanc par [ps aux | grep smb]
[root@tahe root]# /etc/rc.d/init.d/smb restart Fermeture des services SMB : Fermeture des services NMB : Dmarrage des services SMB : Dmarrage des services NMB : [root@tahe root]# ps aux | grep -i smb root 3443 0.0 0.7 4920 1792 ? S root 3451 0.0 0.2 3372 676 pts/4 S [ OK ] [ECHOUE] [ OK ] [ OK ] 10:50 10:50 0:00 smbd -D 0:00 grep -i smb

On peut aussi lancer/arrter le service samba avec le gestionnaire de services.

10.6

Utilisation du client smbclient

On peut tester le bon fonctionnement du serveur samba avec le client Unix smbclient. Pour voir la syntaxe de cette commande, tapez dans une fentre terminal : [smbclient] Un rsum de la syntaxe de la commande vous est alors prsent. Elle est de la forme smbclient service [options]. Un client samba rfrence le service S d'une machine M par la syntaxe \\M\S. Il se trouve que sous Unix, le caractre \ est interprt d'une faon particulire. Pour empcher cette interprtation particulire, il faut le doubler. C'est pourquoi on crit \\\\M\\S pour rfrencer le service S d'une machine M.

10.6.1

Connexion un service d'accs public

Connectons-nous au service public de notre serveur samba X.istia.uang (vous remplacerez X.istia.uang par le nom rel de votre machine). Dans le fichier smb.conf le service public est dclar par la ligne [public] Par dfaut le serveur samba prend le nom de la machine sur laquelle il se trouve. Pour se connecter au service [public] de la machine X.istia.uang, on tapera la commande analogue la suivante :
[root@tahe root]# smbclient \\\\tahe.istia.uang\\public -N Unknown parameter encountered: "revalidate" Ignoring unknown parameter "revalidate" Domain=[TAHE] OS=[Unix] Server=[Samba 2.2.5] smb: \>

L'option -N indique smbclient de ne pas demander de mot de passe. En effet, ici on se connecte au service [public] d'accs pour tous (option public=yes dans la dfinition du service).

Linux RH8

89/193

Si la commande ci-dessus choue c'est que le service samba a t probablement mal configur. Vrifiez alors le fichier /etc/samba/smb.conf. Celui-ci dclare que le fichier de logs est /var/log/samba.log. Vrifiez les messages enregistrs dans ce fichier par [tail /var/log/samba.log]. Ils dcrivent en gnral les erreurs rencontres. Si tout s'est bien pass, on est maintenant connect au service samba en mode interactif. Samba excute les commandes qu'on tape au clavier. Pour avoir la liste de ces commandes, faites :
smb: \> help ? cd du lcd md newer put rd setmode altname chmod exit link mget open pwd recurse symlink archive chown get lowercase mkdir print q rename tar blocksize del help ls more printmode queue rm tarmode cancel dir history mask mput prompt quit rmdir translate

Utilisons la commande ls qui nous permet de voir le contenu du dossier sur lequel on est positionn.
smb: \> ls . .. group D D 0 0 731 Mon Mar 31 10:40:34 2003 Mon Mar 31 10:45:39 2003 Mon Mar 31 10:40:34 2003

Quelle est la signification de ce rsultat ? Dans la dfinition du service [public], nous avons crit path = /home/samba/public. En nous connectant ce service, nous avons t positionns sur le dossier /home/samba/public. La commande ls nous montre alors le contenu de ce dossier. Nous y avions mis le fichier group. Essayons de crer un dossier avec la commande mkdir :
smb: \> mkdir test NT_STATUS_NETWORK_ACCESS_DENIED making remote directory \test

La commande a t refuse, parce que dans la description du service [public] on a mis writeable=no. Maintenant nous avons mis la ligne write list=@admsamba dans la description du service. Cela signifie que les utilisateurs membres du groupe admsamba pourront crire dans le dossier du service [public] (mme avec l'option writeable=no). Essayons :
[root@tahe root]# smbclient \\\\tahe.istia.uang\\public -U adm1 added interface ip=172.19.81.121 bcast=172.19.255.255 nmask=255.255.0.0 Password: Domain=[GROUPE1] OS=[Unix] Server=[Samba 2.2.7] smb: \> ls . .. group D D 0 0 740 Mon Mar 31 17:03:10 2003 Mon Mar 31 17:00:28 2003 Mon Mar 31 17:03:10 2003

63002 blocks of size 262144. 48618 blocks available smb: \> mkdir test NT_STATUS_NETWORK_ACCESS_DENIED making remote directory \test

Nous nous sommes connects samba en tant qu'utilisateur uti1 (-U uti1) qui fait partie du groupe admsamba. On s'attend donc ce qu'il ait un droit d'criture sur le dossier [public] et pourtant la cration du rpertoire test choue. Ici, il faut comprendre que le service samba n'est qu'un intermdiaire entre un client et le systme Unix auquel ce client veut accder. Se connecter Samba comme utilisateur uti1 entrane que samba va faire toutes les oprations demandes sur le systme Unix en tant qu'utilisateur samba. La demande de cration du rpertoire test fait que samba va essayer de crer le rpertoire /home/samba/public/test sous l'identit uti1. Regardons les droits d'accs de ce dossier :
[root@tahe root]# ls -ld /home/samba/public/ drwxr-xr-x 2 root root 4096 mar 31 17:03 /home/samba/public/

On voit que le dossier appartient l'utilisateur root et au groupe root. L'utilisateur uti1, avec les droits ci-dessus, a un droit de lecture(r) mais pas de droit d'criture (w). Ce qui explique pourquoi notre utilisateur uti1 a pu, grce au client smbclient, faire un ls (droit de lecture) mais pas un mkdir (droit d'criture). Il nous faut donner des droits d'criture au groupe admsamba. Procdons ainsi :

Linux RH8

90/193

[root@tahe root]# ls -ld /home/samba/public/ drwxr-xr-x 2 root root 4096 mar 31 17:03 /home/samba/public/ [root@tahe root]# chown root:admsamba /home/samba/public/ [root@tahe root]# ls -ld /home/samba/public/ drwxr-xr-x 2 root admsamba 4096 mar 31 17:03 /home/samba/public/ [root@tahe root]# chmod g+w /home/samba/public/ [root@tahe root]# ls -ld /home/samba/public/ drwxrwxr-x 2 root admsamba 4096 mar 31 17:03 /home/samba/public/

Cette fois-ci, tout membre du groupe admsamba a un droit d'criture sur le dossier /home/samba/public. Essayons de nouveau de nous connecter samba en tant qu'utilisateur uti1 :
[root@tahe root]# smbclient \\\\tahe.istia.uang\\public -U adm1 Password: Domain=[TAHE] OS=[Unix] Server=[Samba 2.2.5] smb: \> ls . .. group D D 0 0 731 Mon Mar 31 10:40:34 2003 Mon Mar 31 10:45:39 2003 Mon Mar 31 10:40:34 2003

63002 blocks of size 131072. 45697 blocks available smb: \> mkdir test smb: \> ls . .. group test

D D D

0 0 731 0

Mon Mon Mon Mon

Mar Mar Mar Mar

31 31 31 31

11:23:18 10:45:39 10:40:34 11:23:18

2003 2003 2003 2003

Cette fois-ci, on constate que l'utilisateur adm1 du groupe admsamba a pu crire dans le dossier [public]. Vrifions les propritaires du dossier test :
[root@tahe root]# ls -ld /home/samba/public/test/ drwxr-xr-x 2 adm1 admsamba 4096 avr 1 08:36 /home/samba/public/test/

Il est, comme attendu, proprit de uti1(admsamba).

10.6.2

Connexion un service d'accs priv

Connectons-nous maintenant au service [private] qui est d'accs priv (option public=no). Connectons-nous tout d'abord en tant qu'utilisateur uti2 :
[root@tahe root]# smbclient \\\\tahe.istia.uang\\private -U uti2 added interface ip=172.19.81.121 bcast=172.19.255.255 nmask=255.255.0.0 Password: Domain=[GROUPE1] OS=[Unix] Server=[Samba 2.2.7] tree connect failed: NT_STATUS_WRONG_PASSWORD [root@tahe root]# smbclient \\\\tahe.istia.uang\\public -U uti2 added interface ip=172.19.81.121 bcast=172.19.255.255 nmask=255.255.0.0 Password: Domain=[GROUPE1] OS=[Unix] Server=[Samba 2.2.7] smb: \> ls . .. group test D D D 0 0 740 0 Tue Mon Mon Tue Apr 1 08:36:44 2003 Mar 31 17:00:28 2003 Mar 31 17:03:10 2003 Apr 1 08:36:44 2003

Nous nous sommes tout d'abord connects au service [private]. La connexion a chou avec un message d'erreur qui laisse planer un doute sur la cause de l'chec. Nous nous connectons alors au service [public] dans les mmes conditions. La connexion se fait bien. La connexion au service [private] a chou pour les raisons suivantes :

le service est priv (public=no) 91/193

Linux RH8

uti2 ne fait pas partie des utilisateurs autoriss (valid users= uti1)

Essayons donc la connexion avec uti1 :


[root@tahe root]# smbclient \\\\tahe.istia.uang\\private -U uti1 added interface ip=172.19.81.121 bcast=172.19.255.255 nmask=255.255.0.0 Password: Domain=[GROUPE1] OS=[Unix] Server=[Samba 2.2.7] smb: \> ls . D 0 Mon Mar 31 17:03:03 2003 .. D 0 Mon Mar 31 17:00:28 2003 passwd 2040 Mon Mar 31 17:03:03 2003

Nous constatons que l'utilisateur uti1 a pu se connecter au service [private] et lister son contenu. Cela vient du fait, comme il a t dit, qu'uti1 est un utilisateur autoris du service (valid users= uti1). On trouve dans le dossier [private] le fichier passwd qu'on y avait mis. On a le droit d'crire dans le dossier (option writeable=yes). Essayons :
smb: \> mkdir test NT_STATUS_ACCESS_DENIED making remote directory \test

Pourquoi l'criture a-t-elle chou ? Pour la mme raison rencontre un peu plus haut. Une fois qu'uti1 est connect, samba va agir sur le systme de fichiers d'unix avec l'identit uti1(groupe1). Or regardons les droits du dossier /home/samba/private :
[root@tahe root]# ls -ld /home/samba/private/ drwxr-xr-x 2 root root 4096 mar 31 17:03 /home/samba/private/

On voit que l'utilisateur uti1(groupe1) n'a pas le droit d'criture sur ce dossier, ce qui explique l'chec prcdent. On pourrait tre tent de faire de groupe1 le groupe propritaire du dossier et de donner ce groupe le droit d'criture. Cela permettrait uti1 de pouvoir crire dans le dossier. Seulement si plus tard, on veut qu'un autre utilisateur crire dans le dossier, celui-ci ne fera pas forcment partie de groupe1. Il serait prfrable de regrouper tous ceux qui sont autoriss crire dans ce dossier dans un mme groupe. Appelons-le admprivate. Nous le crons et en faisons le propritaire du dossier private :
[root@tahe [root@tahe [root@tahe drwxr-xr-x [root@tahe [root@tahe drwxrwxr-x root]# groupadd admprivate root]# chown root:admprivate /home/samba/private/ root]# ls -ld /home/samba/private/ 2 root admprivate 4096 mar 31 17:03 /home/samba/private/ root]# chmod g+w /home/samba/private/ root]# ls -ld /home/samba/private/ 2 root admprivate 4096 mar 31 17:03 /home/samba/private/

Plutt que d'ajouter uti1 au groupe admprivate, nous avons ajout (cf fichier smb.conf utilis) aux proprits du service [private] la ligne force group=admprivate. Tout utilisateur qui sera connect au service se verra automatiquement affect au groupe admprivate pour ses oprations sur le systme de fichiers unix. Essayons :
[root@tahe root]# smbclient \\\\tahe.istia.uang\\private -U uti1 added interface ip=172.19.81.121 bcast=172.19.255.255 nmask=255.255.0.0 Password: Domain=[GROUPE1] OS=[Unix] Server=[Samba 2.2.7] smb: \> mkdir test smb: \> ls passwd test

2040 0

Mon Mar 31 17:03:03 2003 Tue Apr 1 09:07:19 2003

Vrifions les propritaires du dossier test :


[root@tahe root]# ls -ld /home/samba/private/test/ drwxr-xr-x 2 uti1 admprivate 4096 avr 1 09:07 /home/samba/private/test/

Il est, comme attendu, proprit de uti1(admprivate).

10.6.3

Connexion au rpertoire personnel

Le service [homes] permet un utilisateur distant de se connecter son rpertoire personnel sous son identit. Rappelons les caractristiques de ce service : Linux RH8 92/193

[homes] public=no writeable = yes

C'est un service priv. Le client est connect au rpertoire personnel de l'utilisateur dont il a fourni les login et mot de passe. Il y aura un droit d'criture. Essayons :
root@tahe root]# smbclient \\\\tahe.istia.uang\\homes -U uti1 added interface ip=172.19.81.121 bcast=172.19.255.255 nmask=255.255.0.0 Password: Domain=[GROUPE1] OS=[Unix] Server=[Samba 2.2.7] smb: \> ls . .. .kde .bash_logout ... gnome.ui ... D D DH H 0 0 0 24 342096 Tue Mon Mon Wed Apr 1 08:52:19 2003 Mar 31 16:49:17 2003 Aug 12 11:26:50 2002 Mar 5 15:17:32 2003

Mon Mar 31 15:04:04 2003

L'utilisateur uti1 a t connect son dossier. Il y a un droit d'criture :


smb: \> mkdir test smb: \> ls test test D 0 Tue Apr 1 09:14:11 2003

Vrifions les droits avec lesquels a t cr ce dossier :


[root@tahe root]# ls -ld /home/uti1/test drwxr-xr-x 2 uti1 groupe1 4096 avr 1 09:14 /home/uti1/test

Il est bien proprit de uti1(groupe1).

10.7

Utilisation d'un client windows

Le vritable intrt de Samba se trouve dans un environnement windows. Les services que Samba va publier vont pouvoir tre vus comme des disques locaux des machines windows. On est l proche du concept unix de montage de systme de fichiers. Les tests prcdents faits localement sur votre machine unix vous ont permis de dboguer votre configuration. Les tests qui suivent visent vrifier que vos services sont accessibles d'un poste windows. Pour cela, utilisez les postes windows de la salle o vous vous trouvez.

10.7.1

Voisinage rseau

Vrifiez tout dabord que votre serveur Samba est vu dans le Voisinage rseau dune machine Windows. Placez vous sur une machine Windows double-cliquez sur licne Voisinage rseau sur le bureau. Au bout dun moment, vous devez voir votre serveur (groupe.X.istia.uang) dans la liste des machines (vous avez crit workgroup=groupe.X.istia.uang).

Linux RH8

93/193

Ce nest cependant pas toujours le cas. On peut alors essayer [clic droit]Voisinage rseau/Rechercher un ordinateur Indiquez le nom X.istia.uang de votre serveur. Si votre service Samba fonctionne correctement, votre machine samba X.istia.uang doit alors tre trouve, sinon votre service Samba na pas t lanc ou il est mal configur. Double-cliquez sur licne de votre serveur : un dossier vide apparat. Ceci parce quon a mis dans les options gnrales du fichier smb.conf : browseable=no. Si on avait mis yes, on verrait dans le dossier les deux ressources cres : [private] et [public].

10.7.2

Accs la ressource [public] en lecture seule

Procdez comme suit : [clic droit] Voisinage Rseau /Connecter Lecteur

Dans le champ lecteur, slectionnez le lecteur K. Dans le champ chemin, tapez :


\\X.istia.uang\public

Le lecteur K est alors associ la ressource [public] de votre serveur Samba. Avec lexplorateur Windows, positionnez-vous sur le lecteur K. Vous devez y trouver les fichiers que vous y aviez placs. Essayez de crer un dossier sur le lecteur K [clic droit/Nouveau/Dossier] : cela doit chouer, car la ressource nest en criture que pour certains utilisateurs, ceux du groupe admsamba.

10.7.3

Accs aux rpertoires personnels sur linux, ressource [homes]

On va vrifier maintenant que tout utilisateur enregistr sur votre serveur peut voir son rpertoire Unix comme un disque local de son PC Windows. Procdez comme suit : [clic droit] Voisinage Rseau / Connecter Lecteur]

Linux RH8

94/193

Dans le champ chemin, tapez :


\\X.istia.uang\utilisateur

avec X.istia.uang utilisateur

le nom de votre serveur login dun utilisateur de votre serveur uti1 par exemple

Faire ensuite [OK]. Ensuite vous devez entrer le mot de passe de lutilisateur. Ceci fait, utilisez lexplorateur Windows pour vous positionner sur K. Vous devez voir le rpertoire linux de lutilisateur uti1. Vrifiez que vous pouvez y crer un nouveau dossier ou y copier des fichiers (vous avez mis writeable=yes pour le service homes).

10.7.4

Accs la ressource [private]

On essaie daccder au service private. Procdez comme suit : [clic droit] Voisinage Rseau / Connecter Lecteur]

Dans le champ [Chemin], mettez cette fois-ci :


\\X.istia.uang\private%uti1

avec X.istia.uang private uti1

le nom de votre serveur nom du service auquel vous voulez accder nom dutilisateur avec lequel vous voulez accder au service. On utilise ici uti1, car dans smb.conf, pour le service private, vous avez crit valid users=uti1, ce qui signifie que uti1 a accs au service private.

Faire [OK]. Un mot de passe est alors demand (vous avez crit public=no pour ce service). Donnez le mot de passe de lutilisateur uti1 de votre serveur. Vous devriez voir la ressource [private] avec dedans le fichier passwd que vous y aviez mis. Vrifiez que vous pouvez crer un nouveau dossier ou y copier des fichiers sur K (vous avez crit writeable=yes pour ce service dans smb.conf).

La connexion un service peut parfois tre droutante. Sous Win9x, on utilise licne Voisinage rseau et son option

Connecter un lecteur rseau pour se connecter au service \\X.istia.uang\private par exemple. Celui-ci rpond en demandant un mot de passe. Ce qui est surprenant cest quil ne demande pas qui on est (notre login Unix). On ne voit pas alors comment il fait pour associer le mot de passe quon lui donne au bon login. Il faut savoir que dans les rseaux Microsoft, chaque machine, appele client Microsoft, porte un nom appel nom Netbios. Celui-ci est indiqu dans longlet Identit du dossier Rseau du Panneau de configuration . Cest ce nom quutilise le service SAMBA pour identifier le client et il associe alors le mot de passe quon lui donne un login Unix identique ce nom de client Microsoft. Comme ces deux identits nont rien voir lune avec lautre, la connexion choue fatalement. Pour se connecter un service SAMBA avec un login Unix prcis, il faut demander (comme dans notre exemple) la connexion au service \\X.istia.uang\private%login. Le mot de passe demand est alors reli au login indiqu. Dans Linux RH8 95/193

notre exemple, puisque seul uti1 a un accs autoris au service private, il faut demander la connexion au service \\X.istia.uang\private%uti1 o X.istia.uang est le nom de votre serveur.

10.7.5

Accs la ressource [public] en lecture et criture

Nous avons vu que la ressource [public] avait une write list cest dire une liste de gens autoriss crire. Pour tester cette possibilit, on est oblig de passer dans une fentre DOS de Win95/98. Dans cette fentre tapez : [net /?] // vous obtenez des informations sur la commande net que lon va utiliser pour se connecter notre serveur Samba [net config] // vous donne la configuration de votre poste en tant que client SMB. [net use k: \\X.istia.uang\public] // connecte un lecteur K la ressource [public] en lecture seule. // vrifiez en essayant de copier des fichiers sur K. Ca devrait chouer. [net use k: \\ X.istia.uang \public%adm1 mdp1] // o mdp1 est le mot de passe de lutilisateur adm1 que vous avez cr. Cet utilisateur fait partie du groupe admsamba qui a un droit dcriture sur la ressource public Essayez d'crire dans le dossier k:\ en crant un rpertoire par exemple. Cela devrait donctionner.

10.7.6

Deux utilisateurs win9x particuliers

Dans la fentre DOS d'un poste win9x, faites [net config] et notez le nom de votre ordinateur (nomOrdinateur) et de lutilisateur (nomUtilisateur). Revenez sur votre machine Linux et crez deux nouveaux utilisateurs dans le fameux groupe admsamba qui a le droit dcriture dans la ressource [public]. Ces utilisateurs porteront les noms de votre ordinateur et de son utilisateur. [/usr/sbin/useradd -g admsamba nomOrdinateur] [/usr/sbin/useradd -g admsamba nomUtilisateur] Donnez des mots de passe chacun de ces utilisateurs (faites en sorte que motDePasse=azerty pour simplifier). Maintenant, revenez dans la fentre Dos prcdente et tapez la commande suivante : [net use k: \\machine\public mdpOrdinateur] // o mdpOrdinateur est le mot de passe de lutilisateur nomOrdinateur que vous venez de crer. // vrifiez que vous avez accs K en lecture et criture Refaire la mme chose avec la commande : [net use k: \\machine\public mdpUtilisateur] // o mdpUtilisateur est le mot de passe de lutilisateur nomUtilisateur que vous venez de crer. // vrifiez que vous avez accs K en lecture et criture Que se passe-t-il exactement ? Lorsquon ne prcise pas explicitement un utilisateur lors de la connexion une ressource Samba, Win9x essaie successivement le nom de lordinateur et le nom de lutilisateur de celui-ci avec le mot de passe que vous donnez sur la ligne de commande.

10.8

Conclusion

SAMBA est actuellement utilis lISTIA pour les raisons suivantes : La premire : on dsirait depuis longtemps fournir aux tudiants un rpertoire personnel, sur un serveur dont laccs soit contrl par mot de passe. Novell/Netware nous offrait cette possibilit, mais il tait lourd de crer deux sries de compte : une pour Novell/Netware et une autre pour Unix. Netware 4.1 noffre aucun outil pour crer massivement des comptes. On ne voulait pas, chaque anne, crer sur Netware plusieurs centaines de comptes un par un. On voulait utiliser Unix pour lequel on a des outils qui permettent de crer 96/193

Linux RH8

des dizaines dutilisateurs dun coup. SAMBA a t la solution, puisquil permet de voir le rpertoire Unix de ltudiant comme un disque Dos/Windows local dont laccs est contrl par le couple login/mot de passe de ltudiant. La seconde : avant SAMBA lutilisation dEudora par les tudiants tait problmatique. En effet, pour quEudora puisse tre utilis sur une machine en libre-service sans que les courriers des diffrents utilisateurs se mlangent, il existe diverses solutions : Une icne Eudora par utilisateur prcisant un rpertoire de travail diffrent chaque fois impossible mettre en uvre ici. Une seule icne Eudora avec A:\ comme rpertoire de travail. Cest une solution qui a le mrite de marcher mais qui est frustrante : les accs la disquette A sont dune lenteur dsesprante. Nous navions pas trouv de solution satisfaisante et on prconisait lutilisation dautres utilitaires de courrier, moins performants quEudora, mais qui ne ncessitaient quune icne sur le poste. Ces outils, contrairement Eudora, ne ramenaient pas le courrier sur le poste de consultation et donc prservaient la confidentialit du courrier. Avec SAMBA, on a rgl le problme de la faon suivante : on na quune icne Eudora avec comme rpertoire de travail K:\courrier. Ltudiant, avant dutiliser Eudora, doit assigner la lettre K son rpertoire Unix. Cela se fait avec loutil Voisinage rseau de Win95 ou WinNT et nest possible que grce SAMBA. Le rpertoire Unix de ltudiant est alors vu comme le disque local K. Ainsi lorsque Eudora est lanc, il descend le courrier de lutilisateur dans le rpertoire K :\courrier, c .a.d. dans le rpertoire Unix de ltudiant. La confidentialit de son courrier est ainsi assure et il le retrouve stock dans son rpertoire personnel. Le document vous propose une installation minimale. Cest nanmoins celle qui est luvre l'Istia et qui donne satisfaction. Vous pouvez dcouvrir SAMBA laide du manuel en ligne en faisant : man smb.

Linux RH8

97/193

11
11.1

Le service des quotas


Fonction

Le service des quotas est le service qui gre les espaces disque des diffrents utilisateurs locaux du serveur. Il permet de spcifier en Kilo-octets la taille maximale de lespace disque de chaque utilisateur. Lorsque la limite de stockage dun utilisateur est atteinte, l'utilisateur est oblig de librer de la place sil souhaite ajouter des donnes sur son compte.

11.2

Installation

Le service est dj prsent. Il faut simplement le configurer. On fera [man quota] pour dcouvrir le service.

11.3

Les fichiers de configuration

Pour linstallation du service il est ncessaire d'tre root (bureau 4). Il faut crer un fichier aquota.user sous la racine :
[root@tahe uti1]# >/aquota.user [root@tahe uti1]# ls -l /aquota.user -rw-r--r-1 root root 0 avr 1 17:31 /aquota.user

Editez le fichier /etc/fstab et pour la ligne correspondant la partition Linux ajouter la fin [defaults,usrquota] :
LABEL=/ none / /dev/pts ext3 devpts defaults,usrquota gid=5,mode=620 0 0 1 1

Les quotas seront ainsi mis en oeuvre sur la partition supportant la racine / de l'arborescence (/dev/hdb1 par exemple) automatiquement chaque nouveau boot de la machine. Vrifiez bien que vous navez pas fait derreur dans la modification de la ligne. Il arrive quun mauvais fichier /etc/fstab empche la machine de rebooter. Pour connatre la partition qui supporte l'arborescence du systme, utilisez la commande df :
[root@tahe uti1]# df Systme de fichiers 1K-blocs Utilis Disponible U.% Mont sur /dev/hdb2 16128668 2862712 12446644 19% / none 127724 0 127724 0% /dev/shm

Ci-dessus, on voit que l'arborescence du systme est sur la partition /dev/hdb2. Rebootez la machine pour que les quotas soient mis en oeuvre.

11.4

Collecte des espaces disques occups

Les quotas s'appliquent une partition. Le fichier /aquota.user cr prcdemment va mmoriser la taille des espaces disques mmoriss par les diffrents utilisateurs sur la partition /dev/hdb2. Nous pouvons forcer le systme vrifier les espaces disques occups avec la commande quotacheck :
[root@tahe uti1]# /sbin/quotacheck -m /dev/hdb2 [root@tahe uti1]# ls -l /aquota.user -rw-r--r-1 root root 9216 avr 1 17:53 /aquota.user

La commande quotacheck ci-dessus a collect l'information sur les espaces disque occups sur /dev/hdb2 et l'a mise dans le fichier /aquota.user. Remplacez /dev/hdb2 par la partition qui supporte l'arborescence de votre systme. Une fois cette information collecte, elle est disponible pour certaines commandes. La commande repquota permet de connatre les quotas disque des utilisateurs :
[root@tahe uti1]# /usr/sbin/repquota -a *** Report for user quotas on device /dev/hdb2 Block grace time: 7days; Inode grace time: 7days

Linux RH8

98/193

Block limits File limits User used soft hard grace used soft hard grace ---------------------------------------------------------------------root -- 2402124 0 0 118277 0 0 daemon -8 0 0 3 0 0 lp -256 0 0 23 0 0 nobody -- 244336 0 0 1717 0 0 ntp -12 0 0 4 0 0 vcsa -0 0 0 128 0 0

Ci-dessus, la commande repquota -a donne les espaces disque (en K octets) occups par les diffrents utilisateurs. Pour avoir celui occup par l'utilisateur uti1, on tapera :
[root@tahe uti1]# /usr/sbin/repquota -a | grep -i uti1 uti1 -9664 0 0 949 0 0

Maintenant, comment fixer les quotas disque des utilisateurs ? En utilisant la commande setquota :
[root@tahe uti1]# /usr/sbin/setquota -u uti2 1000 1000 0 0 /dev/hdb2

La commande ci-dessus fixe les quotas disque pour l'utilisateur uti2 (-u uti2). Les quatres valeurs qui suivent sont 1. quota en Koctets (1000) limite hard 2. limite soft en Koctets (1000). Est infrieure la limite hard. Lorsque la limite soft est dpasse, l'utilisateur reoit un avertissement qu'il s'approche de la limite hard. 3. nombre maxi de fichiers (0) limite hard 0 veut dire pas de limites 4. nombre maxi de fichiers (0) limite soft 0 veut dire pas de limites. Lorsque la limite soft est dpasse, l'utilisateur reoit un avertissement qu'il s'approche de la limite hard. On peut vrifier ensuite que les quotas de l'utilisateur uti2 ont t mis en place :
[root@tahe uti1]# /usr/sbin/repquota -a | grep -i uti2 uti2 -780 1000 1000 50 0 0

Faites le test suivant. Dans le bureau 2, ouvrez un terminal sous l'identit uti2 :
[uti1@tahe uti1]$ su - uti2 Password: [uti2@tahe uti2]$ id uid=502(uti2) gid=501(groupe1) groupes=501(groupe1) [uti2@tahe uti2]$ pwd /home/uti2 [uti2@tahe uti2]$ ls -l total 0

On voit ci-dessus que le rpertoire personnel de uti2 est vide. Copiez-y le fichier /boot/vmlinuz qui est le noyau du systme :
[uti2@tahe uti2]$ ls -l /boot/vmlinuz lrwxrwxrwx 1 root root 21 mar 21 09:44 /boot/vmlinuz -> vmlinuz-2.4.18-27.8.0 [uti2@tahe uti2]$ ls -l /boot/vmlinuz-2.4.18-27.8.0 -rw-r--r-1 root root 1112185 mar 14 13:04 /boot/vmlinuz-2.4.18-27.8.0

Ci-dessus, on voit que /boot/vmlinuz est un lien (sous windows on dirait un raccourci) sur un autre fichier qui fait un peu plus de 1 Mo. L'utilisateur uti2 ne devrait donc pas pouvoir le copier sous son rpertoire personnel puisque celui-ci a t limit 1 Mo. Essayons :
[uti2@tahe uti2]$ cp /boot/vmlinuz /home/uti2/vmlinuz1 ide0(3,66): write failed, user block limit reached. cp: criture de `/home/uti2/vmlinuz1': Dbordement du quota d'espace disque

Si cela n'a pas fonctionn, assurez-vous que les quotas sont actifs avec la commande quotaon :
[root@tahe uti1]# /sbin/quotaon /dev/hdb2

Linux RH8

99/193

La commande quotaon est automatiquement active au boot lorsque des partitions sont montes avec des quotas. Seulement ici, au boot le fichier /aquota.user n'tait pas encore construit. Il est alors possible que les quotas n'aient pas t activs.

11.5

Commentaires

Les services prcdents permettent de construire la configuration suivante : Chacun de vos utilisateurs aura un compte lui donnant laccs au courier lectronique Ce compte peut tre interdit daccs telnet si vous lui attribuez linterprteur /bin/false (cf commande Unix chsh), ce qui scurisera un peu votre systme. Lutilisateur pourra nammoins grer son courrier Le service ftp lui permettra de stocker des fichiers de faon sre dans son rpertoire personnel puisque laccs ftp est contrl par mot de passe. Il pourra galement dvelopper des pages Web dans son rpertoire personnel, pages qui seront accessibles depuis lInternet.

La possibilit pour un tudiant davoir un espace disque scuris sur le rseau est utile : Ils ont parfois des gros fichiers qui ne tiennent pas sur des disquettes. Avoir un rpertoire accessible de nimporte quel poste leur permet de travailler nimporte o, mme de lextrieur si vous avez autoris laccs ftp de lextrieur. Laccs par mot de passe scurise leur rpertoire.

Pour ladministrateur, se pose le problme de contrler la taille de ces rpertoires. Le risque que certains y mettent nimporte quoi trouv sur le rseau et notamment des jeux est grande. Le service des Quotas est l pour contrler la taille des rpertoires.

Linux RH8

100/193

12
12.1

Filtrer laccs aux services lancs par xinetd


Fonction

Contrler laccs aux services dclars dans les fichiers /etc/services et /etc/xinetd.conf. Nous avons vu qu'un certain nombre de services sont accessibles via le super-serveur xinetd. Ces services sont tout d'abord dans /etc/services. Parmi ceux-ci seuls ceux prsents dans le fichier /etc/xinetd.conf sont rellement utilisables. Revenons par exemple sur la dclaration du service pop : Dans le fichier /etc/services, nous avions la ligne
grep -i pop /etc/services pop3 110/tcp pop-3 # POP version 3

et dans le fichier /etc/xinetd.conf :


more /etc/xinetd.conf # # Simple configuration file for xinetd # # Some defaults, and include /etc/xinetd.d/ defaults { instances log_type log_on_success log_on_failure } includedir /etc/xinetd.d

= 60

= SYSLOG authpriv = HOST PID = HOST RECORD

C'est dans le rpertoire /etc/xinetd.d qu'on trouve la dclaration du service pop3 :


# cd /etc/xinetd.d # more ipop3 # default: off # description: The POP3 service allows remote users to access their mail \ # using an POP3 client such as Netscape Communicator, mutt, \ # or fetchmail. service pop3 { socket_type = stream wait = no user = root server = /usr/sbin/ipop3d log_on_success += USERID log_on_failure += USERID disable = no }

Ci-dessus, la proprit disable= yes/no permet d'inhiber ou non le service. Parfois, on a besoin d'un service (disable=no) mais on voudrait le restreindre certaines personnes ou certaines machines. Avant de lancer un service, le super-serveur xinetd : consulte le fichier /etc/hosts.allow pour voir si la machine cliente demandant le service est autorise le faire. Si oui, le service demand est lanc. Dans notre exemple ci-dessus, le programme /usr/sbin/ipop3d serait lanc. Si le client nest pas dans la liste des machines autorises utiliser le service, un second fichier est consult : /etc/hosts.deny. Ce fichier indique explicitement pour chaque service, les machines interdites. Si la machine cliente est trouve dans /etc/hosts.deny, le service lui est refus. Si la machine cliente na t trouve dans aucun des deux fichiers prcdents, elle est autorise utiliser le service qui est alors lanc.

Linux RH8

101/193

12.2

Les fichiers de configuration

Vous devez tre root pour modifier les fichiers /etc/hosts.allow et /etc/hosts.deny . Le fichier hosts.allow ([more /etc/hosts.allow]) pourrait ressembler ceci (cet exemple n'est pas recopier) :
# # hosts.allowThis file describes the names of the hosts which are # allowed to use the local INET services, as decided # by the '/usr/sbin/tcpd' server. # ipop3d:127.0.0.1 172.20.81. except 172.20.81.8 :spawn (/bin/echo `/bin/date` - service %d - machine %a %n accepte >>/var/log/%d.log.allowed)

Le fichier /etc/hosts.allow dcrit les services et leurs conditions d'accs. La syntaxe des lignes est la suivante : service : machines autorises [EXCEPT machines interdites] : commande Unix
service

nom du programme charg d'excuter le service. Les noms de ces programmes de trouvent dans les fichiers de configuration de xinetd dans le dossier /etc/xinetd.d.
[root@tahe root]# ls -l /etc/xinetd.d/ | grep -i pop -rw-r--r-1 root root 453 sep 1 2002 ipop2 -rw-r--r-1 root root 358 mar 7 17:22 ipop3 -rw-r--r-1 root root 335 sep 1 2002 pop3s [root@tahe root]# more /etc/xinetd.d/ipop3 # default: off # description: The POP3 service allows remote users to access their mail \ # using an POP3 client such as Netscape Communicator, mutt, \ # or fetchmail. service pop3 { socket_type = stream wait = no user = root server = /usr/sbin/ipop3d log_on_success += HOST DURATION log_on_failure += HOST disable = no }

Dans le dossier xinetd.d, il y a le fichier de configuration du service ipop3. Dans celui-ci, le paramtre server donne le chemin de l'excutable associ au service ipop3 : /usr/sbin/ipop3d. Dans les fichiers /etc/hosts.allow et /etc/hosts.deny, on ne garde que le nom de l'excutable (ipop3d) et non son chemin complet.
machine

adresse IP ou nom dune machine. Pour dsigner toutes les machines dun rseau, on utilise ladresse du rseau. Ci-dessus, le service ipop3d est autoris pour toutes les machines dadresse IP 172.20.81.X ainsi que la machine dadresse IP 127.0.0.1 qui est ladresse de la machine localhost , cest--dire le serveur luimme. On peut soustraire certaines machines du rseau de cette autorisation avec la clause EXCEPT. Ainsi dans lexemple ci-dessus, la machine 172.20.81.8 a t excluse de lautorisation. Si une machine cliente est autorise, une commande Unix peut alors tre excute : cest le champ3 de la ligne. Il est facultatif. Dans notre exemple, une commande est excute chaque fois quune machine est autorise utiliser le service ipop3d : spawn (/bin/echo `/bin/date` - Machine %h accepte >>/var/log/%d.log.allowed) Cette commande crit (/bin/echo) la date (/bin/date) et le nom de la machine accepte (%h) dans le fichier /var/log/in.telnetd.log.allowed. Dans la commande, %d est remplac par le nom du service (ici ipop3d) et %h par ladresse IP ou le nom de la machine cliente.

spawn

Le fichier hosts.deny ([more /etc/hosts.deny]) a une syntaxe identique : Linux RH8 102/193

# # # # # # # #

hosts.deny This file describes the names of the hosts which are *not* allowed to use the local INET services, as decided by the '/usr/sbin/tcpd' server. The portmap line is redundant, but it is left to remind you that the new secure portmap uses hosts.deny and hosts.allow. In particular you should know that NFS uses portmap!

all:all:spawn (/bin/echo `/bin/date` - service %d - machine %a %n refuse >>/var/log/%d.log.denied)

La ligne prcdente indique que pour tous les services (1er champ ALL), toutes les machines (second champ ALL) sont interdites. Le 3ime champ fait que le nom de toute machine refuse sera inscrit dans un fichier /var/log/service.log.denied, o service sera remplac par le nom rel du service. Rappellons le fonctionnement du filtre : La machine cliente est cherche dans hosts.allow. Si elle y est trouve le service demand est lanc. Sinon, elle est cherche dans hosts.deny. Si elle y est trouve, le service lui est refus. Si elle nest trouve nulle part, le service lui est accord.

On voit que la stratgie adopte dans les deux fichiers exemples hosts.allow et hosts.deny prcdents, est que toute machine non explicitement autorise utiliser un service dans hosts.allow, sera alors interdite de service par hosts.deny. De plus, on pourra retrouver sa trace dans un fichier /var/log/service.log.denied.

12.3

Dmarrage du service

La modification des fichiers hosts.allow et hosts.deny nentrane aucune rinitialisation : elle est immdiatement prise en compte.

12.4

Test 1

Le service vsftp est dfini dans le fichier /etc/xinetd.conf (en fait /etc/xinetd.d/vsftp) de la faon suivante :
# default: on # description: The wu-ftpd FTP server serves FTP connections. It uses \ # normal, unencrypted usernames and passwords for authentication. service ftp { socket_type = stream wait = no user = root server = /usr/sbin/vsftpd server_args = -l -a log_on_success += DURATION USERID log_on_failure += USERID nice = 10 }

Le nom du programme associ au service ftp est donc vsftpd. Il faut s'en souvenir car c'est ce nom qu'il faut utiliser dans les fichiers /etc/hosts.allow et /etc/hosts.deny. Crez le fichier /etc/hosts.deny suivant :
ALL: ALL :spawn (/bin/echo `/bin/date` - Service %d - Machine %a %n refusee >>/var/log/%d.log.denied)

Dans la ligne ci-dessus, on n'oubliera pas de mettre une marque de fin de ligne sinon elle serait mal interprte. Ici, tout couple (service/machine) rejet par les rgles du fichier /etc/hosts.allow se verra interdire laccs au service par les rgles du /etc/hosts.deny. Laissez le fichier /etc/hosts.allow vide. Cela signifie que maintenant tout service lanc par xinetd est inaccessible. Lancez dans une fentre terminal une session ftp :
[root@tahe root]# ftp localhost Connected to localhost (127.0.0.1). 421 Service not available, remote server has closed connection ftp>

Linux RH8

103/193

La connexion a bien t refuse. Vrifions le fichier de logs qui a du tre cr :


[root@tahe root]# ls -l /var/log/vsftpd.log.denied -rw-r--r-1 root root 97 avr 29 16:01 /var/log/vsftpd.log.denied [root@tahe root]# more /var/log/vsftpd.log.denied Tue Apr 29 16:01:53 CEST 2003 - Service vsftpd - Machine 127.0.0.1 localhost.localdomain refusee

Vous devez obtenir quelque chose d'analogue ci-dessus. Autorisez maintenant votre machine dans /etc/hosts.allow :
vsftpd:127.0.0.1:spawn (/bin/echo >>/var/log/%d.log.allowed) `/bin/date` service %d machine %a %n acceptee

Dans la ligne ci-dessus (il n'y en a pas deux), on n'oubliera pas de mettre une marque de fin de ligne sinon elle serait mal interprte. Refaites une session ftp locale :
[root@tahe root]# ftp localhost Connected to localhost (127.0.0.1). 220 ready, dude (vsFTPd 1.1.0: beat me, break me) Name (localhost:uti1): uti1 331 Please specify the password. Password: 230 Login successful. Have fun. Remote system type is UNIX. Using binary mode to transfer files. ftp>

Ici, la connexion est bien accepte. Vrifiez le fichier de logs qui a du tre cr :
[root@tahe root]# ls -l /var/log/vsftpd.log.allowed -rw-r--r-1 root root 97 avr 29 16:11 /var/log/vsftpd.log.allowed [root@tahe root]# more /var/log/vsftpd.log.allowed Tue Apr 29 16:11:30 CEST 2003 - service vsftpd - machine 127.0.0.1 localhost.localdomain acceptee

12.5

Test 3

Allez sur une autre machine et tentez de faire une session ftp sur votre serveur. Constatez que le service vous est refus. Allez sur votre serveur pour faire [more /var/log/vsftpd.log.denied] et constatez quon y trouve une ligne indiquant que telle machine a t refuse telle heure. Mettez maintenant dans /etc/hosts.allow la ligne suivante (ou analogue) :
vsftpd:127.0.0.1 172.20.81. except 172.20.81.8 :spawn (/bin/echo `/bin/date` - service %d - machine %a %n acceptee >>/var/log/%d.log.allowed)

Cette ligne donne accs au service vsftpd toutes les machines du rseau 172.20.81. (rseau tudiant) sauf la machine 172.20.81.8. Remplacez cette dernire par une machine de la salle o vous tes. Faites des tests.

12.6

Commentaires

Une bonne politique de scurisation est Tout ce qui nest pas autoris explicitement est interdit . Ce qui amne rduire le fichier /etc/hosts.deny la seule ligne :
ALL: ALL :spawn (/bin/echo >>/var/log/%d.log.denied) `/bin/date` Service %d Machine %a %n refusee

Cette ligne refuse tout accs aux services non accepts explicitement dans le fichier /etc/hosts.allow. Par ailleurs, les machines refuses sont enregistres dans un fichier de logs : /var/log/%d.log.denied o %d reprsente le nom du service demand par la machine refuse (in.telnetd, in.ftpd,). En tant quadministrateur systme, vous devez suivre rgulirement ces fichiers de logs afin de voir si des machines ne reviennent pas rgulirement frapper votre porte, auquel cas il faudrait les surveiller particulirement.

Linux RH8

104/193

Avec cette politique, vous devez explicitement dclarer les services dont vous autorisez laccs et qui vous lautorisez. Ceci se fait dans le fichier /etc/hosts.allow. Le service POP doit tre autoris pour tous. En effet, si vous avez des tudiants qui partent en stage, ils voudront en gnral continuer lire leur courrier depuis leur lieu de stage. Le service ftp peut galement tre considr comme utile aux tudiants en stage : cela leur permet de garder laccs leur rpertoire Unix et notamment leurs pages Web personnelles, de leur lieu de stage. On peut donc autoriser ce service pour tous mais a se discute. On se rappellera que seuls les services dclars dans /etc/services et /etc/xinetd.conf peuvent tre filtrs. Certains services tels SAMBA ne sont pas dclars dans /etc/services et ne peuvent donc tre filtrs. Samba peut ltre par des filtres dclars dans son fichier de configuration smb.conf.

Linux RH8

105/193

Complments systme

Linux RH8

106/193

13

Les systmes de fichiers

Les exemples qui suivent utilisent une partition de disques et une configuration machine qui ne sont pas ncessairement les vtres. Adaptez les exemples votre situation.

13.1

Les supports physiques des fichiers

Sur votre systme Linux, il existe diffrents disques sur lesquels peuvent tre stocks des fichiers. Ces priphriques portent un nom quil est utile de connatre. Voici les plus courants :
Priphrique partition

/dev/hda

Premier disque dur IDE /dev/hda1 Partition primaire 1 du disque /dev/hda /dev/hda2 Partition primaire 2 du disque /dev/hda Un disque peut avoir jusqu 4 partitions primaires. Une partition primaire peut ensuite tre divise en partitions logiques, la numrotation de celles-ci commenant alors 5 (/dev/hda5). Second disque dur IDE

/dev/hdb /dev/sda /dev/fd0 /dev/fd1 /dev/cdrom

/dev/hdbi Parition i du disque /dev/hdb Premier disque SCSI /dev/sdai Partition i du disque /dev/sda Premier lecteur de disquettes pas de partitionnement Second lecteur de disquettes pas de partitionnement Lecteur de CD pas de partitionnement

Il nest pas toujours facile de connatre les disques installs sur un PC. Vous pouvez vous aider du fichier /var /log/dmesg qui est un suivi de la phase de dmarrage du serveur Linux. Pendant cette phase, linux dtecte tous les priphriques prsents sur le PC. Affichons le contenu de ce fichier :
[root@tahe uti1]# more /var/log/dmesg Linux version 2.4.18-14 (bhcompile@stripples.devel.redhat.com) (gcc version 3.2 20020903 (Red Hat Linux 8.0 3.2-7)) #1 Wed S ep 4 13:35:50 EDT 2002 BIOS-provided physical RAM map: BIOS-e820: 0000000000000000 - 000000000009fc00 (usable) BIOS-e820: 000000000009fc00 - 00000000000a0000 (reserved) .... BIOS-e820: 000000000ffff000 - 0000000010000000 (ACPI NVS) BIOS-e820: 00000000ffff0000 - 0000000100000000 (reserved) 0MB HIGHMEM available. 255MB LOWMEM available. On node 0 totalpages: 65532 zone(0): 4096 pages. zone(1): 61436 pages. zone(2): 0 pages. Kernel command line: initrd=initrd.img root=/dev/hdb2 BOOT_IMAGE=vmlinuz Initializing CPU#0 Detected 803.545 MHz processor. Speakup v-1.00 CVS: Tue Jun 11 14:22:53 EDT 2002 : initialized ...

En consultant attentivement ce fichier, on peut apprendre beaucoup de choses sur sa machine :


Kernel command line: initrd=initrd.img root=/dev/hdb2 BOOT_IMAGE=vmlinuz

Linux RH8

107/193

Memory: 253044k/262128k available (1326k kernel code, 6652k reserved, 999k data, 212k init, 0k highmem) Linux NET4.0 for Linux 2.4

// cette ligne indique que linux a t install sur la partition /dev.hdb2 // la quantit de mmoire disponible // la version rseau de linux installe

hda: WDC WD200BB-00AUA1, ATA DISK drive hdb: WDC WD200BB-00AUA1, ATA DISK drive hdd: MATSHITADVD-ROM SR-8586, ATAPI CD/DVD-ROM drive ide0 at 0x1f0-0x1f7,0x3f6 on irq 14 ide1 at 0x170-0x177,0x376 on irq 15 hda: 39102336 sectors (20020 MB) w/2048KiB Cache, CHS=2434/255/63, UDMA(66) hdb: 39102336 sectors (20020 MB) w/2048KiB Cache, CHS=2434/255/63, UDMA(66) ide-floppy driver 0.99.newide Partition check: hda: hda1 hdb: hdb1 < hdb5 > hdb2 hdb3 Floppy drive(s): fd0 is 1.44M // les disques dtects

Dans le contenu du fichier /var/log/dmesg, reprez les noms des disques durs, le partitionnement de chacun deux, le nom du lecteur Zip sil y en a un, celui du lecteur de CD sil y en a un.

13.2

Monter des systmes de fichiers

Il est possible sous Linux de voir diffrents systmes de fichiers, celui de linux lui-mme bien sr (type ext2, ext3) mais bien dautres encore dont les systmes de fichiers des systmes DOS (type msdos) et NT (type ntfs). Ces systmes de fichiers peuvent tre sur diffrents types de supports physiques : disques IDE, disques SCSI, CDROM, disques ZIP, disquettes, Lintgration dans larborescence des fichiers du serveur linux dun systme de fichiers prsent sur un support physique sappelle une opration de montage. On peut distinguer deux types de montage :
-

Les montages faits automatiquement au dmarrage par lecture du fichier /etc/fstab Les montages faits la main avec la commande mount
Montages faits au dmarrage du systme

13.2.1

Au dmarrage initial du systme, larborescence des fichiers est construite par de tels montages guids par le contenu du fichier /etc/fstab :
[root@tahe uti1]# more /etc/fstab LABEL=/ / none /dev/pts none /proc none /dev/shm /dev/hdb3 swap /dev/cdrom /mnt/cdrom /dev/fd0 /mnt/floppy ext3 devpts proc tmpfs swap iso9660 auto defaults,usrquota 1 1 gid=5,mode=620 0 0 defaults 0 0 defaults 0 0 defaults 0 0 noauto,owner,kudzu,ro 0 0 noauto,owner,kudzu 0 0

Dans cet exemple, on voit que la partition de swap a t installe sur la partition /dev/hda4. On ne voit pas sur quelle partition a t monte la racine /. Pour le savoir, on peut utiliser la commande mount qui indique quels systmes de fichiers sont actuellement monts :
[root@tahe uti1]# mount /dev/hdb2 on / type ext3 (rw,usrquota) none on /proc type proc (rw) usbdevfs on /proc/bus/usb type usbdevfs (rw) none on /dev/pts type devpts (rw,gid=5,mode=620) none on /dev/shm type tmpfs (rw)

On voit ici que la racine de l'aborescence a t monte sur la partition /dev/hdb2. Afin de connatre le rle prcis du fichier /etc/fstab, on pourra faire :
[man /etc/fstab] Linux RH8 108/193

Chaque ligne du fichier /etc/fstab a 6 champs :


1 2 3 4

Support physique contenant le systme de fichiers monter Point de montage dans larborescence gnrale du systme de fichiers Type du systme de fichiers monter Options de montage. Elles sont diverses. A retenir : defaults : options de montage par dfaut, notamment le montage automatique au moment du dmarrage noauto : le montage nest pas fait au dmarrage. Nammoins, les caractristiques du montage sont enregistres et faciliteront un montage ultrieur. Valeur utilise par lutilitaire dump. On mettra 1 pour les systmes de fichiers linux monts de faon permanente, 0 pour tous les autres. Une valeur <> 0 indique que le systme de fichiers doit faire lobjet dune vrification dintgrit lors du montage. On mettra 1 pour le systme de fichiers principal de linux (/), 2 pour les autres qui doivent tre vrifis, 0 pour tout le reste.

Ainsi la ligne
/dev/hda3 / ext2 defaults 1 1

signifie que la partition /dev/hda3 contenant un systme de fichiers de type ext2 (linux) sera incluse la racine / de
larborescence du systme de fichiers du serveur. Lors du montage, le systme de fichiers sera vrifi (1 en colonne 6).

La ligne
/dev/hdb3 defaults 0 0 swap swap

est une ligne particulire pour la partition de swap. Son systme de fichiers swap (colonne 3) nest pas mont dans larborescence gnrale (swap en colonne 2), ne peut faire lobjet dun dump (0 en colonne 5) et nest pas vrifi au montage (0 en colonne 6). La ligne
/dev/fd0 /mnt/floppy auto noauto,owner,kudzu 0 0

dcrit le montage du priphrique /dev/fd0 (disquette) contenant un systme de fichiers linux (ext2) au point
/mnt/floppy de larborescence. Ce montage nest pas fait au dmarrage (noauto). Il pourra tre fait ultrieurement par la commande [mount /mnt/floppy].

La ligne
/dev/cdrom /mnt/cdrom iso9660 noauto,owner,kudzu,ro 0 0

dcrit le montage du priphrique /dev/cdrom (lecteur de cd) au point /mnt/cdrom de larborescence. Ce


priphrique contient un systme de fichiers iso9660 qui est un systme de fichiers courant sur les CD. Il nest pas mont au dmarrage (noauto) et est en lecture seule (ro=read only). Une fois quun CD aura t plac dans le lecteur, on pourra le monter par la commande [mount /mnt/cdrom].

A noter que les points de montage doivent exister avant de faire le montage. Dans notre exemple, le point de montage / existe toujours. Les autres points de montage /mnt/floppy et /mnt/cdrom doivent tre crs avec la
commande mkdir sils nexistent pas : [mkdir /mnt/floppy] [mkdir /mnt/cdrom] Linux RH8

109/193

On peut monter un systme de fichiers nimporte o dans larborescence. Beaucoup dadministrateurs ont pris lhabitude de les monter sous le rpertoire /mnt.
13.2.2 Montages manuels

Les montages manuels se font avec la commande mount. On fera [man mount] pour une description complte de cette commande. Elle nest utilisable que par lutilisateur root c.a.d. ladministrateur du systme. La syntaxe de la commande mount suit la syntaxe des lignes du fichier /etc/fstab :
mount [-t type_fichiers] [priphrique/partition] [point_de_montage]

Loption t dsigne le type de fichiers monter. Les plus courants sont ext2, ext3 : systme de fichiers linux msdos : systme de fichiers DOS ntfs : systme de fichiers Windows NT iso9660 : systme de fichiers des CD Lotion t est facultative. Lorsquelle est absente, le type ext2, ext3 est pris par dfaut. Lorsquon met la commande
mount, le rpertoire courant ne doit pas tre situ sous le point de montage. Il en est de mme lorsquon dmonte le systme de fichiers avec la commande umount.

Un systme de fichiers mont par mount pourra tre dmont par umount. On utilisera la syntaxe :
umount priphrique/partition

ou umount point_de_montage o les arguments sont ceux utiliss lors de la commande mount.
13.2.3 Connatre le partitionnement dun disque : fdisk

La commande fdisk permet de connatre le partitionnement des disques. Elle permet galement de partitionner le disque. Ce nest pas ce qui est cherch ici et il faut donc tre prudent en tapant vos commandes. Sur vos machines vous pouvez avoir 1 ou 2 disques durs IDE ainsi quun lecteur Zip interne qui est lui aussi considr comme un disque IDE. Dans ce dernier cas, il faudra mettre une disquette Zip dans le lecteur. Tapez les commandes suivantes :
[fdisk /dev/hda] [fdisk /dev/hdb]

pour voir le partitionnement du premier disque IDE de votre machine. Faire [p] pour avoir la liste des partitions, [q] pour quitter.

pour voir le partitionnement du second disque IDE de votre machine. Faire [p] pour avoir la liste des partitions, [q] pour quitter. [fdisk /dev/hdd] mettre une disquette ZIP pour voir le partitionnement du troisime disque IDE (lecteur ZIP) de votre machine. Faire [p] pour avoir la liste des partitions, [q] pour quitter.
13.2.4 Montage dune partition DOS

Dans l'exemple qui suit, on suppose qu'il existe plusieurs partitions DOS sur le disque IDE /dev/hda. La partition primaire /dev/hda1 reprsente le disque C. La partition primaire /dev/hda2 a t divise en 2 partitions logiques /dev/hda5 (disque D) et /dev/hda6 (disque E). Nous allons monter le disque E :
[cd /] [mkdir /mnt/E] Linux RH8

pour tre au plus haut niveau de larborescence pour crer le point de montage du disque E
110/193

[ls l /mnt/E] [mount t msdos /dev/hda6 /mnt/E] [ls l /mnt/E]

pour voir le contenu du rpertoire rien normalement pour monter le systme de fichiers DOS (-t msdos) du disque E (/dev/hda6) dans le rpertoire /mnt/E de larborescence. pour voir le contenu du disque E pour crer un rpertoire rep1 sur le disque E pour vrifier

[mkdir /mnt/E/rep1] [ls l /mnt/E]

En travaillant maintenant dans le rpertoire /mnt/E, vous travaillez en fait sur le disque E du PC donc sur des fichiers de type MS-DOS. Cest un moyen pour changer des fichiers entre un systme Linux et un systme DOS. Lorsquon na plus besoin du disque E, on pourra le dmonter de la faon suivante :
[cd /] [umount /mnt/E] [ls l /mnt/E] 13.2.5

pour tre au plus haut niveau de larborescence

pour dmonter le point de montage du disque E pour voir le contenu du rpertoire rien normalement
Montage du CDROM

La ligne du montage du CDROM est normalement prsente dans le fichier /etc/fstab. Vrifiez-le par [more /etc/fstab]. Vous devriez avoir une ligne du genre :
/dev/cdrom /mnt/cdrom iso9660 noauto,ro 0 0

Le CDROM nest pas mont automatiquement au dmarrage (noauto) et est en lecture seule (ro). Comme la ligne de montage est dj prsente dans le fichier /etc/fstab, la syntaxe de la commande mount est simplifie : [mount point_de_montage]. Mettez un CD dans le lecteur puis tapez les commandes suivantes :
[cd /] [ls l /mnt/cdrom]

pour tre au plus haut niveau de larborescence

[mount /mnt/cdrom] [ls l /mnt/cdrom]

pour voir le contenu du rpertoire le rpertoire /mnt/cdrom est normalement cr linstallation. Si ce ntait pas le cas, il faudrait le crer : [mkdir /mnt/cdrom] pour monter le CDROM. On utilise la syntaxe simplifie car le montage est dj dcrit dans /etc/fstab. pour voir le contenu du rpertoire vous voyez l le contenu du CD. Pour dmonter le CDROM, on procdera comme pour le disque E :

[cd /] [umount /mnt/cdrom] [ls l /mnt/cdrom]

pour tre au plus haut niveau de larborescence

pour dmonter le point de montage du lecteur de CD pour voir le contenu du rpertoire rien normalement

Linux RH8

111/193

13.2.6

Montage dune disquette Linux

La ligne du montage du lecteur de disquette est normalement prsente dans le fichier /etc/fstab. Vrifiez-le par [more /etc/fstab]. Vous devriez avoir une ligne du genre :
/dev/fd0 0 0 /mnt/floppy ext2 noauto

Il nest pas mont automatiquement au dmarrage (noauto). Comme la ligne de montage est dj prsente dans le fichier /etc/fstab, la syntaxe de la commande mount est simplifie : [mount point_de_montage]. Mettez une disquette vierge dans le lecteur de disquettes et tapez les commandes suivantes :
[cd /] [mkfs /dev/fd0]

pour tre au plus haut niveau de larborescence

[mount /mnt/floppy] [ls l /mnt/floppy]

pour formater la disquette au format linux. Cette opration nest pas faire si vous avez mis une disquette dj formate au format linux. pour monter le lecteur de disquette. On utilise la syntaxe simplifie car le montage est dj dcrit dans /etc/fstab. Si le rpertoire /mnt/floppy nexistait pas, il faudrait le crer au pralable. demande la liste des fichiers de la disquette rien normalement copie un fichier sur la disquette pour vrifier

[cp /boot/vmlinuz /mnt/floppy] [ls l /mnt/floppy]

Vous pouvez maintenant faire des sauvegardes sur la disquette. On procdera au dmontage de la faon suivante :
[cd /] [umount /mnt/floppy] 13.2.7 Montage dun lecteur ZIP

On sintresse ici au montage dun disque Zip interne IDE pour y placer un systme de fichier linux. On suppose ici que le lecteur zip interne sappelle /dev/hdd (4ime disque IDE). Pour le vrifier, consulter le fichier

/var/log/dmesg par [more /var/log/dmesg]. Un lecteur ZIP SCSI interne sappellera /dev/sdax o x est un numro. Un lecteur ZIP parallle sappellera galement /dev/sdax car il est considr comme un disque SCSI mme sil ny a pas de cartes SCSI dans le PC.

Tapez alors les commandes suivantes :


[fdisk /dev/hdd]

// on voit que la partition s'appelle /dev/hdd4.


[mke2fs /dev/hdd4]

// pour partitionner la partition /dev/hdd4 au format linux.


[mkdir /mnt/zip]

// pour crer le point de montage sil nexistait pas


[mount /dev/hdd4 /mnt/zip]

// pour monter la partition


[ls -l /mnt/zip]

// pour voir le contenu de la disquette zip.


Linux RH8 112/193

total 12 drwxr-xr-x

2 root

root

12288 Apr 19 14:12 lost+found

[cp /boot/vmlinuz /mnt/zip]

// pour copier un fichier sur la disquette Zip.


[ls -l /mnt/zip]
total 619 drwxr-xr-x -rw-r--r--

// pour voir le contenu du disque zip


2 root 1 root root root 12288 Apr 19 14:12 lost+found 617288 Apr 19 14:16 vmlinuz

[cd /] [umount /mnt/zip]

// pour dmonter le lecteur zip/linux.


[mkfs -t msdos /dev/hdd4]

// pour formater la disquette zip au format dos.


[mount -t msdos /dev/hdd4 /mnt/zip]

// pour monter la disquette zip/dos


[ls -l /mnt/zip]
total 0

// pour voir le contenu du dique zip/dos

[cp /boot/vmlinuz /mnt/zip]

// pour copier un fichier sur la disquette Zip.


[ls -l /mnt/zip]
total 604 -rwxr-xr-x

// pour voir le contenu du disque zip


1 root root 617288 Apr 19 14:23 vmlinuz

[cd /] [umount /mnt/zip]

// pour dmonter le lecteur zip/linux.


13.2.8 Les outils mtools

On a montr prcdemment comment grer un disque ZIP au format MSDOS. Tout ce qui a t vu pour le disque ZIP peut tre appliqu au lecteur de disquette /dev/fd0. Il suffit de remplacer dans lexemple prcdent /dev/hdd4 par /dev/fd0. Mais pour grer des supports MSDOS, on dispose doutils plus simples appels les outils mtools. Ceux-ci permettent de grer les supports MSDOS avec les commandes habituelles du DOS prfixes de la lettre m (mdir au lieu de dir,). Laide sur ces outils est obtenue par [man mtools]. On trouve l une explication complte sur lutilisation des mtools. Voici quelques commandes utiles : mformat priphrique

// formate au format MSDOS le priphrique nomm // mformat a: - formate A


mmd rep

// cre rep - exemple mmd a:/rep1


mrd rep

// supprime rep si vide - exemple mrd a:/rep1


mcd rep

// pour faire de rep le rpertoire DOS courant // exemple mcd z:/rep1


mdir rep

// affiche le contenu de rep mdir z:/rep1 - affiche le contenu de z:/rep1


Linux RH8 113/193

mcopy source destination

// pour copier un fichier // mcopy /boot/vmlinuz a:/ // mcopy a:/rep1 z:/rep2


mcopy -t source destination

// pour copier un fichier texte UNIX vers un fichier texte DOS // et vice-versa
mdel fichier

// supprime fichier // mdel a:/vmlinuz


mtype fichier

// affiche le contenu du fichier texte fichier // mtype a:/texte


mmove source destination

// dplace source dans destination // mmove a:/rep1/fic1 a:/rep2


Le fonctionnement de ces outils est gouvern par le fichier de configuration /etc/mtools.conf. Visualisez ce fichier par [more /etc/mtools.conf]. Beaucoup de lignes sont commentes. Sur votre PC, plusieurs supports peuvent accueillir des fichiers DOS : Le disque C, /dev/hda1 Le disque D, /dev/hda5 Le disque E, /dev/hda6 Le lecteur ZIP, /dev/hdd Le lecteur de disquette, /dev/fd0 Sauvegardez le fichier de configuration original des mtools :
[root@tahe uti1]# cp /etc/mtools.conf /etc/mtools.conf.original [root@tahe uti1]# ls -l /etc/mtools.conf* -rw-r--r-1 root root 1913 jun 23 2002 /etc/mtools.conf -rw-r--r-1 root root 1913 avr 4 10:47 /etc/mtools.conf.original

Dans les exemples qui vont suivre on va travailler sur une disquette dos. On cre donc le fichier mtools.conf suivant :
[root@tahe uti1]# more /etc/mtools.conf # lecteur A drive a: file="/dev/fd0" exclusive 1.44m

Faites maintenant les tests suivants aprs avoir plac une disquette vierge dans le lecteur A : [mformat a:]

// formate disquette A
[mdir a:/]

// visualise contenu de A
[root@tahe uti1]# mformat a: [root@tahe uti1]# mdir a: Volume in drive A has no label Volume Serial Number is 10B7-9DA9 Directory for A:/ No files 1 457 664 bytes free

[mmd a:/rep1 a:/rep2] [mdir a:]


Volume in drive A has no label Volume Serial Number is 5C24-885F Directory for A:/

Linux RH8

114/193

rep1 rep2

<DIR> <DIR> 2 files

04-19-2000 04-19-2000

16:51 rep1 16:51 rep2 0 bytes 1 456 640 bytes free

[mcd a:/]

// a:/ sera dsormais le rpertoirecourant DOS


[mmd rep3]

// cre rep3 dans rpertoire courant DOS


[mdir]

// contenu du rpertoire courant DOS


Volume in drive A has no label Volume Serial Number is 5C24-885F Directory for A:/ rep1 rep2 rep3 <DIR> <DIR> <DIR> 3 files 04-19-2000 04-19-2000 04-19-2000 16:51 16:51 16:52 0 bytes 1 456 128 bytes rep1 rep2 rep3 free

[more /etc/issue] [mcopy -t /etc/issue a:/issue] [mdir]


Volume in drive A has no label Volume Serial Number is 5C24-885F Directory for A:/ rep1 rep2 rep3 issue <DIR> <DIR> <DIR> 4 files 04-19-2000 04-19-2000 04-19-2000 68 04-19-2000 16:51 16:51 16:52 16:54 68 bytes 1 455 616 bytes rep1 rep2 rep3 issue free

[mtype issue]
Red Hat Linux release 6.0 (Hedwig) Kernel 2.2.5-15 on an i686

[mrd a:/rep1 a:/rep2 a:/rep3] [mdel a:/issue] [mdir a:/]


Volume in drive A has no label Volume Serial Number is 5C24-885F Directory for A:/ No files 1 457 664 bytes free

13.3

Montage de fichiers exports par le service samba

Dans le chapitre consacr au service Samba, nous avons vu :


que le service Samba exportait des services qui sont en fait des arborescences de fichiers que ces arborescences de fichiers taient disponibles des clients samba. Nous en avons vu deux : le client smbclient et le client Connecter un lecteur rseau de windows. Ce dernier permet une machine windows de faire apparatre comme un disque local ce qui est en ralit une ressource distante.

Ce que fait le client windows peut tre galement ralis sous Linux avec la commande smbmount. Pour dcouvrir cette commande, faites smbmount help ou man smbmount :

Linux RH8

115/193

[root@tahe root]# smbmount --help Usage: mount.smbfs service mountpoint [-o options,...] Version 2.2.7-security-rollup-fix Options: username=<arg> password=<arg> credentials=<filename> netbiosname=<arg> uid=<arg> gid=<arg> port=<arg> fmask=<arg> dmask=<arg> debug=<arg> ip=<arg> workgroup=<arg> sockopt=<arg> scope=<arg> iocharset=<arg> codepage=<arg> ttl=<arg> guest ro rw SMB username SMB password file with username/password source NetBIOS name mount uid or username mount gid or groupname remote SMB port number file umask directory umask debug level destination host or IP address workgroup on destination TCP socket options NetBIOS scope Linux charset (iso8859-1, utf8) server codepage (cp850) dircache time to live don't prompt for a password mount read-only mount read-write

Nous utiliserons la commande smbmount sous la forme suivante :


smbmount service point_de_montage -o username=...,password=....

Le lecteur est incit revoir le chapitre sur SAMBA avant de poursuivre. Le service SAMBA tudi dans ce document avait cr un service appel private :
; ressources prives [private] comment = Logiciels privs public = no valid users = uti1 force group = admprivate writeable = yes path = /home/samba/private create mode = 0775

Ce service est d'accs priv (public=no) et un seul utilisateur y a accs (valid users=uti1). Le service est associ l'arborescence /home/samba/private. C'est cette arborescence qui sera monte avec smbmount. Pour les tests qui suivent, il faut tre root. Crons tout d'abord un dossier sous /tmp.
[root@tahe root]# ls -ld /tmp/smbprivate/ drwxr-xr-x 1 root root 4096 avr 29 17:04 /tmp/smbprivate/ [root@tahe root]# ls -l /tmp/smbprivate/ total 0

Le dossier /tmp/smbprivate sera le point de montage du service private export par samba. Vrifions le contenu actuel du dossier /home/samba/private associ au service private :
[root@tahe root]# ls -l /home/samba/private/ total 8 -rw-r--r-1 root root 2040 mar 31 17:03 passwd drwxr-xr-x 2 uti1 admprivate 4096 avr 1 09:07 test

Vrifions le nom de notre machine :


[root@tahe root]# hostname tahe.istia.uang

Faisons le montage :
[root@tahe root]# smbmount username=uti1,password=azerty [root@tahe root]# ls -l /tmp/smbprivate/ total 6 \\\\tahe.istia.uang\\private /tmp/smbprivate/ -o

Linux RH8

116/193

-rwxr-xr-x drwxr-xr-x

1 root 1 root

root root

2040 mar 31 17:03 passwd 4096 avr 1 09:07 test

On voit ci-dessous que le dossier /home/samba/private a bien t mont sous /tmp/smbprivate. On remarquera cependant que les propritaires des fichiers ont chang. Les fichiers sont devenus proprit de celui qui a mont le service. La commande smbmount prcdente s'est prsente au service samba comme l'utilisateur uti1. Celui-ci a un droit d'criture sur l'arborescence du service private (writeable=yes). Vrifions-le :
[root@tahe root]# echo 1>/tmp/smbprivate/test1

La commande ci-dessus cre un fichier dans /tmp/smbprivate. Vrifions :


[root@tahe root]# ls -l /tmp/smbprivate/ total 7 -rwxr-xr-x 1 root root 2040 mar 31 17:03 passwd drwxr-xr-x 1 root root 4096 avr 1 09:07 test -rwxr-xr-x 1 root root 1 avr 29 17:41 test1

Le fichier test1 a bien t cr. Vrifions maintenant le contenu de l'arborescence /home/samba/private qui a t monte :
[root@tahe root]# ls -l /home/samba/private/ total 12 -rw-r--r-1 root root 2040 mar 31 17:03 passwd drwxr-xr-x 2 uti1 admprivate 4096 avr 1 09:07 test -rwxrw-r-1 uti1 admprivate 1 avr 29 17:41 test1

On dcouvre que le vritable propritaire du fichier test1 est uti1 qui est le nom sous lequel on a mont le service private. Le groupe propritaire est admprivate cause de la ligne force group=admprivate du fichier smb.conf. Pour dmonter le service private on utilise la commande umount :
[root@tahe root]# umount /tmp/smbprivate/ [root@tahe root]# ls -l /tmp/smbprivate/ total 0

Les exemples prcdents montrent qu'une machine A pourrait exporter une arborescence vers une machine B de la faon suivante :

la machine A cre un service Samba associ l'arborescence exporter. Ce service serait un service priv auquel on se connecterait avec un login/mot de passe. la machine B monterait l'arborescence exporte par la machine A avec la commande smbmount comme il a t vu prcdemment. Ceci fait, l'arborescence exporte par la machine A est vue comme une arborescence locale par la machine B.

Par dfaut, seul l'utilisateur root peut utiliser la commande comme le montre l'exemple suivant :
[uti2@tahe uti2]$ mkdir /tmp/smbuti2 [uti2@tahe uti2]$ ls -ld /tmp/smbuti2/ drwxr-xr-x 2 uti2 groupe1 4096 avr 30 15:36 /tmp/smbuti2/ [uti2@tahe uti2]$ ls -l /tmp/smbuti2/ total 0 [uti2@tahe uti2]$ smbmount \\\\tahe.istia.uang\\uti2 /tmp/smbuti2/ -o username=uti2,password=azerty smbmnt must be installed suid root for direct user mounts (502,502) smbmnt failed: 1

Les commandes prcdentes :


sont excutes par l'utilisateur uti2 crent un point de montage /tmp/smbuti2 essaient de monter le service \\\\tahe.istia.uang\\uti2 sur le point de montage.

Linux RH8

117/193

L'arborescence associe au service \\\\tahe.istia.uang\\uti2 est le rpertoire personnel de uti2. On voit que le montage choue parce que seul root peut utiliser smbmount. I Le message d'erreur nous indique que le fichier smbmnt devrait tre suid root. Lorsqu'un fichier excutable a le droit suid, il s'excute dans un processus qui aura le mme propritaire que celui du fichier excut alors que normalement il s'excute sous le nom de celui qui lance le fichier excutable. Regardons les droits du programme smbmnt :
[root@tahe root]# ls -l /usr/bin/smbmnt -rwxr-xr-x 1 root root 560774 avr 6 07:47 /usr/bin/smbmnt

On voit que smbmnt appartient l'utilisateur root. Lorsque l'utilisateur uti2 l'excute, un processus est cr et uti2 en est le propritaire. Tout ce que fera le processus smbmnt sera fait sous le nom uti2. Or smbmnt doit s'excuter dans un processus proprit de root. C'est pourquoi uti2 n'a pu utiliser smbmnt. Donnons maintenant le droit suid au fichier smbmnt :
[root@tahe root]# chmod u+s /usr/bin/smbmnt [root@tahe root]# ls -l /usr/bin/smbmnt -rwsr-xr-x 1 root root 560774 avr 6 07:47 /usr/bin/smbmnt

On voit apparatre un droit S dans les droits du propritaire du fichier smbmnt. Ce droit signifie que lorsque smbmnt s'excutera, le processus dans lequel il s'excutera sera proprit non pas de l'utilisateur ayant lanc la commande smbmnt mais de l'utilisateur propritaire du fichier lui-mme. Ici, il faut faire la diffrence entre fichier et processus qui n'ont pas forcment les mmes propritaires. Le propritaire du fichier smbmnt est root. Le droit SUID fait que le processus dans lequel s'excutera le programme smbmnt sera galement proprit de root. L'utilisateur uti2 devrait maintenant pouvoir utiliser smbmount. Essayons :
[uti2@tahe uti2]$ smbmount \\\\tahe.istia.uang\\uti2 /tmp/smbuti2/ -o username=uti2,password=azerty [uti2@tahe uti2]$ ls -l /tmp/smbuti2/ total 1 -rwxr-xr-x 1 uti2 groupe1

1 avr 30 15:36 test

Cette fois-ci, le montage a russi. Crons un fichier dans l'arborescence monte :


[uti2@tahe uti2]$ echo 1>/tmp/smbuti2/test1 [uti2@tahe uti2]$ ls -l /tmp/smbuti2/ total 1 -rwxr-xr-x 1 uti2 groupe1 -rwxr-xr-x 1 uti2 groupe1 [uti2@tahe uti2]$ ls -l /home/uti2 total 8 -rw-r--r-1 uti2 groupe1 -rwxr--r-1 uti2 groupe1

1 avr 30 15:36 test 1 avr 30 16:04 test1

1 avr 30 15:36 test 1 avr 30 16:04 test1

On voit que le fichier test1 cr dans l'arborescence /tmp/smbuti2 a t en ralit crit dans /home/uti2. On a l un mcanisme permettant un utilisateur de rendre local, un dossier qui lui appartiendrait et qui serait sur une autre machine. L'arborescence monte avec smbmount sera dmonte avec smbumount. Cette commande doit elle aussi avoir le droit suid pour pouvoir tre utilise par quelqu'un d'autre que root :
[root@tahe root]# chmod u+s /usr/bin/smbumount [root@tahe root]# ls -l /usr/bin/smbumount -rwsr-xr-x 1 root root 560448 avr 6 07:47 /usr/bin/smbumount

Ceci fait, l'utilisateur uti2 peut utiliser smbumount pour dmonter l'arborescence qu'il a monte :
[uti2@tahe uti2]$ smbumount /tmp/smbuti2/ [uti2@tahe uti2]$ ls -l /tmp/smbuti2/ total 0 [uti2@tahe uti2]$ ls -l /home/uti2/ total 8 -rw-r--r-1 uti2 groupe1 1 avr 30 15:36 test -rwxr--r-1 uti2 groupe1 1 avr 30 16:04 test1

Linux RH8

118/193

14
14.1

La recherche rapide de fichiers


Introduction

Loutil que nous prsentons ici est un peu similaire loutil Rechercher un fichier quon trouve sur les systmes Windows. Son but est de crer des bases contenant la liste des fichiers prsents dans une arborescence afin de faciliter ultrieurement la recherche dans cette arborescence.

14.2

La commande locate

La commande locate permet de localiser rapidement un fichier. La commande


locate -u

construit une base de donnes contenant la liste de tous les fichiers de l'arborescence de fichiers commenant la racine. La commande
locate -U chemin

fait la mme chose mais pour une arborescence dfinie par chemin. Dans les deux cas, la commande produit une base slocate.db dans /var/lib/slocate. Essayez par exemple les commandes suivantes :
[root@tahe uti1]# locate -u [root@tahe uti1]# ls -l /var/lib/slocate/ total 1984 -rw-r----1 root slocate 2025485 avr

4 11:00 slocate.db

La commande locate permet ensuite de faire des recherches dans la base gnre.
[root@tahe uti1]# locate kwrite /var/lib/menu/kde/Applications/Extras/Accessories/kde-kwrite.desktop /root/.kde/share/config/kwriterc /usr/bin/kwrite /usr/bin/kwrited /usr/lib/kwrite.la ....

La commande locate permet de faire des interrogations un peu plus sophistiques que celle ci-dessus. On fera un [man locate] pour les dcouvrir. On peut indexer toute arborescence, par exemple le contenu d'un CD. Installez un CD et faites :
[root@tahe uti1]# locate -U /mnt/cdrom/ -o /var/lib/slocate/slocate.vsnet

// l'option -U <dir> permet de prciser le rpertoire indexe // l'option -o <fichier> permet de prciser le nom de la base de donnes crer

[root@tahe uti1]# ls -l /var/lib/slocate/ total 4320 -rw-r----1 root slocate 2025485 avr -rw-r----1 root slocate 353701 avr

4 11:00 slocate.db 4 11:15 slocate.vsnet

[root@tahe uti1]# locate -d /var/lib/slocate/slocate.vsnet disco.exe /mnt/cdrom/program files/microsoft.net/frameworksdk/bin/disco.exe

// l'option -d permet de prciser la base de donnes explorer

14.3

Conclusion

Linux RH8

119/193

La commande locate est souvent utile notamment dans le cas dinstallation de nouveaux logiciels. Quelquefois on sinterroge sur lendroit o ont t placs certains fichiers. La commande locate peut nous aider le savoir. Pour quelle soit utile, il faut que la base des fichiers soit rgulirement mise jour. On pourra la mettre jour toutes les nuits par exemple. On fera cela laide du service crond expliqu dans lune des fiches suivantes.

15
15.1

Soumettre des travaux des heures prcises


Introduction

Il est possible d'excuter des commandes ou des programmes intervalles rguliers. On utilise souvent cette possibilit pour faire la nuit des oprations longues comme des sauvegardes, mise jour de la base de fichiers gre par la commande locate, ...

15.2

La commande crontab

Les commandes excuter sont dfinies l'aide de la commande crontab. Elles seront excutes par le serveur crond. Celui-ci est normalement lanc automatiquement au dmarrage de linux. Vous pouvez le vrifier avec le gestionnaire de services :

On peut galement le lancer la main par [/etc/rc.d/init/d/crond start]. On fera [man crontab] et [man crond] pour avoir une dfinition complte du rle des deux commandes. Commenons par dfinir un exemple simple. Assurez-vous tout d'abord d'tre l'utilisateur root.
[root@tahe uti1]# export EDITOR=kwrite [root@tahe uti1]# crontab -e &

// fixe l'diteur de texte utiliser pour modifier le fichier de configuration de crontab // lance la modification du fichier de configuration

Avec l'diteur de texte, crez les lignes suivantes :


* * * * * date >>/tmp/date */2 * * * * (date;who|wc -l) >>/tmp/who 10 23 2 1 * rm -fr /tmp/*

Chaque ligne a 6 champs : Champ 1 minutes * : toutes les minutes */2 : toutes les 2 mn 10 : la minute 10 Champ 2 heures * : toutes les heures */4 : toutes les 4 h 23 : 23 h Champ 3 Champ 4 Linux RH8 jour mois 120/193

Champ 1

minutes * : toutes les minutes */2 : toutes les 2 mn 10 : la minute 10

Champ 5 Champ 6

anne la commande excuter

Les lignes prcdentes signifient que : 1 - la date sera enregistre dans le fichier /tmp/date toutes les minutes 2 - la date et le nombre d'utilisateurs seront enregistrs dans le fichier /tmp/who toutes les 2 mn 3 - chaque anne, le 2 janvier 23 h 10, on dtruit toute l'arborescence qui se trouve sous /tmp Sauvegardez votre fichier aprs l'avoir vrifi. O ce fichier de commandes est-il sauvegard ? Dans /var/spool/cron comme le montrent les commandes suivantes :
[root@tahe uti1]# ls -l /var/spool/cron/ total 8 -rw------1 root root 1230 mar -rw------1 root root 284 avr

2 14:07 mailman 4 09:11 root

[root@tahe uti1]# more /var/spool/cron/root # DO NOT EDIT THIS FILE - edit the master and reinstall. # (/tmp/crontab.1342 installed on Fri Apr 4 09:11:45 2003) # (Cron version -- $Id: crontab.c,v 2.13 1994/01/17 03:20:37 vixie Exp $) * * * * * date >>/tmp/date */2 * * * * (date;(who|wc -l)) >>/tmp/who 10 23 2 1 * rm -fr /tmp/*

Pour vrifier ce que font exactement les commandes prcdentes, tapez-les au clavier :
[root@tahe ven avr 4 [root@tahe [root@tahe ven avr 4 [root@tahe [root@tahe ven avr 4 ven avr 4 uti1]# date 09:38:35 CEST 2003 uti1]# date >/tmp/date uti1]# more /tmp/date 09:38:45 CEST 2003 uti1]# date >>/tmp/date uti1]# more /tmp/date 09:38:45 CEST 2003 09:38:53 CEST 2003

La commande date donne la date du jour l'cran. La commande date >fic crit la date dans le fichier fic. Si celui-ci avait dj un contenu, celui-ci est cras. La commande date >>fic crit la date la fin du fichier fic. Le contenu de celui-ci est donc prserv.
[root@tahe uti1]# date ven avr 4 09:44:18 CEST 2003 [root@tahe uti1]# who uti1 :0 Apr 4 08:21 uti1 pts/0 Apr 4 08:22 uti1 pts/2 Apr 4 08:22 uti1 pts/3 Apr 4 09:20 uti1 pts/4 Apr 4 09:27 [root@tahe uti1]# who|wc -l 5 [root@tahe uti1]# date;(who|wc -l) ven avr 4 09:44:37 CEST 2003 5

La commande who affiche la liste des utilisateurs connects. La commande date;who enchane les deux commandes date et who dans cet ordre. La commande who | wc -l compte (wc -l) le nombre de lignes produites par la commande who. Cela donc le nombre d'utilisateurs connects. La commande date;(who | wc -l) enchane l'excution de la commande date puis celle de la commande (who | wc -l). Cela permet d'avoir une heure donne le nombre d'utilsateurs connects. Ce type de suivi peut tre utile pour dtecter les pics de charge dans une journe. Maintenant, vous pouvez suivre le fonctionnement des commandes prcdentes. Elles crivent dans les fichiers /tmp/date et /tmp/who. A intervalles rguliers, faites

Linux RH8

121/193

[root@tahe uti1]# ls -l /tmp/date -rw-r--r-1 root root [root@tahe Fri Apr 4 Fri Apr 4 Fri Apr 4 Fri Apr 4 Fri Apr 4 Fri Apr 4 uti1]# more /tmp/date 09:12:01 CEST 2003 09:13:00 CEST 2003 09:14:00 CEST 2003 09:15:01 CEST 2003 09:16:00 CEST 2003 09:17:00 CEST 2003

180 avr

4 09:17 /tmp/date

[root@tahe uti1]# ls -l /tmp/who -rw-r--r-1 root root [root@tahe Fri Apr 4 3 Fri Apr 4 3 Fri Apr 4 3 Fri Apr 4 3 uti1]# more /tmp/who 09:12:01 CEST 2003 09:14:01 CEST 2003 09:16:00 CEST 2003 09:18:00 CEST 2003

152 avr

4 09:18 /tmp/who

On voit clairement que la commande 1 est excute toutes les minutes et la commande 2 toutes les 2 minutes. Pour modifier un fichier crontab, il y a diverses manires : refaire l'opration prcdente ou [crontab -r] pour supprimer dfinitivement le fichier. L'accs la commande crontab est dfini par les fichiers /etc/cron.allow et /etc/cron.deny. Si ces fichiers n'existent pas, tout le monde peut crer un fichier crontab. Faisons-en l'exprience. [rm /etc/cron.allow] // pour effacer cron.allow s'il existait [rm /etc/cron.deny] // pour effacer cron.deny s'il existait Mettez-vous sur une console en tant qu'utilisateur uti1 par exemple et mettez les deux commandes suivantes :
[uti1@tahe uti1]$ export EDITOR=kwrite [uti1@tahe uti1]$ crontab -e & [1] 1551 [uti1@tahe uti1]$ no crontab for uti1 - using an empty one

Mettez alors la commande suivante :


* * * * * date>>~uti1/date

qui toutes les minutes enregistrera la date dans le fichier date du rpertoire de connexion de l'utilisateur uti1 (~uti1). Alors qu'avec l'utilisateur root, on n'a pas se proccuper des droits, avec un autre utilisateur il faut le faire. En effet, le serveur crond excute les commandes avec les droits de l'utilisateur propritaire du fichier crontab. Ici ce sera uti1. Dans notre exemple on crit donc dans un fichier du rpertoire de l'utilisateur uti1 afin d'tre sr d'avoir les droits d'criture. Sauvegardez le fichier prcdent. Sur une console o vous tes root, faites :
[root@tahe uti1]# ls -l /var/spool/cron/ total 12 -rw------1 root root 1230 mar -rw------1 root root 284 avr -rw------1 root groupe1 218 avr

2 14:07 mailman 4 09:11 root 4 09:21 uti1

[root@tahe uti1]# more /var/spool/cron/uti1 # DO NOT EDIT THIS FILE - edit the master and reinstall. # (/tmp/crontab.1551 installed on Fri Apr 4 09:21:44 2003) # (Cron version -- $Id: crontab.c,v 2.13 1994/01/17 03:20:37 vixie Exp $) * * * * date>>~uti1/date

Revenez maintenant sur la console o vous tes uti1 :


[uti1@tahe Fri Apr 4 Fri Apr 4 [uti1@tahe uti1]$ more date 09:22:00 CEST 2003 09:23:00 CEST 2003 uti1]$ ls -l /home/uti1/date 60 avr 4 09:23 /home/uti1/date

-rw-r--r-1 uti1 groupe1 [uti1@tahe uti1]$ more /home/uti1/date

Linux RH8

122/193

Fri Apr Fri Apr Fri Apr

4 09:22:00 CEST 2003 4 09:23:00 CEST 2003 4 09:24:01 CEST 2003

On a bien une excution toutes les minutes. Il peut ne pas tre souhaitable d'autoriser tout le monde utiliser les possibilits du serveur crond. On mettra alors dans le fichier /etc/cron.allow les logins des utilisateurs autoriss, raison d'un par ligne.
[root@tahe uti1]# more /etc/cron.allow root uti1

Mettez-vous sur une console avec l'identit de uti1 et faites :


# export EDITOR=kwrite # crontab -e

On constate que l'utilisateur uti1 peut modifier son fichier crontab. Mettez-vous sur une console avec l'identit de uti2 et faites de mme :
[uti1@tahe uti1]$ su - uti2 Password: [uti2@tahe uti2]$ export EDITOR=kwrite [uti2@tahe uti2]$ crontab -e & [1] 2019 You (uti2) are not allowed to use this program (crontab) See crontab(1) for more information [1]+ Exit 1 crontab -e

Le fichier /etc/cron.deny nest consult que si le fichier /etc/cron.allow nexiste pas. Dans ce cas, un utilisateur est autoris utiliser la commande crontab sil nest pas prsent dans le fichier /etc/cron.deny. Une rgle de scurit pourrait tre qu'on n'autorise que l'utilisateur root utiliser le service crontab. Pour cela, on ne met que son nom dans le fichier /etc/cron.allow.

15.3

Les rpertoires hourly, dayly, monthly

Il existe trois rpertoires appels /etc/cron.hourly, /etc/cron.dayly, /etc/cron.weekly. Les scripts placs dans ces rpertoires seront excuts : Toutes les heures sils sont dans /etc/cron.hourly, au changement dheure Tous les jours sils sont dans /etc/cron.dayly, au changement de jour Toutes les semaines sils sont dans /etc/cron.weekly, au changement de semaine
5 4096 4096 4096 4096 309 4096 avr 4 09:30 /etc/cron.allow jui 20 2002 /etc/cron.d mar 2 14:05 /etc/cron.daily jun 23 2002 /etc/cron.hourly mar 2 13:52 /etc/cron.monthly mar 2 14:07 /etc/crontab mar 2 13:52 /etc/cron.weekly

[root@tahe uti1]# ls -ld /etc/cron* -rw-r--r-1 root root drwxr-xr-x 2 root root drwxr-xr-x 2 root root drwxr-xr-x 2 root root drwxr-xr-x 2 root root -rw-r--r-1 root root drwxr-xr-x 2 root root

Ainsi si nous plaons le script affichdate suivant dans /etc/cron.hourly sous lidentit root :
[root@tahe uti1]# ls -l /etc/cron.hourly total 4 -rw-r--r-1 root root 18 avr

4 09:34 affichdate

[root@tahe uti1]# more /etc/cron.hourly/affichdate date >>/tmp/date2

nous aurons un affichage de la date toutes les heures dans le fichier /tmp/date2.

Linux RH8

123/193

15.4

Affichages cran des scripts soumis crond

Un script soumis crond ne lira pas de donnes tapes au clavier (il ny a personne pour les taper la nuit) mais peut faire des affichages cran. Le serveur crond les interceptera et les enverra en courrier au propritaire du script excut. Il peut donc tre utile de faire des affichages cran dans un script soumis crond afin dtre averti de certains vnements, par exemple du bon droulement ou non du script. Faites par exemple le test suivant. Sous root, crez le fichier crontab suivant :
[root@tahe uti1]# more /var/spool/cron/root # DO NOT EDIT THIS FILE - edit the master and reinstall. # (/tmp/crontab.2375 installed on Fri Apr 4 09:53:44 2003) # (Cron version -- $Id: crontab.c,v 2.13 1994/01/17 03:20:37 vixie Exp $) */5 * * * * date

Le script prcdent crit la date et l'heure lcran toutes les 5 mn. Soumis crond, cette date/heure sera en fait envoye lutilisateur root par mail :

On se rappellera donc que tous les affichages qu'une commande ferait normalement l'cran sont envoys par ml celui qui a soumis les commandes au service crond. Il est donc assez facile de crer des systmes d'alerte :

on crit un script dans un langage quelconque qui surveille tel ou tel fonctionnement du systme et crit l'cran ses messages d'alerte on met ce script dans les commandes soumises au service crond. Les messages d'alerte seront alors reus par courrier.

Linux RH8

124/193

BASES DE DONNEES MySQL Postgres


Linux RH8

125/193

Nous prsentons maintenant l'installation de deux systmes de gestion de bases de donnes relationnels (SGBDR) :

MySQL est un systme de gestion de base de donnes apparu rcemment et qui a immdiatement t trs utilis dans le dveloppement Web sous Linux en conjonction notamment avec PHP. Il ne respecte pas l'intgralit de la norme SQL. Postgres est le premier SGBD qui ait t distribu avec les distributions Linux. Il respecte la norme SQL et peut tre un bon outil de formation aux SGBD en gnral et au langage SQL en particulier.

16
16.1

Le SGBDR MySQL
Introduction

MySQL est un systme de gestion de bases de donnes relationnelles gratuit distribu par la socit TCX. Performant, il permet de sinitier bon compte la gestion de bases de donnes relationnelles et leur interrogation avec le langage SQL (Structured Query Language). MySQL est couramment utilis sur les systmes linux en conjonction avec le langage PHP et le serveur Web Apache pour crer des sites Web dont le contenu est tir de bases de donnes. Il existe des versions de MySQL aussi bien pour Linux que pour Windows. On trouve galement pour cette base des pilotes ODBDC et JDBC qui permettent des applications crites dans des langages divers (C, C++, Java, VB, Perl, ) davoir accs au contenu dune base MySQL. O trouver MySQL ? L'URL du site officiel de MySQL est http://www.mysql.com. Pour Linux RedHat, il existe des paquetages RPM pour MySQL quon trouvera sur les CD. Sur le site officiel de MySQL, on trouvera de la documentation au format PDF. Il faut la tlcharger car elle savre indispensable ds quon veut comprendre comment grer les bases de donnes MySQL.

16.2

Installation de MySQL

Vous avez pu dj installer les paquetages MySQL l'installation initiale de Linux. Vous pouvez le vrifier avec la commande rpm (faire man rpm). Cette commande gre les paquetages RPM (Redhat Package Manager).
[root@tahe uti1]# rpm -qa | grep -i mysql perl-DBD-MySQL-2.1017-3 mysql-server-3.23.52-3 mysql-3.23.52-3

La commande rpm -qa permet d'avoir la liste des paquetages dj installs. La commande rpm -qa | grep -i mysql liste ceux qui contiennent la chane mysql. Dans l'exemple ci-dessus, Le serveur MySQL est install (mysql-server-3.23.52-3), le client pour ce serveur galement (mysql-3.23.52-3) ainsi qu'un module Perl d'accs la base MySQL. Si des RPM analogues ne sont pas prsents, c'est que MySQL n'est pas install. Lancez alors, en mode root, l'application de gestion des paquetages : Menu KDE/paramtres de systme/Paquetages :

Linux RH8

126/193

Cliquez sur le lien Dtails :

Vrifiez que le paquetage MySQL est coch. Par dfaut il ne l'est pas dans la distribution RH8. Ceci fait, cliquez OK autant de fois que ncessaire pour lancer l'installation. Les CD vous seront rclams.

16.3

Lancement du serveur mysqld

Comme beaucoup de services sous RedHat, il existe des scripts de lancement et d'arrt du service mysqld : [/etc/rc.d/init.d/mysqld start] pour lancer le service [/etc/rc.d/init.d/mysqld stop] pour arrter le service [/etc/rc.d/init.d/mysqld restart] pour enchaner arrt/dmarrage Lanons donc le service mysqld :
[root@tahe uti1]# /etc/rc.d/init.d/mysqld start Dmarrage de MySQL : [ OK ]

On aurait pu galement utiliser le gestionnaire de services : Menu KDE/Paramtres du serveur/Services :

16.4

La documentation de MySQL

La documentation de mysql est disponibles sous plusieurs formes :


man mysqld donnera des informations sur mysqld man mysql donnera des informations sur mysql

Une documentation au format HTML est galement disponible dans le dossier /usr/share/doc :

Linux RH8

127/193

Allez dans le dossier du client mysql par exemple :

Le document manual_toc.html ci-dessus est le point d'entre d'une documentation HTML bien faite. Utilisez-la pour dcouvrir comment utiliser les services de MySQL.

16.5

Utilisation du client MySQL

Nous prsentons ici un court tutoriel dutilisation de la base MySQL. Lutilisateur est invit lire la documentation PDF du produit. Au besoins, lancer le service mysqld si ce n'est dj fait puis vrifier que le dmon mysqld est actif.
[root@tahe uti1]# ps aux | grep -i mysql mysql 1275 0.0 1.8 28800 4656 pts/2 S 08:23 0:00 /usr/libexec/mysq

Il n'y a nul besoin d'tre root pour utiliser MySQL. Dans la suite, nous ferons les manipulations sous l'identit Unix uti1. Vous ferez attention au fait que le SGBD MySQL dfinit ses propres utilisateurs et qu'il n'y a aucun lien entre utilisateur Unix et utilisateur MySQL. // utiliser le client mysql
[uti1@tahe uti1]$ mysql Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 1 to server version: 3.23.52 Type 'help;' or '\h' for help. Type '\c' to clear the buffer. mysql> // // // // // // // mysql> help MySQL commands: Note that all text commands must be first on line and end with ';' help (\h) Display this help. les commandes tapes au clavier seront maintenant excutes par le programme cient mysql. Les commandes sont archives et rcuprables avec les flches [HAUT] et [BAS] du clavier. les commandes se terminent par le caractre ; lorsque mysql affiche le caractre ->, cest que le ; na pas t tap il faut alors continuer la commande - la saisie se terminera par lmission du caractre ; de fin de commande.

Linux RH8

128/193

? clear connect edit ego exit go nopager notee pager print quit rehash source status tee use

(\?) (\c) (\r) (\e) (\G) (\q) (\g) (\n) (\t) (\P) (\p) (\q) (\#) (\.) (\s) (\T) (\u)

Synonym for `help'. Clear command. Reconnect to the server. Optional arguments are db and host. Edit command with $EDITOR. Send command to mysql server, display result vertically. Exit mysql. Same as quit. Send command to mysql server. Disable pager, print to stdout. Don't write into outfile. Set PAGER [to_pager]. Print the query results via PAGER. Print current command. Quit mysql. Rebuild completion hash. Execute a SQL script file. Takes a file name as an argument. Get status information from the server. Set outfile [to_outfile]. Append everything into given outfile. Use another database. Takes database name as argument.

mysql> show databases; // affiche les bases de donnes dj cres +----------+ | Database | +----------+ | mysql | | test | +----------+ 2 rows in set (0.00 sec) mysql> create database commerce; ERROR 1044: Access denied for user: '@localhost' to database 'commerce'

Nous avons voulu crer une base de donnes (un ensemble de tables) appele commerce et le droit nous en a t refus. vrifions notre identit MySQL :
mysql> select user(); +----------------+ | user() | +----------------+ | uti1@localhost | +----------------+

Nous sommes identifis comme l'utilisateur uti1 et probablement que la base MySQL n'a pas dans ses tables d'utilisateurs quelqu'un qui s'appelle uti1. Dconnectons-nous et reconnectons-nous de nouveau, cette fois sous l'identit MySQL root. Le serveur MySQL a en effet par dfaut un utilisateur portant ce nom. C'est le super-utilisateur du SGBD MySQL :
mysql> exit Bye [uti1@tahe uti1]$ mysql --user=root Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 2 to server version: 3.23.52 Type 'help;' or '\h' for help. Type '\c' to clear the buffer. mysql> select user(); +----------------+ | user() | +----------------+ | root@localhost | +----------------+

Nous sommes le super-utilisateur. Crons la base commerce :


mysql> create database commerce; Query OK, 1 row affected (0.10 sec

Crons un utilisateur mysqluti1 qui aurait tous les droits sur la base commerce :
mysql> grant all privileges on commerce.* to 'mysqluti1'@'%' identified by 'azerty'; Query OK, 0 rows affected (0.21 sec) mysql> grant all privileges on commerce.* to 'mysqluti1'@'localhost' identified by 'azerty'; Query OK, 0 rows affected (0.01 sec)

Nous avons accord (grant) tous les privilges sur la base commerce et son contenu (commerce.*) un utilisateur appel mysqluti1 qui pourra se connecter localement ('mysqluti1'@'localhost') ou distance de n'importe quelle machine Linux RH8 129/193

('mysqluti1'@'localhost'). Il sera identifi par le mot de passe azerty. On voit que les droits s'appliquent un utilisateur qui se connecte partir d'une machine donne (syntaxe 'user'@'machine'). Dconnectons-nous pour nous connecter la base commerce sous le nom mysqluti1 :
mysql> exit Bye [uti1@tahe uti1]$ mysql --user=mysqluti1 --database=commerce -p Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 5 to server version: 3.23.52 Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

L'option -p de la commande mysql indique qu'un mot de passe doit tre demand (ici azerty). Vrifions notre identit :
mysql> select user(); +---------------------+ | user() | +---------------------+ | mysqluti1@localhost | +---------------------+

Vrifions nos droits :


mysql> show databases; +----------+ | Database | +----------+ | commerce | | mysql | | test |

La commande ci-dessus montre la nouvelle base commerce. Essayons de travailler (use) avec la base mysql qui est la base rserve root :
mysql> use mysql; ERROR 1044: Access denied for user: 'mysqluti1@localhost' to database 'mysql'

L'accs est interdit. C'est la moindre des choses. Aucun utilisateur ne devrait avoir accs la base mysql. C'est l'utilisateur root qui a fix le mot de passe de l'utilisateur mysqluti1. Comment celui-ci peut-il changer son mot de passe ?
mysql> set password=password('abcd'); Query OK, 0 rows affected (0.00 sec) mysql> exit Bye [uti1@tahe uti1]$ mysql --user=mysqluti1 --database=commerce --password=abcd Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 7 to server version: 3.23.52 Type 'help;' or '\h' for help. Type '\c' to clear the buffer. mysql>

La commande set password=password('abcd') a permis l'utilisateur mysqluti1 de fixer son mot de passe 'abcd'. On voit qu'il arrive se reconnecter avec ce nouveau mot de passe. Ici on a utilis une variante en passant le mot de passe sur la ligne de commande. C'est dconseill car il peut alors tre intercept. Par dfaut, le super-utilisateur root de MySQL n'a pas de mot de passe. L'une des premires chose faire est donc de lui en fixer un :
[uti1@tahe uti1]$ mysql --user=root Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 8 to server version: 3.23.52 Type 'help;' or '\h' for help. Type '\c' to clear the buffer. mysql> set password=password('azerty'); Query OK, 0 rows affected (0.00 sec) mysql> exit

Linux RH8

130/193

Bye [uti1@tahe uti1]$ mysql --user=root --password='azerty' Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 9 to server version: 3.23.52 Type 'help;' or '\h' for help. Type '\c' to clear the buffer. mysql>

Maintenant les prparatifs de base sont termins. On se reconnecte de nouveau sous l'identit mysqluti1 aprs avoir remis son mot de passe azerty pour s'en souvenir plus facilement :
[uti1@tahe uti1]$ mysql --user=mysqluti1 --database=commerce --password=azerty Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 11 to server version: 3.23.52 Type 'help;' or '\h' for help. Type '\c' to clear the buffer. mysql>

Vrifions sur quelle base nous sommes positionns (notion de base courante) :
mysql> select database(); +------------+ | database() | +------------+ | commerce | +------------+

mysql> show tables; // affiche les tables de la base courante Empty set (0.00 sec) mysql> create table articles (code char(4), nom char(20), prix decimal(10,2),stock integer); // cre une table articles Query OK, 0 rows affected (0.00 sec) mysql> show tables; // vrification +--------------------+ | Tables in commerce | +--------------------+ | articles | +--------------------+ 1 row in set (0.00 sec) mysql> create table clients (code char(4), nom char(20)); // cre une table clients Query OK, 0 rows affected (0.01 sec) mysql> show tables; +--------------------+ | Tables in commerce | +--------------------+ | articles | | clients | +--------------------+ 2 rows in set (0.00 sec) mysql> create table ventes (codeClient char(4), codeArticle char(4), quantite integer); // table des ventes Query OK, 0 rows affected (0.00 sec) mysql> show tables; +--------------------+ | Tables in commerce | +--------------------+ | articles | | clients | | ventes | +--------------------+ 3 rows in set (0.00 sec) mysql> describe articles; // affiche la structure de la table articles

Linux RH8

131/193

+-------+---------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------+---------------+------+-----+---------+-------+ | code | char(4) | YES | | NULL | | | nom | char(20) | YES | | NULL | | | prix | decimal(10,2) | YES | | NULL | | | stock | int(11) | YES | | NULL | | +-------+---------------+------+-----+---------+-------+ 4 rows in set (0.00 sec) mysql> describe clients; // structure de la table clients +-------+----------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------+----------+------+-----+---------+-------+ | code | char(4) | YES | | NULL | | | nom | char(20) | YES | | NULL | | +-------+----------+------+-----+---------+-------+ 2 rows in set (0.00 sec) mysql> describe ventes; // structure de la table ventes +-------------+---------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------------+---------+------+-----+---------+-------+ | codeClient | char(4) | YES | | NULL | | | codeArticle | char(4) | YES | | NULL | | | quantite | int(11) | YES | | NULL | | +-------------+---------+------+-----+---------+-------+ 3 rows in set (0.00 sec) mysql> insert into articles (code,nom,prix,stock) values ('a001','article1',1000,100); // insertion d'une ligne dans la table articles Query OK, 1 row affected (0.00 sec) mysql> mysql> mysql> mysql> insert insert insert insert into into into into articles articles articles articles (code,nom,prix,stock) (code,nom,prix,stock) (code,nom,prix,stock) (code,nom,prix,stock) values values values values ('a002','article2',2000,200); ('a003','article3',3000,300); ('a004','article4',4000,400); ('a005','article5',5000,500);

mysql> select * from articles; // affiche le contenu de la table articles +------+----------+---------+-------+ | code | nom | prix | stock | +------+----------+---------+-------+ | a001 | article1 | 1000.00 | 100 | | a002 | article2 | 2000.00 | 200 | | a003 | article3 | 3000.00 | 300 | | a004 | article4 | 4000.00 | 400 | | a005 | article5 | 5000.00 | 500 | +------+----------+---------+-------+ 5 rows in set (0.00 sec) mysql> insert into clients (code,nom) values ('c001','client1'); // ajoute une ligne dans la table clients Query OK, 1 row affected (0.00 sec) mysql> insert into clients (code,nom) values ('c002','client2'); mysql> insert into clients (code,nom) values ('c003','client3'); mysql> select * from clients; // contenu de la table clients +------+---------+ | code | nom | +------+---------+ | c001 | client1 | | c002 | client2 | | c003 | client3 | +------+---------+ 3 rows in set (0.01 sec) mysql> insert into ventes (codeClient, codeArticle, quantite) values ('c001','a003',10); // le client c001 a achet 10 articles a003 Query OK, 1 row affected (0.00 sec) // on fait d'autres insertions dans la mysql> insert into ventes (codeClient, mysql> insert into ventes (codeClient, mysql> insert into ventes (codeClient, mysql> insert into ventes (codeClient, mysql> insert into ventes (codeClient, table ventes codeArticle, codeArticle, codeArticle, codeArticle, codeArticle, quantite) quantite) quantite) quantite) quantite) values values values values values ('c001','a002',5); ('c002','a002',8); ('c002','a001',2); ('c003','a001',20); ('c003','a005',12);

Linux RH8

132/193

mysql> select * from ventes; // les ventes effectues +------------+-------------+----------+ | codeClient | codeArticle | quantite | +------------+-------------+----------+ | c001 | a003 | 10 | | c001 | a002 | 5 | | c002 | a002 | 8 | | c002 | a001 | 2 | | c003 | a001 | 20 | | c003 | a005 | 12 | +------------+-------------+----------+ 6 rows in set (0.00 sec) // quelques interrogations mysql> select nom, prix from articles; // seulement certaines colonnes +----------+---------+ | nom | prix | +----------+---------+ | article1 | 1000.00 | | article2 | 2000.00 | | article3 | 3000.00 | | article4 | 4000.00 | | article5 | 5000.00 | +----------+---------+ 5 rows in set (0.00 sec) mysql> select nom, prix from articles order by prix desc; // idem dans l'ordre dcroissant des prix +----------+---------+ | nom | prix | +----------+---------+ | article5 | 5000.00 | | article4 | 4000.00 | | article3 | 3000.00 | | article2 | 2000.00 | | article1 | 1000.00 | +----------+---------+ 5 rows in set (0.00 sec) mysql> select nom, prix, stock from articles where stock<300 order by prix desc; // idem mais seulement avec les lignes o stock<300 +----------+---------+-------+ | nom | prix | stock | +----------+---------+-------+ | article2 | 2000.00 | 200 | | article1 | 1000.00 | 100 | +----------+---------+-------+ 2 rows in set (0.00 sec) mysql> select nom, prix, stock from articles where stock<300 and prix<2000 order by prix desc; // idem mais on a rajout la condition prix<2000 +----------+---------+-------+ | nom | prix | stock | +----------+---------+-------+ | article1 | 1000.00 | 100 | +----------+---------+-------+ 1 row in set (0.00 sec) mysql> select * from ventes order by quantite; // les ventes par ordre croissant des quantits +------------+-------------+----------+ | codeClient | codeArticle | quantite | +------------+-------------+----------+ | c002 | a001 | 2 | | c001 | a002 | 5 | | c002 | a002 | 8 | | c001 | a003 | 10 | | c003 | a005 | 12 | | c003 | a001 | 20 | +------------+-------------+----------+ 6 rows in set (0.00 sec) mysql> select articles.nom,ventes.codeClient,ventes.quantite -> where articles.code=ventes.codeArticle -> order by quantite; from ventes,articles

Linux RH8

133/193

// idem mais avec les noms des clients - jointure entre 2 tables +----------+------------+----------+ | nom | codeClient | quantite | +----------+------------+----------+ | article1 | c002 | 2 | | article2 | c001 | 5 | | article2 | c002 | 8 | | article3 | c001 | 10 | | article5 | c003 | 12 | | article1 | c003 | 20 | +----------+------------+----------+ 6 rows in set (0.00 sec) mysql> select articles.nom article ,ventes.codeClient client,ventes.quantite from ventes, articles -> where articles.code=ventes.codeArticle -> order by quantite; // idem mais avec des alias pour les colonnes (article, client) +----------+--------+----------+ | article | client | quantite | +----------+--------+----------+ | article1 | c002 | 2 | | article2 | c001 | 5 | | article2 | c002 | 8 | | article3 | c001 | 10 | | article5 | c003 | 12 | | article1 | c003 | 20 | +----------+--------+----------+ 6 rows in set (0.00 sec) mysql> select articles.nom article, clients.nom client, ventes.quantite -> from ventes, articles, clients -> where ventes.codeArticle=articles.code -> and ventes.codeClient=clients.code -> order by quantite; // on rajoute le nom du client +----------+---------+----------+ | article | client | quantite | +----------+---------+----------+ | article1 | client2 | 2 | | article2 | client1 | 5 | | article2 | client2 | 8 | | article3 | client1 | 10 | | article5 | client3 | 12 | | article1 | client3 | 20 | +----------+---------+----------+ 6 rows in set (0.01 sec) // quelques mises jour mysql> select nom, prix from articles; // tat actuel des prix +----------+---------+ | nom | prix | +----------+---------+ | article1 | 1000.00 | | article2 | 2000.00 | | article3 | 3000.00 | | article4 | 4000.00 | | article5 | 5000.00 | +----------+---------+ 5 rows in set (0.00 sec) mysql> update articles set prix=prix*1.1; // augmente les prix de 10% Query OK, 5 rows affected (0.00 sec) Rows matched: 5 Changed: 5 Warnings: 0 mysql> select nom, prix from articles; // vrification +----------+---------+ | nom | prix | +----------+---------+ | article1 | 1100.00 | | article2 | 2200.00 | | article3 | 3300.00 | | article4 | 4400.00 |

Linux RH8

134/193

| article5 | 5500.00 | +----------+---------+ 5 rows in set (0.00 sec) mysql> update articles set prix=prix+1000 where prix>3000; // une hausse pour les articles dont le prix est >3000 Query OK, 3 rows affected (0.00 sec) Rows matched: 3 Changed: 3 Warnings: 0 mysql> select nom, prix from articles; // vrification +----------+---------+ | nom | prix | +----------+---------+ | article1 | 1100.00 | | article2 | 2200.00 | | article3 | 4300.00 | | article4 | 5400.00 | | article5 | 6500.00 | +----------+---------+ 5 rows in set (0.01 sec) mysql> delete from articles where nom='article4'; // suppression article 4 Query OK, 1 row affected (0.00 sec) mysql> select nom, prix from articles; // vrification +----------+---------+ | nom | prix | +----------+---------+ | article1 | 1100.00 | | article2 | 2200.00 | | article3 | 4300.00 | | article5 | 6500.00 | +----------+---------+ 4 rows in set (0.00 sec) // on quitte mysql> quit Bye

16.6

Poursuivre

Il est maintenant temps de lire la documentation de MySQL au format PDF que vous trouverez sur les sites tels que http://www.mysql.com et ses sites miroirs.

17
17.1

Le SGBDR POSTGRES
Introduction

Postgres est un systme de gestion de bases de donnes relationnelles gratuit livr en standard avec les distributions linux Redhat. Vis vis de MySQL, ce SGBD offre l'avantage de respecter la norme SQL dans son intgralit. Par ailleurs, elle offre la notion de transaction que n'offre pas MySQL (mai 2003). Il existe des versions de Postgres aussi bien pour Linux que pour Windows. On trouve galement pour cette base des pilotes ODBDC et JDBC qui permettent des applications crites dans des langages divers (C, C++, Java, VB, Perl, ) davoir accs au contenu dune base Postgres. O trouver Postgres ? L'URL du site officiel de Postgres est http://www.postgresql.org. Pour Linux RedHat, il existe des paquetages RPM pour Postgres quon trouvera sur les CD.

17.2

Installation de Postgres

Vous avez pu dj installer les paquetages Postgres l'installation initiale de Linux. Vous pouvez le vrifier avec la commande rpm (faire man rpm). Cette commande gre les paquetages RPM (Redhat Package Manager).
[root@tahe uti1]# rpm -qa | grep -i postgres

Linux RH8

135/193

postgresql-7.2.2-1 postgresql-server-7.2.2-1 postgresql-libs-7.2.2-1

Dans l'exemple ci-dessus, Le serveur Postgres est install (postgresql-server-7.2.2-1), le client pour ce serveur galement 'postgresql-7.2.2-1) ainsi que les bibliothques ncessaires Postgres (postgresql-libs-7.2.2-1). Si des RPM analogues ne

sont pas prsents, c'est que Postgres n'est pas install. Lancez alors, en mode root, l'application de gestion des paquetages : Menu KDE/paramtres de systme/Paquetages et suivez la mthode dj prsente pour installer les paquetages de MySQL.

17.3

La documentation de Postgres

La documentation de Postgres est disponibles sous plusieurs formes :


man postgres donnera des informations sur le SGBDR Postgres man psql donnera des informations sur le client sql livr avec Postgres

Une documentation au format HTML est galement disponible dans le dossier /usr/share/doc :

Allez dans le dossier postgresql :

Allez dans le dossier html et ouvre le fichier index.html :

Le document ci-dessus est le point d'entre de la documentation HTML qui vous permettra de matriser POSTGRES.

Linux RH8

136/193

17.4

Lancement du serveur postgres

Comme beaucoup de services sous RedHat, il existe des scripts de lancement et d'arrt du service postgres : [/etc/rc.d/init.d/postgres start] pour lancer le service [/etc/rc.d/init.d/postgres stop] pour arrter le service [/etc/rc.d/init.d/postgres restart] pour enchaner arrt/dmarrage Lanons le service postgres :
[root@tahe uti1]# /etc/rc.d/init.d/postgresql start Starting postgresql service: [ OK ]

On aurait ou galement utiliser le gestionnaire de services : Menu KDE/Paramtres du serveur/Services.

17.5

L'utilisateur Unix postgres

A l'installation de Postgres, est cr un utilisateur unix appel postgres et appartenant au groupe postgres :
[root@tahe uti1]# id postgres uid=26(postgres) gid=26(postgres) groupes=26(postgres) [root@tahe uti1]# grep -i postgres /etc/passwd postgres:x:26:26:PostgreSQL Server:/var/lib/pgsql:/bin/bash [root@tahe uti1]# grep -i postgres /etc/group postgres:x:26:

Cet utilisateur particulier est le super-utilisateur du SGBDR POSTGRES. Il aura tous les droits sur tous les objets du SGBDR. Commenons par lui donner un mot de passe (azerty) :
[root@tahe uti1]# passwd postgres Changing password for user postgres. New password: Retype new password: passwd: all authentication tokens updated successfully.

17.6

Premire utilisation du client psql

Crons une session client-serveur avec le serveur POSTGRES l'aide du client psql. Tout d'abord, prenons l'identit de l'utilisateur postgres :
[uti1@tahe uti1]$ su - postgres Password: -bash-2.05b$ whoami postgres

Le client psql est l'outil standard de travail en mode texte avec le sgbdr postgres. On fera man psql pour avoir des informations sur cet outil. L'option -l permet d'avoir la liste des bases de donnes :
-bash-2.05b$ psql -l Liste des bases de donnes Nom | Propritaire | Encodage -----------+---------------+----------template0 | postgres | SQL_ASCII template1 | postgres | SQL_ASCII

On voit qu'il existe dj deux bases de donnes proprit de l'utilisateur postgres. On remarquera ici que l'utilisateur postgres en question, est un utilisateur du sgbdr et non non celui du systme unix. L'installation des RPM de Postgres a donc cr deux bases de donnes qui serviront de modles lors de la cration de nouvelles bases. O sont-elles stockes ? Dans l'installation faite avec des paquetages RPM sous RH8, le dossier de postgres est /var/lib/pgsql/data :
[root@tahe uti1]# ls -l /var/lib/pgsql/data/

Linux RH8

137/193

total 60 drwx-----drwx------rw-r--r--rw-r--r-drwx------rw-------rw-------rw------drwx------rw-------rw-------

6 2 1 1 2 1 1 1 2 1 1

postgres postgres postgres postgres postgres postgres postgres postgres postgres postgres postgres

postgres postgres postgres postgres postgres postgres postgres postgres postgres postgres postgres

4096 4096 38 19 4096 10219 1250 4 4096 3848 20

avr avr avr avr avr avr avr avr avr avr avr

6 7 6 6 6 6 6 6 6 6 7

14:32 09:09 14:20 14:19 10:38 14:40 10:38 10:38 10:38 10:38 08:56

base global password password.bk pg_clog pg_hba.conf pg_ident.conf PG_VERSION pg_xlog postgresql.conf postmaster.opts

Le script /etc/rc.d/init.d/postgres travaille avec les bases de donnes situes sous ce dossier. Pour arrter le sgbd, on excutera la commande :
[root@tahe uti1]# /etc/rc.d/init.d/postgresql stop Arrt du service postgresql : [ OK ]

Si l'installation ne se fait pas avec des RPM, ces bases de donnes initiales ne sont en gnral pas cres. La procdure de cration de ces bases initiales est alors la suivante ( ne pas faire dans notre exemple).

17.7

Cration des premires bases de donnes (installation faite sans RPM)

Lorsque Postgres a t install sans base de donnes pr-configure, il faut en crer une avant de lancer le SGBDR. Cela se fait avec la commande initdb (faire man initdb). Cette premire base de donnes servira ensuite de modle aux suivantes. Une base de donnes peut tre cre avec la commande unix createdb (faire man createdb). Ainsi construite la base de donnes appartiendra un utilisateur POSTGRES portant le mme nom que l'utilisateur unix ayant mis la commande. Il en est de mme avec initdb qui cre la toute premire base de donnes. Celle-ci appartiendra l'utilisateur qui mettra la commande. Celui-ci peut tre n'importe qui. On utilise habituellement l'utilisateur unix postgres. La syntaxe de initdb pour crer la premire base est : initdb -D <dir> o <dir> est le rpertoire sous lequel sera cre la base. Les dossiers et fichiers qui y seront stocks le seront sous le nom de celui qui excute la commande. <dir> sera ici /usr/local/postgres. Nous le crons et le donnons l'utilisateur postgres :
[root@tahe uti1]# mkdir /usr/local/postgres [root@tahe uti1]# chown postgres:postgres /usr/local/postgres/ [root@tahe uti1]# ls -ld /usr/local/postgres/ drwx-----6 postgres postgres 4096 avr 6 10:45 /usr/local/postgres/

Ceci fait, nous prenons l'identit de l'utilisateur postgres puis utilisons la commande initdb pour crer la premire base :
[root@tahe uti1]# su postgres -bash-2.05b$ initdb -D /usr/local/postgres/ The files belonging to this database system will be owned by user "postgres". This user must also own the server process. Fixing permissions on existing directory /usr/local/postgres/... ok creating directory /usr/local/postgres//base... ok creating directory /usr/local/postgres//global... ok creating directory /usr/local/postgres//pg_xlog... ok creating directory /usr/local/postgres//pg_clog... ok creating template1 database in /usr/local/postgres//base/1... ok creating configuration files... ok initializing pg_shadow... ok enabling unlimited row size for system tables... ok creating system views... ok loading pg_description... ok vacuuming database template1... ok copying template1 to template0... ok Success. You can now start the database server using:

Linux RH8

138/193

or

/usr/bin/postmaster -D /usr/local/postgres/ /usr/bin/pg_ctl -D /usr/local/postgres/ -l logfile start

Les lignes ci-dessus, montrent que la cration de la base de donnes a russi. Le contenu du dossier racine des donnes de postgres est le suivant :
[root@tahe uti1]# ls -l /usr/local/postgres/ total 40 drwx-----4 postgres postgres 4096 avr drwx-----2 postgres postgres 4096 avr drwx-----2 postgres postgres 4096 avr -rw------1 postgres postgres 10168 avr -rw------1 postgres postgres 1250 avr -rw------1 postgres postgres 4 avr drwx-----2 postgres postgres 4096 avr -rw------1 postgres postgres 3848 avr

6 6 6 6 6 6 6 6

10:45 10:45 10:45 10:45 10:45 10:45 10:45 10:45

base global pg_clog pg_hba.conf pg_ident.conf PG_VERSION pg_xlog postgresql.conf

Comme indiqu dans les affichages de la commande initdb, le service postgres est lanc sous l'identit postgres avec la commande pg_ctl (faire man pg_ctl et man postmaster) :
-bash-2.05b$ id uid=26(postgres) gid=26(postgres) groupes=26(postgres) -bash-2.05b$ pg_ctl -D /usr/local/postgres/ start postmaster successfully started DEBUG: database system was shut down at 2003-04-07 09:16:05 CEST DEBUG: checkpoint record is at 0/109724 DEBUG: redo record is at 0/109724; undo record is at 0/0; shutdown TRUE DEBUG: next transaction id: 92; next oid: 16556 DEBUG: database system is ready

Nous pouvons vrifier les bases de donnes disponibles :


-bash-2.05b$ psql -l Liste des bases de donnes Nom | Propritaire | Encodage -----------+---------------+----------template0 | postgres | SQL_ASCII template1 | postgres | SQL_ASCII

Pour arrter la base, nous utilisons de nouveau la commande pg_ctl :


-bash-2.05b$ pg_ctl -D /usr/local/postgres/ stop DEBUG: smart shutdown request DEBUG: shutting down waiting for postmaster to shut down.....DEBUG: database system is shut down done postmaster successfully shut down

17.8

Le client psql

Dcouvrons maintenant le client psql. Il faut se connecter sous l'identit d'un utilisateur dclar dans postgres. Au dbut, nous n'avons gure le choix. Seul l'utilisateur postgres existe. Il y a plusieurs faons de lancer psql (faire man psql) :
psql psql -U <Y> psql -U <base> <Y> -d

Si l'utilisateur unix qui lance la commande est X, cela revient se connecter une base X sous le nom X Si l'utilisateur unix qui lance la commande est X, cela revient se connecter une base X sous le nom <Y> Connecte une base <base> sous le nom <Y>

-bash-2.05b$ psql psql: FATAL 1: Database "postgres" does not exist in the system catalog.

Nous sommes sous l'identit unix postgres. Ci-dessus, psql cherche donc se connecter une base appele postgres qui n'existe pas. D'o l'erreur. Linux RH8 139/193

-bash-2.05b$ psql -d template1 Bienvenu psql, l'interface interactif de PostgreSQL. Tapez: \copyright pour l'information de copyright \h pour l'aide-mmoire sur les commandes SQL \? pour l'aide-mmoire sur les commandes internes \g ou point-virgule pour excuter une requte \q pour quitter

template1=#

Ci-dessus on a prcis une base existante mais pas d'utilisateur. psql va donc chercher un utilisateur portant le nom de l'utilisateur unix qui lance la commande (ici postgres). Il le trouve. On remarquera qu'il ne demande pas de mot de passe. Faites \q pour quitter. Ci-dessous, on fait la mme chose en prcisant explicitement le nom de l'utilisateur postgres :
-bash-2.05b$ psql -d template1 -U postgres Bienvenu psql, l'interface interactif de PostgreSQL. Tapez: \copyright pour l'information de copyright \h pour l'aide-mmoire sur les commandes SQL \? pour l'aide-mmoire sur les commandes internes \g ou point-virgule pour excuter une requte \q pour quitter

template1=#

Faisons \q pour quitter et faisons la mme chose avec l'identit unix uti1 par exemple :
[uti1@tahe uti1]$ psql -U postgres -d template1 psql: FATAL 1: IDENT authentication failed for user "postgres"

La connexion a chou. Nous verrons pourquoi ultrieurement. Reconnectons-nous partir du compte unix postgres :
[uti1@tahe uti1]$ su - postgres Password: -bash-2.05b$ psql -d template1 Bienvenu psql, l'interface interactif de PostgreSQL. Tapez: \copyright pour l'information de copyright \h pour l'aide-mmoire sur les commandes SQL \? pour l'aide-mmoire sur les commandes internes \g ou point-virgule pour excuter une requte \q pour quitter

template1=#

A l'aide du client psql, nous nous sommes connects la base de donnes initiale qui s'appelle template1. L'invite de psql indique le nom de la base courante. Pour

connatre la liste des commandes internes, tapez \? connatre la liste des commandes SQL, tapez \h avoir de l'aide sur une commande SQL prcise, tapez \h commande quitter, tapez \q

Listons les commandes internes :


\a toggle between unaligned and aligned output mode \c[onnect] [BASE|- [UTILISATEUR]] connecte une base de donnes nouveau ( prsent template1) \C TITRE fixe le titre des tables \cd [REPERT] remplace le rpertoire courant \copy ... perform SQL COPY with data stream to the client host \copyright show PostgreSQL usage and distribution terms \d TABLE dcris table (ou vue, index, squence) \d{t|i|s|v}... affiche des tables/index/squences/vues \d{p|S|l} affiche des privilges d'accs, tables de systme ou objets grands \da affiche des fonctions d'agrgation \dd NOM affiche les commentaires sur table, type, fonction ou operateur \df affiche des fonctions \do affiche des operateurs \dT affiche des types de donne

Linux RH8

140/193

\e FICHIER dite le tampon de requte ou le fichier par un diteur externe \echo TEXTE cris texte sur la sortie standard \encoding ENCODAGE fixe l'encodage du client \f CHAINE fixe le sparateur de champs \g FICHIER excute commande SQL (et cris les rsultats dans une fichier ou |tube) \h NOM aide-mmoire pour les commandes SQL, * pour toutes les commandes \H toggle HTML output mode (currently dsactiv) \i FICHIER excute les commandes du fichier \l affiche une liste des bases de donnes disponibles \lo_export, \lo_import, \lo_list, \lo_unlink large object operations \o FICHIER cris les rsultats des requtes dans un fichier (ou |tube) \p affiche le contenu actuel du tampon de requte \pset VAR set table output option (VAR := {format|border|expanded| fieldsep|null|recordsep|tuples_only|title|tableattr|pager}) \q quitte psql \qecho TEXTE cris texte sur la sortie pour les rsultats des requtes (vois \o) \r fface le tampon de requte \s FILENAME print history or save it to file \set NAME VALUE set internal variable \t show only rows (currently dsactiv) \T TEXT set HTML table tag attributes \unset NAME unset (delete) internal variable \w FICHIER cris le contenu du tampon de requte dans un fichier \x toggle expanded output (currently dsactiv) \z affiche des privilges d'accs des tables \! [COMMAND] execute command in shell or start interactive shell

On lira attentivement cette liste de commandes. Pour avoir la liste des bases, tapons \l :
template1=# \l Liste des bases de donnes Nom | Propritaire | Encodage -----------+---------------+----------template0 | postgres | SQL_ASCII template1 | postgres | SQL_ASCII

Pour avoir la liste des commandes SQL, tapons \h :


template1=# \h Aide-mmoire disponible: ABORT ALTER GROUP ALTER TABLE ALTER USER ANALYZE BEGIN CHECKPOINT CLOSE CLUSTER COMMENT COMMIT COPY CREATE AGGREGATE CREATE CONSTRAINT TRIGGER CREATE DATABASE CREATE FUNCTION CREATE GROUP CREATE INDEX CREATE LANGUAGE CREATE OPERATOR CREATE RULE CREATE SEQUENCE CREATE TABLE

CREATE TABLE AS CREATE TRIGGER CREATE TYPE CREATE USER CREATE VIEW DECLARE DELETE DROP AGGREGATE DROP DATABASE DROP FUNCTION DROP GROUP DROP INDEX DROP LANGUAGE DROP OPERATOR DROP RULE DROP SEQUENCE DROP TABLE DROP TRIGGER DROP TYPE DROP USER DROP VIEW END EXPLAIN

FETCH GRANT INSERT LISTEN LOAD LOCK MOVE NOTIFY REINDEX RESET REVOKE ROLLBACK SELECT SELECT INTO SET SET CONSTRAINTS SET SESSION AUTHORIZATION SET TRANSACTION SHOW TRUNCATE UNLISTEN UPDATE VACUUM

Pour avoir de l'aide sur la commande create user :


template1=# \h create user Commande: CREATE USER Description: define a new database user account Syntaxe: CREATE USER username [ [ WITH ] option [ ... ] ] where option can be: SYSID uid | [ ENCRYPTED | UNENCRYPTED ] PASSWORD 'password'

Linux RH8

141/193

| | | |

CREATEDB | NOCREATEDB CREATEUSER | NOCREATEUSER IN GROUP groupname [, ...] VALID UNTIL 'abstime'

Pour avoir de l'aide sur la commande create database :


template1=# \h create database Commande: CREATE DATABASE Description: create a new database Syntaxe: CREATE DATABASE name [ WITH [ LOCATION = 'dbpath' ] [ TEMPLATE = template ] [ ENCODING = encoding ] ]

17.9

Cration de bases de donnes

Comme indiqu-dessus, crons deux bases de donnes appele db1 et db2 :


template1=# create database db1; CREATE DATABASE template1=# create database db2; CREATE DATABASE template1=# \l Liste des bases de donnes Nom | Propritaire | Encodage -----------+---------------+----------db1 | postgres | SQL_ASCII db2 | postgres | SQL_ASCII template0 | postgres | SQL_ASCII template1 | postgres | SQL_ASCII

On voit que toutes les bases sont proprit de l'utilisateur postgres. Crons une nouvelle base db3 puis supprimons-la :
template1=# create database db3; CREATE DATABASE template1=# \l Liste des bases de donnes Nom | Propritaire | Encodage -----------+---------------+----------db1 | postgres | SQL_ASCII db2 | postgres | SQL_ASCII db3 | postgres | SQL_ASCII template0 | postgres | SQL_ASCII template1 | postgres | SQL_ASCII (5 lignes) template1=# drop database db3; DROP DATABASE template1=# \l Liste des bases de donnes Nom | Propritaire | Encodage -----------+---------------+----------db1 | postgres | SQL_ASCII db2 | postgres | SQL_ASCII template0 | postgres | SQL_ASCII template1 | postgres | SQL_ASCII

17.10

Cration d'utilisateurs

Crons trois utilisateurs pguti1, pguti2, pguti3 qui n'auraient pas le droit de crer de bases (nocreatedb) ni d'utilisateurs (nocreateuser) :
template1=# create user pguti1 password 'pguti1' nocreatedb nocreateuser; CREATE USER template1=# create user pguti2 password 'pguti2' nocreatedb nocreateuser; CREATE USER template1=# create user pguti3 password 'pguti3' nocreatedb nocreateuser; CREATE USER

Linux RH8

142/193

Pour supprimer un utilisateur, on utilise la commande SQL drop user :


template1=# drop user pguti3

17.11

Authentification des utilisateurs

Dconnectons-nous de psql, et sous l'identit unix uti1, essayons de nous connecter la base db1 sous l'identit postgres pguti1 :
[uti1@tahe uti1]$ id uid=500(uti1) gid=500(groupe1) groupes=500(groupe1) [uti1@tahe uti1]$ psql -U pguti1 -d db1 psql: FATAL 1: IDENT authentication failed for user "pguti1"

On voit qu'il se produit une erreur. Il est temps maintenant de parler d'autentification des utilisateurs postgres. Celle-ci est configure par le fichier pg_hba.conf situ dans le dossier des donnes de postgres :
[root@tahe uti1]# ls -l /var/lib/pgsql/data/pg_hba.conf -rw------1 postgres postgres 10219 avr 6 14:40 /var/lib/pgsql/data/pg_hba.conf

On voit que ce fichier est proprit de l'utilisateur postgres. Prenez l'identit unix postgres et consultez le fichier pg_hba.conf avec kwrite par exemple. Lisez son contenu et positionnez-vous en fin de fichier :

La ligne non commente ci-dessus fixe les rgles d'authentification :


champ 1

machine partir de laquelle l'utilisateur se connecte : local : machine locale host : machine de l'internet doit suivre alors l'adresse IP des machines autorises avec leurs masques de rseau

champ 2

bases de donnes autorises : all : toutes sameuser : base portant le nom de l'utilisateur <dbname> : nom de la base

champ 3

type d'authentification : trust : pas d'autentification password, md5 : authentification par mot de passe ident sameuser : l'utilisateur unix doit porter le mme nom que l'utilisateur postgres

La ligne local all ident sameuser autorise tout utilisateur de la machine locale se connecter toute base de donnes dfinie dans postgres condition qu'un utilisateur de mme nom existe dans la base. Rappelons les conditions de notre chec de connexion : Linux RH8 143/193

[uti1@tahe uti1]$ id uid=500(uti1) gid=500(groupe1) groupes=500(groupe1) [uti1@tahe uti1]$ psql -U pguti1 -d db1 psql: FATAL 1: IDENT authentication failed for user "pguti1"

L'utilisateur unix uti1 essayait de se connecter. Or il n'existe pas d'utilisateur postgres appel uti1. D'o l'chec. Vrifions notre hypothse. Crons un utilisateur postgres uti1. Pour cela, prenons l'identit unix postgres et utilisons psql :
-bash-2.05b$ psql -d template1 Bienvenu psql, l'interface interactif de PostgreSQL. Tapez: \copyright pour l'information de copyright \h pour l'aide-mmoire sur les commandes SQL \? pour l'aide-mmoire sur les commandes internes \g ou point-virgule pour excuter une requte \q pour quitter

template1=# create user uti1 nocreatedb nocreateuser password 'uti1'; CREATE USER template1=# \q

Maintenons, prenons l'identit unix uti1 et essayons de nous connecter la base db1 de postgres :
[uti1@tahe uti1]$ psql -d db1 Bienvenu psql, l'interface interactif de PostgreSQL. Tapez: \copyright pour l'information de copyright \h pour l'aide-mmoire sur les commandes SQL \? pour l'aide-mmoire sur les commandes internes \g ou point-virgule pour excuter une requte \q pour quitter

db1=> \l Liste des bases de donnes Nom | Propritaire | Encodage -----------+---------------+----------db1 | postgres | SQL_ASCII db2 | postgres | SQL_ASCII template0 | postgres | SQL_ASCII template1 | postgres | SQL_ASCII (4 lignes) db1=>

Cette fois-ci, nous avons russi. Nous remarquerons que le mot de passe n'a pas t demand. Renforons la scurit en adoptant une nouvelle politique d'authentification :
#local local all all ident md5 sameuser

La nouvelle ligne signifie qu'un utilisateur peut se connecter de la machine locale (local) toute base de donnes (all) et qu'il devra fournir un mot de passe (md5). A la place de md5, on aurait pu choisir password. La technique md5 est plus scurise que a technique password pour les machines distantes car elle crypte le mot de passe avant de l'envoyer sur le rseau. Sauvegardons ce nouveau fichier de configuration et relanons le serveur postgres ( faire sous l'identit unix postgres par exemple ) :
-bash-2.05b$ pg_ctl -D /usr/local/postgres/ restart DEBUG: smart shutdown request DEBUG: shutting down waiting for postmaster to shut down.....DEBUG: database system is shut down done postmaster successfully shut down postmaster successfully started -bash-2.05b$ DEBUG: database system was shut down at 2003-04-07 11:32:21 CEST DEBUG: checkpoint record is at 0/12E7D4 DEBUG: redo record is at 0/12E7D4; undo record is at 0/0; shutdown TRUE DEBUG: next transaction id: 163; next oid: 16561 DEBUG: database system is ready

Maintenant, refaisons la connexion qui avait chou prcdemment :

Linux RH8

144/193

[uti2@tahe uti2]$ psql -U pguti1 -d db1 Mot de passe: Bienvenu psql, l'interface interactif de PostgreSQL. Tapez: \copyright pour l'information de copyright \h pour l'aide-mmoire sur les commandes SQL \? pour l'aide-mmoire sur les commandes internes \g ou point-virgule pour excuter une requte \q pour quitter

db1=>

Ici, c'est l'utilisateur unix uti2 qui tente de se connecter la base postgres db1 sous l'identit postgres pguti1. On voit qu'un mot de passe est demand (pguti1). La connexion russit. On peut aussi se connecter la base db2 :
db2=> \l Liste des bases de donnes Nom | Propritaire | Encodage -----------+---------------+----------db1 | postgres | SQL_ASCII db2 | postgres | SQL_ASCII template0 | postgres | SQL_ASCII template1 | postgres | SQL_ASCII db1=> \c db2 Vous tes maintainant connects la base de donnes db2.

Il serait sans doute pratique que les utilisateurs ne puissent se connecter qu' certaines bases. Faisons en sorte par exemple que l'utilisateur postgres pguti1 ne puisse se connecter qu' la base db1 et l'utilisateur pguti2 qu' la base db2. Pour ce faire, modifions de nouveau notre fichier de configuration pg_hba.conf :
#local all #local all local db1 md5 utidb1 local db2 md5 utidb2 ident md5 sameuser

Analysons la ligne local db1 md5 utidb1 :


local db1 md5 utidb1

connexion partir de la machine locale connexion la base db1 uniquement mot de passe exig nom d'un fichier contenant le nom des utilisateurs postgres autoriss se connecter la base db1, raison d'un nom par ligne. Le fichier doit tre dans le dossier des donnes de postgres.

[root@tahe uti1]# ls -l /var/lib/pgsql/data .... -rw------1 postgres postgres 10225 avr ... -rw------1 postgres postgres 7 avr -rw------1 postgres postgres 7 avr

7 11:39 pg_hba.conf 7 11:39 utidb1 7 11:39 utidb2

[root@tahe uti1]# more /var/lib/pgsql/data/utidb1 pguti1

On voit ici, que seul l'utilisateur postgres pguti1 est autoris se connecter la base db1. Vrifions :
[uti2@tahe uti2]$ psql -U pguti1 -d db1 Mot de passe: Bienvenu psql, l'interface interactif de PostgreSQL. Tapez: \copyright pour l'information de copyright \h pour l'aide-mmoire sur les commandes SQL \? pour l'aide-mmoire sur les commandes internes \g ou point-virgule pour excuter une requte \q pour quitter

db1-> \c db2 FATAL 1: Password authentication failed for user "pguti1" La connexion prcdente tait garde. db1->

Linux RH8

145/193

On voit ci-dessus que l'utilisateur unix uti2 a pu se connecter la base db1 sous l'identit postgres pguti1. Normal. Il a ensuite essay de se connecter la base db2 (syntaxe \c <database>). Il a chou. Nous avons donc cr un mcanisme permettant la connexion d'utilisateurs qu' certaines bases et ce moyennant un mot de passe.

17.12

Commandes SQL

Maintenant, nous abordons une partie plus classique, celle du langage SQL. Nous ne nous apesantirons pas, renvoyant le le lecteur l'exemple dvelopp pour le SGBD MySQL. Montrons cependant quelques exemples traits avec la base db1 :
// cration d'une table db1=> create table t1 (id int primary key, nom varchar(20)); NOTICE: CREATE TABLE / PRIMARY KEY will create implicit index 't1_pkey' for table 't1' CREATE // liste des tables db1=> \dt Liste des relations Nom | Type | Propritaire -----+-------+--------------t1 | table | pguti1 (1 ligne) // structure de la table t1 db1=> \d t1 Table t1 Colonne | Type | Modifications ---------+-----------------------+--------------id | integer | not null nom | character varying(20) | Primary key: t1_pkey

// quelques insertions
db1=> insert INSERT 16564 db1=> insert INSERT 16565 db1=> insert INSERT 16566 db1=> select id | nom ----+-----1 | nom1 2 | nom2 3 | nom3 into t1 values(1,'nom1'); 1 into t1 values(2,'nom2'); 1 into t1 values(3,'nom3'); 1 * from t1;

// gestion d'une transaction (commit/rollback)


db1=> begin transaction; BEGIN db1=> select * from t1; id | nom ----+-----1 | nom1 2 | nom2 3 | nom3 (3 lignes) db1=> delete from t1; DELETE 3 db1=> select * from t1; id | nom ----+----(0 lignes) db1=> rollback; ROLLBACK db1=> select * from t1; id | nom ----+-----1 | nom1 2 | nom2 3 | nom3

Linux RH8

146/193

On commence une transaction par begin transaction. Elle se termine soit par commit (la transaction est valide), soit par rollback (la transaction est annue). Ici, rollback nous a permis d'annuler la suppression de lignes qui avait t opre au cours de la transaction. Le lecteur est maintenant invit crer ses propres exemples.

Linux RH8

147/193

DEVELOPPER SOUS LINUX

Linux RH8

148/193

18

Outils de dveloppement

Nous prsentons ici quelques outils de dveloppement disponibles sous Linux. Nous prsentons aussi bien les langages de scripts utiles aux administrateurs que des langages compils tels C et C++. Nous terminons par le langage Java particulirement intressant pour sa portabilit. A chaque fois, nous ne prsentons qu'un test basique. Pour la plupart des tests, il y a nul besoin d'tre root. Prenez l'identit d'un utilisateur normal, uti1 par exemple.

18.1

Perl

Perl est install par dfaut avec Linux si vous avez pris l'option "Dveloppement". Avec un diteur de texte, construisez le programme suivant :
#!/usr/bin/perl print "coucou\n"; exit 0;

Sauvegardez-le sous le nom essai1.pl. On suppose par la suite qu'on est dans le rpertoire du programme :
[ls -l] total 16 -rw-r--r--

1 root

root

44 mai

9 07:28 essai1.pl

On donne le droit d'excution (x) notre programme :


[chmod u+x essai1.pl] [ls -l] total 16 -rwxr--r-1 root

root

44 mai

9 07:28 essai1.pl

Nous l'excutons :
[./essai1.pl] coucou

18.2

Python

Python est install par dfaut avec Linux si vous avez pris l'option "Dveloppement". Avec un diteur de texte, construisez le programme suivant :
#!/usr/bin/python print 'coucou\n'; exit;

Sauvegardez-le sous le nom essai1.py. On suppose par la suite qu'on est dans le rpertoire du programme :
[ls -l essai1.py] -rw-r--r-1 root root 44 mai 9 07:43 essai1.py

On donne le droit d'excution (x) notre programme :


[chmod u+x essai1.py] [ls -l essai1.py] -rwxr--r-1 root

root

44 mai

9 07:43 essai1.py

Nous l'excutons :
[./essai1.py] coucou

18.3
Linux RH8

C
149/193

Plusieurs compilateurs C sont installs par dfaut avec Linux si vous avez pris l'option "Dveloppement". Nous utiliserons le compilateur gcc. Avec un diteur de texte, construisez le programme suivant :
#include <stdio.h> int main(void){ puts("coucou"); return(0); }

Sauvegardez-le sous le nom essai1.c. On suppose par la suite qu'on est dans le rpertoire du programme :
[ls -l *.c] -rwxr-xr-x 1 root root 70 mai 9 07:39 essai1.c

On compile le programme :
[gcc -o essai1 essai1.c] // compile le source essai1.c pour produire l'excutable essai1 (-o)

On vrifie la prsence de l'excutable :


[ls -l essai1] -rwxr-xr-x 1 root root 13480 mai 9 07:39 essai1

On l'excute :
[./essai1] coucou

18.4

C++

Le compilateur g++ est install par dfaut avec Linux si vous avez pris l'option "Dveloppement". Avec un diteur de texte, construisez le programme suivant :
#include <iostream.h> void main(void){ cout << "coucou\n"; }

Sauvegardez-le sous le nom essai1.cpp. On suppose par la suite qu'on est dans le rpertoire du programme. On compile puis excute le programme :
[uti1@tahe c++]$ g++ -o essai1 -Wno-deprecated essai1.cpp [uti1@tahe c++]$ ls -l total 16 -rwxr-xr-x 1 uti1 groupe1 11346 avr 7 17:28 essai1 -rw-r--r-1 uti1 groupe1 61 avr 7 17:28 essai1.cpp [uti1@tahe c++]$ ./essai1 coucou

18.5

Java

Le langage java n'est pas install par dfaut lors de l'installation de Linux RH. On en trouve une version du domaine public l'url http://www.blackdown.org.

Linux RH8

150/193

Suivez le lien download ci-dessus. une liste de sites miroir est offerte. Choisissez l'un d'eux et la version de Java dsire :

Ici, nous avons choisi la version 1.4.1 du JDK. Il y a plusieurs versions du JDK. Nous choisissons le fichier j2sdk-1.4.1-01linux-i586-gcc3.2.bin. Une fois tlcharg, nous excutons ce fichier :
[root@tahe java]# ls -l -rw-r--r-1 root root 40813906 avr 7 18:10 j2sdk-1.4.1-01-linux-i586-gcc3.2.bin [root@tahe java]# ./j2sdk-1.4.1-01-linux-i586-gcc3.2.bin

L'arborescence java, dans l'exemple ci-dessus a t place dans le dossier /usr/local/j2sdk1.4.1 :


[root@tahe java]# ls -l /usr/local/j2sdk1.4.1/ total 10424 drwxr-xr-x 2 1000 1000 4096 fv 11 19:11 bin -rw-r--r-1 1000 1000 4431 fv 11 19:11 COPYRIGHT drwxr-xr-x 6 1000 1000 4096 fv 11 19:11 demo drwxr-xr-x 3 1000 1000 4096 fv 11 19:11 include -rw-r--r-1 1000 1000 4360 fv 11 19:11 INSTALL drwxr-xr-x 5 1000 1000 4096 fv 11 19:10 jre drwxr-xr-x 2 1000 1000 4096 fv 11 19:11 lib -rw-r--r-1 1000 1000 16955 fv 11 19:11 LICENSE drwxr-xr-x 4 1000 1000 4096 fv 11 19:11 man -rw-r--r-1 1000 1000 9510 fv 11 19:11 README -rw-r--r-1 1000 1000 16218 fv 11 19:11 README.html -rw-r--r-1 1000 1000 10567358 fv 11 19:11 src.zip

Pour tester votre installation, crivez le programme Java suivant qui crit coucou l'cran et sauvegardez-le sous le
nom coucou.java (le fichier doit porter le nom de la classe, ici coucou) :
import java.io.*; public class coucou{ public static void main(String args[]){ System.out.println("coucou"); System.exit(0); }

Compilez le programme coucou.java :


[uti1@tahe java]$ /usr/local/j2sdk1.4.1/bin/javac coucou.java

puis excutez-le : Linux RH8 151/193

[uti1@tahe java]$ /usr/local/j2sdk1.4.1/bin/java coucou coucou

Cette version du jdk est suffisante pour construire n'importe quelle application. Cependant, si vous tes habitu dvelopper dans un environnement de dveloppement graphique (Delphi, JBuilder, C++ Builder, Visual Studio,...) vous trouverez peut-tre "rustique" l'environnement de dveloppement du jdk. La socit Inprise a port sur Linux son environnement de dveloppement Java appel Jbuilder. Nous prsentons maintenant l'installation de cet environnement.

18.6

Jbuilder

Recherchons Jbuilder avec Google :

Nous allons sur le site de Borland :

Suivons les liens Jbuilder Personal jusqu' la page de tlchargement :

Linux RH8

152/193

Suivons le lien Personal. Une demande d'authentification est faite. Si on est nouveau, il faut remplir un formulaire. Si on est un utilisateur enregistr, on donne son adresse ml et son mot de passe. Cette tape est obligatoire. Le produit Jbuilder ncessite une cl d'activation qui est envoye par ml.

Aprs avoir donn moult renseignements, on finit par arriver la page de tlchargement :

Ici, nous tlchargeons la version pour linux. Par ailleurs, pour obtenir la documentation et des exemples, il faut suivre le lien separate download ci-dessus. Au final, nous obtenons les trois fichiers suivants :

Linux RH8

153/193

Chaque fichier est dcompress :


[root@tahe downloads]# tar xvzf jb8_linux.tar.gz [root@tahe downloads]# tar xvzf jb8samples.tar.gz [root@tahe downloads]# tar xvzf jb8_linux.tar.gz

Cela donne naissance trois dossiers :


[root@tahe downloads]# ls -ld jb8* drwxr-xr-x 2 nobody nobody drwxr-xr-x 2 nobody nobody drwxr-xr-x 2 nobody nobody 4096 avr 4096 avr 4096 avr 8 13:48 jb8docs 8 13:48 jb8_linux 8 13:48 jb8samples

Le dosssier jb8_linux permet l'installation de Jbuilder :


[root@tahe downloads]# cd jb8_linux [root@tahe jb8_linux]# ls -l total 85612 ... -rwxr-xr-x 1 nobody nobody 87262327 dc ...

9 17:00 per_install.bin

Le script per_install.bin permet l'installation du produit :


[root@tahe downloads]# ./per_install.bin

Une installation l'aide d'un assistant graphique s'ensuit. On pourra accepter les valeurs proposes par dfaut notamment le dossier d'installation (ici /opt/JBuilder8). On procdera de mme pour installer l'aide de jbuilder et les exemples. A chaque fois, il y a un script per_install.bin excuter. Le contenu du dossier de Jbuilder ressemble ce qui suit :
[root@tahe jb8_linux]# ls -l /opt/JBuilder8/ total 364 drwxrwxrwx 2 root root 4096 avr 8 13:57 bin -rw-rw-r-1 root root 22541 avr 8 13:58 Borland_JBuilder_8_Personnel_InstallLog.log -rwxrwxrwx 1 root root 20 jan 27 21:52 buildnum.txt -rw-rw-r-1 root root 194 avr 8 13:58 ca.list -rw-rw-r-1 root root 31602 avr 8 13:58 copyrights.html -rw-rw-r-1 root root 3381 avr 8 13:58 country.list drwxrwxrwx 3 root root 4096 avr 8 13:58 defaults drwxrwxrwx 2 root root 4096 avr 8 13:57 doc drwxrwxr-x 3 root root 4096 avr 8 13:57 ia_jre_extraction_dir_2596.tmp drwxrwxr-x 8 root root 4096 avr 8 13:57 jdk1.4 drwxrwxrwx 5 root root 4096 avr 8 13:58 lib -rw-rw-r-1 root root 41524 avr 8 13:58 license.html drwxrwxrwx 2 root root 4096 avr 8 13:58 patch -rw-rw-r-1 root root 782 avr 8 13:58 phone.list -rw-rw-r-1 root root 6713 avr 8 13:58 privacy.html drwxrwxrwx 2 root root 4096 avr 8 13:58 redist -rw-rw-r-1 root root 12746 avr 8 13:58 register_jb.html -rw-rw-r-1 root root 94709 avr 8 13:58 release_notes.html drwxrwxrwx 3 root root 4096 avr 8 13:58 samples -rw-rw-r-1 root root 6582 avr 8 13:58 setup_linux.html drwxrwxrwx 2 root root 4096 avr 8 13:58 UninstallPersonal -rw-rw-r-1 root root 705 avr 8 13:58 us.list -rw-rw-r-1 root root 69332 avr 8 13:58 whatsnew.html

L'excutable Jbuilder est dans le dossier bin. Jbuilder peut tre lanc de la faon suivante :
[root@tahe bin]# jbuilder & JBuilder 8 Personal (Non enregistr) Usage NON commercial Copyright (c) 1996-2002 Borland Software Corporation. La licence a expir

TOUS DROITS RESERVES.

Lors de son premier lancement, Jbuilder cherche une cl d'activation qu'il ne trouve pas :

Linux RH8

154/193

Si on a suivi la procdure de tlchargement, une cl d'activation a t envoye par ml.

Il suffit de sauvegarder ce ml dans le rpertoire d'installation de Jbuilder :

Une fois sauvegard le fichier de licence, on peut relancer Jbuilder et lui indiquer qu'on a une cl de licence :

Ceci fait, Jbuilder se lance :

Linux RH8

155/193

Nous pouvons maintenant crire notre premier programme. Il est prfrable de ne pas tre root. Nous nous mettons sous l'identit unix uti1 et lanons Jbuilder. Nous prenons l'option Fichier/Nouveau projet. Un assistant trois crans nous aide dfinir le projet.

Ici, nous dfinissons le nom du projet : coucou. Nous acceptons le rpertoire par dfaut qui est propos. Pour les deux crans suivants, nous acceptons les valeurs par dfaut.

Dans l'IDE de Jbuilder, le projet apparat alors :

Un projet est constitu d'un ensemble de fichiers de classe, HTML, ... Indiquons que nous voulons crer une application avec interface visuelle. Pour cela, nous prenons l'option Fichier/Nouveau :

Ici, nous choisissons Application qui correspond une application avec interface visuelle. Un nouvel assistant apparat :

Linux RH8

156/193

Nous ne prenons pas les valeurs par dfaut proposes mais celles affiches ci-dessus. Nous crons ici une classe principale qui sera appele coucou.java. Cette classe principale utilisera une classe pour grer l'interface visuelle. C'est l'objet de l'cran suivant :

Ici, nous dfinissons la classe java qui reprsentera l'interface visuelle. Elle s'appellera icoucou.java. Nous dfinissons galement le titre de la fentre qui sera affiche. Nous passons ensuite l'cran suivant o nous acceptons la valeur par dfaut propose :

Jbuilder gnre les deux classe coucou.java et icoucou.java :

Nous pouvons excuter cette application de base par Excuter/Excuter le projet. La fentre est alors affiche :

On retrouve bien le titre donn celle-ci lors de la configuration de l'application. Maintenant, il faudrait entrer dans les dtails de Jbuilder pour dvelopper une vritable application. Ce travail est laiss au lecteur. Notre objectif tait ici de montrer qu'il existe un outil professionnel pour dvelopper en java sous linux. Du fait de la portabilit de java, les applications dveloppes sous linux seront utilisables sous windows.

Linux RH8

157/193

Sun propose un produit appel Sun One Studio qui semble suprieur Jbuilder. Il est cependant d'abord plus complexe parce qu'offrant davantage de possibilits. Il est lui aussi gratuit et est disponible pour diffrents OS dont Linux et Windows.

Linux RH8

158/193

Dveloppement Web autour du serveur Apache

Linux RH8

159/193

19

Dveloppement Web

Nous donnons ci-dessous les changes d'informations que l'on trouve dans une application Web. Il est important de savoir ce que peut faire un serveur web et quel est le rle d'un client web.

19.1

Les composantes d'une application Web


Machine Cliente 5

Linux RH8

160/193

Machine Serveur

2 3

Serveur Web
rseau 4

Navigateur
7

Scripts serveur

Base de donnes

Scripts Navigateur

Page WEB

rseau

4 Machine X Base de donnes

n
1 2

Rle OS Serveur Serveur Web

Exemples courants Linux, Windows Apache (Linux, Windows) IIS (NT), PWS(Win9x)

Scripts excuts ct serveur. Ils peuvent l'tre par des modules du PERL (Apache, IIS, PWS) serveur ou par des programmes externes au serveur (CGI). VBSCRIPT (IIS,PWS) JAVASCRIPT (IIS,PWS) PHP (Apache, IIS, PWS) JAVA (Apache, IIS, PWS) Base de donnes - Celle-ci peut tre sur la mme machine que le Oracle (Linux, Windows) programme qui l'exploite ou sur une autre via Internet. MySQL (Linux, Windows) Access (Windows) SQL Server (Windows) OS Client Navigateur Web Linux, Windows Netscape, Internet Explorer

5 6 7

Scripts excuts ct client au sein du navigateur. Ces scripts n'ont VBscript (IE) aucun accs aux disques du poste client. Javascript (IE, Netscape) Perlscript (IE) Applets JAVA

19.2

Les changes dans une application web comportant un formulaire

Linux RH8

161/193

Machine Serveur SA Scripts Scripts Serveur serveur SB Base de donnes Serveur web

Machine Cliente

CA 2 navigateur 3 4

Scripts Navigateur CB

Page WEB

SC

CD utilisateur

Machine X

Base de donnes

n 1 2

Rle Le navigateur demande une URL pour la 1re fois (http://machine/url). Aucun paramtre n'est pass. Le serveur Web lui envoie la page Web de cette URL. Elle peut tre statique ou bien dynamique, gnre par un script serveur (SA) qui a pu utiliser le contenu de bases de donnes (SB, SC). Ici, le programme dtectera que l'URL a t demande sans passage de paramtres et gnrera la page WEB initiale. Le navigateur reoit la page. Il l'affiche (CA). Des scripts ct navigateur (CB) ont pu modifier la page initiale envoye par le serveur. Ensuite par des interactions entre l'utilisateur (CD) et les scripts (CB) et ventuellement d'autres machines (CE) la page Web va tre modifie. Les formulaires vont notamment tre remplis. Le navigateur redemande la mme URL ou une autre mais cette fois-ci avec des paramtres : mthode GET url?param1=val1&param2=val2&... ou mthode POST url et les paramtres sont envoys en fin de dialogue navigateur/serveur sous la forme param1=val1&param2=val2&... Le serveur dclenche le programme (SA) associ l'URL qui va dtecter qu'il y a maintenant des paramtres et va donc les traiter. Le serveur dlivre la page WEB construite par programme (SA, SB, SC). Cette tape est identique l'tape 2 prcdente. Les changes se font dsormais selon les tapes 2 et 3.

19.3

Quelques ressources
http://www.apache.org http://www.microsoft.com http://www.activestate.com http://www.php.net http://msdn.microsoft.com/scripting/vbscript/download/vbsdoc.exe http://msdn.microsoft.com/scripting/default.htm?/scripting/vbscript/

Serveur Apache Serveur IIS, PWS PERL PHP VBSCRIPT, ASP

Linux RH8

162/193

JAVASCRIPT

http://msdn.microsoft.com/scripting/jscript/download/jsdoc.exe http://developer.netscape.com/docs/manuals/index.html http://developer.netscape.com/docs/manuals/index.html http://www.sun.com http://www.mysql.com http://www.oracle.com http://www.postgresql.org/

HTML JAVA Base de donnes

Nous prsentons ici plusieurs outils permettant de faire du dveloppement web. Ces outils visent tous gnrer des pages HTML dynamiquement. Ils sont dans la pratique souvent lis une base de donnes. Nous utilisons Apache comme serveur Web. Il est trs rpandu et est livr en standard avec Linux. Nous prsentons trois outils de dveloppement pour Apache : Perl, Php, Java.

19.4

Apache-Perl

Historiquement, Perl a t le premier langage tre largement utilis pour crer des pages Web dynamiques. Si vous avez suivi l'installation prconise au dbut de ce document, Perl et le module Perl pour Apache sont dj installs. Vous pouvez le vrifier avec la commande rpm :
[root@tahe uti1]# rpm -qa | grep -i perl perl-Parse-Yapp-1.05-26 perl-libxml-perl-0.07-25 perl-XML-Grove-0.46alpha-21 perl-DBI-1.30-1 perl-CGI-2.81-55 perl-DBD-MySQL-2.1017-3 perl-Digest-HMAC-1.01-8 perl-5.8.0-55 perl-DateManip-5.40-27 perl-HTML-Parser-3.26-14 perl-URI-1.21-3 perl-XML-Parser-2.31-12 perl-XML-Dumper-0.4-22 perl-libxml-enno-1.02-25 perl-XML-Twig-3.05-3 perl-DB_File-1.804-55 mod_perl-1.99_05-3 perl-Digest-SHA1-2.01-6 perl-Net-DNS-0.26-2 perl-SGMLSpm-1.03ii-6 perl-Filter-1.28-9 perl-CPAN-1.61-55 perl-HTML-Tagset-3.03-25 perl-libwww-perl-5.65-2 perl-XML-Encoding-1.01-20 perl-DBD-Pg-1.13-5

La bibliothque Perl est particulirement riche. Des centaines de modules Perl sont par ailleurs disponibles sur le rseau CPAN (http://www.cpan.org/). Le module ncessaire Apache est ci-dessus :
mod_perl-1.99_05-3

Le lien Apache-Perl est dfini dans le fichier /etc/httpd.conf d'Apache. Editez-le et cherchez (ctrl-F) la chane cgi-bin. Vous trouverez alors la squence de lignes suivantes :
ScriptAlias /cgi-bin/ "/var/www/cgi-bin/" ......... # # "/var/www/cgi-bin" should be changed to whatever your ScriptAliased # CGI directory exists, if you have that configured. #

Linux RH8

163/193

<Directory "/var/www/cgi-bin"> AllowOverride None Options None Order allow,deny Allow from all </Directory>

La ligne ScriptAlias /cgi-bin/ "/var/www/cgi-bin/" donne un alias (/cgi-bin/) au rpertoire /var/www/cgi-bin. Un fichier F plac dans le rpertoire /var/www/cgi-bin sera demand avec l'url http://machine/cgi-bin/F. Essayons. Crez le fichier heure.pl suivant et sauvegardez-le dans /var/www/cgi-bin :
#!/usr/bin/perl use strict; # on rcupre l'heure my ($secondes,$minutes,$heure)=localtime(time); # entte HTTP print "Content-type: text/html\n\n"; # corps HTML print <<HTML <html> <head> <title>Script CGI Perl</title> </head> <body> <center> <h1>Une page gnre dynamiquement par un script PERL</h1> <h2>Il est $heure:$minutes:$secondes</h2> <br> A chaque fois que vous rafrachissez cette page, l'heure change. </body> </html> HTML ; # fin du script exit 0;

Ce programme Perl affiche l'heure dans une page HTML. Il nous faut rendre excutable ce fichier :
[root@tahe uti1]# ls -l /var/www/cgi-bin/heure.pl -rw-r--r-1 root root 506 avr 11 18:31 /var/www/cgi-bin/heure2.pl [root@tahe uti1]# chmod o+x /var/www/cgi-bin/heure.pl [root@tahe uti1]# ls -l /var/www/cgi-bin/heure.pl -rw-r--r-x 1 root root 506 avr 11 18:26 /var/www/cgi-bin/heure.pl

Maintenant, prenez un navigateur de votre machine et demandez l'url http://localhost/cgi-bin/heure.pl :

Lorsque Apache reoit une demande pour un script CGI (Common Gateway Interface), il lance chaque fois l'interprteur ncessaire l'excution du script. Ainsi, ci-dessus, si nous demandons la page heure.pl de faon rpte, l'interprteur Perl sera charg autant de fois. Cela peut devenir coteux en ressources et performances si le site abrite des scripts CGI appels frquemment. Pour Perl, il existe un module Apache appel mod_perl qui contient un interprteur Perl. Les modules d'Apache sont chargs lors du dmarrage du serveur. Leur chargement est explicitement demand dans le fichier httpd.conf. Une fois le module mod_perl charg, il reste en mmoire. Il excute les scripts Perl que lui donne Apache sans avoir tre systmatiquement recharg, d'o un gain de temps. Linux RH8 164/193

Editez de nouveau le fichier httpd.conf et recherchez le mot cl Include :


# # Load config files from the config directory "/etc/httpd/conf.d". # Include conf.d/*.conf

Comme l'indique le commentaire, des fichiers de configuration supplmentaires sont inclus dans le dossier /etc/httpd/conf.d
[root@tahe uti1]# ls -l /etc/httpd/conf.d/ total 36 -rw-r--r-1 root root 3424 sep 2 2002 auth_pgsql.conf -rw-r--r-1 root root 954 mar 21 11:02 perl.conf -rw-r--r-1 root root 459 jan 22 17:40 php.conf -rw-r--r-1 root root 988 sep 2 2002 python.conf -rw-r--r-1 root root 180 oct 9 2002 README -rw-r--r-1 root root 96 jan 6 12:28 squirrelmail.conf -rw-r--r-1 root root 11140 oct 9 2002 ssl.conf

On y trouve le fichier perl.conf qui configure le module Perl :


# # # # # # # # Mod_perl incorporates a Perl interpreter into the Apache web server, so that the Apache web server can directly execute Perl code. Mod_perl links the Perl runtime library into the Apache web server and provides an object-oriented Perl interface for Apache's C language API. The end result is a quicker CGI script turnaround process, since no external Perl interpreter has to be started.

LoadModule perl_module modules/mod_perl.so # This will allow execution of mod_perl to compile your scripts to # subroutines which it will execute directly, avoiding the costly # compile process for most requests. # Alias /perl /var/www/perl <Directory /var/www/perl> SetHandler perl-script PerlHandler ModPerl::Registry::handler PerlOptions +ParseHeaders Options +ExecCGI </Directory>

La ligne
LoadModule perl_module modules/mod_perl.so

demande le chargement du module mod_perl. Apache chargera le fichier /etc/httd/modules/mod_perl.so au dmarrage. Un fichier .so (shared object) est une bibliothque de fonctions qu'on peut charger dynamiquement (comme une dll sous windows).
[root@tahe uti1]# ls -l /etc/httpd/modules/mod_perl.so -rwxr-xr-x 1 root root 136226 sep 3 2002 /etc/httpd/modules/mod_perl.so

Le paragraphe
Alias /perl /var/www/perl <Directory /var/www/perl> SetHandler perl-script PerlHandler ModPerl::Registry::handler PerlOptions +ParseHeaders Options +ExecCGI </Directory>

dfinit des proprits si le module mod_perl est charg. Nous en noterons deux :
Alias /perl/ /var/www/perl/

qui associe l'alias /perl au rpertoire /var/www/perl. La section

Linux RH8

165/193

<Directory /var/www/perl> ... </Directory>

dfinit les proprits lies l'alias /perl donc au rpertoire /var/www/perl. Elles indiquent que ce qui se trouve dans ce rpertoire devra tre considr comme un script perl excuter. Essayons. Commenons par construire le rpertoire /var/www/perl qui n'existe pas. Puis mettons dedans le script heure.pl construit prcdemment sous le nom heure.pll (pas heure.pl).
[root@tahe uti1]# mkdir /var/www/perl [root@tahe uti1]# cp /var/www/cgi-bin/heure.pl /var/www/perl/heure.pll [root@tahe uti1]# ls -l /var/www/perl/ -rw-r--r-x 1 root root 482 mar 21 10:39 heure.pll

Vrifiez bien que le script heure.pll a les droits r-x pour tous. Vrifiez que le serveur Apache est lanc. Prenez un navigateur local et demandez l'url http://localhost/perl/heure.pll :

Seul l'administrateur systme pouvait crer les deux scripts prcdents. En effet, ils devaient tre placs dans des rpertoires appartenant root. Vous pouvez configurer Apache pour permettre tout utilisateur d'inclure des scripts Perl dans son site personnel. C'est vous de voir si c'est souhaitable ou non. Pour le faire, il nous faut modifier perl.conf :
Alias /perl /var/www/perl <Directory /var/www/perl> SetHandler perl-script PerlHandler ModPerl::Registry::handler PerlOptions +ParseHeaders Options +ExecCGI </Directory>

Faites un copier/coller de la partie <Directory ...> ... </Directory> et modifiez-la comme suit :
Alias /perl /var/www/perl <Directory /var/www/perl> SetHandler perl-script PerlHandler ModPerl::Registry::handler PerlOptions +ParseHeaders Options +ExecCGI </Directory> <Files ~ *\.pll> SetHandler perl-script PerlHandler ModPerl::Registry::handler PerlOptions +ParseHeaders Options +ExecCGI </Files>

La section <Files ~ "*\.pll">...</Files> fixe les proprits des fichiers ayant le suffixe .pll. On donne ces fichiers les mmes droits qu'aux fichiers du rpertoire /var/www/perl. Ils seront donns mod_perl pour excution. Sauvegardez ces modifications et relancez Apache pour qu'il les prenne en compte :
[/etc/rc.d/init.d/httpd restart] Shutting down http: Starting httpd: [ [ OK OK ] ]

Maintenant copions le script heure.pll dj tudi, dans le site personnel de l'utilisateur uti1, ~uti1/WWW pour nous, o ~uti1 dsigne le rpertoire de connexion de uti1. Linux RH8 166/193

[root@tahe [root@tahe -rw-r--r-x [root@tahe [root@tahe -rw-r--r-x

uti1]# cp /var/www/perl/heure.pll /home/uti1/WWW/heure.pll uti1]# ls -l /home/uti1/WWW/heure.pll 1 root root 506 avr 12 10:21 /home/uti1/WWW/heure.pll uti1]# chown uti1:groupe1 /home/uti1/WWW/heure.pll uti1]# ls -l /home/uti1/WWW/heure.pll 1 uti1 groupe1 506 avr 12 10:21 /home/uti1/WWW/heure.pll

Le script heure.pll est maintenant dans le rpertoire personnel de uti1 et lui appartient. Vrifiez qu'il a bien les droits r-x pour tous. Maintenant demandez l'url http://localhost/~uti1/heure.pll qui est l'url de notre script ci-dessus :

Maintenant vos utilisateurs peuvent inclure des scripts perl dans leur site web personnel. Encore une fois, c'est l'administrateur de voir si c'est souhaitable ou non. Plus on accorde de facilit aux utilisateurs, plus la scurit du systme est fragilise.

19.5

Apache-PHP

De la mme faon qu'on utilise Perl pour gnrer dynamiquement des pages HTML, on peut utiliser un autre langage : PHP (Personal Home Page, Hypertext Preprocessor). C'est un langage plus rcent que Perl et qui en a repris beaucoup d'attributs. Il n'y a pas de difficult particulire passer de Perl PHP et vice-versa. Si vous avez suivi le mode d'installation prconis au dbut de ce document, PHP est dj prsent sur votre systme. Utilisez la commande rpm pour le vrifier :
[root@tahe uti1]# rpm -qa | grep -i php php-ldap-4.2.2-8.0.7 php-imap-4.2.2-8.0.7 php-pgsql-4.2.2-8.0.7 php-4.2.2-8.0.7

L'interprteur PHP est fourni par le module php-4.2.2 ci-dessus. S'il n'tait pas prsent, utilisez l'application Menu dmarrer/Paramtres de systme/Paquetages pour l'installer. Il nous faut voir maintenant les liens entre PHP et le serveur Web Apache. Nous avons dj vu qu'un certain nombre de fichiers de configuration taient prsents dans /etc/httpd/conf.d :
[root@tahe uti1]# ls -l /etc/httpd/conf.d/ total 36 -rw-r--r-1 root root 3424 sep 2 2002 auth_pgsql.conf -rw-r--r-1 root root 954 mar 21 11:02 perl.conf -rw-r--r-1 root root 459 jan 22 17:40 php.conf -rw-r--r-1 root root 988 sep 2 2002 python.conf -rw-r--r-1 root root 180 oct 9 2002 README -rw-r--r-1 root root 96 jan 6 12:28 squirrelmail.conf -rw-r--r-1 root root 11140 oct 9 2002 ssl.conf

On y trouve le fichier php.conf qui configure l'utilisation de PHP avec Apache :


# # PHP is an HTML-embedded scripting language which attempts to make it # easy for developers to write dynamically generated webpages. #

Linux RH8

167/193

LoadModule php4_module modules/libphp4.so # # Cause the PHP interpreter handle files with a .php extension. # <Files *.php> SetOutputFilter PHP SetInputFilter PHP LimitRequestBody 524288 </Files> # # Add index.php to the list of files that will be served as directory # indexes. # DirectoryIndex index.php

Le module ncessaire au module Apache/PHP est libphp4.so :


[root@tahe uti1]# ls -l /etc/httpd/modules/libphp4.so -rwxr-xr-x 1 root root 1442301 jan 22 17:40 /etc/httpd/modules/libphp4.so

Le fichier de configuration ci-dessus dit essentiellement que tout fichier ayant le suffixe .php doit tre trait par l'interprteur PHP. Essayons. Construisons le fichier texte suivant sous l'identit uti1 :
<?php ?> phpinfo();

Il contient du code PHP entre les balises <?php ... ?>. Il fait appel une fonction phpinfo qui affiche des informations trs utiles sur la configuration de PHP. Sauvegardez ce fichier dans /home/uti1/WWW sous le nom phpinfo.php :
[root@tahe uti1]# ls -l /home/uti1/WWW/phpinfo.php -rw----r-x 1 uti1 groupe1 22 mar 21 11:10 /home/uti1/WWW/phpinfo.php

Assurez-vous que les droits r et x sont donns tous les utilisateurs. Demandez maintenant avec un navigateur local l'url http://localhost/~uti1/phpinfo.php :

Si vous vous intressez la programmation PHP, il est du plus grand intrt de lire cette page. Reprenons maintenant le script de l'heure vu avec Perl et adaptons-le PHP :
<html> <head> <title>Script PHP</title> </head>

Linux RH8

168/193

<body>

<center>

</html>

</body>

<h2>Une page gnre par un script PHP</h2> <h3>Il est <?php echo date('j/m/y, h:i:s',time()) ?></h3> <br> A chaque fois que vous rafrachissez cette page, l'heure change. </center>

Sauvegardez ce texte dans le fichier /home/uti1/WWW/heure.php :


[root@tahe uti1]# ls -l /home/uti1/WWW/heure.php -rwx---r-x 1 uti1 groupe1 304 mar 21 12:56 /home/uti1/WWW/heure.php

Vrifiez bien les droits du fichier. Ils doivent tre ceux indiqus ci-dessus. Demandez maintenant l'URL http://localhost/~ uti1/heure.php dans un navigateur local :

19.6

Apache - Java

De la mme faon qu'on utilise Perl et PHP pour gnrer des pages dynamiquement HTML, on peut utiliser Java. L'URL demande par un navigateur client peut tre directement une classe Java : on parle alors de servlets Java. L'URL peut aussi dsigner un fichier texte mlangeant code HTML et code Java de faon analogue aux pages PHP o sont mlangs code HTML et code PHP : on parle alors de pages JSP (Java Server Pages). Apache n'est pas pour l'instant un serveur pouvant grer ces technologies. Mais il peut le faire l'aide d'outils tiers. Nous allons prsenter ici l'un d'entre-eux : TOMCAT. Tomcat est un serveur web l'instar d'Apache. Il est capable de grer des servlets et des pages JSP. Il y a moyen de configurer le serveur Apache pour qu'il travaille avec un serveur Tomcat. Lorsqu'un navigateur demande une servlet Java ou une page Jsp, Apache demande la page au serveur Tomcat qui la gnre. Apache se contente de renvoyer au client ce que Tomcat lui a donn.

19.6.1

Installation du serveur web Tomcat

Tomcat est disponible l'URL : http://jakarta.apache.org/downloads/binindex.html. Il existe des sites miroirs, par exemple celui-ci : http://apache.crihan.fr/dist/jakarta/tomcat-4/binaries/. A cette adresse, on a rcupr la version Tomcat tomcat4.1.24.tar.gz. L'installation consiste simplement dcompresser cette archive dans un rpertoire sous l'identit root :
[root@tahe downloads]# tar xvzf tomcat-4.1.24.tar.gz

On rcupre un rpertoire jakarta-tomcat-4.1.24


[root@tahe downloads]# ls -ld jakarta-tomcat-4.1.24/ drwxr-xr-x 11 root root 4096 avr 12 11:13 jakarta-tomcat-4.1.24/

Nous dplaons ce rpertoire un endroit adquat de notre systme, par exemple /usr/local :
[root@tahe downloads]# mv jakarta-tomcat-4.1.24/ /usr/local/ [root@tahe downloads]# ls -ld /usr/local/jakarta-tomcat-4.1.24/

Linux RH8

169/193

drwxr-xr-x 11 root root 4096 avr 12 11:13 /usr/local/jakarta-tomcat-4.1.24/ [root@tahe downloads]# ls -l /usr/local/jakarta-tomcat-4.1.24/ total 108 drwxr-xr-x 2 root root 4096 avr 12 11:13 bin drwxr-xr-x 5 root root 4096 mar 19 10:20 common drwxr-xr-x 2 root root 4096 avr 12 11:13 conf -rw-r--r-1 root root 4568 mar 19 10:20 LICENSE drwxr-xr-x 2 root root 4096 mar 19 10:20 logs -rw-r--r-1 root root 3150 mar 19 10:20 README.txt -rw-r--r-1 root root 43343 mar 19 10:20 RELEASE-NOTES-4.1.txt -rw-r--r-1 root root 5149 mar 19 10:20 RELEASE-PLAN-4.1.txt -rw-r--r-1 root root 6701 mar 19 10:20 RUNNING.txt drwxr-xr-x 5 root root 4096 mar 19 10:20 server drwxr-xr-x 4 root root 4096 mar 19 10:20 shared drwxr-xr-x 2 root root 4096 avr 12 11:13 temp drwxr-xr-x 6 root root 4096 avr 12 11:13 webapps drwxr-xr-x 2 root root 4096 mar 19 10:20 work

Des fichiers d'aide au format HTML sont disponibles dans le dossier /usr/local/jakarta-tomcat-4.1.24/webapps/tomcatdocs/. Voici le fichier index.html :

Le script de lancement du serveur Tomcat se trouve dans le dossier bin de son dossier d'installation :
[root@tahe downloads]# ls -l /usr/local/jakarta-tomcat-4.1.24/bin/startup.sh -rwxr-xr-x 1 root root 788 mar 19 10:20 /usr/local/jakarta-tomcat4.1.24/bin/startup.sh

Lanons Tomcat :
[root@tahe downloads]# /usr/local/jakarta-tomcat-4.1.24/bin/startup.sh The JAVA_HOME environment variable is not defined This environment variable is needed to run this program

Tomcat a besoin d'une machine virtuelle Java et ne sait o la trouver. Il faut lui fixer une variable d'environnement JAVA_HOME. Dans notre exemple, Java a t install dans /usr/local/j2sdk1.4.1/ :
[root@tahe downloads]# ls -ld /usr/local/j2sdk1.4.1/ drwxr-xr-x 8 root root 4096 fv 11 19:11 /usr/local/j2sdk1.4.1/

Nous crons la variable d'environnement JAVA_HOME :


[root@tahe downloads]# export JAVA_HOME=/usr/local/j2sdk1.4.1/

et essayons de relancer Tomcat :


[root@tahe downloads]# Using CATALINA_BASE: Using CATALINA_HOME: Using CATALINA_TMPDIR: Using JAVA_HOME: /usr/local/jakarta-tomcat-4.1.24/bin/startup.sh /usr/local/jakarta-tomcat-4.1.24 /usr/local/jakarta-tomcat-4.1.24 /usr/local/jakarta-tomcat-4.1.24/temp /usr/local/j2sdk1.4.1/

Cette fois-ci, nous n'avons pas d'erreurs. Le serveur Tomcat est un serveur Web qui opre sur le port 8080. Essayons l'URL http://localhost:8080 :

Linux RH8

170/193

Tomcat a bien rpondu. On voit mme que sa page d'entre a t gnre par une page JSP (index.jsp). Le serveur est arrt avec le script shutdown.sh :
[root@tahe downloads]# Using CATALINA_BASE: Using CATALINA_HOME: Using CATALINA_TMPDIR: Using JAVA_HOME: /usr/local/jakarta-tomcat-4.1.24/bin/shutdown.sh /usr/local/jakarta-tomcat-4.1.24 /usr/local/jakarta-tomcat-4.1.24 /usr/local/jakarta-tomcat-4.1.24/temp /usr/local/j2sdk1.4.1/

Relanons Tomcat et revenons sur sa page d'entre d'URL http://localhost:8080 :

On lira attentivement les informations donnes sur cette page d'entre. Pour l'heure, suivons le lien JSP Examples cidessus :

Suivons maintenant le lien snoop (Execute) :

Linux RH8

171/193

Vous pouvez tester les diffrents exemples de servlets Java et de pages JSP qui vous sont proposs.

19.6.2

Un script JSP

Le script suivant heure.jsp est une page JSP qui affiche l'heure : <% //programme Java affichant l'heure %> <% // classes importes %> <%@ page import="java.util.*" %> <% // code JAVA pour calculer l'heure Date maintenant=new Date(); String heures=""+maintenant.getHours(); String minutes=""+maintenant.getMinutes(); String secondes=""+maintenant.getSeconds(); // heures, minutes, secondes sont des variables globales // qui pourront tre utilises dans le code HTML %> <% // code HTML %> <html> <head> <title>Page JSP affichant l'heure</title> </head> <body> <center> <h1>Une page JSP gnre dynamiquement</h1> <h2>Il est <%=heures%>:<%=minutes%>:<%=secondes%></h2> <br> <h3>A chaque fois que vous rechargez la page, l'heure change</h3> </body> </html>

mettre le script heure.jsp dans /usr/local/jakarta-tomcat-4.1.24/webapps/examples/jsp

[root@tahe root]# ls -l /usr/local/jakarta-tomcat-4.1.24/webapps/examples/jsp/heure.jsp -rw-r--r-1 root root 741 avr 15 11:35 /usr/local/jakarta-tomcat4.1.24/webapps/examples/jsp/heure.jsp

lancer le serveur Tomcat si besoin est demander l'URL http://localhost:8080/examples/jsp/heure.jsp avec un navigateur 172/193

Linux RH8

Linux RH8

173/193

Complments

Linux RH8

174/193

20
20.1

Configuration d'une imprimante HP Jet Direct


Configurer l'imprimante avec Menu KDE

Prendre l'option Menu/Paramtres de systme/Printing :

Cliquer sur le bouton [Nouveau] pour ajouter une nouvelle imprimante. Un assistant de configuration dmarre :

Faites [Suivant] :

Slectionnez l'imprimante JetDirect et donnez-lui un nom. Faites [Suivant] :

Linux RH8

175/193

Indiquez l'adresse IP de l'imprimante. Le port propos par dfaut est correct. Si vous ne connaissez pas l'adresse IP de l'imprimante, demandez la votre instructeur. Faites [Suivant] :

Prcisez le type d'imprimante HP utilise puis faites [Suivant] :

Le dernier cran rcapitule les choix faits. Faites [Terminer] pour crer la nouvelle file d'attente.

L'cran ci-dessus montre la nouvelle file d'attente. Utilisez le bouton [Test] pour envoyer une page de test l'imprimante. Linux RH8 176/193

20.2

Faire un test avec OpenOffice

Ouvrez OpenOffice Writer par exemple et imprimez un document.

Linux RH8

177/193

21
21.1

Gestion des paquetages


Mise jour des paquetages installs

Linux RedHat offre la possibilit de mettre jour simplement les paquetages installs sur le poste. Aprs une installation de Linux RedHat, il est intressant de faire immdiatement une telle mise jour pour avoir la dernire version des paquetages qu'on a installs. L'outil de mise jour est disponible dans la barre des tches droite :

Double-cliquez sur l'icne pour lancer l'utilitaire :

Avant de pouvoir procder des mises jour, il faut procder la configuration de l'utilitaire. On clique droit sur l'icne et on prend l'option [Configuration]. Cliquez sur [Suivant]. Apparat une page d'informations.

Cliquez sur [Suivant].

Ici, nous devons configurer le proxy HTTP s'il y en a pour accder l'Internet. C'est le cas l'ISTIA pour le rseau tudiant. Indiquez comme ci-dessus les coordonnes du proxty HTTP puis faites [Suivant].

Linux RH8

178/193

La configuration est termine. Si plus tard, vous souhaitez la refaire, cliquez droit sur l'icne de mise jour et prenez l'option [Configuration]. Pour l'instant, utilisez le bouton [Appliquer] puis double-cliquez sur icne Udpate et prenez l'option [Dmarrage de up2date].

Les paquetages sont signs numriquement. Pour vrifier la validit de la signature numrique, il est ncessaire d'avoir la cl publique de la compagnie RedHat. Il faut rpondre [Oui] l'cran prcdent pour installer cette cl sur le poste.

La mise jour commence par un message de bienvenue. Faites [Suivant].

Encore un message d'informations. Lisez-le et faites [Suivant].

Linux RH8

179/193

La mise jour ncessite la cration d'un compte. Indiquez un login, un mot de passe et votre adresse lectronique. A celleci, vous recevrez les alertes de RedHat pour des mises jour critiques du systme. Cette inscription vous donne droit abonnement de base : vous pouvez tlcharger les mises jour mais avec une faible priorit qui fait que si le serveur de mises jour est charg, l'accs vous est interdit. Pour une somme modique, vous pouvez obtenir un abonnement dbarass de cette contrainte. Faites [Suivant].

Toujours des renseignements qui sont facultatifs. Faites [Suivant].

Sur l'cran ci-dessus, des informations par dfaut sont proposes. Acceptez-les en faisant [Suivant].

Linux RH8

180/193

L'cran ci-dessus fait une liste des paquetages installs sur votre machine et pour lesquels l'utilitaire va chercher des mises jour. Faites [Suivant].

L'cran ci-dessus prcde la connexion au serveur de mise jour. Faites [Suivant].

Linux RH8

181/193

L'cran ci-dessus vous propose une mise jour pour le noyau de votre systme. En gnral ce sont les plus importantes car toutes les autre applications reposent sur ce noyau. Cochez l'option [Tous les paquetages] et faites [Suivant].

L'cran ci-dessus, vous donne la liste de toutes les mises jour que vous pouvez faire. Cochez l'option [Tous les paquetages] et faites [Suivant].

La bote de dialogue ci-dessus vrifie les dpendances des paquetages tlcharger. Certains paquetages dpendent d'autres paquetages. L'utilitaire vrifie que les paquetages ncessaires l'installation des mises jour sont bien prsents. Si ce n'tait pas le cas, il les ajouterait la liste des paquetages tlcharger et installer. Ceci fait, le tlchargement des mises jour commence. Lorsqu'il sera termin, les paquetages tlchargs seront installs.

Linux RH8

182/193

21.2

Ajout/retrait de paquetages

Pour ajouter des paquetages non inclus lors de l'installation ou supprimer des paquetages inutiles, on prend l'option Menu KDE/Paramtres de systme/Paquetages :

On obtient ici, la liste des paquetages telle qu'elle nous a t prsente lors de l'installation et telle que nous l'avons valide. Les paquetages slectionns dans la fentre sont ceux qui sont prsents sur notre systme. Pour ajouter un paquetage, on le slectionne. Pour en enlever un, on le dslectionne. Ci-dessus, ajoutons tous les lments du bureau GNOME par exemple :

Linux RH8

183/193

Validons notre choix avec le bouton [Appliquer]. L'utilitaire nous donne des informations sur les paquetages qui vont tre installs :

Nous utilisons le bouton [Continuer] pour lancer l'installation des paquetages. Les CD d'installation vont alors tre rclams et les paquetages installs. Une fois ceux-ci installs, vous pouvez vrifier s'il en existe des versions plus rcentes avec Menu/Outils de systme/RedHat Network.

21.3

Recherche et installation d'un paquetage sur internet

Parfois, on a besoin d'une application ne faisant pas partie de la distribution RedHat. On ne la trouve pas alors sur les CD. Elle n'est pas non plus propose dans les mises jour sur le rseau. Il faut alors la chercher ailleurs et l'installer. Il existe des sites spcialiss dans la recherche de paquetages pour diffrentes distributions de linux. L'un d'eux est l'URL fr2.rpmfind.net. Nous utilisons Konqueror pour l'atteindre :

Linux RH8

184/193

Ci-dessus, nous cherchons un paquetage appel amavis. C'est un antivirus pour le courrier. On utilise le bouton [Search]. On obtient la rponse suivante :

Nous voyons ci-dessus plusieurs paquetages. Ceux qui ont le suffixe src dans leur nom sont des paquetages contenant du code source compiler. Les autres sont des binaires. Nous dcidons ici de tlcharger le binaire amavis-11-3.i386.rpm. Nous cliquons sur son lien. Konqueror dtecte alors qu'on tlcharge un paquetage et nous demande comment on veut le grer :

On peut soit

installer immdiatement le paquetage via l'outil de gestion des paquetages soit l'enregistrer sur le disque

Nous prenons la deuxime solution et choisissons de le tlcharger dans /root/downloads. Le tlchargement du paquetage commence alors. Lorsqu'il est fini, le fichier tlcharg est dans le dossier /root/downloads : Linux RH8 185/193

Maintenant double-cliquons sur le paquetage amavis ci-dessus. Cela lance son installation :

Le systme vrifie les dpendances du paquetage. Un paquetage dpend parfois ici d'autres paquetages qui doivent tre prsents pour qu'il puisse tre install. C'est le cas ici :

Il nous faut maintenant refaire ce que nous venons de faire pour tous les paquetages indiqus ci-dessus. C'est une limitation des paquetages de RedHat. Pour un paquetage appartenant la distribution, le systme de mise jour rsoud les dpendances des paquetages installer et va ensuite les chercher sur un site RedHat. Pour un paquetage n'appartenant pas la distribution, cela n'est pas fait et doit alors tre fait manuellement. Prenons un autre exemple. Nous nous intressons toujours aux antivirus pour RedHat. Ouvrons Konqueror pour faire une requte Google :

Linux RH8

186/193

Suivons le lien www.ravantivirus.com ci-dessus :

Ci-dessus, suivons le lien [Free downloads] :

Suivons le lien [RAV Antivirus Desktop for Linux] :

Linux RH8

187/193

On remplit le formulaire ci-dessus et on commence le tlchargement avec [Start Download]. On rcupre alors un fichier rpm :

C'est le fichier ravlin8-8.1-4.i386.rpm ci-dessus. Double-cliquons dessus. L'installation du paquetage est opre :

Linux RH8

188/193

Ceci fait, on ne sait pas comment utiliser l'antivirus... Il est possible de connatre le contenu d'un paquetage avec la commande rpm :
[root@tahe root]# rpm -ql ravlin8-8.1-4 | more /usr/local/doc/rav /usr/local/doc/rav/LICENSE /usr/local/doc/rav/RAV_for_Linux.pdf /usr/local/doc/rav/ravav.pdf /usr/local/man/man8 ....

On dcouvre ainsi que le paquetage contenait un fichier PDF qui a t rang dans /usr/local/doc/rav :

Nous double-cliquons sur le fichier RAV_for_Linux.pdf ci-dessus :

Nous lisons ce document et dcouvrons que pour lancer l'antivirus il faut taper la commande suivante :
[root@tahe root]# ravlin8 &

Ceci lance l'application qui affiche alors une interface graphique :

Nous laissons au lecteur le soin de dcouvrir l'application...

Linux RH8

189/193

Table des matires


1NOTIONS DE BASE DES RSEAUX TCP-IP............................................................................................................ 3 1.1UN RSEAU ...DE RESSOURCES............................................................................................................................................. 3 1.2GNRALITS.................................................................................................................................................................... 3 1.3UN PEU DE FORMALISME : LES RSEAUX, VUS SELON L'ARCHITECTURE OSI........................................................................... 4 1.4ZOOM SUR LA COUCHE DE NIVEAU 3 : LE PROTOCOLE IP.......................................................................................................5 1.5ILLUSTRATION....................................................................................................................................................................6 1.6RSEAUX PUBLICS, RSEAUX PRIVS.....................................................................................................................................7 2LE TRAVAIL RALISER........................................................................................................................................ 10 2.1INTRODUCTION.................................................................................................................................................................10 2.2LES DIFFRENTES VERSIONS DE LINUX............................................................................................................................... 10 2.3INSTALLATION DE LINUX SUR UN PC................................................................................................................................. 11 2.4INSTALLATION DES SERVICES............................................................................................................................................. 11 2.5INSTALLATION D'APPLICATIONS COMPLMENTAIRES.............................................................................................................11 3INSTALLATION DE LINUX REDHAT 8.0...............................................................................................................11 3.1CONFIGURATION DU BIOS............................................................................................................................................... 11 3.2RCUPRER L'ADRESSE IP DU POSTE WINDOWS.................................................................................................................. 12 3.3INSTALLATION PAR FTP OU PAR CD.................................................................................................................................13 3.4INSTALLATION AVEC CD...................................................................................................................................................19 3.5FIN DE LINSTALLATION.................................................................................................................................................... 23 4DCOUVRIR L'ENVIRONNEMENT DE TRAVAIL LINUX................................................................................ 25 4.1LENVIRONNEMENT DE TRAVAIL KDE...............................................................................................................................25 4.1.1LE TERMINAL KONSOLE...................................................................................................................................................25 4.1.1.1Commandes de base d'Unix.................................................................................................................................... 25 4.1.1.2Aide sur les commandes Unix.................................................................................................................................29 4.1.2L'DITEUR DE TEXTE KWRITE........................................................................................................................................... 30 4.1.2.1Tests........................................................................................................................................................................ 31 4.1.3LE GESTIONNAIRE DE FICHIERS KONQUEROR....................................................................................................................... 31 4.1.4LE NAVIGATEUR MOZILLA............................................................................................................................................... 35 4.1.4.1Configuration du proxy HTTP................................................................................................................................35 4.2SYSTMES DE FICHIERS, PRIPHRIQUES ET ARBORESCENCE................................................................................................. 35 4.2.1GESTION DES PRIPHRIQUES............................................................................................................................................ 35 4.2.2GESTION DES SYSTMES DE FICHIERS.................................................................................................................................35 4.2.3ORGANISATION DES DONNES SUR LE SYSTME DE FICHIERS...................................................................................................38 4.3GESTION DES COMPTES UTILISATEURS................................................................................................................................ 39 4.3.1CRATION DE GROUPES DUTILISATEURS............................................................................................................................. 40 4.3.2CRATION D'UTILISATEURS............................................................................................................................................... 40 4.3.3LES FICHIERS /ETC/PASSWD, /ETC/SHADOW, /ETC/GROUP....................................................................................................... 44 4.3.4GESTION DES UTILISATEURS EN MODE TEXTE....................................................................................................................... 45 4.3.5DROITS D'ACCS ATTACHS AUX UTILISATEURS.................................................................................................................... 45 5INTRODUCTION LINSTALLATION DE SERVICES....................................................................................... 50 5.1MODE OPRATOIRE .......................................................................................................................................................... 50 5.2APPLICATIONS CLIENT-SERVEUR DANS LE MONDE TCP-IP.................................................................................................. 51 5.3LE RSEAU PRIV TUDIANT.............................................................................................................................................. 52 5.4IDENTIFIER UNE MACHINE DE L'INTERNET........................................................................................................................... 52 5.5LES FICHIERS DE CONFIGURATION RSEAU DU POSTE LINUX................................................................................................. 53 5.6LES SERVICES INSTALLER............................................................................................................................................... 54 5.7LES TESTS DES SERVICES INSTALLS................................................................................................................................... 54 5.8LES FICHIERS DE LOGS......................................................................................................................................................55 5.9LES DMONS....................................................................................................................................................................55 5.9.1QUELQUES DMONS........................................................................................................................................................ 55 5.9.2LE SUPER DMON RSEAU XINETD..................................................................................................................................... 56 5.9.3CONFIGURATION DU SUPER DMON XINETD......................................................................................................................... 56 Linux RH8 190/193

5.9.4CONCLUSION..................................................................................................................................................................58 6LES SERVICES DE CONNEXION DISTANCE TELNET ET SSH................................................................... 59 6.1FONCTION....................................................................................................................................................................... 59 6.2INSTALLATION DU SERVICE TELNET.................................................................................................................................... 59 6.3TEST 1 DU SERVICE TELNET.............................................................................................................................................. 59 6.4TEST 2 DU SERVICE TELNET............................................................................................................................................. 60 6.5INSTALLATION DU SERVICE SSH.......................................................................................................................................... 60 6.6TEST DU SERVICE SSH....................................................................................................................................................... 61 7LES SERVICES DE COURRIER LECTRONIQUE.............................................................................................. 62 7.1FONCTION....................................................................................................................................................................... 62 7.2INSTALLATION ET CONFIGURATION..................................................................................................................................... 62 7.3TEST 1............................................................................................................................................................................62 7.4TEST 2............................................................................................................................................................................63 7.5TEST 3............................................................................................................................................................................66 7.6UTILISATION DALIAS........................................................................................................................................................66 7.7GRER LE RELAYAGE DE COURRIER................................................................................................................................... 68 7.8CRER UN RPONDEUR..................................................................................................................................................... 72 8LE TRANSFERT DE FICHIERS................................................................................................................................ 76 8.1FONCTION....................................................................................................................................................................... 76 8.2INSTALLATION ET CONFIGURATION..................................................................................................................................... 76 8.3TEST 1............................................................................................................................................................................76 8.4TEST 2............................................................................................................................................................................77 8.5TEST 3............................................................................................................................................................................77 8.6TEST 4............................................................................................................................................................................78 8.7TEST 5............................................................................................................................................................................78 8.8COMMENTAIRES............................................................................................................................................................... 78 9LE SERVICE WORLD WIDE WEB (WWW)........................................................................................................... 79 9.1FONCTION....................................................................................................................................................................... 79 9.2INSTALLATION..................................................................................................................................................................79 9.3LE FICHIER DE CONFIGURATION HTTPD.CONF...................................................................................................................... 79 9.4DMARRAGE/ARRT DU SERVICE HTTP........................................................................................................................... 80 9.5TEST 1............................................................................................................................................................................81 9.6TEST 2, NAVIGATEUR SOUS LINUX...................................................................................................................................... 81 9.7TEST 3 - MODIFIER LA PAGE D'ENTRE DU SITE...................................................................................................................82 9.8SITES WEB PERSONNELS.................................................................................................................................................... 82 10LE SERVICE SAMBA................................................................................................................................................ 85 10.1FONCTION..................................................................................................................................................................... 85 10.2INSTALLATION ET CONFIGURATION................................................................................................................................... 85 10.3COMMENTAIRES............................................................................................................................................................. 86 10.4PRPARATIFS................................................................................................................................................................. 87 10.5DMARRAGE DU SERVICE................................................................................................................................................ 88 10.6UTILISATION DU CLIENT SMBCLIENT................................................................................................................................. 88 10.6.1CONNEXION UN SERVICE D'ACCS PUBLIC.......................................................................................................................88 10.6.2CONNEXION UN SERVICE D'ACCS PRIV........................................................................................................................ 90 10.6.3CONNEXION AU RPERTOIRE PERSONNEL...........................................................................................................................91 10.7UTILISATION D'UN CLIENT WINDOWS................................................................................................................................ 92 10.7.1VOISINAGE RSEAU.......................................................................................................................................................92 10.7.2ACCS LA RESSOURCE [PUBLIC] EN LECTURE SEULE.........................................................................................................93 10.7.3ACCS AUX RPERTOIRES PERSONNELS SUR LINUX, RESSOURCE [HOMES]............................................................................... 93 10.7.4ACCS LA RESSOURCE [PRIVATE]................................................................................................................................. 94 10.7.5ACCS LA RESSOURCE [PUBLIC] EN LECTURE ET CRITURE................................................................................................95 10.7.6DEUX UTILISATEURS WIN9X PARTICULIERS........................................................................................................................ 95 10.8CONCLUSION..................................................................................................................................................................95 11LE SERVICE DES QUOTAS..................................................................................................................................... 97 11.1FONCTION..................................................................................................................................................................... 97 11.2INSTALLATION................................................................................................................................................................97 Linux RH8 191/193

11.3LES FICHIERS DE CONFIGURATION.................................................................................................................................... 97 11.4COLLECTE DES ESPACES DISQUES OCCUPS....................................................................................................................... 97 11.5COMMENTAIRES............................................................................................................................................................. 99 12FILTRER LACCS AUX SERVICES LANCS PAR XINETD........................................................................ 100 12.1FONCTION................................................................................................................................................................... 100 12.2LES FICHIERS DE CONFIGURATION.................................................................................................................................. 101 12.3DMARRAGE DU SERVICE.............................................................................................................................................. 102 12.4TEST 1........................................................................................................................................................................102 12.5TEST 3........................................................................................................................................................................103 12.6COMMENTAIRES........................................................................................................................................................... 103 13LES SYSTMES DE FICHIERS............................................................................................................................. 106 13.1LES SUPPORTS PHYSIQUES DES FICHIERS......................................................................................................................... 106 13.2MONTER DES SYSTMES DE FICHIERS............................................................................................................................. 107 13.2.1MONTAGES FAITS AU DMARRAGE DU SYSTME............................................................................................................... 107 13.2.2MONTAGES MANUELS..................................................................................................................................................109 13.2.3CONNATRE LE PARTITIONNEMENT DUN DISQUE : FDISK....................................................................................................109 13.2.4MONTAGE DUNE PARTITION DOS................................................................................................................................109 13.2.5MONTAGE DU CDROM.............................................................................................................................................110 13.2.6MONTAGE DUNE DISQUETTE LINUX..............................................................................................................................111 13.2.7MONTAGE DUN LECTEUR ZIP..................................................................................................................................... 111 13.2.8LES OUTILS MTOOLS....................................................................................................................................................112 13.3MONTAGE DE FICHIERS EXPORTS PAR LE SERVICE SAMBA ...............................................................................................114 14LA RECHERCHE RAPIDE DE FICHIERS.......................................................................................................... 118 14.1INTRODUCTION.............................................................................................................................................................118 14.2LA COMMANDE LOCATE................................................................................................................................................ 118 14.3CONCLUSION................................................................................................................................................................118 15SOUMETTRE DES TRAVAUX DES HEURES PRCISES............................................................................ 119 15.1INTRODUCTION.............................................................................................................................................................119 15.2LA COMMANDE CRONTAB.............................................................................................................................................. 119 15.3LES RPERTOIRES HOURLY, DAYLY, MONTHLY................................................................................................................ 122 15.4AFFICHAGES CRAN DES SCRIPTS SOUMIS CROND.......................................................................................................... 123 16LE SGBDR MYSQL.................................................................................................................................................. 125 16.1INTRODUCTION.............................................................................................................................................................125 16.2INSTALLATION DE MYSQL.......................................................................................................................................... 125 16.3LANCEMENT DU SERVEUR MYSQLD................................................................................................................................. 126 16.4LA DOCUMENTATION DE MYSQL................................................................................................................................. 126 16.5UTILISATION DU CLIENT MYSQL................................................................................................................................. 127 16.6POURSUIVRE................................................................................................................................................................ 134 17LE SGBDR POSTGRES........................................................................................................................................... 134 17.1INTRODUCTION.............................................................................................................................................................134 17.2INSTALLATION DE POSTGRES.........................................................................................................................................134 17.3LA DOCUMENTATION DE POSTGRES................................................................................................................................135 17.4LANCEMENT DU SERVEUR POSTGRES...............................................................................................................................136 17.5L'UTILISATEUR UNIX POSTGRES.....................................................................................................................................136 17.6PREMIRE UTILISATION DU CLIENT PSQL.........................................................................................................................136 17.7CRATION DES PREMIRES BASES DE DONNES (INSTALLATION FAITE SANS RPM)............................................................. 137 17.8LE CLIENT PSQL...........................................................................................................................................................138 17.9CRATION DE BASES DE DONNES.................................................................................................................................. 141 17.10CRATION D'UTILISATEURS......................................................................................................................................... 141 17.11AUTHENTIFICATION DES UTILISATEURS......................................................................................................................... 142 17.12COMMANDES SQL.....................................................................................................................................................145 18OUTILS DE DVELOPPEMENT...........................................................................................................................148 18.1PERL...........................................................................................................................................................................148 18.2PYTHON...................................................................................................................................................................... 148 18.3C................................................................................................................................................................................148 Linux RH8 192/193

18.4C++........................................................................................................................................................................... 149 18.5JAVA...........................................................................................................................................................................149 18.6JBUILDER.................................................................................................................................................................... 151 19DVELOPPEMENT WEB....................................................................................................................................... 159 19.1LES COMPOSANTES D'UNE APPLICATION WEB................................................................................................................. 159 19.2LES CHANGES DANS UNE APPLICATION WEB COMPORTANT UN FORMULAIRE...................................................................... 160 19.3QUELQUES RESSOURCES................................................................................................................................................160 19.4APACHE-PERL.............................................................................................................................................................161 19.5APACHE-PHP.............................................................................................................................................................165 19.6APACHE - JAVA........................................................................................................................................................... 168 19.6.1INSTALLATION DU SERVEUR WEB TOMCAT ...................................................................................................................... 168 19.6.2UN SCRIPT JSP..........................................................................................................................................................170 20CONFIGURATION D'UNE IMPRIMANTE HP JET DIRECT.......................................................................... 173 20.1CONFIGURER L'IMPRIMANTE AVEC MENU KDE............................................................................................................. 173 20.2FAIRE UN TEST AVEC OPENOFFICE................................................................................................................................175 21GESTION DES PAQUETAGES.............................................................................................................................. 176 21.1MISE JOUR DES PAQUETAGES INSTALLS......................................................................................................................176 21.2AJOUT/RETRAIT DE PAQUETAGES................................................................................................................................... 181 21.3RECHERCHE ET INSTALLATION D'UN PAQUETAGE SUR INTERNET........................................................................................182

Linux RH8

193/193

You might also like