Vous êtes sur la page 1sur 662

Linux

Administration

Auteurs
Abdelmadjid BERLAT
Jean-François BOUCHAUDY
Gilles GOUBET

GUIDE DE FORMATION

1
La marque © TSOFT est une marque déposée.
La collection des guides de formation © TSOFT est éditée par la société TSOFT.

Toutes les marques citées dans cet ouvrage sont des marques déposées par leurs propriétaires respectifs.

Tous les efforts ont été faits par TSOFT pour fournir dans cet ouvrage une information claire et exacte à
la date de parution. TSOFT n’assume de responsabilités, ni pour son utilisation, ni pour les contrefaçons
de brevets ou atteintes de tierces personnes qui pourraient résulter de cette utilisation.

La loi du 11 mars 1957 n’autorisant aux termes des alinéas 2 et 3 de l’article 41, d’une part, que les
« copies ou reproductions strictement réservées à l’usage privé du copiste et non destinées à une
utilisation collective », et, d’autre part, que les analyses et les courtes citations dans un but d’exemple et
d’illustration, « toute représentation ou reproduction intégrale, ou partielle, faite sans le consentement de
l’auteur ou de ses ayants droit ou ayants cause, est illicite » (alinéa 1er de l’article 40).

Cette représentation ou reproduction, par quelque procédé que ce soit, constituerait donc une contrefaçon
sanctionnée par les articles 425 et suivants du Code pénal.

CFAO Technologie a acquis auprès de Tsoft le droit de reproduire et d’utiliser ce manuel pendant une
durée d'un an jusqu'au 30/11/04 dans le cadre des formations qu’il dispense. Ce droit n’est transmissible à
aucun tiers ou utilisateur. CFAO Technologie et Tsoft se réservent le droit de poursuivre tout
contrevenant.

A compter du 30/11/04, CFAO Technologie s’interdit de reproduire et de distribuer ce manuel.

Réf : TS0038
Mise à jour février 2002

Editeur
Tsoft
10, rue du Colisée
75008 Paris
http://www.tsoft.fr
Tél. : 01 56 88 29 64
Fax : 01 53 76 03 64

©TSOFT, Paris 2002

Toute représentation ou reproduction intégrale ou partielle faite sans le consentement de l’auteur ou de


ses ayants droit ou ayants cause est illicite selon le Code de la propriété intellectuelle (Art L 122-4) et
constitue une contrefaçon réprimée par le Code pénal. Seules sont autorisées (Art 122-5) les copies ou
reproductions strictement réservées à l’usage privé du copiste et non destinées à une utilisation collective,
ainsi que les analyses et courtes citations justifiées par le caractère critique, pédagogique ou d’information
de l’œuvre à laquelle elles sont incorporées, sous réserve, toutefois, du respect des dispositions des
articles L122-10 à L122-12 du même Code relatives à la reproduction par reprographie.
Avant-propos

Avant-propos

L’administration d’un système d’exploitation est une tâche complexe. Celle du


système Linux n’échappe pas à la règle.
Les administrateurs d’autres systèmes d’exploitation ont à apprendre une manière
différente de faire mais n’ont pas à apprendre pourquoi il faut le faire ! Ils le savent
déjà. Les utilisateurs qui abordent l’administration d’un système à travers celle du
système Linux ont les deux objectifs à atteindre.
Parmi les lecteurs de cet ouvrage, certains administrent déjà des systèmes UNIX.
Linux est un système UNIX parmi d’autres, avec ses particularités. De nombreux
aspects du système leur sont déjà familiers. C’est pourquoi nous les invitons à étudier
et à approfondir les nouveautés, sans toutefois rejeter les modules « déjà vus », qui
peuvent cacher des particularités importantes.
Nous tenons à souligner notre choix délibéré, pour administrer le système, de mettre
l’accent sur le mode commande. Les outils graphiques n’offriront pas de difficultés de
navigation et d’emploi aux utilisateurs. La connaissance des fichiers et des
commandes qui se cachent derrière ces outils est le plus important pour une
appréhension professionnelle de Linux. C’est cette approche qui favorisera
l’intégration de Linux dans les systèmes d’information des entreprises.
Linux est un système en perpétuelle évolution. L’ouvrage repose sur la version 2.4 du
noyau Linux, et en particulier sur la distribution Red Hat. Les auteurs ont choisi de
présenter les aspects les plus fondamentaux, ceux qui dépendent le moins d’une
distribution particulière. Nous veillerons à faire évoluer cet ouvrage le plus souvent
possible, de façon à refléter au mieux les changements notables du système Linux.
En dehors de toutes les connaissances qu’il nous est possible d’apporter dans cet
ouvrage, il est des règles que les administrateurs doivent respecter, discipline et
méthodologie. Leur tâche s’en trouvera d’autant facilitée, surtout avec un soupçon
d’intuition.
Bon courage !

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 1-1
Table des matières

Table
des matières
MODULE 1 : INTRODUCTION....................................................................... 1-1
Les caractéristiques d’UNIX .................................................................................................1-2
L’historique de Linux ............................................................................................................1-4
Le rôle de l’administrateur ....................................................................................................1-9
Quelques éléments de méthodologie ...................................................................................1-11
Comment être « root ».........................................................................................................1-13
Comment administrer ..........................................................................................................1-15
Webmin ...............................................................................................................................1-17
Le dialogue avec les utilisateurs..........................................................................................1-22
La documentation ................................................................................................................1-24
Linux et Internet ..................................................................................................................1-31
Atelier 1 : Introduction ........................................................................................................1-35

MODULE 2 : LA GESTION DES UTILISATEURS .............................................. 2-1


Les comptes d’utilisateurs et de groupes...............................................................................2-2
Les commandes de gestion des utilisateurs ...........................................................................2-5
Les modèles de fichiers de configuration des sessions........................................................2-10
Atelier 2 : La gestion des utilisateurs ..................................................................................2-12

MODULE 3 : LES FICHIERS ........................................................................ 3-1


L’arborescence des fichiers ...................................................................................................3-2
Les principaux répertoires .....................................................................................................3-3
Les types de fichiers ..............................................................................................................3-5
Les droits ...............................................................................................................................3-9
Les commandes de gestion de l’arborescence.....................................................................3-12
Les attributs des fichiers ......................................................................................................3-15
Atelier 3 : Les fichiers .........................................................................................................3-17

MODULE 4 : LES SYSTÈMES DE FICHIERS ................................................... 4-1


Arborescence et système de fichiers......................................................................................4-2
Le montage des systèmes de fichiers.....................................................................................4-4
La structure d’ext2.................................................................................................................4-5

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 T-1
Table des matières

Les différents types de systèmes de fichiers..........................................................................4-9


La gestion de l’espace disque, la commande df ..................................................................4-12
Panorama des commandes de gestion des systèmes de fichiers..........................................4-14
Les systèmes de fichiers journalisés....................................................................................4-26
Automatiser le montage des systèmes de fichiers ...............................................................4-33
Les quotas ............................................................................................................................4-38
Atelier 4 : Les systèmes de fichiers .....................................................................................4-42

MODULE 5 : LA SAUVEGARDE ................................................................... 5-1


Les outils de sauvegarde........................................................................................................5-2
La sauvegarde par tar.............................................................................................................5-4
La sauvegarde par cpio ........................................................................................................5-10
La sauvegarde par dd...........................................................................................................5-12
Les autres outils de sauvegarde ...........................................................................................5-15
Les bandes ...........................................................................................................................5-19
Atelier 5 : La sauvegarde.....................................................................................................5-21

MODULE 6 : LA GESTION DES PROCESSUS ................................................. 6-1


Les processus (1/2) : les signaux ...........................................................................................6-2
Les processus (2/2) : l’environnement ..................................................................................6-4
Panorama des commandes de gestion de processus ..............................................................6-5
crontab (1/2) ..........................................................................................................................6-9
crontab (2/2) ........................................................................................................................6-11
Les bibliothèques dynamiques ............................................................................................6-15
Les IPC ................................................................................................................................6-18
Atelier 6 : La gestion des processus ....................................................................................6-21

MODULE 7 : L’ARRÊT ET LE DÉMARRAGE .................................................. 7-1


L’organisation d’un disque de PC .........................................................................................7-2
Le démarrage avec LILO.......................................................................................................7-4
L’activation des processus : init (1/2)..................................................................................7-12
L’activation des processus : init (2/2)..................................................................................7-15
Les scripts de démarrage : /etc/*rc* (1/2) ...........................................................................7-19
Les scripts de démarrage : /etc/*rc* (2/2) ...........................................................................7-21
Les sessions .........................................................................................................................7-26
Le fichier /etc/termcap.........................................................................................................7-29
L’arrêt du système : shutdown ............................................................................................7-31
Atelier 7 : L’arrêt et le démarrage .......................................................................................7-34

MODULE 8 : L’IMPRESSION ...................................................................... 8-1


Les spools d’impression ........................................................................................................8-2
Les commandes d’impression ...............................................................................................8-5
La gestion du service d’impression .......................................................................................8-8

T-2 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Table des matières

Atelier 8 : L’impression.......................................................................................................8-13

MODULE 9 LES DISQUES .......................................................................... 9-1


Les disques physiques ...........................................................................................................9-2
Les disques d’UNIX et de Linux...........................................................................................9-4
Ajout d’un disque ................................................................................................................9-10
Les disques RAID................................................................................................................9-12
Les volumes logiques ..........................................................................................................9-21
Le « swap »..........................................................................................................................9-31
Les disques dédiés ...............................................................................................................9-35
Atelier 9 : Les disques physiques et logiques......................................................................9-36

MODULE 10 : INSTALLATION DE LINUX .................................................... 10-1


Principes d’installation de Linux.........................................................................................10-2
Les types d’installation........................................................................................................10-4
Le partitionnement...............................................................................................................10-8
Etapes de l’installation de Linux .......................................................................................10-13
Le multi-boot avec LILO...................................................................................................10-18
Le démarrage de Linux depuis un autre système ..............................................................10-20
L’installation réseau ..........................................................................................................10-22
Atelier 10 : L’installation de Linux ...................................................................................10-25

MODULE 11 : LA GESTION DES PÉRIPHÉRIQUES ........................................ 11-1


Introduction à la gestion des périphériques .........................................................................11-2
Les fichiers spéciaux ...........................................................................................................11-5
Ajout d’un périphérique ......................................................................................................11-9
Les périphériques par catégories .......................................................................................11-13
L’USB................................................................................................................................11-17
Atelier 11 : La gestion des périphériques ..........................................................................11-24

MODULE 12 : LE NOYAU ......................................................................... 12-1


Le rôle du noyau ..................................................................................................................12-2
Historique du noyau ............................................................................................................12-4
Pourquoi modifier ou construire un nouveau noyau ...........................................................12-8
La construction d’un nouveau noyau.................................................................................12-10
Les modules.......................................................................................................................12-17
Les paramètres de Linux ...................................................................................................12-23
Les IPC ..............................................................................................................................12-29
Informations sur le système, les périphériques..................................................................12-32
Le service « syslog » .........................................................................................................12-34
Atelier 12 : Le noyau .........................................................................................................12-37

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 T-3
Table des matières

MODULE 13 : LES PAQUETAGES .............................................................. 13-1


La gestion des paquetages ...................................................................................................13-2
La commande rpm ...............................................................................................................13-3
La commande GnoRPM ......................................................................................................13-8
Atelier 13 : Les paquetages ...............................................................................................13-10

MODULE 14 : LA GESTION DES PERFORMANCES ...................................... 14-1


Les ressources à surveiller...................................................................................................14-2
Panorama des commandes de surveillance du système.......................................................14-4
Surveiller le système avec la commande sar .......................................................................14-8
Surveiller le système avec la commande vmstat ...............................................................14-11
La comptabilité BSD .........................................................................................................14-13
Atelier 14 : La gestion des performances ..........................................................................14-16

MODULE 15 : LE RÉSEAU........................................................................ 15-1


TCP/IP, panorama des protocoles .......................................................................................15-2
Ajouter un système dans un réseau IP .................................................................................15-4
Les services réseaux ............................................................................................................15-7
Les commandes remote .....................................................................................................15-11
NFS (présentation), les RPC..............................................................................................15-14
NIS.....................................................................................................................................15-18
in.ftpd, le transfert de fichiers............................................................................................15-30
Le courrier électronique.....................................................................................................15-32
sendmail.............................................................................................................................15-38
DHCP ................................................................................................................................15-43
Apache ...............................................................................................................................15-45
Samba ................................................................................................................................15-58
Serveur DNS (named) .......................................................................................................15-68
Atelier 15 : Le réseau ........................................................................................................15-75

MODULE 16 : X-WINDOW ....................................................................... 16-1


Le système X-Window ........................................................................................................16-2
La configuration du serveur X.............................................................................................16-5
Démarrage d’une session X, d’un client X..........................................................................16-7
Panorama des clients X (« MIT ») ....................................................................................16-13
xterm..................................................................................................................................16-16
twm ....................................................................................................................................16-18
Les ressources....................................................................................................................16-20
KDE ...................................................................................................................................16-22
gnome ................................................................................................................................16-26
fvwm2................................................................................................................................16-28
Atelier 16 : X-Window ......................................................................................................16-29

T-4 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Table des matières

MODULE 17 : LA SÉCURITÉ ..................................................................... 17-1


La sécurité informatique......................................................................................................17-2
La cryptologie......................................................................................................................17-4
SSH......................................................................................................................................17-9
La sécurité de connexion ...................................................................................................17-14
Le paquetage shadow ........................................................................................................17-16
PAM ..................................................................................................................................17-20
La sécurité pour les utilisateurs .........................................................................................17-23
Les droits d’endossement et la sécurité .............................................................................17-24
Les logiciels libres d’audit sur Internet .............................................................................17-25
Pare-feu (« firewall »)........................................................................................................17-27
Un pare-feu de type proxy avec SQUID ...........................................................................17-30
Construire un pare-feu avec IPCHAINS ...........................................................................17-35
Atelier 17 : La sécurité ......................................................................................................17-41

MODULE 18 : BASES DE DONNÉES .......................................................... 18-1


MySQL ................................................................................................................................18-2
PostgreSQL..........................................................................................................................18-7
Atelier 18 : Bases de données............................................................................................18-12

ANNEXES .................................................................................................A-1
Annexe A : Les commandes POSIX 2 .................................................................................A-3
Annexe B : sh - Le shell POSIX.........................................................................................A-15
Annexe C : ksh – Le Korn shell .........................................................................................A-19
Annexe D : bash – Bourne Another SHell .........................................................................A-27
Annexe E : awk – Le processeur de texte...........................................................................A-39
Annexe F : sed – Editeur en mode flot ...............................................................................A-45
Annexe G : Les principaux fichiers d’administration ........................................................A-47
Annexe H : Solutions des exercices ...................................................................................A-51
Annexe I : Les écrans de Linuxconf...................................................................................A-67
Annexe J : Webmin ...........................................................................................................A-83
Annexe K : Compilation du noyau .....................................................................................A-87
Annexe L : Dépannage (« Troubleshooting ») ...................................................................A-97

INDEX ....................................................................................................... I-1

BIBLIOGRAPHIE ........................................................................................B-1

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 T-5
Préambule

Préambule
Ce guide a pour objectif de former les utilisateurs, ayant déjà une bonne pratique d’un
système UNIX ou de Linux, à l’administration de Linux. Il n’est pas nécessaire de
savoir programmer en shell pour mener à bien l’étude de l’administration, mais nous
le conseillons fortement aux utilisateurs qui souhaitent être rapidement opérationnels.

Support de formation
Le guide de formation concerne tous les utilisateurs d’un système Linux qui ont
fréquemment à exécuter des tâches de gestion et qui souhaitent être autonomes pour
les réaliser, les exploitants qui ont besoin d’une connaissance assez approfondie du
système et, bien évidemment, tous les futurs administrateurs de systèmes Linux.
Le support convient à des formations dont la durée peut être comprise entre quatre et
cinq jours.

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 1


Préambule

Progression pédagogique

1) Introduction 10) L’installation et la


2) La gestion des utilisateurs réinstallation de Linux
3) Les fichiers 11) La gestion des périphériques
4) Les systèmes de fichiers 12) Le noyau
5) La sauvegarde 13) Les paquetages
6) La gestion des processus 14) La gestion des performances
7) L’arrêt et le démarrage 15) Le réseau
8) L’impression 16) X-Window
9) Les disques de Linux 17) La sécurité
18) Bases de données

TSOFT - UNIX Administration Préambule - 1.2

Introduction
Le lecteur acquiert une vision globale du système Linux, sait le rôle de
l’administrateur, ce qu’il peut faire et comment le faire.

La gestion des utilisateurs


Le lecteur connaît les attributs d’un compte utilisateur. Il sait le créer, le modifier et le
supprimer.

Les fichiers
On rappelle au lecteur l’arborescence des fichiers, les droits d’accès fondamentaux. Le
lecteur apprend à identifier tous les types de fichiers et sait tous les droits existants.

Les systèmes de fichiers


Le lecteur apprend à gérer les systèmes de fichiers du système Linux. Il sait leur
architecture, les monter et les démonter.

La sauvegarde
Le lecteur apprend les différents types de sauvegarde existant sur Linux et les
commandes associées. Il est capable de définir ensuite une stratégie de sauvegarde.

La gestion des processus


Le lecteur complète sa connaissance de la gestion des processus. Il sait exécuter des
commandes avec une identité spécifique et configurer l’environnement des
utilisateurs.

2 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004


Préambule

L’arrêt et le démarrage
Le lecteur connaît les phases du démarrage et de l’arrêt du système, les actions
essentielles exécutées. Il sait paramétrer l’arrêt et le démarrage du système.

L’impression
Le lecteur sait administrer le système d’impression d’un système Linux. La connexion
d’une imprimante distante est présentée.

Les disques de Linux


Le lecteur apprend la définition d’un disque au sens de Linux. Il en apprend les
différents usages et les formes physiques sur des disques IDE ou SCSI.

L’installation et la réinstallation de Linux


Le lecteur apprend les différentes manières d’installer Linux, localement ou en réseau.

La gestion des périphériques


Le lecteur apprend à identifier les périphériques installés et actifs. Il en connaît les
principaux attributs.

Le noyau
Le lecteur approfondit sa connaissance des fonctions du noyau. Il apprend à modifier
les paramètres du système et la procédure générique d’intégration d’un pilote au noyau
Linux. Le lecteur apprend également à recompiler le noyau.

Les paquetages
Le lecteur apprend à visualiser les logiciels contenus dans un paquetage et à les
installer.

La gestion des performances


Le lecteur apprend les commandes de surveillance des performances du système et les
éléments de définition d’une stratégie de surveillance.

Le réseau
Le lecteur apprend les éléments fondamentaux nécessaires à l’intégration d’un
système UNIX dans un réseau TCP/IP. Le module n’est cependant pas un cours
complet sur TCP/IP.

X-Window
L’utilisateur apprend à utiliser et, surtout, configurer le système graphique X11. Il en
apprend aussi les principaux composants, les clients, accessibles à travers les bureaux
du système Linux.

La sécurité
Le lecteur est sensibilisé aux problèmes liés à la sécurité et apprend les règles de base
pour veiller à la sécurité et à l’intégrité du système.

Bases de données
Le lecteur apprend à utiliser les bases de données les plus populaires du monde des
logiciels libres. A priori, le lecteur connaît le langage SQL.

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 3


Module 1 : Introduction

• Free software,
GNU,GPL
• UNIX et Linux
• Le rôle de
l’administrateur
• root
• su, man, HOWTO,
FAQ, info

1Module 1 : Introduction
Objectifs
Après l’étude de ce chapitre, le lecteur connaît le rôle de l’administrateur du système
Linux. Il sait se connecter en tant qu’administrateur, utiliser et configurer la
documentation.

Contenu
Les caractéristiques d’UNIX
L’historique de Linux
Le rôle de l’administrateur
La connexion en tant que root, les commandes login et su
Comment administrer
Webmin
Le dialogue avec les utilisateurs
La documentation
Linux et Internet

Références
HOWTO : META-FAQ, INFO-SHEET, INDEX, CONFIG-HOWTO,
Distribution-HOWTO, Reading-List-HOWTO
Livre : Running Linux
Manuel : man(1)
Internet : http://linux.org

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 1-1
Module 1 : Introduction

Les caractéristiques d’UNIX


Les caractéristiques d’UNIX

„ Système multi-tâche, multi-utilisateur


„ Arborescence de fichiers et de systèmes de fichiers (FS)
„ Processus et noyau, fichiers périphériques
„ Shell et commandes, scripts
„ Origine AT&T et BSD
„ Système ouvert : Unix 95, 98 de l’Open Group
„ Les Unix : HP-UX (HP), Solaris (Sun), AIX (IBM),
Unix SCO (SCO), Linux (Red Hat, Slackware, ...), etc.

TSOFT - Linux Administration Module 1 : Introduction - 1.2

Le système Linux est d’abord un système UNIX. C’est pourquoi il en possède les
caractéristiques.

Système multi-tâche, multi-utilisateur


UNIX autorise la connexion simultanée de plusieurs utilisateurs, c’est un système
multi-utilisateur. Les utilisateurs se connectent à partir d’un terminal passif relié à
l’ordinateur par une liaison physique ou à partir d’un poste de travail, souvent un
micro-ordinateur, connecté à la machine UNIX par l’intermédiaire d’un réseau.
Comme un utilisateur a le droit d’exécuter plusieurs commandes en même temps ou
qu’une tâche peut créer d’autres tâches, le système UNIX est multi-tâche.

Arborescence de fichiers et de « FS »
L’appellation système de fichiers ou son acronyme « FS » (« File System ») a une
double signification dans le système UNIX. Pour les utilisateurs et l’administrateur,
elle représente l’arborescence des fichiers du système UNIX. Un nœud de l’arbre est
de type répertoire et contient d’autres fichiers, y compris des sous-répertoires, ou d’un
autre type et c’est alors un élément terminal de l’arborescence (une feuille). Pour
l’administrateur, un système de fichiers est aussi une structure d’accueil pour une
arborescence de fichiers, créée sur un disque. C’est l’unification, par l’administrateur,
des arborescences des disques du système UNIX, qui constitue l’arborescence unique
vue par les utilisateurs.
Le principe de l’unification des arborescences a été étendu aux réseaux. Un fichier
peut résider localement mais aussi sur un disque distant (cf. Module 13 : Le réseau).

Processus et noyau, fichiers périphériques


Le noyau (« Kernel ») est un fichier chargé au démarrage de l’ordinateur. Le noyau est
responsable de la gestion des ressources du système UNIX, en particulier des
processus qu’il crée pour exécuter les commandes des utilisateurs et des périphériques

1-2 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 1 : Introduction

qui lui sont connectés. Les processus font appel au noyau par l’intermédiaire de
primitives issues d’une API (« Application Program Interface ») et désignent les
périphériques auxquels ils accèdent par un nom de fichier défini dans l’arborescence.
Dans UNIX, les périphériques sont vus comme des fichiers (cf. Module 10 : La
gestion des périphériques, Module 11 : Le noyau).

Shell et commandes, scripts


Le shell est associé à une session de travail en mode commande. L’administrateur,
plus que les autres utilisateurs, automatisera l’exécution des tâches d’administration en
écrivant des procédures, des scripts.

Origine AT&T et BSD


Le système UNIX a été conçu au sein de la société AT&T. L’université californienne
de Berkeley a ensuite développé son propre système UNIX, connu sous l’acronyme de
« BSD » (« Berkeley Software Development »). Ces deux systèmes ont fortement
marqué de leur empreinte les choix des organismes qui ont procédé à des
normalisations dans le monde UNIX et des constructeurs. Les commandes
d’administration font souvent référence à AT&T ou à « BSD » autant qu’à des normes
(cf. UNIX Utilisateur).

Système ouvert : UNIX 95, UNIX 98 de l’Open Group


L’Open Group est un organisme qui a en charge la normalisation dans le monde des
systèmes ouverts. Le standard promu a été UNIX 95 et son évolution récente UNIX
98. Il comprend les principales normes du monde UNIX et plus généralement des
systèmes ouverts. De nombreux constructeurs s’y rattachent, même si leur
documentation, plutôt que de le mentionner explicitement, préfère citer les normes
individuellement. Linux est conforme à de nombreuses normes, en particulier la
norme POSIX-1 de l’ISO. En revanche, Linux n’est pas conforme à UNIX 95.

Les UNIX : HP-UX (HP), Solaris (SUN), AIX (IBM), UNIX SCO (SCO),
Linux
Les constructeurs ont développé leur propre système UNIX, en s’appuyant au départ
sur les systèmes AT&T ou BSD. Ils intègrent aujourd’hui les principaux standards du
monde UNIX mais continuent à offrir des particularités qui tiennent souvent plus à la
forme qu’au fond.

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 1-3
Module 1 : Introduction

L’historique de Linux
L ’historique de Linux

„ Les logiciels libres


« Free software », GNU, GPL, Xfree86
Minix, Linux
„ Les distributions Linux
Red Hat
Slackware
Caldera
SUSE

TSOFT - Linux Administration Module 1 : Introduction - 1.3

UNIX et le monde libre


UNIX et le monde libre, c’est une vieille histoire, en partie due au hasard. La société
AT&T, du fait de son monopole dans les télécommunications aux USA, ne pouvait
pas vendre de matériel et de logiciel informatique. Les concepteurs d’UNIX, Ken
Thompson et Denis Ritchie, pour ne pas enfreindre la loi, ont distribué UNIX à prix
coûtant (le prix de la bande magnétique et des frais d’envoi). Bien que les distributions
aient conservé le copyright d’AT&T, la disponibilité des sources du système a permis
la création d’une multitude d’ « UNIX LIKE », dont Linux.
Dès la perte de son monopole, la société AT&T a commercialisé des ordinateurs et le
système d’exploitation UNIX sous l’appellation UNIX System V. AT&T a essayé de
contrôler le développement d’UNIX, tout en intégrant les évolutions extérieures,
notamment celles réalisées par l’Université de Berkeley, à l’origine de « Free BSD ».
Comme aboutissement, AT&T a créé la norme SVID (« System V Interface Definition
»), pour fédérer l’ensemble des systèmes UNIX derrière sa bannière. La norme SVID
spécifie les appels systèmes que doit respecter un système UNIX pour permettre de
porter une application d’un système à un autre par simple compilation des
programmes écrits en langage C.
SVID marque la naissance des systèmes ouverts. SVID est en effet un document
public, accessible à quiconque souhaite créer un système d’exploitation compatible
UNIX. Les différentes normes POSIX d’IEEE, ultérieurement normalisées par l’ISO,
sont le résultat de ce mouvement.
Il faut remarquer que ce caractère ouvert découle de la volonté des concepteurs
d’UNIX de créer un système portable. Ken Thompson a créé le langage B, amélioré
par Ritchie pour donner le langage C. L’écriture du noyau du système d’exploitation et
des applications en langage C a assuré la portabilité d’UNIX
L’accès aux programmes sources C du système et la volonté d’ouverture étaient
inscrits sur les fonds baptismaux d’UNIX.

1-4 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 1 : Introduction

L’évolution des logiciels libres de droits (GNU, Free software)


A l’instar d’AT&T, les universités et les centres de recherche ont activement contribué
aux développements d’UNIX. Aussi ont-ils très mal accueilli la décision d’AT&T,
dans les années 1980, de limiter les droits d’utilisation et de distribution d’UNIX.
On a même assisté à une bataille rangée entre l’université de Berkeley d’un côté et les
sociétés AT&T puis Novell, de l’autre. Novell a racheté les droits d’UNIX à AT&T en
1991. Novell céda ensuite ses droits sur UNIX à l’Open Group qui en est toujours le
possesseur.
En 1984, au MIT (Massachusetts Institute of Technology), Richard Stallman a amorcé
un mouvement pour le développement de logiciels libres de droits, mouvement qui
s’est traduit par la création de la FSF (« Free Software Foundation ») autour du projet
GNU, dénomination issue d’une tradition UNIX qui consiste à utiliser un acronyme
récursif comme nom de programme et signifiant : GNU’s Not UNIX.
La FSF, toujours basée au MIT, a depuis produit un grand nombre de logiciels, parmi
lesquels on peut citer : emacs, GNU C, GNU C++, GNU emacs, GNU bash, GNU tar,
bien connus du monde UNIX.
L’université de Berkeley, n’est pas en reste non plus, puisqu’elle est à l’origine de la
plus populaire des licences de logiciels libres de droits : Free BSD. Cette licence
stipule que l’auteur du logiciel demeure toujours propriétaire du code, mais n’impose
aucune restriction à l’utilisateur quant aux modifications qu’il pourrait y apporter.
Enfin, toujours au MIT, mais extérieur à la FSF, le consortium X s’est vu confier par
la communauté UNIX, la charge de faire évoluer le système graphique X-Window.
Terminons cette présentation par le célèbre groupe « XFree86 », qui a la responsabilité
de porter X-Window sur les plates-formes INTEL et dont le logiciel du même nom est
disponible gratuitement, contrairement à des logiciels commerciaux tels que Metro X
par exemple.

Le système Linux, licence GPL


En août 1991, Linus Torvald, étudiant à l’université d’Helsinki, annonçait dans le
« newsgroup » USENET « comp.os.minix » son projet de développer un système
d’exploitation utilisant au mieux les fonctionnalités multi-tâches du processeur 386
d’INTEL, un passe-temps sans but commercial.
Linus Torvald voulait offrir un système performant aux utilisateurs d’un petit système
UNIX de l’époque, Minix, écrit par Andy TanenBaum. Linus Torvald le décrivait
ainsi : « better Minix than Minix ».
La première version, la version 0.01 d’août 1991, était rudimentaire. Elle ne
comportait que quelques sources et devait être compilée sous Minix.
Depuis, des centaines de développeurs, communiquant via Internet, ont aidé Linus
Torvald. Un nouveau mode de développement est né !
Aucune organisation ne contrôle le développement. Une personne est responsable
d’un projet et plusieurs autres participent à l’écriture du code.
C’est Linus Torvald qui est responsable du noyau Linux et c’est lui qui décide de la
distribution des sources. Concrètement, chaque composant du noyau (pilote, système
de fichiers, gestion de mémoire, …) est sous la responsabilité d’une personne, qui
centralise à son tour les développements de centaines de programmeurs et les
transmet à Linus Torvald, afin qu’il les intègre au noyau Linux.
Ce mode de travail est celui utilisé pour le développement de tous les utilitaires de
Linux.

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 1-5
Module 1 : Introduction

Linux est la propriété de Linus Torvald, et des personnes qui ont contribué à son
développement (torvald@transmeta.com) mais le code source aussi bien que le code
binaire sont librement et gratuitement distribués selon les termes du GPL (GNU Public
Licence) qui stipulent que tout acquéreur peut librement utiliser et même
commercialiser le produit. Cependant, toutes les modifications du produit doivent à
leur tour être librement et gratuitement disponibles pour la communauté
internationale, ce qui garantit la perpétuité du logiciel libre de droits.

Les versions du noyau Linux


Linux n’est plus à l’état de Bêta-test depuis la version 1.0 en date du 14 mars 1994, les
« bugs » étant corrigés au fur et à mesure.
La convention de numérotation des versions de Linux est la suivante : x.y.z.
Dans cette convention, y est une valeur paire pour désigner une version stable, alors
qu’une valeur impaire désigne une version en Bêta-test. Quant à z, il est incrémenté à
chaque correction d’un « bug ».
En janvier 2002, la version stable est la version 2.4.16. La prochaine version Bêta-test
sera donc la 2.5, et donnera naissance à la prochaine version stable qui sera la version
2.6.

Caractéristiques de Linux
• Multi-tâches.
• Multi-utilisateurs.
• Multi-plates-formes : Intel, Compaq Alpha, Sun SPARC, (Power PC, Mac et
autres en cours).
• Gestion dynamique des pilotes de périphériques : les modules sont chargés
dynamiquement.
• Conformité au standard POSIX.
• Compatibilité avec UNIX System V (AT&T) et BSD au niveau des sources.
• Support des bibliothèques UNIX aux formats COFF et ELF.
• Compatibilité binaire avec SCO SVR3 et SVR4 avec les modules d’émulation
IBCS2.
• Support du standard ISO 9660 (CD-ROM).
• Support de plusieurs systèmes de fichiers dont Windows 9x et Macintosh, en
lecture seulement pour le dernier.
• Interopérabilité avec WINDOWS, Netware.
• plate-forme de référence pour les standards Internet tels que apache, ipchains…

Les distributions Linux


Une distribution Linux comprend le noyau, les pilotes, les bibliothèques, les utilitaires
d’installation et de post-installation, ainsi qu’un grand nombre de logiciels.
Citons quelques distributions :
Slackware
La première distribution qui a popularisé Linux auprès du grand public. Elle n’a pas
connu l’essor auquel elle pouvait prétendre de par sa précocité. La distribution
Slackware est une distribution complète de Linux, fournie sur quatre CD-ROM.

1-6 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 1 : Introduction

Red Hat
L’apport principal de Red Hat est sans doute le concept de paquetage (cf. Module 13 :
les paquetages). Un paquetage comprend un logiciel, sa documentation ainsi que tous
les utilitaires qui en simplifient l’installation, la désinstallation ou la mise à jour, le
tout prêt à l’emploi sur un simple clic. Ce concept a, du reste, été repris par d’autres
distributions.
Cette distribution comprend des outils d’installation et de configuration simples
d’emploi en mode graphique ou en mode caractère. Le mode caractère, toujours
important, est d’autant plus utile pour le moment que certains constructeurs de cartes
graphiques, pour ne pas citer de noms, ont quelques réticences semble-t-il à fournir
des pilotes pour Linux (cf. Module 16 : X-Window).
Red Hat existe pour de nombreuses plates-formes parmi lesquelles on peut citer :
Intel, Compaq Alpha, Sun SPARC, Power PC et Mac (en cours).
Remarque
Linus Torvald utilise la distribution Red Hat.

Debian
Debian est une distribution non commerciale de Linux, avec l’objectif d’être de
grande qualité. Debian utilise son propre format de paquetage. Le développement de
Debian est réalisé, via l’Internet, de la même manière que le noyau Linux. Debian
supporte les plates-formes Intel, Compacq Alpha, Sun SPARC.
S.u.S.E
Basée sur la distribution Slackware, cette distribution d’origine allemande entreprend
un déploiement aux Etats-Unis. Elle possède ses propres outils d’installation et utilise
les paquetages Red Hat. L’installation se fait, via des menus, depuis le CD-ROM.
Remarque
S.u.S.E sponsorise le groupe XFree86 pour le développement de serveurs X de
diverses cartes graphiques récentes. C’est, par conséquent, un site à consulter si vous
n’avez pas de pilotes pour votre carte graphique ! (http://www.suse.de)

Mandrake
La distribution Mandrake est basée sur la Red Hat. Elle dispose de son propre outil
graphique d’installation.
Caldera
La distribution OpenLinux de Caldera inclut des produits commerciaux :
- Netscape FastTrack Web Server,
- le système de gestion de bases de données ADABAS,
- Novell Netware
EasyLinux
C’est la distribution de la société EIT.
CorelLinux
C’est la distribution de la société de la société Corel. Elle inclut le logiciel
WordPerfect. Elle est basée sur la distribution Debian et utilise l’interface KDE. Elle
dispose de son propre outil d’administration.

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 1-7
Module 1 : Introduction

Trinux
C’est un système Linux qui fonctionne uniquement en mémoire et qui possède des
outils d’audit des réseaux (cf. Module 17 : La sécurité).
TurboLinux
C’est une version de Linux en cluster, distribuée par la société TurboLinux. Cette
distribution est payante. Elle est destinée à équiper de gros serveurs.

1-8 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 1 : Introduction

Le rôle de l’administrateur
Le rôle de l’administrateur

„ Créer, modifier, supprimer un utilisateur


„ Gérer les fichiers et les disques
„ Surveiller l’espace disque
„ Organiser les sauvegardes
„ Ajouter un périphérique
„ Améliorer les performances du système
„ Installer de nouveaux produits
„ Veiller à la sécurité du système
„ Paramétrer le démarrage et l’arrêt du système

TSOFT - Linux Administration Module 1 : Introduction - 1.4

Créer, modifier, supprimer un utilisateur


L’administrateur doit gérer les comptes des utilisateurs. Outre la création et la
suppression des comptes qui s’effectuent avec des commandes standard, il doit être
capable de modifier l’environnement de travail des utilisateurs. Cette dernière
opération recouvre un large éventail d’actions : changement du mot de passe,
appropriation de fichiers, …

Gérer les fichiers et les disques


La gestion des fichiers et des disques comprend principalement les actions suivantes :
• Veiller à l’intégrité des systèmes de fichiers.
• Organiser l’arborescence.
• Protéger l’arborescence en positionnant et contrôlant les droits sur les fichiers.
• Gérer les systèmes de fichiers (création, montage, démontage, ...).
• Gérer les disques (initialisation, partitionnement, ...).

Surveiller l’espace disque


La surveillance de l’espace disque consiste à contrôler le taux d’occupation des
disques contenant des systèmes de fichiers et des disques utilisés pour le « swapping »
et éventuellement l’espace occupé individuellement par les utilisateurs.

Organiser les sauvegardes


L’organisation des sauvegardes comprend un ensemble d’éléments qui ne sont pas
propres au système Linux et parmi lesquels on peut citer : le choix des types de
sauvegarde et des commandes à utiliser, la fréquence et le type de support.

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 1-9
Module 1 : Introduction

Ajouter un périphérique
L’ajout d’un périphérique amène à savoir créer un fichier spécial pour ce périphérique,
ajouter éventuellement un pilote de périphérique (« device driver ») au noyau ou
l’installer comme un module qui sera chargé automatiquement lors du démarrage.

Améliorer les performances du système


Le rôle de l’administrateur est aussi de surveiller et d’améliorer les performances du
système en sachant paramétrer les ressources utilisées par le noyau pour son propre
fonctionnement ou les services offerts aux processus.

Gérer les services standard et installer de nouveaux produits


L’administrateur doit savoir configurer et utiliser les principaux services du système
Linux :
• Le service cron des travaux périodiques.
• Le service d’impression.
Il doit aussi savoir installer de nouveaux produits en utilisant la procédure standard de
Linux, la commande rpm, ou la procédure spécifique au logiciel.

Veiller à la sécurité du système


L’administrateur doit veiller à la sécurité en utilisant les moyens standard que lui
fournit le système Linux, en particulier la sécurité de connexion. Il doit éduquer les
utilisateurs et se contraindre à une discipline sévère.

Paramétrer le démarrage et l’arrêt du système


L’administrateur doit être capable de paramétrer l’arrêt et le démarrage du système
pour automatiser le démarrage des nouveaux services et produits.

1-10 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 1 : Introduction

Quelques éléments de méthodologie


Quelques éléments de méthodologie

Et j'avais toujours un extrême désir d'apprendre à distinguer le vrai


d'avec le faux pour voir clair en mes actions et marcher avec
assurance en cette vie
Descartes, Discours de la méthode

TSOFT - Linux Administration Module 1 : Introduction - 1.5

Pour bien accomplir sa mission, l’administrateur doit respecter des règles de bon sens
et être méthodique.

Il faut sauvegarder son système


Votre système est fragile. Un logiciel peut être bogué, vous pouvez faire des erreurs
d’exploitation, un disque ou votre ordinateur peut tomber en panne. A tout moment, il
faut être capable de réinstaller votre système tel qu’il était avant le problème. Votre
première mission est la continuité de l’exploitation. Pour apporter la preuve que l’on
peut réinstaller son système, il faut en faire le test, c’est à dire le réinstaller ! La
situation idéale est d’avoir une machine de test identique à celle en exploitation. La
machine de test sert en permanence de machine de secours.

Il faut tenir à jour un journal de bord


Vous devez tenir un journal de bord dans lequel vous consignez les opérations
importantes d’exploitation : ajout de périphériques, mise à jour du système,
installation de logiciel, sauvegarde complète du système, ainsi que les événements
anormaux (lenteur inhabituelle du système, messages d’erreurs système, …). Ce
cahier constitue la mémoire de votre système. Vous pouvez consigner en annexe les
fichiers de configuration. Le complément logique de ce cahier est fourni par les
« logs » systèmes qu’il faut archiver.

Il faut agir de manière réversible


Chaque fois que l’on installe un périphérique, un logiciel, que l’on met à jour des
données, il faut pouvoir revenir en arrière, car l’opération peut être accomplie
incorrectement. Pour atteindre cet objectif, il faut prendre des précautions
complémentaires à la sauvegarde du système et de la tenue du journal de bord :

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 1-11
Module 1 : Introduction

• Avant d’accomplir une action importante, il faut savoir répondre à la question


« comment faire machine arrière ? ». Entre deux solutions à un problème
d’administration, choisissez toujours choisir la solution réversible.
• Il faut conserver l’historique des modifications. Dans le cas des fichiers de
configuration, il est nécessaire de conserver les versions antérieures. Supposons
que l’on modifie le fichier qui décrit les groupes d’utilisateurs, /etc/group, que la
dernière version soit numérotée 002, on effectue les opérations suivantes :

# cp /etc/group /etc/group.003

On peut également utiliser les outils de développement RCS ci et co.

Il faut automatiser les procédures


Toutes les procédures répétitives (sauvegarde, installation d’un poste client, création
de comptes dédiés…) doivent être automatisées via des scripts. L’avantage est double,
gain de temps et sécurité accrue. A défaut de scripts, les procédures manuelles
d’exploitation doivent être consignées noir sur blanc. Ces « checklist » sont très utiles
lorsque l’on doit les accomplir. Bien sûr, les procédures d’exploitation doivent être
consignées dans le journal de bord.

Il faut anticiper les problèmes


Gouverner, c’est prévoir. Il faut imaginer les événements qui peuvent survenir et qui
peuvent affecter l’exploitation. Il faut mesurer leur gravité et leur probabilité
d’occurrence. Voici quelques exemples d’événements à prévoir :
• Vous pouvez tomber malade, l’exploitation doit continuer.
• Votre machine ne démarre plus, que faire ?
• Une nouvelle version majeure de votre système est imminente, remet-elle en cause
les procédures actuelles ?
• Le local technique brûle, comment redémarrer l’exploitation au plus tôt ?
Nous renvoyons le lecteur à l’annexe J de cet ouvrage pour en savoir plus.

1-12 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 1 : Introduction

Comment être « root »


Comment être «root»

„ Connexion en tant qu’utilisateur « root »


Login: root
password:
#
„ Prise des droits de « root »
$ su
password:
# chown pierre fichier
# exit
$

TSOFT - Linux Administration Module 1 : Introduction - 1.6

Le nom de l’administrateur d’un système Linux est « root ». Pour avoir les privilèges
de root, encore appelé le « super user », il faut prendre l’identité de root.
Pour cela, on peut se connecter en tant que root. Quel que soit le shell de connexion de
l’administrateur, l’invite est le symbole « # », le répertoire de connexion /root.
login : root
password : xxxxxxx
#
# exit
Il est aussi possible de prendre temporairement, quand on est déjà connecté, l’identité
de l’administrateur grâce à la commande su.
$ su
password : xxxxxxx
#
# exit
$
Remarques
• root peut modifier l’invite du shell. Il est conseillé d’y conserver #.
• Le shell de connexion de root est, par défaut, le shell bash (« Bourne again
shell »). Il peut le changer, comme tous les utilisateurs.
• Il n’est pas conseillé de toujours travailler connecté en tant que root. Il est
préférable de disposer d’un compte ordinaire et d’exécuter la commande su si
nécessaire.
• La commande su change l’identité mais pas l’environnement. Pour changer
d’environnement (exécuter le fichier .bash_profile), il faut saisir su –
(cf. Module 6 : La gestion des processus).

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 1-13
Module 1 : Introduction

• L’invite d’un utilisateur du système Linux est définie par la variable PS1 du shell
(cf. Annexe : shell bash). Par défaut, elle contient le nom de l’utilisateur, le nom
du système, le répertoire courant et, pour terminer, le symbole « $ » pour un
utilisateur ordinaire et le symbole « # » pour root. Dans le manuel, l’invite utilisée
dans les exemples est « $ » pour les utilisateurs ordinaires et « # » pour root.
• Quand on travaille dans un environnement mono utilisateur, il est possible
d’ouvrir une session avec la connexion root, sur l’une des consoles virtuelles de
votre ordinateur. En cas de problème majeur, l’administrateur dispose d’une
session déjà active.

1-14 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 1 : Introduction

Comment administrer
Comment administrer

„ Les commandes d’administration


# date 02151030
„ Les fichiers d’administration
# vi /etc/inittab
„ Les scripts
# mkbootdisk
„ Les outils intégrés d’administration Red Hat
setup
linuxconf
control-panel
...

TSOFT - Linux Administration Module 1 : Introduction - 1.7

A la différence des systèmes propriétaires, il existe plusieurs manières d’administrer le


système Linux, qui s’expliquent par l’origine et les évolutions du système.

Exécuter les commandes d’administration


C’est la méthode la plus adaptée pour les administrateurs expérimentés qui souhaitent
ensuite automatiser l’exécution de ces commandes dans des scripts. L’exemple illustre
ainsi la modification de la date système par la simple exécution de la commande date.

Editer les fichiers d’administration


C’est le moyen primitif imaginé par les créateurs du système. Il consiste à éditer, avec
vi, le fichier d’administration concerné : dans l’exemple, le fichier /etc/inittab, qui
permet de paramétrer l’arrêt ou le démarrage. C’est pour cela que tous les fichiers de
configuration et d’administration du système Linux sont de type texte. Cette méthode
nécessite, dès que l’on sort des sentiers battus, de bien connaître la structure du fichier
et les liens éventuels avec d’autres fichiers, au risque d’introduire des incohérences
graves dans les bases de données du système.
Cela reste, en dernier recours, un moyen très utile quand les autres méthodes ont
échoué.

Exécuter les scripts d’administration


Dans la forme, il n’y a pas de différence entre l’exécution d’une commande binaire et
d’un script. Dans Linux, la commande mkbootdisk est un script qui fabrique une
disquette de démarrage alors que la commande shutdown est un binaire exécutable, à
la différence de certains systèmes UNIX, où c’est aussi un script. La différence tient
au fait que l’administrateur a la possibilité d’en visualiser le contenu et d’appliquer le
même principe pour automatiser des tâches répétitives d’administration. L’écriture
d’un script simplifie le travail de l’administrateur en même temps qu’il sécurise le
fonctionnement du système en permettant la programmation de nombreux contrôles,

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 1-15
Module 1 : Introduction

préalables à l’exécution d’une commande. Les scripts permettent l’édition des fichiers
d’administration.

Utiliser les outils intégrés d’administration


Beaucoup de distributions Linux fournissent maintenant des outils intégrés qui
permettent de réaliser les principales tâches d’administration avec des menus
déroulants et des boîtes de dialogue. Ces outils évitent de mémoriser la syntaxe des
commandes et procurent une convivialité aujourd’hui recherchée. Les outils, s’ils
diffèrent sensiblement dans la forme selon les systèmes Linux, procurent à peu près
les mêmes fonctionnalités. La différence de forme n’est pas un handicap, compte tenu
de la convivialité des produits. Certains outils fonctionnent soit en mode texte soit en
mode graphique, et d’autres dans les deux modes.
Outil Description
setup Il permet, en mode texte, la configuration du clavier, de la
souris, de la carte son, du fuseau horaire et du système
graphique Xfree86.
linuxconf Il existe en mode texte comme en mode graphique et permet
de configurer le réseau, les comptes d’utilisateur, les
systèmes de fichiers, le mode de démarrage, …
gnorpm Il permet, en mode graphique, d’administrer les paquetages.
control-panel Il permet de réaliser les tâches essentielles d’administration
en mode graphique.
printtool Il permet, en mode graphique, de configurer aisément le
service d’impression.
lisa lisa est un outil spécifique à la distribution caldera. Il couvre
toutes les tâches d’administration, y compris le réseau.
yast Yast est un outil spécifique de la distribution SuSe. Il couvre
lui aussi toutes les tâches d’administration.
Midnight Commander C’est un outil, en mode texte, de gestion de fichiers.

webmin Il permet, via un navigateur (Netscape), d’exécuter des


tâches d’administration. Le port attaché à ce service est
10000 (cf. Chapitre Webmin).

Remarque
L’annexe « Les écrans de linuxconf » décrit l’utilisation de la commande linuxconf et
présente ses principaux écrans.

1-16 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 1 : Introduction

Webmin

Client web
Réseau TCP/IP
HTTP,MIME
/etc/webmin/miniserv.conf
miniserv.pl
/etc/webmin/miniserv.users
Serveur webmin

Scripts CGI Perl

/etc/passwd /etc/fstab /etc/xinetd.d/*


TSOFT - Linux Administration Module 1 : Introduction - 1.8

Description
Webmin, qui signifie Web administration, est un outil simple d’emploi pour
administrer à distance un serveur Linux. S’appuyant sur le protocole HTTP, il est
composé d’un serveur Web minimal et de scripts CGI qui réalisent les tâches
d’administration, comme la gestion des utilisateurs, la gestion des systèmes de fichiers
ou la configuration du serveur xinetd. Le serveur webmin, ainsi que tous les scripts
CGI, sont écrits langage Perl 5 dont ils n’utilisent que les modules standards. Webmin
est disponible sur le site http://www.webmin.com, au format des paquetages « rpm »
et au format archive tar compressée. Bien que la totalité de la présentation de Webmin
soit faite dans ce chapitre, nous invitons le lecteur à tester les modules de Webmin au
fur et à mesure de son avancement dans l’ouvrage. Webmin peut être utilisé pour
administrer d’autres systèmes UNIX, parmi lesquels SOLARIS.

Installation
L’exemple présente d’abord l’installation de webmin au format rpm, dans l‘exemple le
package webmin-0.91-1.
# rpm –ivh webmin-0.91-1
Aucune configuration supplémentaire n’est requise, le service webmin est
opérationnel.
Nous poursuivons avec l’installation d’une archive tar compressée, ici
webmin-0.91.tar.gz.
Il faut, par exemple, copier l’archive dans le répertoire /usr/local, l’emplacement
standard pour l’installation de logiciels récupérés sur Internet.
# cd /usr/local
# tar xzvf webmin-0.91.tar.gz

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 1-17
Module 1 : Introduction

La commande tar crée le répertoire webmin-0.91, et y place les fichiers du service


webmin.
# ls webmin*
webmin-0.91 webmin-0.91.tar.gz
# cd webmin-0.91
Il faut ensuite lire le fichier README de ce répertoire pour connaître la suite des
opérations. Il indique qu’il suffit d’exécuter le script setup.sh.
# ./setup.sh
*******************************************************************
* Welcome to the Webmin setup script, version 0.91 *
*******************************************************************
Webmin is a web-based interface that allows Unix-like operating
systems and common Unix services to be easily administered.
Installing Webmin in /usr/local/webmin-0.91 ...
*******************************************************************
Webmin uses separate directories for configuration files and log files.
Unless you want to run multiple versions of Webmin at the same time
you can just accept the defaults.
Config file directory [/etc/webmin]:
Found existing Webmin configuration in /etc/webmin
Checking for third-party modules ..
..done
Inserting path to perl into scripts..
..done

*******************************************************************
Webmin has been installed and started successfully. Use your web
browser to go to http://localhost.localdomain:10000/
and login with the name and password you entered previously.

Les modules webmin


Webmin est composé de modules. Chaque module prend en charge l’administration
d’un service et possède dans l’arborescence /usr/libexec/webmin un répertoire dans
lequel on y trouve les programmes CGI Perl et les fichiers de configuration. Ainsi, le
module « Webmin Users » prend en charge la gestion des utilisateurs et de leurs
privilèges et le module « Partitions on Local Disks » prend en charge la gestion des
disques et des partitions. Il est possible d’ajouter à webmin ses propres modules en
prenant comme modèle les modules standards (cf. Le document « Webmin Modules »
sur le site http://www.webmin.com).
Le tableau qui suit présente les principaux modules standards que l’on retrouve dans
les menus Webmin. Ces modules, des fichiers *.wbm, sont disponibles sur le site :
http://webmin.ispace.co.jp/webmin/

Module Description
Postfix Configuration Configure le service de messagerie Postfix.
Linux RAID Gère les disques RAID 0, 1, 4, 5 et linéaires.
Manual Pages Interface des pages du manuel.
System Logs Configure le service syslog.
Webmin Help Recherche des pages web des modules Webmin.
FTP Server Configure le service ftp.

1-18 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 1 : Introduction

Webmin Servers Affiche la liste des serveurs Webmin du réseau local.


Linux Boot Loader Configure le chargeur LILO et GRUB.
Network Configuration Configurations de base du réseau (adresse IP…).
DHCP Server Configure le service DHCP.
File Manager Un gestionnaire de fichiers au « look Windows ».
PPP Usernames and Configure les liaisons PPP sous Linux.
Passwords
Squid Proxy Server Configure le serveur Squid.
Sendmail Configuration Configure le service de messagerie Sendmail.
Printer Administration Configure le service d’impression.
BIND 8 DNS Server Configure le service DNS BIND 8.
Apache Webserver Configure le serveur Apache.
Schedule Cron Jobs Configure le service Cron.
Linux NFS Exports Configure les partages NFS.
Bootup and Shutdown Configure les scripts /etc/rc* du démon init.
Actions
Disk and Network Configure les montages des systèmes de fichiers et les
Filesystems swaps.
Samba Windows File Configure le service samba.
Sharing
Users, Groups and Configure la gestion des utilisateurs et des groupes.
Passwords
Linux Partitions on Local Configure les disques et les partitions.
Disks
Running Processes Affiche des informations sur les processus.
Software Packages Gère les paquetages.
Custom commands Crée des commandes exécutables depuis Webmin.
Disk Quotas Gère les quotas.
Webmin Configuration Modifie les mots de passe des utilisateurs Webmin, le
numéro de port Webmin et la liste des hôtes autorisés du
serveur Webmin.
Webmin Users Ajoute, modifie et supprime des utilisateurs Webmin et
définit les modules qu’ils peuvent gérer..
Apache Webserver Configure le serveur Apache.
Les composants du package webmin
/usr/libexec/webmin/miniserv.pl Le mini serveur web (script Perl 5 ).
/etc/webmin/miniserv.conf Le principal fichier de configuration de webmin,
il définit notamment le port d’écoute du serveur
(10000 par défaut), l’emplacement des scripts
d’administration (/usr/libexec/webmin par défaut)
et des fichiers de configuration (/etc/webmin par
défaut), ainsi que les fichiers « log »
(/var/webmin par défaut).
/etc/webmin/miniserv.users Le fichier des utilisateurs autorisés à utiliser
webmin. On y trouve les noms et les mots de
passe correspondants, seul root y figure après
l’installation.
/usr/libexec/webmin/* Les modules webmin.
/etc/rc.d/init.d/webmin Le script d’arrêt et de démarrage de webmin (Cf.
Module 7 : Arrêt Démarrage).
/etc/webmin/uninstall.sh Le script de désinstallation de webmin.

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 1-19
Module 1 : Introduction

/var/webmin/* Les journaux de bord de webmin.

Exemple de fichier de configuration du serveur webmin


port=10000
host=localhost.localdomain
addtype_cgi=internal/cgi
realm=Webmin Server
logfile=/var/webmin/miniserv.log
pidfile=/var/webmin/miniserv.pid
logtime=168
ppath=
ssl=0
env_WEBMIN_CONFIG=/etc/webmin
env_WEBMIN_VAR=/var/webmin
atboot=0
logout=/etc/webmin/logout-flag
listen=10000
denyfile=\.pl$
session=1
userfile=/etc/webmin/miniserv.users
keyfile=/etc/webmin/miniserv.pem
root=/usr/local/webmin-0.91
mimetypes=/usr/local/webmin-0.91/mime.types

Utilisation de webmin
Il n’y a pas de commande à exécuter pour se connecter à Webmin. Il suffit de saisir à
partir d’un navigateur, l’URL précisant le numéro de port d’écoute du serveur, puis de
renseigner la boîte de dialogue suivante avec le nom root ou un nom d’utilisateur
Webmin valide et le mot de passe correspondant.
Exemple d’URL : http://www.leserveur.ledomaine:10000/

1-20 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 1 : Introduction

Remarque
L’annexe «Webmin» présente les principaux écrans de Webmin.

Utilisation de Webmin avec SSL


L’utilisation de Webmin avec SSL accroît notablement la sécurité. Par défaut, les
informations transmises à Webmin, comme le nom et le mot de passe de
l’administrateur, sont transmises en clair sur le réseau. Avec un analyseur de
protocoles comme tcpdump, un pirate peut facilement les récupérer. Par contre, si
l’on utilise SSL, les informations transmises sont cryptées et authentifiées
(cf. Module 17 : Sécurité, chapitre cryptologie).
Installation et configuration
Les informations suivantes proviennent du site Webmin (www.webmin.com) :
1. Téléchargez et installez la bibliothèque OpenSSL.
Dans le cas des distributions RedHat 7.x, cette bibliothèque est fournie sous
forme de RPM. On peut sinon la télécharger à partir du site de référence
www.openssh.com
2. Téléchargez le module perl Net::SSLeay.
On peut le télécharger à partir du site http://www.perl.com/CPAN
3. Installez et testez le module Perl.
# tar xvzf Net_SSLeay.pm-x.yy.tar.gz
# cd Net_SSL*
# perl Makefile.PL # ou « perl Makefile.PL /usr » si OpenSSL est
dans /usr
# make install
# perl -e ‘use Net::SSLeay’ # la commande ne doit pas générer d’erreurs
4. Installez Webmin s’il n’est pas encore installé (cf. Début du chapitre)
5. Activez SSL
- On modifie le paramètre ssl, on le positionne à 1 : « ssl=1 ».
- On arrête et on réactive webmin pour prendre en compte la modification.
Utilisation
L’utilisation est triviale, il suffit d’indiquer l’url sécurisée du site :
https://le-serveur-linux:10000/

Références
Les documents de la page d’accueil du site web
« http://www.webmin.com/webmin/ » :
Introduction to Webmin.
Downloading and Installing.
Standard Modules.
Caldera’s Webmin Documentation.

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 1-21
Module 1 : Introduction

Le dialogue avec les utilisateurs


Le dialogue avec les utilisateurs

„ Le courrier électronique : mail


„ La communication directe
z write, talk Discussion avec un utilisateur
z wall Affiche un message sur les terminaux des
utilisateurs connectés
„ Les fichiers
z /etc/issue Message affiché avant la connexion
z /etc/motd Message affiché après la connexion

TSOFT - Linux Administration Module 1 : Introduction - 1.8

L’administrateur dispose de nombreux moyens pour informer les utilisateurs et


dialoguer avec eux. Certaines commandes sont déjà connues par les utilisateurs et ne
sont mentionnées qu’à titre de rappel :
Commande Action
mail La commande mail envoie un courrier déposé dans la boîte aux
lettres de l’utilisateur.
write La commande write affiche un message sur l’écran de
l’utilisateur connecté s’il a accepté qu’on lui écrive par write.
talk La commande talk permet un dialogue en temps réel.

En plus de ces commandes, l’administrateur dispose de moyens spécifiques :


Commande Action
wall La commande wall (« Write All ») envoie le message fourni par
l’administrateur sur l’entrée standard à tous les utilisateurs.

Fichier Action
/etc/issue Le contenu du fichier /etc/issue est affiché sur le terminal avant
l’invite de connexion. Il contient normalement la version du
noyau et le nom et la version de la distribution. Ce fichier est créé
à chaque démarrage par le script /etc/rc.d/rc.local.
/etc/motd Le contenu du fichier /etc/motd est affiché sur le terminal après la
connexion, avant l’invite du shell.

1-22 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 1 : Introduction

Exemples
# wall << fin
Arrêt du système pour maintenance exceptionnelle dans 10 minutes,
reprise dans 30 minutes environ.
fin
#
# cat /etc/motd
Le système sera arrêté toute
la journée du 15 juin pour cause de maintenance
# exit
Red Hat Linux release 7.2 (Enigma)
Kernel 2.4.7-10 on an i686
login: pierre
Password:
Le système sera arrêté toute
la journée du 15 juin pour cause de maintenance
[pierre@Linux pierre]$

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 1-23
Module 1 : Introduction

La documentation
La documentation

FILE(1)
FILE(1) FILE(1)
FILE(1)
man
man NAME
NAME
file
file--determines
determinesfile
file
type
type
„ Les pages du manuel SYNOPSIS
SYNOPSIS
file
file...
...
„ La documentation des paquetages DESCRIPTION
DESCRIPTION
„ Les HOWTO et les FAQ ....
....
FILES
FILES
„ Les pages info /etc/magic
/etc/magic
„ La commande locate SEE
SEEALSO ALSO
magic(4)...
magic(4)...

TSOFT - Linux Administration Module 1 : Introduction - 1.9

La documentation de Linux est très riche. En complément des manuels de référence,


consultables par la commande fondamentale man, on trouve :
• Une documentation supplémentaire sur la plupart des paquetages.
• Des fichiers HOWTO (comment faire) et des FAQ (« Frequently Asked
Questions » - Questions les plus fréquentes). Les informations fournies sont issues
du projet de documentation de Linux LPD (« Linux Project Documentation »).
• Les pages info qui sont une documentation en mode hypertexte, sans nécessiter
l’utilisation du web.
• Une commande très pratique pour rechercher des fichiers et des répertoires,
locate.

Rappel de l’utilisation de la commande man


La commande man affiche les pages du manuel de référence du système Linux.
C’est la commande la plus importante pour découvrir la syntaxe d’une commande et
en étudier la description précise.
La commande man permet d’avoir accès à toutes les informations détaillées
nécessaires à la compréhension précise d’une commande, d’un service aussi bien qu’à
la nomenclature des noms de périphérique.
Le manuel de référence est réparti dans des sections. A chaque section correspond un
thème particulier et une section est identifiée par un numéro. A l’intérieur d’une
section les pages sont classées dans l’ordre du dictionnaire.

1-24 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 1 : Introduction

Le système Linux comporte dix sections. Le tableau qui suit donne la liste de toutes
les sections du système Linux :

Section Contenu
1 Les commandes utilisateurs
8 Les commandes d’administration et de maintenance
2 Les appels système
3 La bibliothèque C
4 Les fichiers spéciaux : les périphériques
5 Le format des fichiers
6 Les jeux
7 Divers
9 Le noyau
N Les commandes tcl/tk (« Tool Command Language/ToolKit »)

La commande man permet à l’administrateur comme aux utilisateurs de consulter en


ligne les manuels de référence du système Linux (cf. UNIX utilisateur).
La commande man permet d’obtenir l’affichage, sur la sortie standard, du contenu du
manuel de référence d’une page du manuel. La commande qui suit affiche la page du
manuel de la commande mkfs de la section 8.
# man mkfs
Lors de la recherche d’une page, la commande man inspecte les sections dans l’ordre
du tableau (la section 8 est explorée avant la section 5). Elle s’arrête dès que la page
qui correspond au nom est trouvée.
La commande man permet d’afficher les pages de toutes les sections qui
correspondent au nom de la page recherchée et pas seulement de la première section
rencontrée.
# man –a passwd # Affiche les pages passwd de la section 1 et 5.
La commande man permet de spécifier la section dans laquelle rechercher la page du
manuel.
# man 5 passwd
La commande man permet de connaître toutes les rubriques qui contiennent dans leur
présentation un mot clé spécifique.
# man –k copy # équivalent de la commande apropos copy
memcpy (3) - copy memory area
memmove (3) - copy memory area
ncopy (1) - NetWare file copy
objcopy (1) - copy and translate object files
rcp (1) - remote file copy

La commande man permet d’obtenir la description succincte d’une commande.

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 1-25
Module 1 : Introduction

# man –f cal # équivalent à la commande whatis cal


cal (1) - displays a calendar

Remarque
Nous rappelons l’importance pour l’administrateur des paragraphes « FILES » et
« SEE ALSO » de la documentation d’une commande. La première permet de
connaître tous les fichiers de configuration utilisés par la commande. La seconde
permet, à défaut d’une aide en hypertexte, de rechercher une commande ou un fichier
particulier.
L’administrateur peut ajouter des pages au manuel, nous renvoyons le lecteur à la
commande man pour de plus amples explications.

Exemple de page du manuel


La page qui suit montre l’étendue des rubriques, bien plus nombreuses dans Linux que
dans un système UNIX traditionnel. On note aussi les nombreuses options qui ont été
ajoutées par les auteurs de ce logiciel sous licence GNU. Les rubriques fondamentales,
outre NAME, SYNOPSIS et DESCRIPTION, restent bien entendu, FILES, SEE
ALSO et STANDARD CONFORMANCE. On note les adresses des sites FTP des
auteurs.
FILE(1) FILE(1)
NAME
file - determine file type
SYNOPSIS
file [ -vbczL ] [ -f namefile ] [ -m magicfiles ] file ...
DESCRIPTION
This manual page documents version 3.24 of the file command. File tests each
argument in an attempt to classify it. …
OPTIONS
-v Print the version of the program and exit.
FILES
/usr/share/magic - default list of magic numbers
ENVIRONMENT
The environment variable MAGIC can be used to set the default magic number
files.
SEE ALSO
magic(4) - description of magic file format.
strings(1), od(1), hexdump(1) - tools for examining non textfiles.
STANDARDS CONFORMANCE
HISTORY
AUTHOR
Written by Ian F. Darwin, UUCP address {utzoo | ihnp4}!darwin!ian,
Internet address ian@sq.com, postal address: P.O. Box 603, Station F, Toronto,
Ontario, CANADA M4Y 2L8.

Altered by Rob McMahon, cudcv@warwick.ac.uk, 1989, to extend the `&'


operator from simple `x&y != 0' to `x&y op z'.
BUGS

1-26 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 1 : Introduction

There must be a better way …


AVAILABILITY
You can obtain the original author's latest version by anonymous FTP
on ftp.astron.com in thedirectory /pub/file/file-X.YY.tar.gz

Configuration de la documentation
Le manuel se trouve normalement installé dans le répertoire /usr/man.
Pour configurer la documentation en ligne, l’administrateur va éditer le fichier
/etc/man.config. Ce fichier définit principalement les répertoires de recherche des
pages du manuel, le programme qui doit être utilisé pour les afficher et l’ordre de
parcours des sections.
# cat /etc/man.config
# Every automatically generated MANPATH includes these fields
#
MANPATH /usr/man
MANPATH /usr/local/man
MANPATH /usr/X11R6/man
MANPATH /usr/lib/perl5/man
PAGER /usr/bin/less –is
CAT /bin/cat
# Default manual sections (and order) to search if -S is not specified
# and the MANSECT environment variable is not set.
MANSECT 1:8:2:3:4:5:6:7:9:tcl:n:l:p:o
# Decompress with given decompressor when input file has given extension
# The command given must act as a filter.
Sachant l’existence de ce fichier, nous déconseillons à l’administrateur de modifier
directement les variables d’environnement, telles que MANPATH.
L’administrateur peut générer, grâce à la commande makewhatis, une base de
données d’aide simplifiée nommée « whatis », utilisable par les commandes man –k
et man –f ou leurs synonymes apropos et whatis. L’option « -w » signifie à la
commande makewhatis d’utiliser les chemins aux pages du manuel, tels qu’affichés
par la commande man --path.
# makewhatis –w
Cette base de données est, sinon créée, mise à jour automatiquement par le service
cron (cf. Module 6 : La gestion des processus) le dimanche à 4h22.
$ whatis mkfs
$ apropos find
$ man –k copy
Le répertoire man contient, pour chaque section, un sous-répertoire man(x), où (x)
désigne le numéro de la section qui contient les pages du manuel dans un format qui
n’est pas de type texte. Le répertoire /var/catman contient, pour chaque section, un
sous-répertoire cat(x) qui contient les pages formatées, utilisables directement par la
commande d’affichage. Le contenu d’un répertoire cat(x) peut être détruit si
l’administrateur a besoin de libérer de l’espace sur disque. A l’inverse, la commande
makewhatis permet de générer le contenu de tous les répertoires cat(x).

Les utilisateurs autres que root peuvent choisir la commande qui doit être exécutée
pour afficher le texte du manuel. Il suffit pour cela de définir la variable
d’environnement PAGER. Par défaut, c’est la commande less qui est utilisée.

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 1-27
Module 1 : Introduction

$ cat .profile
PAGER=/bin/more ; export PAGER
Remarques
• A l’exécution de la commande man, si un message avertit l’utilisateur d’une
attente avant l’affichage du manuel de la rubrique, cela signifie que le fichier
associé au manuel de la rubrique n’existe pas dans le répertoire cat(x), il faut
formater celui du répertoire man(x).
• Pour imprimer la sortie de la commande man, il faut préalablement éliminer les
caractères de contrôle qui génèrent le soulignement et la vidéo inverse et
demander que l’affichage soit réalisé par la commande cat. Pour cela nous
proposons la séquence suivante :
$ PAGER=/bin/cat ; export PAGER
$ man find | col –b | lpr # le filtre col élimine les caractères de contrôle

Le navigateur Gnome
Le navigateur Gnome permet en mode graphique d’accéder à l’ensemble de la
documentation. Il peut être lancé à partir des menus graphiques ou de la ligne de
commande d’une fenêtre terminal :
# gnome-help-browser &

Le site Internet de la distribution


Le site de la distribution contient l’intégralité de la documentation de votre système,
notamment les guides d’installation et d’administration. Certaines contiennent plus
généralement des listes de diffusion, des forums, des FAQs…

L’option « --help » des commandes


Les commandes proposent une option longue « --help » pour afficher une aide en ligne
synthétique de la commande.
$ who --help
Usage: who [OPTION]... [ FILE | ARG1 ARG2 ]
-H, --heading print line of column headings
-i, -u, --idle add user idle time as HOURS:MINUTES, . or old
-m only hostname and user associated with stdin
-q, --count all login names and number of users logged on
-s (ignored)
-T, -w, --mesg add user's message status as +, - or ?
--message same as –T
--writable same as –T
--help display this help and exit
--version output version information and exit
If FILE is not specified, use /var/run/utmp. /var/log/wtmp as FILE is common.
If ARG1 ARG2 given, -m presumed: `am i' or `mom likes' are usual.
Report bugs to sh-utils-bugs@gnu.ai.mit.edu

La documentation des paquetages


Lors de l’installation d’un paquetage, la commande rpm (cf. Module 13 : Les
paquetages) crée dans le répertoire /usr/doc ou /usr/share/doc un répertoire dont le
nom est celui du paquetage suivi de son numéro de version. Ce répertoire contient la
documentation du paquetage dans des fichiers de type texte, affichables ou

1-28 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 1 : Introduction

imprimables. On note en particulier un fichier README qu’il est conseillé de lire en


premier (comme son nom l’indique).

Les HOWTO
Les HOWTO sont des documents qui expliquent en détail certains aspects du
système : comment installer tel ou tel composant, comment effectuer la configuration
d’un service particulier du système en tenant compte de certaines spécificités. Ils sont
souvent le fruit d’un administrateur qui met sa connaissance à la disposition de tous
pour nous éviter des pièges et des pertes de temps inutiles.
Il existe ainsi, dans la distribution Red Hat, un HOWTO qui explique comment
fabriquer une disquette « bootable » avec les pilotes et les outils de son choix.
Le répertoire doc/HOWTO du CD-ROM Linux contient les versions ascii des fichiers
HOWTO.
Le répertoire /usr/doc/HTML contient les liens sur la documentation de la distribution.
Exemples :
« Distribution HOWTO » qui décrit les différentes distributions et comment les
obtenir.
« META-FAQ » qui décrit les différentes sources d’information.

Les FAQ (« Frequently Asked Questions »)


Les FAQ fournissent des informations sur certains aspects du système, sous forme de
questions et de réponses. Elles résultent du questionnement d’un spécialiste par un
novice.
Le répertoire doc/FAQ du CD-ROM Linux contient les versions texte ou au format
html des FAQ les plus courantes.
Remarque
Les HOWTO et les FAQ doivent être installés à partir du CD-ROM.

Les pages info


La commande info permet de parcourir facilement les documents volumineux grâce à
des liens hypertexte. Red Hat fournit une documentation assez élaborée du système
sous forme de pages info lisibles par la commande info.
# info
Un texte en surbrillance est un lien sur une autre page. La touche <TAB> déplace le
curseur sur le lien ou sur le prochain texte précédé de « * ». La combinaison
<ESC><TAB> revient sur le lien précédent. Il suffit de frapper <ENTREE> pour
charger la nouvelle page. La touche <Espace> fait passer à la page suivante, la touche
<retour-arrière> fait revenir à la page précédente. La touche < ?> permet d’obtenir
l’aide en ligne. La touche <f> permet de revenir en arrière. Si on consulte l’aide, la
touche <f> revient à la page en cours.
Pour mettre fin à l’exécution de la commande info, il suffit de frapper CTRL C ou
<q>.

La commande locate
La command locate permet de rechercher des fichiers et des répertoires dont on ne
connaît pas la localisation ou le nom complet.

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 1-29
Module 1 : Introduction

La commande locate consulte une base de données (/var/lib/locatedb), normalement


créée la nuit par le service cron (cf. Module 6 : La gestion des processus). Il est
possible, à défaut, de créer cette base manuellement :
# /etc/cron.daily/slocate.cron
# locate uname
/bin/uname
/usr/bin/uuname
/usr/lib/news/bin/control/senduuname
/usr/man/man1/uname.1
/usr/man/man2/oldolduname.2
/usr/man/man2/olduname.2
/usr/man/man2/uname.2
Remarque
La commande locate est plus générale que les commandes type ou whereis de
recherche de commandes.

1-30 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 1 : Introduction

Linux et Internet
Linux et Internet

„ Les sources du noyau


http://www.kernel.org
„ Sites généraux
http://www.li.org
http://www.linux.org
„ Les distributions
http://www.redhat.com
http://www.suse.com
http://www.debian.org
„ Le GNU (FSF)
http://www.fsf.org
„ LDP
http://sunsite.unc.edu/LDP

TSOFT - Linux Administration Module 1 : Introduction - 1.10

Linux est né grâce à l’Internet. C’est par lui qu’il continue de vivre et qu’il prospère
de jour en jour. Internet est le complément indispensable à une utilisation sérieuse de
Linux.
Nous citons les principaux sites qui traitent de Linux. Il est évident que la liste n’en est
pas exhaustive et que des modifications peuvent intervenir à n’importe quel moment.
Ainsi va la vie sur Internet.

Les sources du noyau


http://www.kernel.org

Sites généraux
http://www.linux.org
http://www.li.org
http://www.linuxpowered.com
http://www.linuxhq.com
http://www.linuxplanet.com
http://www.tootella.com
http://www.tootlella.org
http://www.linux-center.org

Sites spécialisés
Développement
http://www.free-linuxdev.org

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 1-31
Module 1 : Introduction

Téléchargement de logiciels « freeware » et « shareware »


http://www.tucows.com
Téléchargement de logiciels et de documentation (55 Go)
http://www.ibiblio.org/pub/Linux
Association francophone des utilisateurs de Linux (« Aful »)
http://www.aful.org
Jeux
http://happypenguin.org/
Boutique en ligne (logiciels et matériels)
http://www.linuxmall.com
Les paquetages RPM
http://rpmfind.net
Les périphériques supportés par Linux
http://lhd.datapower.com/
Support Linux
http://www.linuxcare.com
Configuration d'ordinateurs portable sous Linux
http://www.cs.utexas.edu/users/kharker/linux-laptop/
Mailing List
Inscription : « subscribe » dans le corps du message, sans les guillemets, à linux-
announce-REQUEST@news-digest.mit.edu

Annuaires, moteurs de recherche spécialisés Linux


http://www.linuxstart.com
http://www.tuxfinder.com

Les journaux
Anglo-saxons
http://www.linuxjournal.com
http://www.linuxgazette.com
http://slashdot.org
http://lwn.net
http://linuxtoday.com/
Français
http://www.linuxmag-france.org
http://www.linux-pratique.org
http://www.linuxinfos.org

Les sites des distributeurs de Linux


http://www.redhat.com

1-32 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 1 : Introduction

http://www.suse.com
http://www.debian.org
http://www.slackware.com
http://www.caldera.com
http://linux.corel.com
http://www.turbolinux.com
http://www.linux-mandrake.com/fr
http://www.easylinux.com
http://www.trinux.org
http://www.demolinux.org

LDP (« Linux Documentation Project »)


Le projet LDP vise à doter Linux d’une documentation complète et de qualité. Cette
documentation est principalement constituée des pages du manuel (« man pages ») et
des guides. Le site principal, http://www.linuxdoc.org, est abrité par l'Université de la
Caroline du nord (« University of North Carolina »). On peut utiliser le vrai nom du
site http://sunsite.unc.edu/LDP . Il en existe aussi de nombreux miroirs. On y trouve
également les HOWTO, les FAQ et la Linux gazette, extraite du Linux Journal. Le
site http://www.traduc.org offre les traductions françaises de l'ensemble des logiciels
libres et, notamment, du projet LDP.
Les guides en ligne sont les suivants :
• Installation and Getting Started Guide.
• The Linux Kernel.
• The network Administrator’s Guide.
• The Linux Programmer’s Guide.
• The Linux System Administrator’s Guide.
• Text processing with Linux.

Le GNU FSF (« Free Software Foundation »)


http://www.fsf.org
http://www.gnu.org

Les HOWTO
Liste complète des HOWTO
http://sunsite.unc.edu/LDP/HOWTO/HOWTO-INDEX.html
Pour les obtenir
ftp://ftp.funet.fi/pub/OS/Linux/doc/HOWTO
ftp://sunsite.unc.edu/pub/Linux/docs/HOWTO

Les news
Les forums Linux sont dans l’arborescence comp.os.linux.*.
Il faut notamment citer comp.os.linux.announce qui contient les nouvelles
informations sur Linux.

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 1-33
Module 1 : Introduction

Le site http://www.deja.com permet d’accéder à une grande partie des archives des
news.

Autres liens
http://dir.yahoo.com/Computers_and_Internet/Software/Operating_Systems/
UNIX/Linux/
http://guide.voila.fr//Informatique_internet/Informatique/
Systemes_d_exploitation/Linux/

1-34 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 1 : Introduction

Atelier 1 : Introduction
Atelier 1 : Introduction

Objectifs :
„ Savoir se connecter en tant
qu’administrateur du système
„ Savoir utiliser la documentation
„ Communiquer avec les utilisateurs

Durée : 30 minutes.

TSOFT - Linux Administration Module 1 : Introduction - 1.11

Exercice n°1
Citez trois distributions Linux.

Exercice n°2
Quelle est la première distribution qui popularisa Linux ?

Exercice n°3
Citez trois logiciels GNU.

Exercice n°4
Mettre à jour la date système en vous aidant de la documentation (man date).

Exercice n°5
Quels sont les chapitres de la documentation traitant de la connexion (en anglais
« login ») ?

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 1-35
Module 1 : Introduction

Exercice n°6
Modifiez le fichier /etc/motd, qui affiche un message en début de connexion. Testez le
résultat en vous reconnectant.

Exercice n°7
Affichez un message sur toutes les terminaux.

Exercice n°8
Recherchez et parcourez le HOWTO « Meta-FAQ ».

1-36 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 2 : La gestion des utilisateurs

• Créer, modifier et
supprimer un compte
utilisateur
• Les fichiers
/etc/passwd et
/etc/group
• Les commandes
useradd, passwd,…

2Module 2 : La gestion
des utilisateurs
Objectifs
Après l’étude du chapitre, le lecteur sait gérer les comptes des utilisateurs et leurs
groupes. Il connaît la structure des fichiers qui contiennent les informations
fondamentales.

Contenu
Les fichiers /etc/passwd et /etc/group
Les commandes d’administration : useradd, passwd, su, id, …

Références
HOWTO : USER-GROUP-HOWTO
Manuel : passwd(5), group(5), useradd(8), login(1)

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 2-1
Module 2 : La gestion des utilisateurs

Les comptes d’utilisateurs et de groupes


Les comptes utilisateurs et groupes
UID de root
$ more /etc/passwd
root:CuSzE74h021C5:0:0:Super User:/:/bin/bash
cathy::200:50:Catherine 32-21:/home/cathy:/bin/csh
pierre:0ZkhUmYrprtpt:201:50:Pierre 12-45:/home/pierre:/bin/sh
2 4 6
1 Mot de
3 GID Répertoire
Nom de passe 5 de connexion
connexion crypté UID 7
Commentaire
Commande gérant la session
$ more /etc/group Liste des membres 4
root::0:root
group::50:cathy,pierre GID 3
chef::51:pierre
Nom du groupe 1

TSOFT - Linux Administration Module 2 : La gestion des utilisateurs - 2.2

Quand un utilisateur se connecte, il s’authentifie en fournissant un nom de connexion


(« login name ») et un mot de passe (« password »). Si la connexion réussit,
l’utilisateur a normalement activé un shell et se trouve positionné sur un répertoire de
travail (« working directory »), initialement son répertoire de connexion ( « login
directory »).
L’ensemble des informations qui caractérisent les paramètres fondamentaux de la
connexion d’un utilisateur, y compris de root sont définies dans le fichier /etc/passwd.
Le fichier /etc/group définit les groupes supplémentaires auxquels un utilisateur peut
se connecter en cours de session.
Les comptes d’utilisateurs et de groupes sont également utilisés pour identifier les
fichiers appartenant à une application. L’ajout des comptes associés à une application
est le plus souvent réalisé lors de son installation.

Structure du fichier /etc/passwd


Le fichier /etc/passwd est un fichier de type texte dont chaque ligne définit un compte
utilisateur. La ligne est composée de champs. Le séparateur de champs est le symbole
« : ».
Nom de : Mot de : UID: GID: Commentaire : Répertoire : Commande
connexion passe de de
connexion connexion

Nom de connexion Le nom de connexion est saisi lors de la demande de


connexion.
Mot de passe Le mot de passe est présent dans le fichier, mais crypté.
Dans les systèmes sécurisés (cf. Module 17 : La sécurité),
le champ mot de passe existe toujours mais il contient le
caractère x. Le mot de passe crypté est déporté dans un

2-2 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 2 : La gestion des utilisateurs

fichier accessible au seul administrateur. Les caractères


« ! ! » dans le champ mot de passe indiquent que le mot de
passe n’est pas défini, si les mots de passe sont visibles.
UID L’administrateur attribue un numéro à chaque utilisateur.
Ce numéro, l’UID (« User Identification »), est mémorisé
dans les descripteurs de fichiers pour en identifier le
propriétaire. C’est donc l’information pertinente, utilisée
par le système Linux, pour identifier un utilisateur. L’UID
de root est 0.
GID L’administrateur identifie le groupe de connexion d’un
utilisateur grâce au champ GID (« Group Identification »).
Le fichier /etc/group associe un nom de groupe à ce GID
et définit les groupes supplémentaires de l’utilisateur.
Commentaire La zone est utilisée librement par l’administrateur pour
commenter le compte. Il peut être structuré en suivant les
recommandations de la commande finger
(cf. man finger). On y trouve, entre autres, le nom et le
prénom.
Répertoire de connexion Ce champ détermine le répertoire de connexion de
l’utilisateur, conventionnellement /home/pierre pour
l’utilisateur de nom de connexion pierre. Ce répertoire
contient les fichiers de configuration (.bash_profile) de
l’utilisateur.
Commande de connexion Ce champ précise le chemin d’accès absolu de la
commande à exécuter lors de la connexion. C’est
généralement un shell.

Remarques
• L’UID est une valeur comprise entre 0 et la valeur définie par la constante
UID_MAX du fichier /etc/login.defs. Les valeurs inférieures à 100 sont
généralement réservées pour des utilisateurs associés à des services standard du
système Linux. La constante UID_MIN du fichier /etc/login.defs définit la valeur
minimale des UID des utilisateurs.
• L’attribution d’un UID est de la responsabilité de l’administrateur et rien ne
l’oblige à les affecter séquentiellement. Il peut définir sa propre stratégie.
• Quand un administrateur gère un parc de machines Linux sans mettre en œuvre
d’administration centralisée (cf. Module 13 : Le réseau), il est conseillé d’attribuer
le même UID à un utilisateur qui possède un compte sur plusieurs machines du
réseau.
• Si plusieurs lignes utilisent le même UID pour plusieurs noms de connexion
différents, un seul utilisateur est en fait défini. On peut ainsi définir un utilisateur
stop, dont l’UID est 0 et qui exécute shutdown comme commande de connexion.
• Dans un système non sécurisé, le mot de passe peut être absent, ce qui permet de
se connecter sans avoir à fournir de mot de passe.

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 2-3
Module 2 : La gestion des utilisateurs

Structure du fichier /etc/group


Le fichier /etc/group est un fichier de type texte dont chaque ligne définit un groupe
d’utilisateurs. La ligne est composée de champs. Le séparateur de champs est le
symbole « : ».
Nom du : Mot de : GID : Liste des utilisateurs autorisés à se connecter au
groupe passe groupe ( util [,util …])

Nom du groupe Le nom du groupe est celui utilisé dans la commande


newgrp ou affiché par la commande ls.
Mot de passe Le mot de passe est présent dans le fichier, mais crypté. Il
est demandé à un utilisateur qui veut se connecter au
groupe et qui ne figure pas dans la liste des utilisateurs du
groupe.
Liste des utilisateurs La liste des utilisateurs qui peuvent se connecter au
groupe par la commande newgrp sans avoir à fournir de
mot de passe.

Nous rappelons que la commande newgrp (cf. UNIX Utilisateur) permet de changer le
groupe de référence utilisé lors de la création de nouveaux fichiers. A défaut d’avoir
exécuté la commande newgrp, c’est le groupe de connexion qui est utilisé.
Remarques
• Un utilisateur n’a pas besoin d’être mentionné dans la liste des utilisateurs de son
groupe de connexion.
• Le champ mot de passe est rarement utilisé dans la pratique.

2-4 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 2 : La gestion des utilisateurs

Les commandes de gestion des utilisateurs


Les commandes de gestion des utilisateurs
„ useradd, usermod, userdel Gèrent les comptes utilisateur
„ groupadd, groupmod, groupdel Gèrent les comptes de groupe
„ pwck, grpck Vérifient les fichiers /etc/passwd et /etc/group
„ finger Donne des informations sur un utilisateur
„ chfn, chsh Changent le shell ou le commentaire d’un utilisateur
„ passwd Permet de modifier le mot de passe d’un utilisateur
„ su Permet de se connecter à un compte
„ id Permet de connaître son identité
„ groups Donne la liste des groupes d’un utilisateur
„ vipw, vigr Edite les fichiers /etc/passwd et /etc/group, en les
verrouillant

TSOFT - Linux Administration Module 2 : La gestion des utilisateurs - 2.3

Les commandes de gestion des comptes d’utilisateurs et de groupes sont nombreuses.


Les commandes qui sont mentionnées ci-dessus se décomposent en trois catégories :
Les commandes d’administration proprement dites : useradd, usermod, userdel,
groupadd, groupmod, groupdel, pwck et grpck peuvent être utiles quand elles sont
intégrées à un script. Nous renvoyons le lecteur au manuel de ces commandes. Elles
ne présentent pas de difficultés d’emploi. Dans la réalité, il est souvent bien plus
pratique de procéder aux opérations grâce à l’outil intégré d’administration linuxconf
qui propose, pour chaque paramètre d’un compte, le choix par défaut le mieux adapté.
L’outil effectue aussi une vérification des éléments fournis.
Nous attirons cependant l’attention de l’administrateur sur la commande useradd et
quelques-unes de ses options. La commande useradd permet en effet, en sus de la
création de comptes d’utilisateurs, de définir les paramètres qui seront utilisés, par
défaut, à la création d’un compte.

La commande useradd
Syntaxe pour la création d’un compte
useradd [-c comment] [-d home_dir] [-e expire_date] [-f inactive_time]
[-g initial_group] [-G group[,...]] [-m [-k skeleton_dir]]
[-s shell] [-u uid [ -o]] [-n] [-r] login
Le tableau qui suit n’explicite que les options dont la seule lecture ne donne pas
l’explication.
Option Description
-c comment Le commentaire.
-d home_dir Le répertoire de connexion.
-e expire_date La date d’expiration du compte.

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 2-5
Module 2 : La gestion des utilisateurs

-f inactive_time Le nombre de jours au bout duquel un compte est


inutilisable, après l’expiration d’un mot de passe.
-g initial_group Le groupe initial, par défaut, pierre pour l’utilisateur pierre.
-G group,… Les groupes supplémentaires.
-m Il faut créer le répertoire de connexion de l’utilisateur.
-k skeleton_dir Le répertoire de peuplement du répertoire de connexion.
Les fichiers qu’il contient sont recopiés dans le répertoire
de connexion de l’utilisateur. C’est /etc/skel par défaut.
-s shell Le shell de l’utilisateur, par défaut bash.
-u uid L’UID de l’utilisateur.
-n Un groupe du nom de l’utilisateur n’est pas créé.
-r La commande accepte de créer un compte avec un UID
inférieur à UID_MIN, défini dans /etc/login.defs.

Nous soulignons l’importance particulière du répertoire /etc/skel de Linux, qui


contient des modèles de fichiers de configuration des sessions des utilisateurs.
L’administrateur peut ajouter des fichiers ou les modifier pour définir les paramètres
communs à tous les utilisateurs du site, comme les options du shell ou la définition des
touches d’édition du shell bash. Ces fichiers sont automatiquement copiés dans le
répertoire de connexion des utilisateurs créés par la commande useradd ou l’outil
d’administration linuxconf.
# ls -aC /etc/skel
. .Xdefaults .bash_profile .inputrc
.. .bash_logout .bashrc
# useradd luc
# ls -aC ~luc
. .Xdefaults .bash_profile .inputrc
.. .bash_logout .bashrc
Syntaxe pour la définition des paramètres par défaut
useradd -D [-g default_group] [-b default_home] [-f default_inactive]
[-e default_expire_date] [-s default_shell]
Dans cette forme, la commande useradd permet de définir les valeurs utilisées par
défaut quand on crée un compte utilisateur.
La commande useradd –D visualise les valeurs actuellement utilisées.

Les autres commandes


Les commandes d’information ou de gestion courantes, utiles en mode commande :
finger, users, groups, id (cf. Exemples) et su (cf. Module : La gestion des processus).
Les commandes générales : vipw, vigr, passwd.
La commande vipw réalise l’édition du fichier /etc/passwd. Elle en effectue d’abord le
verrouillage pour en garantir un usage exclusif. L’éditeur de texte qui est exécuté est
défini par la variable d’environnement EDITOR, vi à défaut. Si le verrouillage du
fichier n’est pas possible, la commande vipw le signale et demande à l’administrateur
d’essayer plus tard. Le fichier est automatiquement déverrouillé à la fin de l’édition.
La commande vigr agit de même avec le fichier /etc/group.

2-6 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 2 : La gestion des utilisateurs

La commande passwd
La gestion des mots de passe et de leur pérennité (« Aging Information ») est réalisée
par la commande passwd, déjà connue des utilisateurs, et par la commande chage. Le
rôle principal de la commande passwd est de créer ou de modifier le mot de passe
d’un utilisateur. La commande chage gère la pérennité des mots de passe (cf. Module
17 : la sécurité).
La commande passwd a plusieurs fonctions pour l’administrateur :
• Modifier le mot de passe d’un utilisateur
# passwd Nom_utilisateur

• Supprimer le mot de passe d’un utilisateur


# passwd -d Nom_utilisateur
• Verrouiller le compte d'un utilisateur, ce qui empêche sa connexion
# passwd -l Nom_utilisateur
• Déverrouiller le compte d’un utilisateur
passwd -u Nom_utilisateur # ou passwd -d Nom_utilisateur
# ou passwd Nom_utilisateur

Remarques
• Les restrictions imposées aux utilisateurs dans la définition de leur mot de passe
ne s’appliquent pas à l’administrateur qui peut attribuer n’importe quel mot de
passe à un utilisateur, sauf une chaîne vide.
• En l’absence de mot de passe, l’invite « password » n’est pas affichée à la
connexion.

Exemples
# id
uid=0(root) gid=0(root)
groups=0(root),1(bin),2(daemon),3(sys),4(adm),6(disk),10(wheel)
# finger
Login Name Tty Idle Login Time Office Office Phone
cathy Cathy - Levallois 4 Apr 21 17:01
pierre Pierre - Paris 3 2:46 Apr 21 14:15
root root *2 3 Apr 21 13:30
# users
cathy pierre root
# groups
root bin daemon sys adm disk wheel
# groups cathy
cathy : cathy compta
Attribuer à cathy le mot de passe cathy
New UNIX password:
BAD PASSWORD: it is too short

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 2-7
Module 2 : La gestion des utilisateurs

Retype new UNIX password:


passwd: all authentication tokens updated successfully
Supprimer le mot de passe de cathy
# passwd -d cathy
Verrouiller le compte de cathy
# passwd -l cathy
Cathy ne peut plus se connecter
venus login : cathy
Password :
Login incorrect
venus login :
Déverrouiller le compte de cathy
# passwd cathy
Changing password for user cathy
New UNIX password:
Retype new UNIX password:
passwd: all authentication tokens updated successfully
Cathy peut à nouveau se connecter
venus login : cathy
Password :
/home/cathy $
Visualiser les attributs par défaut
# useradd –D
GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=
SHELL=/bin/bash
SKEL=/etc/skel
Ajouter un utilisateur avec les paramètres par défaut de
/etc/login.defs
# useradd jean
Attribuer le mot de passe unix98 à jean
# passwd jean
New UNIX password:
BAD PASSWORD: it is based on a dictionary word
Retype new UNIX password:
passwd: all authentication tokens updated successfully
# grep jean /etc/passwd
jean:x:505:505::/home/jean:/bin/bash
Connexion de jean
Red Hat Linux release 7.2 (Enigma)
Kernel 2.4.7-10 on an i686venus
login:jean

2-8 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 2 : La gestion des utilisateurs

Password:
/home/jean $
Créer les groupes develop, compta et achats, de GID : 1000, 1001
et 1002
# groupadd -g 1000 develop
# groupadd -g 1001 compta
# groupadd -g 1002 achats
Créer un utilisateur avec des paramètres spécifiques
# useradd -u 2000 -s /bin/bash -d /home/paul -c "Paul - Angers" paul
Visualiser le compte créé précédemment
# grep paul /etc/passwd
paul:!!:2000:2000:Paul - Angers:/home/paul:/bin/bash
# grep paul /etc/group
paul:x:2000:
Ajouter paul aux groupes compta et develop
# usermod -G compta,develop paul
Lister les groupes de paul
# groups paul
paul : paul develop compta
Supprimer l’utilisateur paul (l’option -r demande la suppression
de son arborescence)
# userdel -r paul

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 2-9
Module 2 : La gestion des utilisateurs

Les modèles de fichiers de configuration des


sessions
Les modèles de fichiers de configuration des sessions

La
Laconfiguration
configurationde
debash
bash
„ .bash_profile Le script exécuté à la connexion
„ .bashrc Le fichier de définition des alias
„ .bash_logout Le script exécuté à la déconnexion

LL’environnement
’environnementgraphique
graphique

„ .Xdefaults Fichiers de définition des ressources des


applications X

TSOFT - Linux Administration Module 2 : La gestion des utilisateurs - 2.4

Nous avons vu dans le dernier chapitre, que le répertoire /etc/skel contient les fichiers
qui sont automatiquement ajoutés dans le répertoire de connexion d’un nouveau
utilisateur. Voici le contenu type de ces fichiers.

Le fichier .bash_profile
Le fichier .bash_profile est automatiquement exécuté à la connexion d’un utilisateur.
Il permet la personnalisation de la session de travail. On y trouve principalement la
définition des variables d’environnement, dont la personnalisation de la variable
PATH.
$ cat .bash_profile
# .bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
# User specific environment and startup programs
PATH=$PATH:$HOME/bin
BASH_ENV=$HOME/.bashrc
USERNAME=""
export USERNAME BASH_ENV PATH

Les autres fichiers


Le fichier .bashrc
Le fichier .bashrc contient plus particulièrement les alias et les définitions de
fonctions (cf. UNIX SHELL des mêmes auteurs). Le fichier .bashrc standard, installé à

2-10 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 2 : La gestion des utilisateurs

la création du compte, cherche à exécuter le fichier /etc/bashrc. L’administrateur


pourra y factoriser des définitions.
$ cat .bashrc
# .bashrc
# User specific aliases and functions
# Source global definitions
if [ -f /etc/bashrc ]; then
. /etc/bashrc
fi
alias rep='ls -als'
Il faut rappeler que l’intérêt du fichier .bashrc est essentiellement limité au shell bash
interactif, c’est-à-dire associé à un terminal.
C’est le script .bash_profile qui exécute explicitement le fichier script .bashrc du
répertoire de connexion . ~/.bashrc. Les instances suivantes du shell l’exécutent grâce
à la variable d’environnement BASH_ENV. Le script .bashrc exécute, s’il existe, le
script /etc/bashrc.
Remarque
L’exécution d’un script par le shell en cours est réalisé par la commande . Le_script.

Le fichier .bash_logout
Le fichier .bash_logout est exécuté à la déconnexion de l’utilisateur. Il est ainsi
possible d’automatiser la sauvegarde de fichiers ou la suppression de fichiers
temporaires dont l’existence n’est plus nécessaire.

$ cat .bash_logout
# ~/.bash_logout
echo "===================================="
echo "destruction des fichiers temporaires"
rm -i /tmp/*.tmp
echo "===================================="
$ exit
====================================
destruction des fichiers temporaires
rm: détruire `/tmp/f1.tmp'? o
rm: détruire `/tmp/f2.tmp'? o
====================================
Le fichier .Xdefaults
Le fichier .Xdefaults contient la définition des ressources utilisées par les applications
graphiques, les clients X. Il existe de nombreux autres fichiers de configuration de
l’environnement graphique et, en particulier, des bureaux gnome et KDE (cf. Module
16 : X-Window).
Remarque
La consultation de l’annexe D, consacrée au shell bash, donne, au lecteur, une vision
complète des fichiers de démarrage du shell bash.

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 2-11
Module 2 : La gestion des utilisateurs

Atelier 2 : La gestion des utilisateurs


Atelier 2 : La gestion des utilisateurs

Objectifs :
„ Savoir créer un compte utilisateur
„ Savoir gérer les utilisateurs et les
groupes

Durée : 30 minutes.

TSOFT - UNIX Administration Module 2 : La gestion des utilisateurs - 2.4

Exercice n°1
Est-ce que l’utilisateur bin existe, si oui, quel est son UID ?

Exercice n°2
Comment feriez-vous pour vous connecter sous le compte de l’utilisateur « bin » ?

Exercice n°3
Existe-t-il d’autres comptes utilisateurs possédant les droits de root ?

Exercice n°4
A quels groupes appartient l’utilisateur bin ?

Exercice n°5
Créez avec useradd, en gardant toutes les valeurs par défaut, l’utilisateur pierre. Quel
est le groupe de pierre ?

Exercice n°6
Ajoutez pierre au groupe staff. Au besoin, créez ce groupe.

2-12 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 2 : La gestion des utilisateurs

Exercice n°7
Affichez les groupes de pierre.

Exercice n°8
Connectez-vous au compte pierre nouvellement créé de deux manières, à la connexion
et grâce à la commande su. Expliquez les deux résultats.

Exercice n°9
Que faut-il faire pour pouvoir se connecter au compte pierre ?

Exercice n°10
Changez le champ commentaire de pierre en utilisant la commande vipw. Renseignez
le champ avec le texte suivant : Pierre Henry - Tours.

Exercice n°11
Créez un compte utilisateur avec l’outil d’administration (linuxconf, …).

Exercice n°12
Créez un compte « admin » d’UID 0. Il peut servir si, par exemple, on oublie le mot
de passe de root.

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 2-13
Module 3 : Les fichiers

• L’arborescence des
fichiers
• Les liens symboliques,
les tubes nommés
• Les droits
d’endossement, le
« sticky bit »
• La commande find
3Module 3 : Les fichiers
Objectifs
Après l’étude du chapitre, le lecteur connaît l’arborescence des fichiers, tous les types
de fichiers et tous les droits d’accès. Il maîtrise l’utilisation des commandes de gestion
de répertoires et particulièrement celle de la commande find.

Contenu
L’arborescence des fichiers
Les principaux répertoires
Les types de fichiers (tube nommé, socket, …)
Les droits (endossement, « sticky bit »)
Les commandes de gestion de l’arborescence
Les attributs des fichiers

Références
Le manuel : file(1), chmod(1), chattr(1), find(1)

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 3-1
Module 3 : Les fichiers

L’arborescence des fichiers


L’arborescence des fichiers

/ «root»

home dev usr mnt bin

«lien»
pierre cathy cathy bin cdrom floppy

TSOFT - Linux Administration Module 3 : Les fichiers - 3.2

Les fichiers du système Linux sont organisés en arbre.


Linux divise les fichiers en plusieurs catégories (cf. Les types de fichiers). Les plus
importantes du point de vue de l’organisation et du fonctionnement du système sont
les répertoires (« directory ») qui structurent l’arborescence, les fichiers ordinaires qui
contiennent les programmes et les données, et les fichiers spéciaux de type
périphérique. Ces derniers permettent aux utilisateurs, y compris l’administrateur,
d’avoir une vision uniforme. Tout est fichier, même les périphériques, qui ont un nom
dans l’arborescence et qui sont donc désignés par un chemin d’accès comme le sont
les fichiers ordinaires.
Les liens symboliques permettent de modifier la vision de l’arborescence pour
l’adapter aux évolutions du système ou d’un logiciel.
Les fichiers sont dans un seul arbre. Les utilisateurs n’ont pas besoin de mentionner le
nom du disque où ils résident, ce qu’ils ignorent souvent. Le lecteur de CD-ROM est
accessible par le chemin /mnt/cdrom. Cette vision d’un arbre unique s’étend également
aux répertoires partagés à travers le réseau (cf. Module 15 : Le réseau). C’est
l’administrateur qui gère les arbres de chaque disque et les attache les uns aux autres.
On parle de montage (cf. Module 4 : Les systèmes de fichiers).
L’arbre standard qui est présenté illustre en outre les répertoires fondamentaux du
système Linux :
Répertoire Contenu
/home Le répertoire de rattachement des répertoires de connexion
des utilisateurs.
/bin, /usr/bin Les répertoires des commandes.
/dev Le répertoire des fichiers périphériques.
/mnt/cdrom Le répertoire de montage du CD-ROM.

3-2 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 3 : Les fichiers

Les principaux répertoires


Les principaux répertoires
//

boot
boot bin
bin dev
dev etc
etc home
home lib
lib mnt
mnt proc
proc root
root sbin
sbin tmp usr var
tmp usr var

rc.d
rc.d cdrom
cdrom floppy
floppy bin
bin include
include local
local man
man lib
lib

sys
sys bin
bin
rc3.d
rc3.d

cron
cron log
log mail
mail run
run spool
spool

mail
mail atat cron
cron lpd
lpd

TSOFT - Linux Administration Module 3 : Les fichiers - 3.3

L’administrateur, à défaut de connaître la totalité de l’arbre d’un système Linux, tâche


a priori difficile, doit mémoriser les noms et définir le contenu des principaux
répertoires, ceux qui sont le plus fréquemment utilisés dans l’administration
quotidienne d’un système Linux.
Répertoire Contenu
/dev/ Les noms des fichiers spéciaux périphériques.
/etc/ Les fichiers de données pour l’administration et
la configuration du système.
/etc/rc.d Le répertoire des scripts associés aux différents
niveaux de fonctionnement (cf. Module 7 :
Arrêt et démarrage).
/etc/rc.d/rc3.d Le répertoire des scripts exécutés au démarrage
du niveau 3 de fonctionnement du système.
/home/ Le répertoire qui contient les répertoires de
connexion des utilisateurs.
/mnt/ /mnt/cdrom Les répertoires proposés pour le montage d’un
/mnt/floppy CD-ROM ou d’une disquette.
/proc/ Le répertoire utilisé par le système Linux pour
mémoriser les processus.
/sbin/ Les commandes de démarrage et d’arrêt du
système.
/boot/ Les fichiers nécessaires à la construction d’un
nouveau noyau et en particulier l’image
exécutable du système Linux, le fichier vmlinuz.
/tmp/ Le répertoire tmp est utilisé par des commandes
pour créer des fichiers de travail. Leur
destruction n’est pas automatique mais ils
peuvent être supprimés à n’importe quel
moment.
/root/ Le répertoire de connexion de l’administrateur.

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 3-3
Module 3 : Les fichiers

/usr/ Principalement le répertoire des commandes du


système.
/usr/bin/ Les commandes de base du système.
/usr/X11R6/ Le système X-Window.
/usr/include/sys/ Les fichiers d’en-tête nécessaires à la
programmation système en langage C.
/usr/local/bin/ Les commandes créées localement.
/usr/sbin/ Les commandes d’administration du système.
/usr/lib/ Les bibliothèques de sous-programmes.
/usr/man/ Les manuels de référence (l’aide en ligne).
/usr/src/ Les fichiers sources du noyau. Ils sont
nécessaires à la reconstruction d’un nouveau
noyau.
/usr/src/linux Le répertoire qui permet de recompiler le
noyau.
/usr/doc/ La documentation des paquetages, les HOWTO
et les FAQ.
/var/ Les fichiers des services.
/var/cron/ Les commandes du service cron.
/var/log/ Les fichiers log du système et des services
Linux.
/var/mail/ Les boîtes aux lettres des utilisateurs.
/var/run/ Les fichiers contenant les PID des services
actifs et le fichier utmp des utilisateurs
connectés.
/var/spool/cron/ Le répertoire des fichiers de données du service
cron pour la commande crontab.
/var/spool/at/ Le répertoire des fichiers de données du service
cron pour la commande at.
/var/spool/mail/ Le répertoire des boîtes aux lettres.
/var/spool/lpd Les fichiers de données du service
d’impression.

3-4 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 3 : Les fichiers

Les types de fichiers


Les types de fichiers

$ ls -l fichier
-rwxr-x--- 1 pierre stage 265 Jun 18 14:00 fichier

-- Fichier
Fichierordinaire
ordinaire
dd Répertoire
Répertoire
cc Périphérique
Périphériquecaractère
caractère
bb Périphérique
Périphériquebloc
bloc
ll Lien symbolique
Lien symbolique
pp Tube
Tubenommé
nommé(IPC)
(IPC)
ss Socket
Socketlocale
locale(IPC)
(IPC)

$ file fichier # cf. /usr/share/magic


fichier: ASCII text

TSOFT - Linux Administration Module 3 : Les fichiers - 3.4

Nous savons déjà que le système UNIX connaît différents types de fichiers. Le tableau
qui suit en donne la liste complète et précise, pour chacun des types mentionnés, les
noms des commandes usuellement employées pour le créer et le détruire ainsi que son
utilisation.
Fichier Symbole Création Destruction
(ls –l)
Ordinaire (régulier) - vi,... rm
Les fichiers de données et les programmes.

Répertoire d mkdir rmdir, rm -r


Un fichier qui permet l’accès à d’autres fichiers.

Périphérique caractère c mknod rm


Les périphériques où l’unité d’échange est le caractère, typiquement les liaisons
séries.

Périphérique bloc b mknod rm


Les périphériques qui échangent des blocs, typiquement les disques.

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 3-5
Module 3 : Les fichiers

socket locale s socket(2) rm


Le terme « socket » désigne un mécanisme d’échange d’informations entre tâches
locales ou distantes (en réseau) implémenté dans le noyau Linux. Une socket locale
est un fichier spécial qui possède un nom dans l’arborescence. Ce n’est pas le cas
des sockets distantes. Les sockets locales sont utilisées par le système graphique
X-Window.

Tube nommé p mknod rm


Un tube nommé est un mécanisme d’échange d’informations entre tâches qui
s’exécutent localement. Un tube nommé est un fichier spécial qui possède un nom
dans l’arborescence. Les tubes nommés sont encore appelés FIFO (« First In First
Out »). Ils sont souvent utilisés par les services tels que le service d’impression.

Lien symbolique l ln –s rm
Un lien symbolique est un fichier spécial qui définit un chaînage sur un autre
fichier. Les liens symboliques permettent de conserver une compatibilité avec
d’anciennes versions de l’arborescence du système Linux ou d’un logiciel (cf.
UNIX Utilisateur – la commande ln).

Le nombre maximum de caractères autorisés dans un nom de fichier est


habituellement de quatorze. Il est possible d’avoir des noms de fichiers exprimés sur
255 positions. C’est un paramètre déterminé par l’administrateur au moment de la
création d’un système de fichiers sur un disque (cf. Module 4 : Les systèmes de
fichiers).
Tout caractère est autorisé dans un nom de fichier, sauf le /.
Le système Linux ne gère pas d’extension. Ce sont donc des conventions de
nommage liées à un service ou à un logiciel. Il est parfois obligatoire de respecter la
convention, par exemple pour les sources du langage C. Les caractères utilisés pour
l’extension sont compris dans les 14 ou 255 caractères du nom. Les extensions les plus
connues sont les suivantes :
Extension Fichier
.c Fichier source du langage C.
.cc Fichier source du langage C++.
.h Fichier d’en-tête du langage C.
.f Fichier source du langage Fortran.
.o Résultat de la compilation d’un programme C, Fortran, …
.a Bibliothèque statique.
.so Bibliothèque dynamique.
.d Un répertoire.
.sh Un script shell.
.awk Un script écrit avec awk.

3-6 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 3 : Les fichiers

.tcl Un script tcl/tk.


.gz ou .z Un fichier compressé, au format ZIP, par gzip.
.Z Un fichier compressé par compress.
.bz2 Un fichier compressé par bzip2.
.icon, Un fichier image.
.xbm,
.xpm, .gif,
.jpg ou
.jpeg
.pdf Un fichier ACROBAT.
.txt Un fichier texte.
.htm ou Un fichier HTML (une page Web), visualisable par lynx ou netscape.
.html
.ps Un fichier au format postscript, visualisable par ghostscript.
.pm, .pl Une bibliothèque (un paquetage) PERL. Un script PERL.
.java Un fichier source JAVA.
.class Un fichier compilé JAVA.
.tar Un fichier archive TAR.
.cpio Un fichier CPIO.
.taz ou .tz Un fichier TAR compressé.
.tgz ou .tpz Un fichier TAR compressé par gzip.
.deb Un paquetage Debian.
.rpm Un paquetage RedHat.
.tex Un fichier source Tex/Latex.
.dvi Un fichier binaire Tex/Latex.
Le type de fichier ordinaire recouvre un large éventail de possibilités et l’extension ne
suffit pas toujours pour discriminer la nature exacte du fichier. La commande file le
fait et affiche le type du contenu du fichier. Il reste alors à déterminer la commande la
mieux adaptée à la visualisation du fichier.
Quand le diagnostic produit par la commande file désigne un fichier « text », il est
alors possible de le visualiser par les commandes cat, more ou less, ou bien encore de
l’imprimer. Il faut sinon le « dumper » grâce à la commande od, dont la sortie n’est
pas des plus lisibles, ou la commande hexdump.
Le fichier /etc/mime.types, utilisé notamment par Apache et les environnements
graphiques, associe des extensions à un format de fichier. Les extensions .htm et .html
sont ainsi associées au format HTML (text/html).
Remarques
• L’exécution de la commande file nécessite le droit de lecture du fichier.
L’information qui permet de déterminer le type du contenu, le « magic number »,
figure dans le fichier lui-même dans son en-tête. Le fichier /usr/share/magic
contient la liste des « magic numbers » et les libellés associés.

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 3-7
Module 3 : Les fichiers

• Si la commande file d’une distribution diagnostique, en français, « texte » au lieu


de « text », cela complique la programmation des filtres, tels grep, qui utilisent
l’expression régulière « text$ ».

Exemples
# file /bin/bash
/bin/bash: ELF 32-bit LSB executable, Intel 80386, version 1, dynamically linked,
stripped
# file /etc/passwd
/etc/passwd: ASCII text
# tail -2 /etc/passwd > fichier
# cat fichier
pierre:!!:500:500::/home/pierre:/bin/bash
paul:tbiYDmgxAcKi2:65536:65536::/home/paul:/bin/bash
# hexdump -c /etc/passwd # -c : mode caractère
0000000 p i e r r e : ! ! : 5 0 0 : 5 0
0000010 0 : : / h o m e / p i e r r e :
0000020 / b i n / b a s h \n p a u l : t
0000030 b i Y D m g x A c K i 2 : 6 5 5
0000040 3 6 : 6 5 5 3 6 : : / h o m e /
0000050 p a u l : / b i n / b a s h \n
# od -xc fichier # -x : hexadécimal -c : mode caractère
0000000 6970 7265 6572 213a 3a21 3035 3a30 3035
p i e r r e : ! ! : 5 0 0 : 5 0
0000020 3a30 2f3a 6f68 656d 702f 6569 7272 3a65
0 : : / h o m e / p i e r r e :
0000040 622f 6e69 622f 7361 0a68 6170 6c75 743a
/ b i n / b a s h \n p a u l : t
0000060 6962 4459 676d 4178 4b63 3269 363a 3535
b i Y D m g x A c K i 2 : 6 5 5
0000100 3633 363a 3535 3633 3a3a 682f 6d6f 2f65
3 6 : 6 5 5 3 6 : : / h o m e /
0000120 6170 6c75 2f3a 6962 2f6e 6162 6873 630a
p a u l : / b i n / b a s h \n

Remarque
La commande man ascii affiche les caractères ascii ainsi que les codes octaux et
hexadécimaux.

3-8 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 3 : Les fichiers

Les droits
Les droits

„ Les neuf droits fondamentaux (400,200,100,40,20,10,4,2,1)


„ Le « sticky bit » (1000)
z Exécutable : il reste en mémoire, son chargement est rapide
z Répertoire : la destruction d’un fichier est réservée au propriétaire
„ Les droits d’endossement (SUID=4000, SGID=2000)
z Exécutable
- SUID : le processus possède les droits du propriétaire du programme
- SGID : le processus possède les droits du groupe du programme

z Répertoire (SGID)
Les fichiers créés dans le répertoire appartiennent au groupe du répertoire

TSOFT - Linux Administration Module 3 : Les fichiers - 3.5

Le système Linux est un système multi-utilisateur où l’accès aux fichiers est contrôlé
par des droits. La commande ls -l permet de les afficher.
Pour contrôler l’accès à un fichier, le système UNIX divise les utilisateurs en trois
catégories :
• Le propriétaire.
• Les membres du groupe associé au fichier.
• Les autres, terme générique qui désigne tous les utilisateurs autres que le
propriétaire et les membres du groupe.
Pour chaque catégorie, il existe trois droits d’accès :
• Le droit de lecture (« read ») qui permet de lire les octets du fichier, ce qui
autorise par exemple la copie du fichier.
• Le droit d’écriture (« write ») qui permet d’ajouter, de retirer ou de modifier des
octets.
• Le droit d’exécution (« execute ») qui permet de considérer le fichier comme une
commande. Ce droit qui peut être positionné quel que soit le fichier, n’a de sens
que si le fichier est un binaire exécutable ou un script.
Le tableau du transparent nous rappelle les valeurs octales associées aux droits. La
valeur 4 désigne le droit de lecture, 2 celui d’écriture et 1 celui d’exécution. Utilisée
comme chiffre des centaines, la valeur concerne le propriétaire, des dizaines, le
groupe, et des unités, les autres.

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 3-9
Module 3 : Les fichiers

Remarques
Pour un répertoire, les droits d’accès ont la signification suivante :
• Le droit « r » de lecture permet de connaître la liste des fichiers du répertoire,
c’est-à-dire l’exécution, avec au plus l’option « -i », de la commande ls.
• Le droit d’écriture permet de créer ou de supprimer des fichiers d’un répertoire. Il
nécessite obligatoirement le droit « x ».
• Le droit d’exécution permet l’accès aux fichiers d’un répertoire. C’est la clé
indispensable pour que les droits d’accès d’un fichier soient contrôlés. A défaut,
aucune opération n’est possible sur le fichier, quels que soient les droits de
l’utilisateur. Le droit d’exécution est aussi nécessaire pour qu’un répertoire
devienne le répertoire courant, grâce à la commande cd.
A ces droits fondamentaux s’ajoutent des droits particuliers qui s’appliquent
essentiellement aux commandes et dont l’administrateur doit impérativement
connaître la signification car ils sont fondamentaux pour la sécurité du système.

Le « sticky bit »
Le « sticky bit » correspond symboliquement à la lettre t et numériquement au droit
1000. Appliqué à un exécutable, il en facilite les chargements successifs en le
conservant, autant que faire se peut, en mémoire vive ou dans la zone d’échange
(« swap »). Appliqué à un répertoire, il limite aux propriétaires des fichiers le droit de
destruction.

Les droits d’endossement pour les commandes


Les droits d’endossement correspondent symboliquement à la lettre « s » et
numériquement aux valeurs 4000 pour l’endossement de l’identité du propriétaire et
2000 pour celle du groupe.
Les droits d’endossement sont plus importants et significatifs quant à la sécurité (cf.
Module 17 : La sécurité). Au lieu de donner le droit d’accès à un fichier à une
catégorie d’utilisateurs, on donne le droit d’accès à une commande. Quand le noyau
exécute la commande, elle endosse l’identité du propriétaire ou du groupe de la
commande plutôt que celle de l’utilisateur qui en a demandé l’exécution. La
commande peut réaliser tous les contrôles supplémentaires qu’elle veut, l’accès au
fichier par les utilisateurs ne se fait qu’à travers elle.
La mise en œuvre par Linux est la suivante : quand un utilisateur est connecté, il
dispose de deux UID et de deux GID : le réel et l’effectif. Quand il exécute une
commande, les réels sont ses véritables UID et GID, les effectifs sont ceux attribués à
la tâche qui exécute la commande. Quand les droits d’endossement ne sont pas
positionnés sur le fichier commande, les UID et GID effectifs sont identiques aux
réels. Dans le cas où l’un des deux ou les deux droits d’endossement sont positionnés,
l’UID et/ou le GID effectifs sont ceux de la commande. Or ce sont les UID et GID
effectifs qui servent aux contrôles des droits d’accès.
Prenons le cas de la commande lpr qui dépose une requête d’impression. La requête
est mémorisée dans un fichier créé dans le répertoire /var/spool/lpd/Nom_imprimante,
sur lequel un utilisateur ordinaire ne dispose d’aucun droit. Comment lpr peut-elle
créer un fichier dans un répertoire sans les droits nécessaires ? Parce qu’elle possède
des droits d’endossement.
# ls -l /usr/bin/lpr
-r-sr-sr-x 1 root root 15068 oct 2 1998 /usr/bin/lpr

3-10 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 3 : Les fichiers

# ls -ld /var/spool/lpd/epson640
drwxr-xr-x 2 root lp 1024 avr 30 11:08 /var/spool/lpd/epson640

La commande qui suit s’exécute pour le compte de l’utilisateur gilles


d’UID réel gilles et de GID réel stage, mais d’UID effectif root et de GID effectif root.
Or l’utilisateur root a les droits rwx nécessaires à la création de fichiers dans le
répertoire /var/spool/lpd/epson640.
$ lpr fichier # commande exécutée par gilles

Le droit d’endossement du groupe pour les répertoires et les fichiers


de données
Le système UNIX BSD a défini une utilisation particulière du droit d’endossement du
groupe pour les répertoires, utilisation reprise dans le système Linux. Quand un
répertoire possède le droit d’endossement du groupe, les fichiers qui sont créés dans ce
répertoire appartiennent au groupe du répertoire et non au groupe de l’utilisateur qui
les crée. On peut dire que les fichiers héritent du groupe du répertoire.
$ ls -ld repertoire
drwxrwsr-x 2 pierre famille 1024 Oct 10 10:15 repertoire
$ id
uid=500(pierre) gid=500(pierre) groups=500(pierre)
$ cat > repertoire/f
Quel est le groupe
^D
$ ls -l repertoire/f
-rw-rw-r-- 1 pierre famille 19 Oct 10 10:18 repertoire/f

Remarques
• Dans le résultat produit par la commande ls –l, les lettres « s » ou « t » masquent
les lettres x associées au droit d’exécution. Ces droits existent cependant. La ligne
-r-sr-sr-x 1 root root 15068 oct 2 1998 /usr/bin/lpr traduit les droits 6555
pour la commande lpr.
• Si le droit d’exécution « x » est absent, les lettres « s » et « t » sont en majuscules.

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 3-11
Module 3 : Les fichiers

Les commandes de gestion de l’arborescence


Les commandes de gestion d’arborescence

„ ls -lR Affiche une arborescence et ses caractéristiques


„ du Affiche une arborescence et/ou sa taille
„ find -print Affiche une arborescence, réalise des recherches
„ rm -Rf Détruit une arborescence
„ cp -Rfp Copie une arborescence
„ chmod -R Change les droits des fichiers d’une arborescence
„ chgrp -R Change le groupe des fichiers d’une arborescence
„ chown -R Change le propriétaire et éventuellement le groupe
des fichiers d’une arborescence
„ find -exec Exécute une commande sur une arborescence

TSOFT - Linux Administration Module 3 : Les fichiers - 3.6

Les commandes
Les commandes présentées dans le transparent ont été étudiées dans le manuel UNIX
Utilisateur. Nous attirons l’attention du lecteur sur le fait que l’option –R, pour
récursif, existe sur les commandes chmod, chgrp, et chown. Ces commandes peuvent
agir sur toute une arborescence. Il est évident que cette possibilité doit être utilisée
avec d’infinies précautions, tant le résultat peut être désastreux sur une arborescence.
La syntaxe chown utilisateur.groupe permet de changer le propriétaire et le groupe
en une seule opération (cf. exemple).
La commande find mérite un rappel plus approfondi. Elle est souvent utilisée, compte
tenu de la richesse de ses critères, en frontal d’une autre commande, pour procéder à
la sélection de fichiers.
La commande cp –a, ou cp –dpR est similaire à la commande cp –Rfp, mais elle
préserve les liens symboliques.

La commande find
find répertoire [-critère [argument_du_critère]] ...
La commande find recherche des fichiers dans un arbre et exécute une action sur ces
fichiers. Les critères sont très nombreux, mais le plus utilisé est le nom et l’action la
plus fréquente est l’affichage du chemin d’accès aux fichiers sélectionnés.
La commande find parcourt l’arbre issu du répertoire désigné par le premier argument
et vérifie, pour chaque fichier, s’il répond aux critères énoncés.
Les critères sont contrôlés dans l’ordre de la ligne de commande. Le dernier de la liste
est un pseudo-critère qui entraîne l’affichage du chemin d’accès au fichier ou
l’exécution d’une commande.
Quand un critère n’est pas vérifié, la commande passe au fichier suivant.

3-12 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 3 : Les fichiers

Le tableau qui suit rappelle les principaux critères de sélection et d’exécution de la


commande find. Nous renvoyons bien évidemment le lecteur au manuel de find pour
mesurer l’étendue des possibilités de cette commande.

Critères de sélection
-name nomfichier Le fichier doit se nommer nomfichier.
-type typefichier Les valeurs possibles de typefichier sont :
f ordinaire
d répertoire
c,b fichier spécial caractère ou bloc (/dev/xxx)
p tube nommé
s socket locale
l lien symbolique
-size taille Le fichier doit avoir la bonne taille. L’unité est par défaut le bloc
de 512 octets. On peut préciser l’unité « c » pour les caractères,
1515c (1515 caractères) , « b » pour les blocs de 512 octets,
500b et « k » pour les blocs d’un kilo-octet, 500k.
-user propriétaire Le fichier a propriétaire comme propriétaire.
-group groupe Le fichier a groupe comme groupe.
-perm lesdroits Le fichier a lesdroits comme droits d’accès.
On peut également dire –perm –lesdroits pour dire que le fichier
doit avoir au moins les droits lesdroits.
On peut également dire –perm +lesdroits pour dire que le fichier
doit avoir au moins l’un des droits lesdroits.
-ctime nbjours Le statut du fichier a été modifié il y a nbjours. Cette option
inclut la création.
-mtime nbjours La dernière modification remonte à nbjours.
-atime nbjours Le dernier accès remonte à nbjours.

Critères d’exécution
-print Afficher le chemin d’accès aux fichiers.
-exec cmde {} \; Exécuter la commande cmde avec comme argument le fichier.
-ok cmde {} \; Demander une confirmation pour exécuter la commande cmde
avec comme argument le fichier.

Les arguments des critères qui expriment une quantité peuvent prendre trois formes
différentes :
- critère n, signifie exactement n. Ainsi, « -ctime 5 » exprime créé il y a cinq jours.
- critère -n, signifie inférieur à n. « -size -1000 » exprime taille inférieure à 1000
blocs.
- critère +n, signifie supérieur à n. « -size +1000 » exprime taille supérieure à 1000
blocs.
La liaison qui existe par défaut entre les critères est un ET. Il existe des opérateurs
logiques explicites pour connecter les critères. Leur utilisation est assez peu fréquente.
Opérateur logique Expression dans la commande find
ET -a
OU -o
NON !
( expression) \( expression \)

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 3-13
Module 3 : Les fichiers

Exemples
# du –h
4.0k ./soft-jf/CVS
9.0k ./soft-jf
10k .
# df –h
Filesystem Size Used Avail Use% Mounted on
/dev/hda6 288M 134M 139M 49% /
/dev/hda2 46M 2.6M 41M 6% /boot

usbdevfs 737M 737M 0 100% /proc/bus/usb
# ls -l fic*
-rw-r--r-- 1 cathy cathy 146 avr 30 12:29 fichier
-rw-r--r-- 1 cathy cathy 1044 avr 30 11:06 fic.doc
# chown pierre fichier # ne change que le propriétaire
# ls -l fichier
-rw-r--r-- 1 pierre cathy 146 avr 30 12:29 fichier
# chown paul.projet fic.doc # change le propriétaire et le groupe
# ls -l fic.doc
-rw-r--r-- 1 paul projet 1044 avr 30 11:06 fic.doc
$ find . -name marteau -print # rechercher tous les fichiers marteau
./outils.copie/outils/marteau
./outils/marteau
$ find /home -name '*.c' -print # afficher les fichiers dont le suffixe est .c
$ find . -type d -print # afficher les noms des répertoires seulement
./outils
./outils/marteau
./outils/tournevis
$ ls -l f* # le groupe de f3 n’est pas users
-rw-r--r-- 1 pierre users 24 Jun 11 16:51 f1
-rw-r--r-- 1 pierre users 21 Jun 11 16:51 f2
-rw-r--r-- 1 pierre adm 271 Oct 23 1994 f3
$ # rechercher les fichiers dont le groupe n’est pas users
$ find /home/pierre ! -group users -print
/home/pierre/f3
$ # rechercher les fichiers modifiés aujourd’hui
$ find /home -mtime 0 -print
$ # rechercher les fichiers qui n’appartiennent pas à Pierre, dont la taille est supérieure
$ # à 10000 octets ou le dernier accès remonte à moins de 30 jours
$ find /home ! -user pierre \( -size +10000c -o -atime -30 \)
$ # rechercher et détruire tous les fichiers réguliers dont la taille est nulle
$ find /home -type f -size 0 -exec rm -f {} \;

3-14 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 3 : Les fichiers

Les attributs des fichiers


Les attributs des fichiers

Les
Lesprincipaux
principauxattributs
attributs

a Fichier log
i Fichier non modifiable
s Fichier physiquement détruit
S Fichier synchrone

Les
Lescommandes
commandes

chattr Modifier les attributs


lsattr Afficher les attributs

TSOFT - Linux Administration Module 3 : Les fichiers - 3.7

Les attributs d’un fichier sont des caractéristiques supplémentaires qui viennent
s’ajouter, dans le système de fichiers « ext2 » (cf. Module 4 : Les systèmes de
fichiers), aux caractéristiques habituelles.

Les attributs
Attribut Description
A L’heure et la date de dernier accès (« access time ») ne sont plus
modifiées si cet attribut est positionné, ceci par souci de
performance.
a Un fichier qui possède cet attribut ne peut, en écriture, qu’être
ouvert en ajout.
c Les écritures dans le fichier sont automatiquement compressées et
les lectures décompressées.
d Le fichier ne sera pas sauvegardé par la commande dump (cf.
Module 5 : La sauvegarde).
i Le fichier ne peut pas être modifié, détruit, renommé et il est
impossible de créer des liens sur ce fichier. Seul l’administrateur
root peut positionner cet attribut.
s Quand le fichier est détruit, les blocs de données libérés sont remis
à 0.
S Les écritures dans le fichier sont immédiatement effectuées sur le
disque. Le fichier est synchrone.
u Cet attribut permet de récupérer un fichier détruit.

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 3-15
Module 3 : Les fichiers

Remarque
Les attributs A, c et u peuvent être positionnés mais ne fonctionnent pas actuellement.
Prévus pour une version ultérieure, nous invitons le lecteur à en vérifier le bon
fonctionnement.

Les commandes
chattr
La commande chattr permet de modifier les attributs d’un fichier. Sa syntaxe est la
suivante :
chattr [-RV] [-v version] [+-=Asacdisu] fichier…
L’option « –R », comme dans de nombreuses commandes, permet de modifier les
attributs de toute une arborescence.
L’option « –V » rend la commande bavarde.
L’option « –v version » permet de modifier la version d’un fichier, initialement fixée à
1.
lsattr
La commande lsattr visualise les attributs d’un fichier. Sa syntaxe est la suivante.
lsattr [-Radv] [fichier…]
L’option « –R » permet de visualiser les attributs de tous les fichiers d’une
arborescence.
L’option « -a », comme dans la commande ls, permet de visualiser les attributs des
fichiers dont le nom commence par « . ».
L’option « -d », comme dans la commande ls, permet de visualiser les attributs des
répertoires et pas leur contenu.
L’option « -v » affiche la version des fichiers.

Exemples
$ ls
f1 f2 f3
$ chattr +Ss f2
$ su
password :
# chattr +i f1
# exit
$ lsattr
----i--- ./f1
s--S---- ./f2
-------- ./f3
$ rm f1
rm: détruire le fichier protégé en écriture `f1'? rm: o
Ne peut délier `f2'.: Opération non permise
$ chattr –s f2
$ lsattr f2
---S---- f2

3-16 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 3 : Les fichiers

Atelier 3 : Les fichiers


Atelier 3 : Les fichiers

Objectifs :
„ Savoir changer les caractéristiques
d’un fichier
„ Gérer une arborescence de fichiers et
de répertoires

Durée : 30 minutes.

TSOFT - Linux Administration Module 3 : Les fichiers - 3.8

Exercice n°1
Recherchez les répertoires de nom « cron » sur votre système.

Exercice n°2
Recherchez tous les fichiers tubes de votre système.

Exercice n°3
Recherchez tous les répertoires accessibles en écriture pour les autres.

Exercice n°4
Connectez-vous avec le compte pierre et créez une arborescence de fichiers en
utilisant les commandes suivantes :
$ cp /etc/passwd /etc/group ~
$ mkdir ~/boot
$ cp /etc/inittab /etc/profile ~/boot
Listez cette arborescence en utilisant différentes commandes.

Exercice n°5
En étant connecté en tant qu’administrateur, mettez les droits 700 à l’ensemble des
fichiers de l’utilisateur pierre.

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 3-17
Module 3 : Les fichiers

Exercice n°6
En utilisant le manuel, retrouvez les différentes utilisations du droit SGID dans le
système Linux.

Exercice n°7
Créez un fichier par la commande cp et rendez-le non modifiable. Listez ses attributs.
Essayez de le modifier.

3-18 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 4 : Les systèmes de fichiers

• « File System »
• mount, umount
• inode
• sysv, ext2, iso9660
• mkfs,mke2fs,e2fsck
• /etc/fstab
• Les quotas

4Module 4 : Les systèmes


de fichiers
Objectifs
Après l’étude du chapitre, le lecteur connaît la structure des systèmes de fichiers, leur
gestion. Il est capable de créer, monter, démonter un système de fichiers. Il peut en
automatiser le montage.

Contenu
Arborescence et systèmes de fichiers
Montage et démontage des systèmes de fichiers
Les inodes
Les différents types de systèmes de fichiers
Les systèmes de fichiers journalisés
La gestion de l’espace disque, la commande df
Panorama des commandes de gestion des systèmes de fichiers
L’automatisation du montage des systèmes de fichiers
La gestion des quotas

Références
HOWTO : automount MINI-HOWTO, quota MINI-HOWTO,
filesystems-HOWTO
Le manuel : mke2fs(8), mount(8), fstab(5), debugfs(8), e2fsck(8)

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 4-1
Module 4 : Les systèmes de fichiers

Arborescence et système de fichiers


Arborescence et système de fichiers

/
/
(root)

etc bin

/home
home usr

/usr

TSOFT - Linux Administration Module 4 : Les systèmes de fichiers - 4.2

L’arborescence (rappel)
Les utilisateurs voient une arborescence de fichiers unique. Cette arborescence est en
fait l’unification de plusieurs arbres. Chaque arbre est stocké sur un disque local du
système Linux ou bien est un arbre distant (cf. Module 15 : Le réseau). La structure
d’accueil des fichiers d’un arbre d’un disque du système Linux s’appelle un système
de fichiers (« File system »). Un disque Linux ne peut contenir qu’un seul système de
fichiers. Au cours du temps, la structure interne des systèmes de fichiers a évolué pour
s’adapter à l’augmentation de la capacité des disques et des fichiers.
La procédure d’installation de chaque système Linux effectue la création et le
peuplement des systèmes de fichiers initiaux. L’administrateur réalise ensuite la
création et la gestion des « systèmes de fichiers » supplémentaires. L’unification des
arborescences se fait en attachant la racine d’un arbre d’un disque à un répertoire d’un
système de fichiers déjà actif : on dit que l’on procède au montage du système de
fichiers (cf. Le montage des systèmes de fichiers). A défaut d’avoir réalisé cette
opération, les fichiers d’un système de fichiers sont inaccessibles. Comme il n’existe
qu’un seul attachement possible entre la racine d’un arbre d’un système de fichiers et
un répertoire, et qu’un disque ne peut contenir qu’un système de fichiers, on confond
parfois, dans l’expression, le chemin d’accès au système de fichiers (le chemin de
montage) et le disque qui le contient.

Pourquoi créer un système de fichiers ?


Sachant qu’il n’y a pas de difficulté à créer et à monter un système de fichiers, la
question essentielle que se posent les administrateurs est de savoir pourquoi créer des
systèmes de fichiers et quel intérêt peut-on en retirer ?
L’organisation physique du système informatique :
• On est obligé d’avoir plusieurs systèmes de fichiers si on dispose de plusieurs
disques physiques, sachant qu’un disque ne peut contenir qu’un système de
fichiers et qu’un système de fichiers ne peut pas s’étendre sur plusieurs disques.

4-2 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 4 : Les systèmes de fichiers

• Les disques amovibles font naturellement l’objet d’une création d’un système de
fichiers.
Des critères liés à des choix de gestion :
• La sécurité de fonctionnement est améliorée quand on dispose de plusieurs
systèmes de fichiers. Si un système de fichiers est endommagé, les dégâts sont
limités au disque qui le contient.
• Les performances sont améliorées par la diminution du temps d’accès aux fichiers.
Le morcellement des fichiers est réduit à l’espace du disque où il est stocké.
• La division de l’espace en plusieurs systèmes de fichiers permet de cloisonner
l’espace pour les utilisateurs ou les applications. Comme les utilisateurs ou les
applications n’ont le droit de création de fichiers que dans certains répertoires,
l’administrateur est certain qu’ils ne pourront pas créer de fichiers de taille
supérieure à l’espace disponible du disque où se trouvent leurs répertoires.
• Les administrateurs qui font le choix d’effectuer des sauvegardes physiques
peuvent ainsi créer des systèmes de fichiers de même taille que les unités
d’archivage.
• Certaines arborescences sont par nature d’excellentes candidates pour être des
systèmes de fichiers (beaucoup de systèmes UNIX le réalisent dès l’installation).
Citons entre autres : root (/), /boot, /usr, /home, /var, /tmp, /usr/man, /mnt.

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 4-3
Module 4 : Les systèmes de fichiers

Le montage des systèmes de fichiers


Le montage de FS

/ /

home usr mount home usr

pierre cathy
umount
/dev/hda2
/dev/hda2 /

pierre cathy
# mount /dev/hda2 /home
# umount /home

TSOFT - Linux Administration Module 4 : Les systèmes de fichiers - 4.3

Le montage d’un système de fichiers consiste à attacher la racine de l’arbre du


système de fichiers à un répertoire d’un système de fichiers déjà actif. Cette opération,
qui s’appelle le montage du système de fichiers, est réalisée par la commande mount.
La suppression du lien entre le répertoire de montage et le système de fichiers est
effectuée par la commande umount. Les fichiers d’un système de fichiers ne sont
accessibles, par les commandes usuelles (cp, rm, mv, cat,…), que s’il est monté. Le
système Linux mémorise les paramètres du montage des systèmes de fichiers dans le
fichier /etc/mnttab.
Le disque /dev/hda2 contient les répertoires de connexion des utilisateurs. Le
répertoire /home est un répertoire vide de l’arborescence active constituée des
systèmes de fichiers déjà montés. La commande de montage, mount /dev/hda2
/home, attache la racine du système de fichiers de /dev/hda2 au répertoire /home. La
racine du système de fichiers coïncide maintenant avec le chemin d’accès au répertoire
de montage /home. Quand l’opération de démontage umount /dev/hda2 a été réalisée,
les fichiers des répertoires pierre et cathy sont de nouveau inaccessibles, le répertoire
/home est vide.
Remarque
Si le répertoire de montage n’est pas vide au moment de l’exécution de la commande
mount, les fichiers qu’il contient sont cachés jusqu’au démontage.
Lors du démarrage du système, le disque qui contient le système de fichiers principal,
celui où se trouve le fichier racine /, doit être connu pour être automatiquement monté.
Ce disque est un paramètre du démarrage du système. Il est défini par la variable root
dans le fichier /etc/lilo.conf, le fichier de configuration du chargeur lilo. En l’absence
de cette variable, c’est le disque indiqué dans l’image même du noyau qui sera monté
comme système de fichier racine (cf. Module 12 : Le noyau).

4-4 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 4 : Les systèmes de fichiers

La structure d’ext2
La notion d’inode
Un répertoire

Table des inodes


1
N° Longueur Longueur Nom
2
de de l ’entrée du
3
« lien » inode du répert. nom
42 .

323 55 ..
323 12 4 fic1
520 15 7 fic.bat
323 15 7 fichier

$ ls -ia # Affiche les numéros d’inode (option « - »)

TSOFT - Linux Administration Module 4 : Les systèmes de fichiers - 4.4

Structure du système de fichiers


Un système de fichiers est une structure de données.
La commande mkfs, qui crée un système de fichiers, inscrit cette structure de données
dans une partition.
Tous les systèmes de fichiers comportent au moins trois tables système :
• Le super bloc qui contient les informations clés concernant le système de fichiers.
• La table des inodes, c’est-à-dire la table des descripteurs des fichiers. Chaque
fichier est identifié de manière unique par le numéro de l’inode qui le décrit.
• Les répertoires qui assurent une correspondance entre un nom de fichier et un
numéro d’inode.

Structure d’un inode


Le terme inode désigne le descripteur d’un fichier. Il contient les attributs du fichier,
ceux affichés par la commande ls –l, et une table d’accès aux blocs de données.
Il existe une table d’inodes par disque et l’espace qu’elle occupe est réservé à la
création du système de fichiers sur le disque. La taille de la table des inodes est donc
un paramètre statique important d’un système de fichiers, car elle fige le nombre de
fichiers que l’on peut au plus créer sur le disque.
Remarque
Il faut se souvenir que tous les fichiers, y compris les fichiers spéciaux (périphériques,
tubes nommés, …) occupent un inode.
L’administrateur n’a pas besoin de mémoriser la structure interne d’un inode. Sa
connaissance permet cependant de mieux comprendre comment le système UNIX gère
les fichiers. Il est par contre indispensable de se souvenir que le numéro d’inode d’un

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 4-5
Module 4 : Les systèmes de fichiers

fichier, pour un disque donné, est l’unique moyen d’identifier sans ambiguïté un
fichier. La commande ls –i permet de connaître le numéro d’inode d’un fichier.
Nous présentons la structure d’un inode d’un système de fichiers de type « ext2 ».
C’est actuellement le système de fichiers le plus performant sous Linux. C’est, du
reste, le type de système de fichiers par défaut pour la commande mkfs qui crée les
systèmes de fichiers.

Droits d’accès et type du fichier


UID du propriétaire
GID du groupe du fichier
Taille en octets
Date et heure de création
Date et heure de dernière modification
Date et heure de dernier accès
Date et heure de suppression
Nombre de liens matériels
Nombre de blocs
Nombre de fragments
Drapeaux
Réservé
Fichier ACL
Répertoire ACL
Adresse de fragments
Nombre de fragments
1 Adresse du premier bloc de données BD
2 BD
3 BD
4 BD
5 BD
6 BD
7 BD
8 BD
9 BD
10 BD
11 BD
12 Adresse du douzième bloc de données BD
13 Adresse du bloc d’indirection de niveau 1 BA BD
14 Adresse du bloc d’indirection de niveau 2 BA BA BD
15 Adresse du bloc d’indirection de niveau 3 BA BA BA BD

4-6 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 4 : Les systèmes de fichiers

Dans le schéma, le sigle « BD » désigne un bloc de données de 1,2 ou 4 Ko et le sigle


BA un bloc d’adresses.
L’inode contient l’adresse de douze blocs de données. La treizième entrée de l’inode
contient l’adresse d’un bloc d’adresses de blocs de données (indirection de premier
niveau). La quatorzième entrée contient l’adresse d’un bloc d’adresses de blocs
d’adresses. Cela constitue une double indirection. La quinzième entrée définit une
triple indirection.
Une entrée de répertoire contient les informations suivantes :
• Le numéro de l’inode.
• La longueur en octets de l’entrée.
• La longueur en caractères du nom de fichier.
• Le nom du fichier.
Le nombre de liens matériels est inscrit dans l’inode. Il est décrémenté à chaque
suppression d’un lien et l’inode n’est libéré qu’à la suppression du dernier lien qui le
référence.
Remarques
• Les temps sont exprimés en secondes depuis le premier janvier 1970 à 0 heure,
heure GMT.
• La destruction d’un fichier consiste à libérer l’inode et à restituer les blocs
d’adresses et de données à l’ensemble des blocs libres.

La structure du système de fichiers ext2


Le système de fichiers « ext2 » est le plus utilisé sous Linux. Il dérive du système de
fichiers ffs (« Fast File System ») créé à l’université de Berkeley.
Sa structure est la suivante :
• Un secteur de boot de 512 octets qui ne fait pas partie du système de fichiers. Ce
secteur peut être vide.
• Une suite d’ensemble de blocs.

Chaque ensemble de blocs contient les informations suivantes :


Une copie du super bloc.
• Une table de descripteurs qui indique l’emplacement des tables suivantes.
• La table d’allocation des blocs de l’ensemble courant sous forme de bitmaps.
• La table d’allocation des inodes de l’ensemble courant sous forme de bitmaps.
• La table des inodes de l’ensemble courant.
• Les blocs de données des fichiers de l’ensemble courant.
Le super bloc contient notamment les informations suivantes :
• La taille des blocs.
• La taille en bloc du système de fichiers.
• Le nombre de blocs libres.
• Le nombre de blocs réservés à root.

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 4-7
Module 4 : Les systèmes de fichiers

• Le nombre d’inodes.
• Le nombre d’inodes libres.
• L’état du système de fichiers : monté ou démonté.
• Le nombre de blocs par ensemble de blocs.
• Le nombre d’inodes par ensemble de blocs.
• Le nombre maximal de montage avant de réaliser un fsck automatique.
• Le nombre de montages réalisés depuis le dernier fsck.
• Date du dernier fsck.
• Temps maximum entre deux fsck.
La table des inodes.
Un inode a été décrit dans le paragraphe précédent.
Dans la table des inodes, plusieurs entrées sont réservées, notamment :
Le premièr inode qui mémorise les « bads blocs » du système de fichiers.
Le second inode qui est celui du répertoire racine du système de fichiers.

Remarque
Les informations présentées dans ce chapitre sont décrites dans les fichiers d’inclusion
du répertoire /usr/include/linux : ext2_fs.h, ext2_fs_i.h et ext2_fs_sb.h et le livre
Programmation Linux 2.0 .

4-8 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 4 : Les systèmes de fichiers

Les différents types de systèmes de fichiers


Les différents types de FS

„ minix Le premier FS utilisé par Linux


„ ext2 Le FS standard du système Linux
„ msdos Le FS FAT16 de MS-DOS et Windows
„ vfat Le FS FAT32 de Windows
„ sysv Le FS d’UNIX System V (« s5 » d’UNIX).
„ smb Le FS réseau utilisant le protocole SMB de
Microsoft
„ nfs Le FS réseau de Sun (Network FS)
„ iso9660 Le FS utilisé par les CD-ROM

TSOFT - Linux Administration Module 4 : Les systèmes de fichiers - 4.5

Le système UNIX a dû s’adapter aux évolutions technologiques des disques


magnétiques et principalement à l’accroissement des capacités. L’organisation du
système de fichiers défini par AT&T, pour le système UNIX system V, date des
années 1980. Il est connu sous le nom de « s5 » et reconnu dans la plupart des
systèmes UNIX.
Le type « s5 » présente aujourd’hui deux inconvénients :
- La taille du bloc qui sert d’unité d’allocation d’espaces aux fichiers est de 1 kilo-
octet. Elle favorise le morcellement de gros fichiers.
- Le regroupement de tous les blocs de gestion du système de fichiers en tête du disque
peut générer des déplacements importants des têtes de lecture et d’écriture.
Pour pallier cet inconvénient, le système UNIX BSD a introduit le type « FFS »
(« Fast File System ») qui propose des granules d’allocation de 4, 8 Ko ou plus,
fragmentables en blocs de 1 Ko pour les petits fichiers. Il éclate aussi le disque en
groupes de cylindres. Chaque groupe de cylindres contient des blocs de données de
gestion du « FFS ».
Le système Linux est le descendant direct du système d’exploitation Minix. Dans les
premières versions, Linus Torvald a préféré implémenter le système de fichiers Minix,
plutôt que d’en créer un nouveau.
Les limitations du système de fichiers « Minix », principalement la taille maximale de
64 Mo et les noms de fichiers courts, ont poussé la communauté Linux, en 1992, à
créer une interface, la VFS (« Virtual File System »). Elle permet au noyau Linux de
s’adapter à n’importe quel type de système de fichiers. A cette occasion, un nouveau
système de fichiers, appelé ext (« Extended File System »), a été développé pour le
système Linux. Le système ext remédie aux deux insuffisances de Minix. Il permet
aux partitions d’atteindre une taille de deux Go et les noms de fichiers longs (255
caractères).
Le système ext possédait lui aussi quelques imperfections qui amenaient à une
dégradation des performances dans le cas de partitions de grande taille. On aboutit

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 4-9
Module 4 : Les systèmes de fichiers

ainsi au système de fichiers baptisé ext2 (« Second Extended File System »), devenu
aujourd’hui le standard de fait des systèmes de fichiers de Linux.
Les principales caractéristiques du type ext2 sont :
• La division des blocs en groupes de blocs, notion assez proche du « FFS » de
UNIX BSD. Chaque groupe de blocs possède sa table d’inodes.
• Il existe plusieurs copies du super bloc, le bloc qui contient les informations de
gestion du système de fichiers.
• La taille du bloc est déterminée à la création du système de fichiers. Elle peut être
de 1, 2 ou 4 Ko.
• La fragmentation des blocs est prévue dans les structures du système de fichiers
mais n’est pas encore implémentée. Le fragment, une division d’un bloc, est utile
dans le cas de fichiers de petite taille. Il évite une perte de place sur disque.
• Le système ext2 introduit la notion de lien symbolique rapide (« Fast Symbolic
Link »). Un lien symbolique dont la taille n’excède pas 64 octets est stocké dans
l’inode et n’occupe pas de blocs de données sur disque.
• Le paramétrage fin du système de fichiers par l’administrateur. L’administrateur
peut ainsi décider du contrôle automatique du système de fichiers par la
commande fsck, même s’il n’est pas endommagé. Les choix sont définis par des
paramètres. Le contrôle est déclenché si le compteur de montage « s_mnt_count »
a atteint la limite « s_max_mnt_count ».
• Les attributs de fichiers : suppression sécurisée d’un fichier, écriture synchrone,
… (cf. Les commandes chattr(1) et lsattr(1)).
• La taille du plus gros fichier et du système de fichiers dépend du type de
processeur : 32 ou 64 bits. Pour les ordinateurs actuels, équipés d’un processeur
32 bits, la taille du plus gros fichier est de 4 Go et la taille maximum d’un système
de fichiers ext2 de 4 To (téra-octets).
Il existe des types de système de fichiers dont le choix n’incombe pas à
l’administrateur mais relève d’utilisations particulières. Parmi ceux-ci, on peut noter le
système de fichiers des CD-ROM qui est ISO et les systèmes de fichiers en RAM,
utilisés de manière transparente lors de l’installation du système.
Le tableau qui suit liste les principaux systèmes de fichiers du monde Linux.
Système de fichiers Description
minix Le premier système de fichiers de Linux. Bien que
limité, il est pratique pour les systèmes de fichiers sur
disquette ou en RAM.
ext La version améliorée de Minix. Il est aujourd’hui
obsolète et remplacé par ext2.
xiafs Un système de fichiers dérivé de Minix. Il est stable et
simple, mais rarement utilisé.
ext2 Le standard des systèmes de fichiers sous Linux.
msdos Le système de fichiers FAT16 de MS-DOS. Il permet
le montage de systèmes de fichiers MS-DOS dans
l’arborescence Linux.
umsdos C’est un système de fichiers MS-DOS étendu. Il
implémente les noms de fichiers longs, les « UID » et
les « GID », les fichiers spéciaux, les droits POSIX sur

4-10 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 4 : Les systèmes de fichiers

un système de fichiers DOS.


vfat Le système FAT32 de Windows. Il permet le montage
des systèmes de fichiers de Windows dans Linux.
ntfs Le système de fichiers de Windows NT.
iso9660 Le système de fichiers pour CD-ROM, conforme à la
norme ISO 9660. Il intègre les formats « High Sierra »
et « RockRidge » qui décrit les fichiers ISO 9660 au
format d’un hôte UNIX.
nfs Le système de fichiers distribués mis par la société
SUN dans le domaine public. Il permet d’accéder, de
façon transparente, à des disques d’ordinateurs
distants.
smb Le système de fichiers qui implémente le protocole
SMB de Microsoft pour accéder à des disques
d’ordinateurs distants fonctionnant avec Windows et
Lan Manager.
proc Le système de fichiers particulier qui permet d’accéder
à la mémoire du noyau (cf. Module 12 : Le noyau).
ramfs Le système de fichiers utilisé pour créer des disques en
mémoire vive (Ramdisk).
ncpfs Le système de fichiers qui implémente le protocole
réseau utilisé par Netware de Novell.
hfs Le système de fichiers du Macintosh d’Apple.
sysv Le système de fichiers d’UNIX System V (« s5 »
d’UNIX).
ufs Le système de fichiers d’UNIX BSD.

Remarques
• Le problème du choix du type de système de fichiers à installer sur un nouveau
disque est souvent un faux problème. Le système Linux privilégie un choix, le
système ext2.
• Le montage d’un système de fichiers sur un système de fichiers d’un type différent
est possible et complètement transparent pour l’administrateur.
Les paramètres fondamentaux de création d’un système de fichiers sont :
• Le type, si ce n’est pas celui par défaut du système.
• La taille, souvent celle du disque où l’on crée le système de fichiers.
• Le nombre d’inodes.
• La taille d’un bloc.
• Le nombre de groupes de blocs.

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 4-11
Module 4 : Les systèmes de fichiers

La gestion de l’espace disque, la commande df


La gestion de l’espace disque: df

# df
Filesystem 1k-blocks Used Available Use% Mounted on
/dev/hda1 796033 318675 436234 42% /
/dev/hda6 101471 454 95777 0% /home
/dev/hda5 101471 28 96203 0% /tmp
# df -i
Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/hda1 206040 28565 177475 14% /
/dev/hda6 26208 215 25993 1% /home
/dev/hda5 26208 40 26168 0% /tmp

TSOFT - Linux Administration Module 4 : Les systèmes de fichiers - 4.6

L’espace disque est une ressource précieuse, même si les capacités des disques ont
considérablement évolué ces dernières années. L’administrateur doit en contrôler
l’usage.
Il dispose pour cela de commandes simples et pratiques dont nous ne faisons ici que
rappeler la signification et donner quelques options significatives.
La commande df indique l’espace libre des disques contenant des systèmes de fichiers
montés. Les tailles sont affichées en kilo-octets. Les principales options sont :
-i Affiche les informations sur l’utilisation des inodes et non des blocs.
-k Affiche les tailles en kilo-octets. L’option est significative dans le cas où
la variable POSIXLY_CORRECT est définie (cf. Remarque).
-T Affiche également le type de système de fichiers.

La commande du affiche le nombre de blocs d’un kilo-octet utilisés par une


arborescence qui peut coïncider avec celle d’un système de fichiers.
Les principales options sont :
-s Affiche le total seulement.
-k Affiche les tailles en kilo-octets (cf. Remarque).

Remarque
Si la variable d’environnement POSIXLY_CORRECT est définie, les commandes du
et df affichent le nombre de blocs de 512 octets.
La commande find permet de rechercher des fichiers selon différents critères dont
celui de la taille et de la date du dernier accès.

4-12 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 4 : Les systèmes de fichiers

A titre d’exemple, recherchons les fichiers des utilisateurs dont la taille est supérieure
à 100 Ko et dont le dernier accès remonte à plus de 90 jours :
find /home –size +100k –atime +90 –print
Il existe, en sus, des fichiers qui peuvent être détruits ou purgés, avec une périodicité
qui varie selon les cas :
Les fichiers créés par les applications dans les répertoires /tmp et /var/tmp.
Les fichiers core qui sont générés quand un processus meurt sur réception de certains
signaux, souvent émis par le noyau à la suite d’une anomalie de fonctionnement. Ils
contiennent l’image du processus quand il est mort et sont destinés aux programmeurs
qui veulent effectuer, à chaud, une analyse post-mortem de l’application. Ils peuvent
être détruits sinon sans remord.
Les fichiers log qui enregistrent des informations relatives au suivi d’un service, d’un
logiciel. Ils peuvent être purgés dès que l’administrateur a analysé leur contenu et les a
archivés si nécessaire.
Remarque
Pour vider un fichier, il suffit d’exécuter la commande :
cp /dev/null fichier

Les principaux fichiers log sont contenus dans le répertoire /var/log :

/var/log/*acct Fichiers log du service acct (comptabilité).


/var/log/messages Fichier log des principaux messages du système de log
associé au démon syslogd.
/var/log/secure Fichier log des tentatives de connexions infructueuses.
/var/log/maillog Fichier log de la messagerie.
/var/log/news/* Fichier log du service news (Internet).
/var/log/uucp/* Fichier log du service UUCP.
/var/log/cron Fichier log du service cron.
/var/run/wtmp Fichier log, en binaire, des commandes init et login. Ce
fichier est exploité par la commande last.
/var/log/httpd/* Fichiers log du service Web.
/var/log/samba/* Fichiers log du service Samba (accès aux disques Windows).
/var/log/lastlog Fichier log des dernières connexions des utilisateurs
(fichier binaire), utilisé par la commande lastlog.
/var/log/xdm-error.log Fichier log des erreurs de connexion du système de connexion
en mode graphique.
/var/log/dmesg Fichier des messages affichés au démarrage du système.

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 4-13
Module 4 : Les systèmes de fichiers

Panorama des commandes de gestion des


systèmes de fichiers
Panorama des commandes de gestion de FS

Commandes génériques Commandes propres à ext2


„ mkfs Crée un FS „ mke2fs Crée un FS
„ mount Monte un FS „ e2fsck Vérifie un FS
„ umount Démonte un FS „ tune2fs Paramètre un
FS
„ fsck Vérifie un FS
„ dumpe2fs Infos sur le
„ df Espace libre super bloc et
„ du Espace occupé les groupes de
blocs
„ lsof Identifie les
processus „ debugfs Débogue un FS

TSOFT - Linux Administration Module 4 : Les systèmes de fichiers - 4.7

Les commandes de gestion de systèmes de fichiers sont nombreuses. Dans Linux, on


trouve deux familles de commandes :
• Les commandes génériques héritées du système UNIX, comme mkfs et fsck.
• Les commandes spécifiques à Linux et particulièrement au système de fichiers
ext2.

mkfs
Parmi les commandes standard d’UNIX, la commande mkfs est bien sûr la plus
importante. C’est elle qui crée un système de fichiers sur un disque. Elle comporte les
trois paramètres fondamentaux d’un système de fichiers :
• Le nom du disque où le système de fichiers doit être créé.
• Le type du système de fichiers à créer.
• La taille du système de fichiers à créer.
Elle peut aussi comporter d’autres options, spécifiques à un type de systèmes de
fichiers, et nous renvoyons l’administrateur au manuel de référence de son système.
Remarque
L’outil intégré d’administration linuxconf est le meilleur moyen de création d’un
système de fichiers, tant pour connaître le type de systèmes de fichiers privilégiés que
les principales options complémentaires.

4-14 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 4 : Les systèmes de fichiers

mke2fs
La commande mke2fs permet de créer un système de fichiers de type ext2. Sa syntaxe
est la suivante :
mke2fs [ options] disque [ taille_du_FS_en_blocs]
Le disque est désigné par un fichier spécial de type bloc. A défaut de préciser la taille
en blocs de 1 kilo-octet du système de fichiers, le système de fichiers occupe la totalité
du disque où il est créé.
Les principales options sont :
-b taille_du_bloc Indique la taille du bloc en octets.
-i octet_par_inode Permet de calculer le nombre d’inodes. Pour chaque
« octet_par_inode » sur disque, un inode est créé. La valeur
minimale est de 1024. Pour une capacité disque de 100 Mo
et une valeur de 4096 pour l’attribut « octet_par_inode », le
nombre d’inodes sera de 25 000.
-N nombre_de_inodes Indique le nombre d’inodes qu’il y aura sur le disque.
-m pourcentage_réservé Indique le pourcentage d’espace disque réservé à
l’administrateur. La valeur par défaut est de 5%.
-S La commande mke2fs ne crée que le super bloc et le
descripteur des groupes de blocs. Il faut ensuite exécuter
e2fsck pour les initialiser à partir des autres données du
système de fichiers. Cette solution extrême n’est à mettre en
œuvre que si le super bloc et ses copies sont endommagés.
-f taille_du_fragment Cette option est reconnue mais elle n’est pas encore
implémentée. Elle permettra de fragmenter un bloc. Cela
évitera une inoccupation inutile de place disque pour les
petits fichiers.

Exemples
Création d’un système de fichiers de type Minix sur disquette.
# mkfs -t minix /dev/fd0
480 inodes
1440 blocks
Firstdatazone=19 (19)
Zonesize=1024
Maxsize=268966912

Création d’un système de fichiers sur disquette avec mke2fs.


# mke2fs /dev/fd0
mke2fs 1.12, 9-Jul-98 for EXT2 FS 0.5b, 95/08/09
Linux ext2 filesystem format
Filesystem label=
360 inodes, 1440 blocks
72 blocks (5.00%) reserved for the super user
First data block=1
Block size=1024 (log=0)
Fragment size=1024 (log=0)
1 block group

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 4-15
Module 4 : Les systèmes de fichiers

8192 blocks per group, 8192 fragments per group


360 inodes per group
Writing inode tables: 0/ 1 done

mount
La commande mount réalise l’attachement d’un système de fichiers d’un disque
Linux à un répertoire d’un système de fichiers déjà monté. Elle comporte
principalement le nom du disque et le chemin absolu du répertoire de montage. Sa
syntaxe est la suivante :
mount [-hV]
mount -a [-fnrvw] [-t type]
mount [-fnrvw] [-o options [,...]] périph | rép
mount [-fnrvw] [-t type] [-o options] périph rép
-h Affiche un message d’aide.
-V Affiche le numéro de version.
-a Procède au montage de tous les systèmes de fichiers décrits dans le
fichier /etc/fstab (cf. Automatiser le montage des systèmes de
fichiers).
-t type Le type indique le type de système de fichiers qui réside sur le disque
à monter. Il est obligatoire si ce n’est pas ext2.
-f L’exécution de la commande est simulée mais elle n’est pas exécutée.
-n Le système de fichiers monté n’est pas mémorisé dans /etc/mtab.
C’est obligatoire si l’on souhaite que /etc soit sur un disque différent
de /.
-r Le système de fichiers est monté en lecture seulement.
-w Le système de fichiers est monté en lecture et en écriture. C’est la
valeur par défaut.
-v Le mode bavard.
-o options Les options qui suivent « -o » sont séparées par des virgules.
Certaines sont communes à tous les types de systèmes de fichiers,
d’autres sont spécifiques.
Communes suid/nosuid Prendre en compte, ou non, les bits « s » des
fichiers.
async/sync Les entrées/sorties sont asynchrones ou
synchrones.
ro/rw Equivalent à « -r » et « -w ».
remount Remonter un système de fichiers déjà monté.
Cette possibilité est intéressante quand on
souhaite modifier les attributs de montage
dynamiquement.
loop=[/dev/loop<n>] Monte un fichier ordinaire contenant l’image
d’un système de fichiers, par exemple créé
par dd. Le système de fichiers est associé à
un périphérique /dev/loop<n>, où <n> est
compris entre 0 et 7. A défaut, c’est le

4-16 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 4 : Les systèmes de fichiers

premier disponible qui est utilisé.


Valides pour noatime Dans le inode, la date de dernière
ext2 et ext3 consultation du fichier n’est pas modifiée.
Quand cette information a peu d’importance
et qu’il existe de nombreux fichiers, souvent
lus, cette option peut améliorer les
performances. Cela peut être le disque
contenant le courrier des utilisateurs.
Spécifiques à rsize=8192 Fixe la taille des buffers utilisés pour les
nfs wsize=8192 opérations de lecture et d’écriture à 8192
octets au lieu de 1024 par défaut. Ceci
améliore la vitesse du système nfs.

Montage d’un système de fichiers.


# mount /dev/hda3 /opt/appli
La commande mount, exécutée sans argument, affiche les systèmes de fichiers et les
attributs de montage.
# mount
/dev/hda5 on / type ext2 (rw)
none on /proc type proc (rw)
localhost:(pid264) on /net type nfs
(intr,rw,port=1023,timeo=8,retrans=110,indirect,map=/etc/amd.conf,dev=00000002)
/dev/fd0 on /mnt/floppy type ext2 (rw)
/dev/hda1 on /win98 type vfat (rw)
Création et montage d’un système de fichiers dans un fichier ordinaire.
# dd if =/dev/fd0 of=/tmp/filesys bs=8k
# mount -o loop /tmp/filesys /mnt/filesys
# mount

/tmp/filesys on /mnt/filesys type ext2 (rw,loop=/dev/loop0)

Remarque
Si un système de fichiers est monté sur un répertoire non vide, les fichiers du
répertoire sont cachés pendant toute la durée du montage. Il existe une arborescence
dédiée au montage des systèmes de fichiers : /mnt, /mnt/floppy, /mnt/cdrom.

umount
La commande umount, qui démonte un système de fichiers, rompt le lien qui existe
entre le répertoire de montage et le système de fichiers. Les fichiers du disque sont à
nouveau inaccessibles jusqu’au prochain montage.
# umount /dev/hda3
ou
# umount /mnt
L’argument de la commande umount est indifféremment le nom du disque ou le
répertoire de montage (le lien est unique).

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 4-17
Module 4 : Les systèmes de fichiers

fsck, e2fsck
La commande fsck contrôle et répare un système de fichiers corrompu. Sa variante,
e2fsck, est propre au système de fichiers ext2. Elle évite d’avoir à préciser le type du
système de fichiers à contrôler. La commande fsck est, en général, automatiquement
exécutée sur tous les systèmes de fichiers où cela est nécessaire pendant le démarrage
du système. Lors de son utilisation manuelle, les systèmes de fichiers qui sont
contrôlés doivent être démontés, sauf le système de fichiers principal root, pour qu’il
n’y ait pas d’activité sur le disque pendant l’exécution de fsck.
Le principal argument de la commande fsck est le nom du disque à contrôler. La
commande fsck propose également de nombreuses options dont les plus significatives
sont :
-y La commande fsck n’interroge plus l’utilisateur, la réponse est oui à toutes
les questions.
-n La commande fsck n’interroge plus l’utilisateur, la réponse est non à
toutes les questions.
-t type « type » désigne le type du système de fichiers (ext2, …).
-b # # désigne le numéro du bloc qui contient la copie du super bloc à utiliser
(cas où le super bloc est corrompu).
La commande stats de debugfs donne les caractéristiques des groupes de
blocs. Pour chaque ensemble de blocs, la commande affiche
l’emplacement des « Block bitmap ». La copie du super bloc se trouve
deux blocs plus loin. Si le « block bitmap » est en 32770, le super bloc est
en 32768. On peut activer directement la commande stats :
« debugfs –R stats /dev/hda6 ».
Le temps d’exécution de la commande fsck peut être relativement long, compte tenu
du parcours croisé qu’elle effectue entre la table des inodes et les répertoires de l’arbre
pour contrôler la cohérence du système de fichiers. Elle se déroule en plusieurs phases
de contrôle et demande à l’administrateur de décider, oui ou non, des réparations qui
ne peuvent être faites automatiquement.
Quand la commande rencontre un fichier perdu, qui possède un inode mais plus de
lien, elle crée un lien pour ce fichier dans le répertoire « lost+found », situé dans la
racine du système de fichiers. Le lien attribué est le numéro d’inode, ce qui évite les
conflits de nom. Si le répertoire « lost+found » n’a pas été créé par la commande
mkfs, il faut le faire manuellement.
# mount /dev/hda3 /mnt
# cd /mnt
# mkdir lost+found
La démarche de l’administrateur qui récupère des fichiers dans le répertoire
« lost+found » pour les identifier peut être la suivante :
# mount /dev/hda3 /mnt
# cd /mnt/lost+found
# ls –l # pour connaître le propriétaire, le groupe et le type du fichier
# file * # pour connaître le type du contenu des fichiers ordinaires
# more fichier # pour un fichier de type texte (« text »)
# od fichier # pour les fichiers de données (« data »)

4-18 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 4 : Les systèmes de fichiers

Remarque
La commande fsck est une interface générique qui appelle la commande ad hoc
fsck.type_du_fs. Dans le cas du système de fichiers ext2, il est encore plus simple
d’utiliser la commande e2fsck.

Exemple de contrôle par e2fsck


Le nombre de liens de l’inode 13 a été forcé à trois.
# e2fsck /dev/fd0
e2fsck 1.12, 9-Jul-98 for EXT2 FS 0.5b, 95/08/09
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Inode 13 ref count is 3, should be 1. Fix<y>? yes
Pass 5: Checking group summary information
/dev/fd0: ***** FILE SYSTEM WAS MODIFIED *****
/dev/fd0: 15/360 files (0.0% non-contiguous), 69/1440 blocks

Le nombre de blocs de l’inode 12 a été forcé à cent.


# e2fsck -f /dev/fd0
e2fsck 1.12, 9-Jul-98 for EXT2 FS 0.5b, 95/08/09
Pass 1: Checking inodes, blocks, and sizes
Inode 12, i_blocks is 100, should be 10. Fix<y>? yes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
/dev/fd0: ***** FILE SYSTEM WAS MODIFIED *****
/dev/fd0: 15/360 files (0.0% non-contiguous), 69/1440 blocks

debugfs
La commande debugfs permet de déboguer un système de fichiers. L’administrateur
peut ainsi lire ou modifier n’importe quel bloc du système de fichiers. La commande
debugfs ouvre, par défaut, le système de fichiers en lecture seulement. Il est évident
que cette commande ne doit être utilisée qu’en dernier recours et par des
administrateurs qui maîtrisent parfaitement la structure du système de fichiers.
Syntaxe
debugfs [–R requête] [–w] disque
L’option « –w » permet d’ouvrir le disque en lecture et en écriture.
L’option « –R requête » permet de faire exécuter une seule requête en mode non
interactif, ce qui peut être utile dans un script.
Afficher l’inode d’un fichier.
# ls -i /mnt/floppy
total 18
13 -rw-r--r-- 1 root root 691 mai 8 10:58 fic.user
14 -rw-r--r-- 1 root root 0 mai 8 10:58 fiche1
15 -rw-r--r-- 1 root root 0 mai 8 10:58 fiche2

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 4-19
Module 4 : Les systèmes de fichiers

12 -rw-r--r-- 1 root root 4534 mai 8 10:57 fichier


# umount /dev/fd0
# debugfs /dev/fd0
debugfs 1.12, 9-Jul-98 for EXT2 FS 0.5b, 95/08/09
debugfs: mi <13>
debugfs: Mode [0100644]
User ID [0]
Group ID [0]
Size [691]
Creation time [926153880]
Modification time [926153880]
Access time [926153880]
Deletion time [0]
Link count [1]
Block count [2]
File flags [0x0]
File acl [0]
High 32bits of size [0]
Fragment address [0]
Fragment number [0]
Fragment size [0]
Direct Block #0 [68]
Direct Block #1 [0]

Direct Block #11 [0]
Indirect Block [0]
Double Indirect Block [0]
Triple Indirect Block [0]
debugfs: quit
Retrouver les noms de fichiers à partir d’un numéro d’inode.
# debugfs /dev/fd0
debugfs 1.12, 9-Jul-98 for EXT2 FS 0.5b, 95/08/09
debugfs: ncheck 13 14 15
debugfs: Inode Pathname
13 /fic.user
14 /fiche1
15 /fiche2
debugfs: quit

du et df
Les commandes du et df permettent de gérer l’espace disque (cf. Gestion de l’espace
disque).

lsof
La commande lsof permet de lister les fichiers ouverts et de connaître les applications
qui y accèdent.
# lsof # liste des fichiers ouverts
# lsof /dev/hda5 # liste les processus qui accèdent au système de fichiers de la
# partition /dev/hda5
# kill $(lsof -t /dev/hda5) # tue les processus identifiés précédemment

4-20 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 4 : Les systèmes de fichiers

tune2fs
La commande tune2fs permet de modifier les paramètres ajustables d’un système de
fichiers de type ext2. La syntaxe qui suit présente les principales options de tune2fs :
tune2fs [ -l ] [ -c max_montage] [ -i intervalle[d|m|w]] [ -m blocs_réservés ] device
-l Affiche le super bloc.
-c max_montage Fixe le nombre maximum de montage entre deux vérifications
du système de fichiers.
-i intervalle[d|m|w] Fixe le nombre de jours (d), mois (m) ou semaines (w) entre
deux vérifications du système de fichiers, six mois par défaut.
-m blocs_réservés Fixe le pourcentage de blocs du système de fichiers réservés à
root.

La commande tune2fs ne doit jamais être exécutée sur un système de fichiers en cours
d’utilisation, monté en lecture et en écriture.

dumpe2fs
La commande dumpe2fs affiche des informations sur le super bloc et les groupes de
blocs.

badblocks
La commande badblocks recherche les blocs physiques endommagés d’une partition.

ext2resize
La commande ext2resize permet de modifier la taille d’un système de fichiers de type
ext2. Son auteur la définit comme dangereuse et à utiliser avec précaution. La
commande ext2resize modifie la taille du système de fichiers, mais ne modifie pas la
taille de la partition qui le contient. Sa syntaxe est suivante :
ext2resize disque nouvelle_taille
Exemple de modification de la taille d’un système de fichiers créé sur disquette.
# mke2fs /dev/fd0
# ext2resize /dev/fd0 500000
ext2_resize_fs
direct hits 0 indirect hits 0 misses 0
# tune2fs -l /dev/fd0
tune2fs 1.18, 11-Nov-1999 for EXT2 FS 0.5b, 95/08/09
Filesystem state: clean
Errors behavior: Continue
Filesystem OS type: Linux
Inode count: 184
Block count: 488
Block size: 1024

# ext2resize /dev/fd0 1300000
ext2_resize_fs
ext2_grow_fs
ext2_block_relocate
ext2_block_relocate_grow

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 4-21
Module 4 : Les systèmes de fichiers

ext2_grow_group
direct hits 780 indirect hits 0 misses 1
# tune2fs -l /dev/fd0
tune2fs 1.18, 11-Nov-1999 for EXT2 FS 0.5b, 95/08/09
Filesystem state: clean

Filesystem OS type: Linux
Inode count: 184
Block count: 1269

e2label
La commande e2label change l’étiquette d’un système de fichiers ext2.

Un exemple complet
Création d’un système de fichiers. Les blocs font 4096 octets, 10%
du disque est réservé à l’administrateur et des fragments de 1024
octets
# mke2fs -b 4096 -f 1024 -m 10 /dev/sda7
mke2fs 1.18, 11-Nov-1999 for EXT2 FS 0.5b, 95/08/09
Warning: fragments not supported. Ignoring -f option
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
52224 inodes, 52203 blocks
5220 blocks (10.00%) reserved for the super user
First data block=0
2 block groups
32768 blocks per group, 32768 fragments per group
26112 inodes per group
Superblock backups stored on blocks:
32768
Writing inode tables: done
Writing superblocks and filesystem accounting information: done
Visualisation des informations de gestion.
# tune2fs -l /dev/sda7 > /tmp/fic
tune2fs 1.18, 11-Nov-1999 for EXT2 FS 0.5b, 95/08/09
Filesystem volume name: <none>
Last mounted on: <not available>
Filesystem UUID: 2706277e-b296-4c15-b3df-6adbe1135397
Filesystem magic number: 0xEF53
Filesystem revision #: 1 (dynamic)
Filesystem features: filetype sparse_super
Filesystem state: clean
Errors behavior: Continue
Filesystem OS type: Linux
Inode count: 52224
Block count: 52203
Reserved block count: 5220
Free blocks: 50558
Free inodes: 52213

4-22 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 4 : Les systèmes de fichiers

First block: 0
Block size: 4096
Fragment size: 4096
Blocks per group: 32768
Fragments per group: 32768
Inodes per group: 26112
Inode blocks per group: 816
Last mount time: Thu Jan 1 01:00:00 1970
Last write time: Mon Oct 30 16:32:17 2000
Mount count: 0
Maximum mount count: 20
Last checked: Mon Oct 30 16:32:14 2000
Check interval: 15552000 (6 months)
Next check after: Sat Apr 28 17:32:14 2001
Reserved blocks uid: 0 (user root)
Reserved blocks gid: 0 (group root)
First inode: 11
Inode size: 128
Montage du système de fichiers sur /mnt/appli
# mount /dev/sda7 /mnt/appli
# ls –iR
.:
13 fracine1 12 fracine2 11 lost+found 26113 r1
./lost+found:
./r1:
26114 ls
Vérification du disque après un « crash »
# e2fsck /dev/sda7
e2fsck 1.18, 11-Nov-1999 for EXT2 FS 0.5b, 95/08/09
/dev/sda7 was not cleanly unmounted, check forced.
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Unconnected directory inode 26113 (/???)
Connect to /lost+found? yes
Pass 4: Checking reference counts
Unattached inode 13
Connect to /lost+found? yes
Inode 13 ref count is 2, should be 1. Fix? yes
Inode 26113 ref count is 5, should be 2. Fix? yes
Pass 5: Checking group summary information
/dev/sda7: ***** FILE SYSTEM WAS MODIFIED *****
/dev/sda7: 15/52224 files (0.0% non-contiguous), 1659/52203 block
# mount /dev/sda7 /mnt/appli
# ls –iR
.:
12 fracine2 11 lost+found
./lost+found:
13 #13 26113 #26113

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 4-23
Module 4 : Les systèmes de fichiers

./lost+found/#26113:
26114 ls
Le répertoire « lost+found » contient deux fichiers trouvés. Les liens sont les numéros
d’inode des fichiers.
On essaie de reconstituer les liens d’origine.
# cd lost+found/
# ls -l
total 8
-rw-r--r-- 1 root root 6 oct 30 16:49 #13
drwxr-xr-x 2 root root 4096 oct 30 16:49 #26113
# file \#13
#13: ASCII text
# ls -R \#26113
#26113:
ls
On reconstitue si possible.
# mv \#13 ../fracine1
# mv \#26113 ../r1
Modification du nombre de blocs réservés à l’administrateur
# tune2fs –m 15 /dev/sda7
tune2fs 1.18, 11-Nov-1999 for EXT2 FS 0.5b, 95/08/09
Setting reserved blocks percentage to 15 (7830 blocks)
Vérification du disque après un « crash » en utilisant une copie
du super bloc
Destruction du super bloc.
# dd if=/dev/zero of=/dev/sda7 bs=4k count=1
1+0 enregistrements lus.
1+0 enregistrements écrits.
# mount /dev/sda7 /mnt/appli
mount: you must specify the filesystem type
On indique l’adresse de la copie.
# e2fsck -b 32768 /dev/sda7
e2fsck 1.18, 11-Nov-1999 for EXT2 FS 0.5b, 95/08/09
/dev/sda7 was not cleanly unmounted, check forced.
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
/dev/sda7: ***** FILE SYSTEM WAS MODIFIED *****
/dev/sda7: 15/52224 files (0.0% non-contiguous), 1659/52203 blocks
On remonte le système de fichiers.
# mount /dev/sda7 /mnt/appli
# cd /mnt/appli

4-24 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 4 : Les systèmes de fichiers

# ls –iR
.:
13 fracine1 12 fracine2 11 lost+found 26113 r1
./lost+found:
./r1:
26114 ls

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 4-25
Module 4 : Les systèmes de fichiers

Les systèmes de fichiers journalisés


Les systèmes de fichiers journalisés
Le journal enregistre les Le système de fichiers :
modifications des blocs de
ext3
gestion (« metadata ») du FS.
reiserfs
xfs

Les modifications Le super bloc, les inodes,


du super bloc, les listes de blocs libres,
des inodes, ...
des listes de blocs libres,
... Les données

TSOFT - Linux Administration Module 4 : Les systèmes de fichiers - 4.8

Introduction à la journalisation
A une époque où la taille des systèmes de fichiers devient de plus en plus importante,
la journalisation vise principalement à diminuer la durée du contrôle et de la
réparation d’un système de fichiers. Elle assure aussi une meilleure intégrité des
fichiers en cas de crash.
Dans le monde UNIX, on rencontre principalement le système de fichiers « vxfs »
(« Veritas File System »), le système « JFS » (« Journaled FileSystem ») de la société
IBM et le système « XFS » de la société Silicon Graphics.
Dans le monde Linux, on rencontre le système de fichiers « ext3 », compatible avec
son prédécesseur « ext2 », le système « Reiser FS » et «XFS » déjà nommé.
L’idée maîtresse des systèmes journalisés est de conserver l’ensemble des données de
gestion du système de fichiers (« metadata ») dans un journal enregistré sur disque,
plutôt que dans les mémoires cache du système. En cas de crash, la commande fsck
contrôle la cohérence du système de fichiers, rapidement, en quelques secondes, à
partir des informations contenues dans le journal, sans avoir à analyser la totalité des
inodes et de l’arborescence des répertoires.

Le système de fichiers ext3


Le système de fichiers ext3 a été développé par Stephen Tweedy. C’est un système de
fichiers journalisé qui assure une compatibilité complète, ascendante et descendante
avec son ancêtre ext2. Un système de fichiers ext2 peut être doté d’un journal et donc
devenir ext3 et, inversement, un système de fichiers ext3 peut être, sans aucune
difficulté, monté en tant que systèmes de fichiers ext2. Le système de fichiers ext3 est
supporté par le noyau 2.4. Pour les versions plus anciennes de noyau, il faut charger
un patch.
Il faut d’ailleurs noter qu’il n’existe pas de commandes propres à ext3 et que l’on
continue à utiliser les commandes mke2fs, tune2fs, e2fsck. Elles ont évidemment été

4-26 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 4 : Les systèmes de fichiers

enrichies de quelques options liées à la journalisation, de même que la commande


mount.
Stephen Tweedy dit que ext2 est un système de fichiers qui a fait ses preuves et que la
journalisation ne devait pas remettre en cause la robustesse du système de fichiers.
C’est pourquoi la journalisation est assurée par une API totalement indépendante de
ext3. La journalisation pourrait, pour cette raison, être mise en œuvre par un autre type
de système de fichiers que ext3. On peut dire que ext3, c’est ext2 plus un journal.
Selon Stephen Tweedy, ext3 ne connaît la journalisation qu’à travers le concept de
transaction. Une transaction désigne les mises à jour des blocs de gestion opérées entre
le début et la fin de la transaction. La couche qui prend en prend en charge la
journalisation garantit qu’après un crash, la totalité d’une transaction a été prise en
compte ou totalement ignorée. Les dernières modifications apportées à un fichier n’ont
peut être pas été enregistrées, mais le inode du fichier est cohérent par rapport aux
données.
La commande mke2fs
La commande mke2fs ajoute quelques options relatives à la journalisation :
Option Description
-j L’option « –j » génère la création d’un système de fichiers ext3.
Le journal est interne, il est stocké dans le système de fichiers.
-J options Les options sont de la forme option=valeur,…
Les options sont :
size=taille_journal
L’unité est le méga octets. Le journal doit avoir une taille d’au
moins 1000 fois la taille du bloc du système de fichiers.
device=journal_device
Cette option indique le nom de la partition qui contient le journal
(cf. option –O).
-r révision Les valeurs possibles de révision sont 0 ou 1. Cette option peut
être considérée comme obsolète. Nous la mentionnons car la
commande mount permet de convertir un système de fichiers de
révision 0 en révision 1.
-O caractéristiques Les caractéristiques sont de la forme caractéristique,…
Les caractéristiques sont :
has_journal qui est équivalente à –j
journal_dev qui est utilisé pour créer un journal externe au
système de fichiers (cf. exemples). plusieurs systèmes de fichiers
peuvent se partager le même journal.
sparse_super qui crée un système de fichiers avec un nombre
réduit de copies du super bloc. Cette option peut être utile pour
un très gros système de fichiers.
filetype pour mémoriser le type des fichiers dans les répertoires.
La commande tune2fs
La commande tune2fs offre, comme principale nouveauté, de doter un système de
fichiers de type ext2 d’un journal.

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 4-27
Module 4 : Les systèmes de fichiers

Option Description
-j L’option « –j » génère la création d’un système de fichiers ext3.
Le journal est interne, il est stocké dans le système de fichiers.
-J options Les options sont de la forme option=valeur,…
Les options sont :
size=taille_journal
L’unité est le méga octets. Le journal doit avoir une taille d’au
moins 1000 fois la taille du bloc du système de fichiers.
device=journal_device
Cette option indique le nom de la partition qui contient le journal
(cf. commande mke2fs, option –O).
La commande e2fsck
La commande e2fsck permet d’indiquer la localisation du système de fichiers quand il
est externe.
Option Description
-j journal L’argument de l’option « –j » indique la localisation du journal.
La commande mount
La commande mount, pour ext3 comme pour tout autre système de fichiers, permet de
préciser des options spécifiques. Les options sont de la forme –o option,…
Le tableau qui suit présente les principales options utilisables à la suite de l’option
« -o ».
Option Description
journal=update Cette option convertit un système de fichiers de révision 0 en
révision 1.
data=mode L’argument « mode » indique le type de journalisation. Les
choix possibles sont les suivants :
data=journal
Quand le système de fichiers est monté avec ce mode, les blocs
de données sont aussi écrits dans le journal. Cela nécessite un
journal d’une taille conséquente. Les blocs de données sont
écrits deux fois sur disque. Les performances s’en trouvent donc
notablement réduites.
data=ordered
C’est le mode par défaut des systèmes de fichiers de révision 1.
Dans ce mode, seuls les blocs de gestion sont journalisés. Les
blocs de données sont écrits sur disque avant que la transaction
soit terminée. Cela garantit le type d’intégrité que nous
présentons dans l’introduction.
data=writeback
Comme dans le mode précédent, seuls les blocs de gestion sont
journalisés, mais il est possible que des blocs de données
d’anciens fichiers soient alloués en double. On retrouve les
possibilités d’erreur du système de fichiers ext2.

4-28 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 4 : Les systèmes de fichiers

Remarques
Le système de fichiers principal (« root file system ») peut être de type ext3. Au boot,
il sera monté comme ext3, à moins que vous précisiez l’option de lilo :
rootfstype=ext2. Il est possible de fournir des options de montage en utilisant l’option
rootflags de LILO, par exemple : rootflags=data=journal.
Le système de fichiers d’un volume logique peut être de type ext3.
Les quotas (cf. Chapitre Les quotas) fonctionnent sur un système de fichiers ext3.
Certains problèmes peuvent exister selon la version du noyau.
Les commandes de nom mke3fs, e3fsck… qui peuvent exister ne sont que
l’expression de la commande équivalente pour ext2 avec l’option de journalisation.

Exemples
Création d’un système de fichiers ext2 sur le disque /dev/hda9
# mke2fs /dev/hda9
mke2fs 1.23, 15-Aug-2001 for EXT2 FS 0.5b, 95/08/09...
Superblock backups stored on blocks:
8193, 24577, 40961, 57345, 73729
Writing inode tables: 0/13 1/13 2/13 3/13 4/13 5/13 6/13 7/13 8/13 9/13 10/13 11/13
12/13 done
Writing superblocks and filesystem accounting information: done

# mount /dev/hda9 /mnt/appli9
# mount
...
/dev/hda9 on /mnt/appli9 type ext2 (rw)
# df
Filesystem 1k-blocks Used Available Use% Mounted on
...
/dev/hda9 102454 13 97151 1% /mnt/appli9
Création d’un système de fichiers ext3 sur le disque /dev/hda9
# mke2fs -j /dev/hda9
mke2fs 1.23, 15-Aug-2001 for EXT2 FS 0.5b, 95/08/09
...
Creating journal (4096 blocks): done

# mount
...
/dev/hda9 on /mnt/appli9 type ext3 (rw)
# df
Filesystem 1k-blocks Used Available Use% Mounted on
...
/dev/hda9 102454 4127 93037 5% /mnt/appli9
Le nombre de blocs utilisés est de 4127 blocs pour le type ext3 et de 13 pour le
système de type ext2. Notons que le journal est de 4 Mo.
Conversion d’un système de fichiers ext2 en ext3
# mke2fs /dev/hda10
# mount

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 4-29
Module 4 : Les systèmes de fichiers

...
/dev/hda10 on /mnt/appli10 type ext2 (rw)
# tune2fs -j /dev/hda10
tune2fs 1.23, 15-Aug-2001 for EXT2 FS 0.5b, 95/08/09
Creating journal inode: done

# mount
...
/dev/hda10 on /mnt/appli10 type ext3 (rw)
Montage d’un système de fichiers ext3 en tant que ext2
# mount -t ext2 /dev/hda9 /mnt/appli9
...
/dev/hda9 on /mnt/appli9 type ext2 (rw)
Création d’un journal externe, ici /dev/hda11
Création du journal
# mke2fs -O journal_dev /dev/hda11
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
0 inodes, 5662 blocks
0 blocks (0.00%) reserved for the super user
First data block=0
0 block group
32768 blocks per group, 32768 fragments per group
0 inodes per group
Superblock backups stored on blocks:
Zeroing journal device: done
Création du système de fichiers
# mke2fs -J device=/dev/hda11 /dev/hda9
mke2fs 1.23, 15-Aug-2001 for EXT2 FS 0.5b, 95/08/09
Filesystem label=
...
Adding journal to device /dev/hda11: done
Writing superblocks and filesystem accounting information: done
...
# mount -t ext3 /dev/hda9 /mnt/appli9
Remarques
La création d’un journal externe nécessite un paquetage e2fsprogs très récent, de
version 1.25 ou plus de préférence.
Quand le journal est externe, il est nécessaire d’indiquer explicitement le type ext3.

quelques montages du système de fichiers ext3


Conversion d’un système de fichiers de la revision 0 à la revision 1.
# mount -t ext3 -o journal=update /dev/hda9 /mnt/appli9
Journalisation des blocs de gestion et des données.
# mount -t ext3 -o data=journal /dev/hda9 /mnt/appli9

4-30 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 4 : Les systèmes de fichiers

Journalisation des blocs de gestion et garantie d’intégrité des fichiers.


# mount -t ext3 -o data=ordered /dev/hda9 /mnt/appli9
Journalisation des blocs de gestion et comportement ext2 pour les données des
fichiers.
# mount -t ext3 -o data=writeback /dev/hda9 /mnt/appli9
Références pour ext3
Internet : La conférence de Stephen Tweedy du « Ottawa Linux Symposium », le 20
juillet 2000 .
ftp://ftp.linuxsymposium.org/ols2000/2000-07-20_15-05-22_A_64.mp3
La documentation RedHat
http://www.redhat.com/support/wpapers/redhat/ext3/tuning.html
http://www.redhat.com/support/wpapers/redhat/ext3/tuning.html
Le HOWTO http://www.symonds.net/~rajesh/howto/ext3/ext3-5.html
Le patch du noyau pour les noyaux antérieurs au noyau 2.4.16
ftp://ftp.*.kernel.org/pub/linuxkernel/people/sct/ext3/
Le paquetage e2fsprogs, dune version supérieure ou égale à 1.23
ftp://download.sourceforge.net/pub/sourceforge/e2fsprogs/

Le système de fichiers reiserfs


Le système de fichiers reiserfs a été développé par Hans Reiser. Il utilise aussi un
journal.
Il existe plusieurs commandes propres à ce systèmes de fichiers, dont mkreiserfs pour
le créer, reiserfsck pour le contrôler et le réparer et debugreiserfs pour le déboguer.
Ces commandes sont simples d’emploi et offrent un nombre réduit d’options.
La commande mkreiserfs
La syntaxe de la commande est la suivante :
mkreiserfs [ -h r5 | tea | rupasov ] [ -v 1 | 2 ] [ -q ] disque [ taille_en_blocs ]
L’option « -h » permet de choisir l’algorithme de hachage utilisé pour trier les noms
de fichiers dans les répertoires. « r5 » est la valeur par défaut.
L’option « -v » précise la révision du système de fichiers.
L’option « -q » fait que la commande sera moins bavarde qu’à la normale.
Exemple
# mkreiserfs /dev/hda9
=============================================================
LEAF NODE (8211) contains level=1, nr_items=2, free_space=3932 rdkey

(NEW SD), mode drwxr-xr-x, size 48, nlink 2, mtime 01/05/2002 23:13:16 blocks 8
-------------------------------------------------------------------------------

Creating reiserfs of 3.6 format
Block size 4096 bytes
Block count 26452
Used blocks 8212
Free blocks count 18240
First 16 blocks skipped

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 4-31
Module 4 : Les systèmes de fichiers

Super block is in 16
Bitmap blocks (1) are :
17
Journal size 8192 (blocks 18-8210 of file /dev/hda9)
Root block 8211
Hash function "r5"
<-------------mkreiserfs, 2001------------->
reiserfsprogs 3.x.0j
# mount –t reiserfs /dev/hda9 /mnt/appli9
/dev/hda1 on /mnt/windows type vfat (rw)
/dev/hda9 on /mnt/appli9 type reiserfs (rw)
Référence pour reiserfs
Internet : reiser@idiom.com
http://www.devlinux.com/namesys

Le système de fichiers XFS


XFS est un système de fichiers journalisé développé par la société Silicon Graphics
pour son système UNIX propriétaire IRIX. Il est disponible, sous forme de logiciel
libre, pour Linux . Comme tous les systèmes de fichiers journalisés, il comporte deux
parties : la section de données et le journal. Le journal peut résider sur un disque
externe. Quand XFS est le système de fichiers d’un volume logique, il peut exister une
troisième section , la section temps réel.
La commande mkfs.xfs crée un système de fichiers XFS.
Référence pour XFS
Internet : http://oss.sgi.com/projects/xfs/

Le système de fichiers jfs


La société IBM a, elle aussi, mis à la disposition de la communauté Internet, sous
forme de logiciel libre, la technologie de son système de fichiers journalisé jfs.
Les commandes de gestion de jfs
Les deux principales commandes sont mkfs.jfs et fsck.jfs. IBM attire notre attention
sur le fait que la commande doit être impérativement exécutée sur un système de
fichiers démonté ou monté en lecture seulement. A défaut, elle peut causer des
dommages irréparables sur le système de fichiers.
Référence pour jfs
Internet : http://oss.software.ibm.com/jfs/

4-32 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 4 : Les systèmes de fichiers

Automatiser le montage des systèmes de


fichiers
Automatiser le montage de FS

# more /etc/fstab
/dev/hda5 / ext2 defaults 1 1
/dev/hda6 swap swap defaults 0 0
/dev/cdrom /mnt/cdrom iso9660 noauto,ro 0 0

4 6
1 2
Fichier Options Ordre de
Répertoire de contrôle
spécial montage
de montage 3 pour fsck
bloc
abritant Type de FS 5
le FS (minix,ext2, Système de
nfs,...) fichiers à sauver
pour dump

TSOFT - Linux Administration Module 4 : Les systèmes de fichiers - 4.9

Prédéfinition des paramètres de montage


Les disques qui contiennent des systèmes de fichiers doivent, en général, être montés à
chaque démarrage du système et démontés à chaque arrêt, le montage étant toujours
réalisé sur le même répertoire.
Pour automatiser ces opérations, l’administrateur d’un système Linux doit modifier le
fichier /etc/fstab qui contient la liste des disques à monter automatiquement. La prise
en compte sera réalisée dès le prochain démarrage du système. C’est la seule
opération à réaliser !
C’est la commande mount –a, exécutée par les scripts de démarrage, qui prend en
compte le contenu du fichier /etc/fstab. Ce fichier contient une ligne par système de
fichiers. Les champs sont respectivement :
• Le nom du disque en mode bloc (le fichier spécial de type b).
• Le chemin d’accès absolu au répertoire de montage.
• Le type du système de fichiers.
• Les attributs de montage. L’attribut le plus fréquent est « rw » (« read/write ») qui
donne un accès complet au système de fichiers. L’accès aux fichiers dépend, quant
à lui, des droits dont on dispose sur eux. L’attribut « ro » limite l’accès à la lecture
seulement. L’attribut « noauto » indique que le système de fichiers ne doit pas être
pris en compte par l’exécution de la commande mount –a. L’existence d’une
ligne de montage d’un système de fichiers avec l’attribut « noauto » permet de
simplifier l’exécution de la commande mount à laquelle il suffit de fournir en
argument le nom du disque ou le chemin de montage.
# more /etc/fstab
/dev/cdrom /mnt/cdrom iso9660 noauto,ro 00
# mount /dev/cdrom

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 4-33
Module 4 : Les systèmes de fichiers

ou
# mount /mnt/cdrom
Il est possible de mentionner d’autres attributs :
« suid », « nosuid » qui indiquent la prise en compte (« suid ») ou non (« nosuid »)
du bit « s » des fichiers exécutables (cf. Module 3 : Les fichiers). Par défaut
l’attribut est « suid ».
« usrquota » et « grpquota » qui signifient que la gestion des quotas (cf. Les
quotas) est active pour ce système de fichiers.

Remarques
Les attributs de montage peuvent être précisés dans la ligne de commande mount.
Le choix des attributs de montage et l’automatisation peuvent être facilement réalisés
par l’outil intégré d’administration, ce qui évite de mémoriser la forme du fichier
d’automatisation.
• L’indication pour la commande de sauvegarde dump si le système de fichiers doit
être sauvegardé. Si le champ est à 0, le système de fichiers ne sera pas sauvegardé.
• L’indication pour la commande fsck de l’ordre dans lequel elle doit contrôler les
systèmes de fichiers.

Montage à la volée d’un système de fichiers avec « autofs »


Le démon « automount » réalise automatiquement le montage d’un système de
fichiers si un processus manipule des fichiers situés en dessous du répertoire de
montage et le démonte quand l’arborescence n’est plus utilisée. Pour le mettre en
œuvre, il faut installer le paquetage « autofs ».
Une fois le paquetage installé, on dispose du script /etc/rc.d/init.d/autofs pour
démarrer ou arrêter le démon automount (cf. Module 7 : L’arrêt et le démarrage). Le
démarrage du service est normalement automatiquement réalisé au chargement du
système. L’automontage est particulièrement intéressant pour les disques amovibles et
les systèmes de fichiers distants (cf. Module 15 : Le réseau – NFS).
La configuration du service est réalisée au moyen de deux types de fichiers :
1. Le fichier /etc/auto.master qui indique les répertoires racines en dessous desquels
sont réalisés les montages et les noms des fichiers qui contiennent le détail des
montages. Si le fichier a un nom différent, il faut l’indiquer au démarrage du
démon automount.
Chaque ligne du fichier /etc/auto.master, qui n’est pas un commentaire, a la
structure suivante :
Point_de_montage Fichier_détail [ Options ]
Parmi les options, notons principalement –timetout n, qui indique au bout de
combien de temps d’inactivité le système de fichiers est démonté, 5 minutes par
défaut.
# more /etc/auto.master
/mnt/auto /etc/auto.mnt --timeout 60
2. Les fichiers qui décrivent le détail des montages. Chaque ligne d’un fichier de
détail a la structure suivante :
Chemin_complémentaire [ -Options_de_montage,…] Système_de_fichiers
La localisation du système de fichiers est de la forme
[ hôte ]:système_de_fichiers

# more /etc/auto.mnt
cdrom -fstype=iso9660,ro,nosuid :/dev/cdrom

4-34 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 4 : Les systèmes de fichiers

appli -fstype=nfs,rw,nosuid aurore6:/mnt/appli

Le lecteur de CD-ROM local /dev/cdrom est monté sur le répertoire


/mnt/auto/cdrom, avec les attributs iso9660,ro,nosuid.

Le répertoire distant aurore6:/mnt/appli, de type nfs, est monté en lecture et en


écriture sur le répertoire /mnt/auto/appli. Notons que la racine du chemin de
montage, /mnt/auto, est indiquée par le fichier /etc/auto.master.

Remarque
L’installation du paquetage crée un fichier /etc/auto.master et un fichier /etc/auto.misc
comme modèle de détail.
Exemple
# ls /mnt/auto # le répertoire /mnt/auto est vide

# mount # Les systèmes de fichiers montés


/dev/sda5 on / type ext2 (rw)
none on /proc type proc (rw)
/dev/sda1 on /boot type ext2 (rw)
none on /dev/pts type devpts (rw,gid=5,mode=620)
# /etc/rc.d/init.d/autofs start # Démarrage du service
Starting automounter: [ OK ]
# ps -e |grep automount
933 pts/0 00:00:00 automount
# cd /mnt/auto/cdrom
# ls
COPYING RELEASE-NOTES RedHat autorun doc images rr_moved
README RPM-GPG-KEY TRANS.TBL boot.cat dosutils misc

# cd /mnt/auto/appli
# ls
fic1 fic2

# mount
/dev/sda5 on / type ext2 (rw)
none on /proc type proc (rw)
/dev/sda1 on /boot type ext2 (rw)
none on /dev/pts type devpts (rw,gid=5,mode=620)
automount(pid933) on /mnt/auto type autofs
(rw,fd=5,pgrp=933,minproto=2,maxproto=3)
/dev/hdc on /mnt/auto/cdrom type iso9660 (ro,nosuid,nodev)
aurore6:/mnt/appli on /mnt/auto/appli type nfs (rw,nosuid,addr=192.0.0.6)
# mount #Les systèmes de fichiers sont démontés
/dev/sda5 on / type ext2 (rw)
none on /proc type proc (rw)
/dev/sda1 on /boot type ext2 (rw)
none on /dev/pts type devpts (rw,gid=5,mode=620)
automount(pid933) on /mnt/auto type autofs
(rw,fd=5,pgrp=933,minproto=2,maxproto=3)

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 4-35
Module 4 : Les systèmes de fichiers

Références pour autofs


Le mini HOWTO.
Automount, Automount mini-HOWTO
La documentation.
/usr/doc/autofs-3.1.4
Le manuel.
mount(8), autofs(5) , auto.master(5)

Montage à la volée des disques amovibles avec « supermount »


Le service supermount permet le montage automatique des disques amovibles
(disquette, CD-ROM).
La commande supermount active ou désactive la fonctionnalité du noyau pour
procéder au montage automatique des disques amovibles. Elle est normalement
activée lors du démarrage de Linux. Sa syntaxe est la suivante :
supermount [options] <disable | enable>
Remarque
La commande supermount est un script perl, langage qui doit donc être installé sur
votre système pour que la commande s’exécute.
Pour ajouter une demande de montage automatique, il faut renseigner une nouvelle
ligne dans le fichier /etc/fstab. Elle est de la forme :
/mnt/cdrom /mnt/cdrom supermount fs=iso9660,dev=/dev/cdrom 0 0
On note la répétition du chemin de montage. Le type de système de fichiers est
supermount et le nom du périphérique est reporté en attribut de montage.
Quand on veut monter automatiquement des disquettes avec des systèmes de fichiers
différents, il faut prévoir un chemin de montage par type de système de fichiers.
/mnt/floppy /mnt/floppy supermount fs=vfat,dev=/dev/fd0 0 0
/mnt/flopext2 /mnt/flopext2 supermount fs=ext2,dev=/dev/fd0 0 0
Exemple
# cat >> /etc/fstab
/mnt/flopext2 /mnt/flopext2 supermount fs=ext2,dev=/dev/fd0 0 0
^D
# mount -a
# supermount enable

/dev/hda3 / ext2 defaults 1 1
/mnt/cdrom /mnt/cdrom supermount fs=iso9660,dev=/dev/cdrom 0 0
/mnt/floppy /mnt/floppy supermount fs=vfat,dev=/dev/fd0 0 0
/mnt/flopext2 /mnt/flopext2 supermount fs=ext2,dev=/dev/fd0 0 0

# ls /mnt/flopext2
ls: /mnt/flopext2: Erreur d'entrée/sortie

On insère une disquette contenant un système de fichiers ext2.


# cd /mnt/flopext2
# ls
group lost+found/ passwd rep/

4-36 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 4 : Les systèmes de fichiers

# cd
On insère une disquette au format MS-DOS.

# cd /mnt/flopext2/
bash: cd: /mnt/flopext2/: Erreur d'entrée/sortie
# cd /mnt/floppy/
# ls
nis.doc*

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 4-37
Module 4 : Les systèmes de fichiers

Les quotas
Les quotas

„ edquota Permet de fixer les quotas


Utilisateur par utilisateur ou groupe par groupe,
disque par disque, pour l’espace disque,
pour les inodes

Un quota possède deux limites :


« hard limit » limite infranchissable
« soft limit » limite provoquant un « warning »
„ quotaon Active la vérification des quotas
„ quotaoff Désactive la vérification des quotas
„ quota, repquota Liste les quotas
„ quotacheck Vérifie, a priori, si les quotas sont respectés

TSOFT - Linux Administration Module 4 : Les systèmes de fichiers - 4.9

Introduction
La mise en œuvre des quotas va permettre à l’administrateur de limiter le nombre de
fichiers ou le nombre de blocs d’un utilisateur ou d’un groupe, sur un disque. Cette
opération est assez peu utilisée dans le monde UNIX. Elle sert principalement sur les
machines de développement où les programmeurs ont rarement le sens de la mesure
quant à l’utilisation des ressources disque. A l’administrateur de faire accepter les
quotas avec psychologie.
Les quotas offrent un plus grand intérêt dans Linux qui est souvent utilisé comme
serveur de fichiers (Samba) ou comme serveur de messagerie (Sendmail, Postfix…).
Pour les fichiers aussi bien que les blocs, il existe deux limites :
• La limite « hard » qui est infranchissable. Un utilisateur ou un groupe qui atteint
sa limite « hard » de fichiers ne pourra pas en créer un de plus. L’éditeur de texte
vi refusera ainsi d’exécuter la commande de sauvegarde :w.
• La limite « soft » peut être franchie pendant un certain nombre de jours
consécutifs, sept par défaut. Si, au terme de ce laps de temps, l’utilisateur n’est pas
redescendu en dessous de sa limite « soft », le point atteint devient à son tour
infranchissable, jusqu’au retour à la normale.

Mise en oeuvre
La démarche de l’administrateur pour installer des quotas sur un disque est la
suivante :
1. Monter le système de fichiers avec l’une des options de montage « usrquota » ou
« grpquota » ou les deux. Les options « usrquota » et « grpquota » indiquent si les
quotas s’appliquent aux utilisateurs ou aux groupes.
Comme dans tous les cas, l’administrateur peut préciser les options de montage
sur la ligne de commande ou bien modifier le fichier /etc/fstab (cf. Chapitre
Automatiser le montage des systèmes de fichiers).

4-38 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 4 : Les systèmes de fichiers

# vi /etc/fstab
/dev/hda9 /mnt/appli9 ext2 defaults,usrquota 1 2
# mount /dev/hda9

# mount –o usrquota /dev/hda9 /mnt/appli9

# mount
...
/dev/hda9 on /mnt/appli9 type ext2 (rw,usrquota)
2. Créer les fichiers qui mémorisent les quotas des utilisateurs et des groupes. Ces
fichiers doivent être créés dans le répertoire de montage du système de fichiers. Il
existe deux versions de quotas dans le monde Linux :
- La plus ancienne est la version 1. Les fichiers y ont pour nom quota.user pour
les utilisateurs et quota.group pour les groupes. On les crée en exécutant la
commande touch.
# cd /mnt/appli9
# touch quota.user

- La plus récente est la version 2. Les fichiers y ont pour nom aquota.user et
aquota.group. Ils doivent être créés par la commande quotacheck. Ces fichiers, à
la différence des précédents, ne sont pas initialement vides.
# quotacheck /mnt/appli9
# ls -l /mnt/appli9
total 18
-rw------- 1 root root 6144 jan 17 14:31 aquota.user
drwxr-xr-x 2 root root 12288 jan 17 14:02 lost+found

La nouvelle version des quotas supporte des UIDs et des GIDs sur 32 bits et
fonctionne sur des systèmes de fichiers autres que ext2 ou ext3, tel reiserFS.
La commande convertquota crée les fichiers aquota.user et aquota.group à partir
de leurs prédécesseurs quota.user et quota.group.Elle devra être exécutée lors
d’une mise à jour de Linux qui nécessite le passage de la version 1 à la version 2 .
3. Editer les quotas des utilisateurs.

# edquota –u pierre
Disk quotas for user pierre (uid 501):
Filesystem blocks soft hard inodes soft hard
/dev/hda9 0 0 0 1 5 10

Editer les quotas des groupes.

# edquota –g etude
Disk quotas for group etude (gid 2000):
Filesystem blocks soft hard inodes soft hard
/dev/hda9 0 0 0 2 0 0
La commande edquota fait appel à l’éditeur vi pour présenter des lignes déjà
construites qu’il suffit de modifier. Il y a autant de lignes que de systèmes de
fichiers avec des quotas. Les limites « soft » et « hard » pour le nouveau disque
sont à zéro, ce qui signifie « pas de limite ». L’administrateur les modifie à sa
guise.

L’administrateur peut aussi, via la commande edquota –t, modifier les valeurs par

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 4-39
Module 4 : Les systèmes de fichiers

défaut des quotas et, en particulier, le nombre de jours où la limite « soft » peut
être dépassée.
# edquota –t
Grace period before enforcing soft limits for users:
Time units may be: days, hours, minutes, or seconds
Filesystem Block grace period Inode grace period
/dev/hda9 7days 7days

Si un système de fichiers avec des quotas est partagé par NFS, le démon rquotad
est démarré par l’exécution du script /etc/rc.d/init.d/nfs start
(cf. Module 7 : L’arrêt et le démarrage). Les quotas des utilisateurs qui se
connectent sur un poste client qui a réalisé le montage NFS sont définis par la
commande edquota –n ou edquota –r, exécutée sur le client.

La commande setquota est une alternative à la commande edquota. On fournit


les arguments sur la ligne de commande. Cela permet de pallier au défaut de
certaines implémentations de edquota qui ne précisent pas le modèle des
données à saisir. Cette commande se révèle aussi très pratique dans un script.
La commande qui suit fixe ainsi les quotas de pierre :
La limite « soft » pour les blocs est de 10000 et la limite « hard » de 20000.
La limite « soft » pour les inodes est de 100 la limite « hard » de 110
.
# setquota pierre 10000 20000 100 110 /dev/hda9
4. Activer les quotas. La commande quotaon réalise cette opération.
L’administrateur peut activer les quotas pour un disque ou activer les quotas de
tous les disques qui ont les options des quotas dans le fichier /etc/fstab.
# quotaon /dev/hda9 # Active les quotas pour /dev/hda9

# quotaon -a # Active les quotas pour les systèmes de fichiers montés avec
# les options « usrquota » ou « grpquota » dans /etc/fstab.
Remarque
Rappelons que l’administrateur doit modifier le fichier /etc/fstab et s’assurer que la
commande quoataon –a figure bien dans les scripts de démarrage pour que les quotas
soient systématiquement activés à chaque démarrage du système.

Suivi des quotas


L’utilisateur qui dépasse une des deux limites voit un message d’avertissement ou
d’erreur s’afficher sur son écran.
L’utilisateur pierre appartient au groupe étude. Il a dépassé sa limite « soft » pour les
fichiers et, ce faisant, a aussi entraîné un dépassement pour le groupe.
$ touch a z e r t y
ide0(3,9): warning, group file quota exceeded.
ide0(3,9): warning, user file quota exceeded.
Le dépassement de la limite « hard » génère un message nettement moins explicite.
$ touch f
touch : creating ‘f’ : débordement du quota d’espace disque
Pour assurer le suivi des quotas, l’administrateur dispose des commandes quota,
warnquota, repquota et quotacheck.
La commande quota affiche les valeurs courantes et les limites de l’utilisateur qui
l’exécute, pas forcément l’utilisateur root.

4-40 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 4 : Les systèmes de fichiers

$ quota
Disk quotas for user cathy (uid 502):
Filesystem blocks quota limit grace files quota limit grace
/dev/hda9 0 0 0 3 5 10
L’administrateur peut visualiser les valeurs d’un autre utilisateur.
# quota –u pierre
Disk quotas for user pierre (uid 501):
Filesystem blocks quota limit grace files quota limit grace
/dev/hda9 10001* 10000 15000 16 0 0
Les valeurs des colonnes blocks et files représentent les valeurs actuelles et sont
fournies à titre indicatif. Elles ne peuvent pas être modifiées.
La commande warnquota permet d’envoyer un courrier aux utilisateurs qui ont
dépassé leurs quotas.
La commande repquota affiche une synthèse de l’utilisation d’un disque et des quotas
d’un système de fichiers.
# repquota /dev/hda9
*** Report for user quotas on device /dev/hda9
Block grace time: 7days; Inode grace time: 7days
Block limits File limits
User used soft hard grace used soft hard grace
----------------------------------------------------------------------

pierre -+ 0 0 0 10 5 10 6days
cathy -- 0 0 0 3 5 10
paul -- 0 0 0 3 0 0
# repquota –a # Tous les systèmes de fichiers avec quotas
La commande quotacheck vérifie la cohérence des tables des quotas, contenues dans
les fichiers aquota.usr et aquota.group. Pour cela, elle reconstruit de nouvelles tables,
en examinant les systèmes de fichiers, et les compare à celles des fichiers quotas. La
mise à jour des tables est effectuée, si nécessaire.
# quotacheck /dev/hda9
quotacheck: Quota for users is enabled on mountpoint /mnt/appli9 so
quotacheck might damage the file.
Please turn quotas off or use -f to force checking.
# quotaoff /dev/hda9
# quotacheck /dev/hda9
# quotacheck -a

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 4-41
Module 4 : Les systèmes de fichiers

Atelier 4 : Les systèmes de fichiers


Atelier 4 : Les systèmes de fichiers

Objectifs :
„ Savoir monter et démonter un FS
„ Savoir surveiller l’espace disque
„ Savoir gérer l’arborescence des
fichiers en tenant compte des FS

Durée : 60 minutes.

TSOFT - Linux Administration Module 4 : Les systèmes de fichiers - 4.10

Exercice n°1
Quels sont les différents FS montés, à quels fichiers spéciaux sont-ils associés, quels
sont leurs répertoires de montage ?

Exercice n°2
Quelle est la place libre, en blocs de 512 octets, restant sur chaque FS ?

Exercice n°3
Quelles sont les tailles de blocs possibles dans un système de fichiers de type ext2 ?

Exercice n°4
Prenez un CD-ROM ayant un format compatible ISO 9660 (la plupart le sont).
Montez-le, listez son arborescence et démontez-le.

Exercice n°5
Les systèmes de fichiers nfs et smb sont des systèmes de fichiers distribués sur un
réseau, en quoi diffèrent-ils ?

4-42 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 4 : Les systèmes de fichiers

Exercice n°6
Résumez brièvement le rôle des principales commandes de gestion de système de
fichiers de Linux.

Exercice n°7
On désire installer un logiciel pour jouer au blackjack qui fait 6 Mo dans le répertoire
/home/pierre/games/blackjack. En utilisant le résultat de la commande df, donnée ci-
après, est-ce que l’opération est réalisable ? Si non, est-ce qu’il y a une autre solution ?
# df
Filesystem 1k-blocks Used Available Use% Mounted on
/dev/hda1 796033 318675 436234 42% /
/dev/hda6 101471 95777 454 100% /home
/dev/hda5 101471 28 96203 0% /usr

Exercice n°8
L’utilisateur pierre visualise son fichier .profile (/home/pierre/.profile) grâce à la
commande more. L’administrateur peut-il démonter le FS /home ? Si non, pourquoi ?
Que doit-il faire pour y arriver ?

Exercice n°9
Le FS /dev/hda8 est monté sur le répertoire /games. Que doit-on faire pour que ce FS
ne soit accessible qu’à l’utilisateur pierre ?

Exercice n°10
Sans utiliser la commande debugfs, comment l’administrateur peut-il retrouver tous
les fichiers liés à un fichier dont on connaît le chemin, exemple :
/home/pierre/.profile ?

Exercice n°11
Détruisez tous les fichiers de nom « core ».

Exercice n°12
Quels sont les gros fichiers (taille supérieure à 1 Mo) modifiés il y a peu de temps
(dans la journée) ?

Exercice n°13
Quelles sont les commandes de gestion de quotas sur votre système ?

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 4-43
Module 4 : Les systèmes de fichiers

Exercice n°14 (exercice long, environ 30 minutes)


Transférez l’utilisateur pierre sur une disquette. Au préalable, écrivez les opérations à
réaliser.

4-44 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 5 : La sauvegarde

• Sauvegarde partielle,
incrémentale
• Les commandes tar,
cpio, dd
• Le format des bandes
• dump, restore

5Module 5 : La sauvegarde
Objectifs
Après l’étude du chapitre, le lecteur connaît les stratégies de sauvegarde sous UNIX et
maîtrise les outils standard de sauvegarde.

Contenu
Les différents types de sauvegarde
La commande tar
La commande cpio
La commande dd
Les commandes de sauvegarde incrémentale dump et restore
Les bandes

Références
HOWTO : ADSM-Backup, mini HOWTO Backup-with-MSDOS, Ftape-HOWTO
Le manuel : tar(1), dd(1), cpio(1), dump(8),restore(8)
Livre : Unix Backup & Recovery
Internet : http://www.backupcentral.com

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 5-1
Module 5 : La sauvegarde

Les outils de sauvegarde


Les outils de sauvegarde

„ Les commandes UNIX de sauvegarde


z Sauvegarde de fichiers et d’arborescences de fichiers :
tar, cpio, pax (iso)
z Sauvegarde de disques ou de systèmes de fichiers :
dd (iso)
z Sauvegarde incrémentale de systèmes de fichiers :
dump/restore (bsd)
„ Les scripts
„ Les outils de sauvegarde du commerce

TSOFT - Linux Administration Module 5 : La sauvegarde - 5.2

Les commandes de sauvegarde


Il existe différents types de sauvegarde et le système UNIX offre un ensemble de
commandes dans lequel l’administrateur du système peut choisir la plus adaptée à son
contexte applicatif.
Sauvegarde de fichiers et d’arborescence de fichiers
Les commandes tar, cpio et pax (ISO) permettent de sauvegarder des fichiers et des
arbres d’un utilisateur ou d’une application. Bien que ces commandes ne voient que
l’arborescence unifiée des systèmes de fichiers, il est possible que l’arbre sauvegardé
coïncide avec le système de fichiers d’un disque si le chemin de sauvegarde est le
chemin de montage, et s’il n’y a pas de systèmes de fichiers montés en dessous de
celui à sauvegarder.
Sauvegarde physique de disques et de systèmes de fichiers
La commande dd (ISO), qui réalise des copies physiques, peut parfois être utilisée
pour sauvegarder des disques et des systèmes de fichiers.
Sauvegarde incrémentale
La sauvegarde incrémentale consiste à sauvegarder, une première fois, la totalité d’une
arborescence et de sauvegarder ensuite, d’une fois à l’autre, les seuls fichiers qui ont
été modifiés. Le système Linux utilise les commandes dump et restore, introduites
par le système BSD dans le monde UNIX.

Les scripts
L’administrateur d’un système Linux va souvent définir des scripts de sauvegarde et
de restauration des fichiers adaptés à son application et, quand c’est possible,
automatiser leur exécution pour les exécuter à heure fixe, quand le système est peu
chargé et que les fichiers ou les systèmes de fichiers sont au repos.

5-2 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 5 : La sauvegarde

Les outils de sauvegarde du commerce


Quand les fichiers de données sont très volumineux, qu’ils sont distribués sur un
réseau composé de systèmes hétérogènes (NT, AS400, HP-UX, SOLARIS, AIX, …),
l’administrateur a sûrement intérêt à s’orienter vers un progiciel de sauvegarde. Cela
lui assure une homogénéisation des opérations et lui procure des outils plus élaborés
avec des gestions de catalogues et d’automates de sauvegarde.
La plupart des outils de sauvegarde du commerce fonctionnent sous Linux : ARCserve
(CA), Networker (Legato), Time Navigator (Quadratec), ADSM (IBM).
Le logiciel Arkeia (http://www.arkeia.com) est disponible gratuitement dans une
version limitée à un serveur et deux clients.

Plan de sauvegarde
La sauvegarde nécessite de l’administrateur du système UNIX beaucoup de discipline
et une grande rigueur.
Sans prétendre donner la liste exhaustive des questions à résoudre pour construire un
plan de sauvegarde, la liste qui suit peut aider l’administrateur à le définir :
• Que faut-il sauvegarder ?
• Avec quelle fréquence ?
• Combien de temps conservera-t-on les sauvegardes, à quel endroit, en combien
d’exemplaires ?
• A quel endroit sera stocké l’historique des sauvegardes ?
• Quel est le support le plus approprié ?
• Quels sont les besoins, en capacité, de support de sauvegarde ?
• Combien de temps, au plus, doit durer la sauvegarde ?
• Combien de temps prévoit-on pour restaurer un fichier, un système de fichiers,
est-ce raisonnable ?
• La sauvegarde doit-elle être automatique ou manuelle ?
• Quelle est la méthode de sauvegarde la plus appropriée ?

Les autres commandes utiles pour les sauvegardes


mt Permet de se positionner sur une bande magnétique.
touch Met la date et l’heure de dernière modification d’un
fichier à la date et à l’heure actuelle, ce qui permet de
forcer la sauvegarde si elle est incrémentale.
find Sélectionne les fichiers à sauvegarder. Son usage est le
plus souvent joint à celui de cpio.
du Permet de connaître la taille d’une arborescence.
df Permet de connaître la taille des systèmes de fichiers.
gzip et gunzip Compressent ou décompressent des fichiers. Ces
compress et uncompress commandes sont souvent utilisées avec tar et cpio. Les
zcat pages du manuel sont au format gzip. La commande tar
possède des options pour sauvegarder les fichiers
compressés par gzip ou compress.

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 5-3
Module 5 : La sauvegarde

La sauvegarde par tar


La sauvegarde par tar

„ Sauver/Restaurer
tar cvf /dev/rft0 /home

tar
tar

tar xvf /dev/rft0

„ Lister l’archive
tar tvf /dev/rft0

tar
tar

TSOFT - Linux Administration Module 5 : La sauvegarde - 5.3

La commande tar
La commande tar sauvegarde des fichiers, y compris une arborescence de fichiers,
dans un format qui lui est propre. C’est avec la même commande qu’il est possible
d’obtenir la liste des fichiers sauvegardés et de les restituer.
La commande tar de Linux utilise des options de forme courte, « -lettre », ou longue,
« --mot_clé ». Pour conserver une compatibilité avec les autres systèmes UNIX, la
commande tar permet aussi l’emploi de clés positionnelles. A la différence d’une
option, une clé est une lettre qui n’est pas précédée du symbole « - » et l’association
des arguments aux clés est positionnelle. La création d’une sauvegarde peut être
demandée de plusieurs formes :
1. tar c …
2. tar –c …
3. tar –create …
Dans toutes les syntaxes qui suivent, la clé v (« verbose ») génère des messages
détaillés sur les opérations réalisées.
La clé f précise, par son argument FichierArchive, le nom du support d’archivage,
souvent un périphérique (« /dev/xxx »). A défaut, la commande tar de Linux envoie la
sauvegarde (« c ») ou la restitution (« x ») sur la sortie standard. On peut toutefois
explicitement utiliser, comme dans UNIX, le symbole « - » pour désigner
respectivement l’entrée et la sortie standard comme support de sauvegarde ou de
restitution.
La variable d’environnement TAPE permet d’indiquer le fichier FichierArchive.
La commande tar de Linux réalise, par défaut, des sauvegardes relatives. Elle
supprime, sur l’archive, le premier caractère, « . » ou « / », des chemins d’accès aux
fichiers. Dans tous les cas, il convient de se déplacer (commande cd) dans le répertoire
qui sert de racine pour la restitution avant d’exécuter la commande tar.

5-4 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 5 : La sauvegarde

Pour exécuter une sauvegarde et, plus tard, une restauration en absolue, il faut
obligatoirement indiquer l’option « P ». A défaut de la mentionner à la restauration, la
commande tar fonctionne en relatif.
La commande tar sauvegarde les fichiers au format GNU TAR. Il est compatible avec
le format ustar de POSIX, également adopté par l’ISO. La commande pax de
WINDOWS NT et le logiciel WINZIP peuvent aussi le lire.
Remarque
Quand la commande tar est exécutée par un utilisateur qui n’est pas « root », la
commande utilise la logique de la commande cp ; pour restituer un fichier, il faut
avoir le droit de le lire et l’utilisateur qui le restitue en devient le propriétaire. Quand
c’est « root » qui effectue la restitution, il préserve les attributs des fichiers, dont le
propriétaire et le groupe.

Sauvegarde de fichiers
tar c[v][P][f FichierArchive] Fichier ...
Si les fichiers sont des répertoires, tar sauvegarde l’arborescence issue de ces
répertoires.

Liste des fichiers sauvegardés


tar t[v][f FichierArchive]

Restitution de fichiers
tar x[v][P][f FichierArchive] [fichier]...
A défaut de dire quels sont les fichiers à restituer, tar restitue la totalité de l’archive.
Quand cela est nécessaire, la commande tar crée les répertoires manquants pour
reconstituer une arborescence.
La variable d’environnement TAPE permet d’indiquer le fichier FichierArchive.

Exemples
L’exemple qui suit réalise la sauvegarde de l’arborescence /home. Le chemin de
sauvegarde est donné en absolue, on note que la commande tar a enlevé le / en tête du
chemin.
Sauvegarde des fichiers.
# tar cvf /dev/rft0 /home
Liste des fichiers archivés.
# tar tvf /dev/rft0
drwxr-xr-x root/root 0 1999-01-21 15:35 home/
drwxr-xr-x root/root 0 1998-12-01 16:10 home/ftp/
d--x--x--x root/root 0 1998-12-01 16:09 home/ftp/bin/
---x--x—x root/root 15236 1998-04-27 18:05 home/ftp/bin/compress
drwxr-xr-x pierre/pierre 0 1999-03-16 09:52 home/pierre/
-rw-r--r-- pierre/pierre 222 1999-01-21 11:49 home/pierre/.bash_profile

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 5-5
Module 5 : La sauvegarde

Restauration de l’ensemble des fichiers.


# cd /
# tar xvf /dev/rft0
Restauration, par root, du fichier fiche qui se trouvait dans le répertoire /home/pierre.
# rm /home/pierre/fiche
# cd /
# tar xvf /dev/rft0 home/pierre/fiche
home/pierre/fiche
# ls -l /home/pierre/fiche
-rw-r--r-- 1 pierre pierre 736 nov 7 10:58 /home/pierre/fiche
Pierre en est bien le propriétaire
Exemple de sauvegarde réalisée en absolue.
Sauvegarde des fichiers de du répertoire /home/pierre.
# tar cvfP /dev/rft0 /home/pierre
/home/pierre/.kderc
/home/pierre/.screenrc
/home/pierre/fiche
/home/pierre/rep/
/home/pierre/rep/fic2
# tar tvf /dev/rft0
-rw-r--r-- pierre/pierre 435 2000-10-13 05:26:03 /home/pierre/.kderc
-rw-r--r-- pierre/pierre 3394 2000-10-13 05:26:03 /home/pierre/.screenrc
-rw-r--r-- pierre/pierre 736 2000-11-07 10:58:53 /home/pierre/fiche
drwxrwxr-x pierre/pierre 0 2000-11-07 10:59:38 /home/pierre/rep/
-rw-r--r-- pierre/pierre 1756 2000-11-07 10:59:13 /home/pierre/rep/fic2
Restauration du fichier /home/pierre/fiche
# pwd # la restauration peut être réalisée de n’importe quel point.
/root
# tar xvfP /dev/rft0 /home/pierre/fiche
# ls –l /home/pierre/fiche
-rw-r--r-- 1 pierre pierre 736 nov 7 10:58 /home/pierre/fiche

Exemple d’utilisation de l’entrée et de la sortie standard comme


support d’archivage pour sauvegarder avec la commande bzip2.
# tar cv /home/pierre | bzip2 > /dev/rft0
Liste des fichiers
# bunzip2 < /dev/rft0 | tar tv # ou bunzip2 < /dev/rft0 | tar tv -

Quelques options (clés) utiles


La commande tar comporte de multiples clés et nous renvoyons le lecteur au manuel
de référence pour mesurer l’étendue des possibilités. La liste qui suit mentionne
quelques clés pratiques et utiles.
Clé Utilisation
r,-r Les fichiers sont ajoutés à la fin de l’archive. Cette option ne fonctionne
que si le support d’archivage est à accès direct, un disque. Cela exclut

5-6 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 5 : La sauvegarde

l’utilisation de cette clé pour les cartouches et les bandes magnétiques.


u,–u Le fichier est ajouté à la fin de l’archive s’il a été modifié depuis la
dernière sauvegarde. La remarque précédente vaut également pour cette
option.
b n,–b n L’option b a comme argument le facteur de blocage qui détermine la
taille du bloc à utiliser sur le support d’archivage. La valeur n définit le
nombre de blocs de 512 octets du bloc d’archivage. Cette option est
seulement utilisée avec des périphériques en mode caractère (« raw
device »). Sa valeur par défaut est de 20 (10 Ko).
h,-h L’option h indique à la commande tar de sauvegarder les fichiers liés et
pas les liens symboliques (fichiers de type l).
z,-z Les commandes de compression gzip et de décompression gunzip sont
utilisées pour la sauvegarde et la restitution.
Z,-Z Les commandes de compression compress et de décompression
uncompress sont utilisées pour la sauvegarde et la restitution.
-j, -I, Les commandes de compression bzip2 et de décompression bunzip2
--bzip2 sont utilisées pour la sauvegarde et la restitution.
M,-M L’option –M est obligatoire pour que tar fonctionne en multi-volume.
-L n L’option provoque le changement de support d’archivage au bout de n
kilo octets.
-T A l’option -T est associé le nom d’un fichier qui contient la liste des
fichiers à sauvegarder. quand on utilise l’option « -T », les autres options
doivent aussi être précédées de « - ». Si l’on associe l’argument « - » à
l’option « -T », la commande tar utilise l’entrée et la sortie standard.
Elle se comporte alors comme la commande cpio.
-P La sauvegarde et la restitution sont réalisées en absolue.
-m La date de dernière modification n’est pas restituée. Le fichier conserve
celle qu’il a sur disque.
-w La commande tar est interactive. On doit indiquer, pour chaque fichier,
s’il doit être pris en compte.
-C <répertoire> Le répertoire sert de répertoire racine lors d’une restauration
relative.
--atime-preserve La date de dernier accès n’est pas modifiée lors de la
sauvegarde.
--exclude <fichier> Le fichier n’est pas pris en compte au moment de la
sauvegarde.

Remarque
Les fichiers que l’on rapatrie à partir de serveurs de fichiers sur Internet sont souvent
fournis au format tar et compressés (*.tar.gz).

Exemples
Sauvegarde du lien symbolique.
#ls -l /home/pierre/passwd
lrwxrwxrwx 1 pierre pierre 11 nov 7 12:29 /home/pierre/passwd ->
/etc/passwd

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 5-7
Module 5 : La sauvegarde

# tar cvf /dev/st0 /home/pierre


# tar tvf /dev/st0
lrwxrwxrwx pierre/pierre 0 2000-11-07 12:29:13 home/pierre/passwd ->
/etc/passwd
Sauvegarde du fichier lié.
# tar cvfh /dev/st0 /home/pierre
# tar tvf /dev/st0
-rw-r--r-- root/root 773 2000-11-07 11:13:58 home/pierre/passwd

Sauvegarde sans modification de la date de dernier accès et


restitution sans modification de la date de dernière modification.
# ls -ul fiche # attributs avant la sauvegarde
-rw-r--r-- 1 pierre pierre 736 nov 7 10:00 fiche
# ls -l fiche
-rw-r--r-- 1 pierre pierre 736 nov 7 10:00 fiche
# tar --atime-preserve -cvf /dev/st0 fiche
fiche
# ls -ul fiche
-rw-r--r-- 1 pierre pierre 736 nov 7 10:00 fiche
# ls -l fiche
-rw-r--r-- 1 pierre pierre 736 nov 7 12:58 fiche
# tar xvfm /dev/st0 fiche
fiche
# ls -l fiche
-rw-r--r-- 1 pierre pierre 736 nov 7 12:59 fiche
Sauvegarde à la manière de cpio.
find /home | tar -T - -cvf /dev/ftape
Restitution dans un autre arbre que l’arbre courant.
# pwd
/root
# tar -C /home/gilles -xvf /dev/st0 fiche
fiche
# ls -l /home/gilles/fiche
-rw-r--r-- 1 pierre pierre 736 nov 7 10:00 fiche
Sauvegarde qui exclut certains fichiers (/home/ftp et /home/httpd).
# tar --exclude /home/ftp --exclude /home/httpd -cf /dev/st0 /home
Sauvegardes compressées.
# tar cfz /tmp/hometar.zip /home # format zip
tar: Removing leading `/' from member names
# tar cf /tmp/hometar /home # sans compression
tar: Removing leading `/' from member names

5-8 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 5 : La sauvegarde

# tar cfI /tmp/hometar.bzip /home # compression bzip2


tar: Removing leading `/' from member names
# ls -l /tmp/home* # taille des fichiers de sauvegarde
-rw-r--r-- 1 root root 5519360 nov 7 15:51 /tmp/hometar
-rw-r--r-- 1 root root 2338109 nov 7 15:52 /tmp/hometar.bzip
-rw-r--r-- 1 root root 2428119 nov 7 15:50 /tmp/hometar.zip
# file /tmp/home* # type des fichiers
/tmp/hometar: GNU tar archive
/tmp/hometar.bzip: bzip2 compressed data, block size = 900k
/tmp/hometar.zip: gzip compressed data, deflated, last modified: Tue Nov 7 15:
50:33 2000, os: Unix

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 5-9
Module 5 : La sauvegarde

La sauvegarde par cpio


La sauvegarde par cpio

„ Sauver/Restaurer

find
find cpio
cpio

find /home -print | cpio -o > /dev/rft0


„ Restaurer

cpio
cpio

cpio -i < /dev/rft0


„ Lister l’archive
cpio -itv < /dev/rft0
TSOFT - Linux Administration Module 5 : La sauvegarde - 5.4

La commande cpio
La commande cpio sauvegarde sur la sortie standard les fichiers dont on saisit les
noms sur l’entrée standard, par défaut le clavier et l’écran. La redirection des entrées
et des sorties permet d’automatiser la production des noms de fichiers et de désigner le
support d’archivage qu’il faut réellement utiliser.
Les options « -v », « -c » et « -B » peuvent être utilisées dans tous les cas.
L’option « -v » demande, comme dans tar, l’affichage d’informations détaillées.
L’option « -c » signifie à cpio de mémoriser les attributs des fichiers sous une forme
ASCII, ce qui facilite l’échange de fichiers entre systèmes UNIX hétérogènes.
L’option « -B » augmente la vitesse d’exécution de cpio, qui utilise une mémoire
tampon d’entrée et de sortie de 5120 octets.
La commande cpio est multi-volume. A chaque fois qu’une archive est pleine, la
commande cpio demande l’installation d’une nouvelle archive. L’administrateur doit,
pour continuer la sauvegarde ou la restitution, saisir le nom du fichier spécial
périphérique et valider par <Entrée>. Cela permet de changer de périphérique de
sauvegarde pendant l’exécution de la commande cpio.

Sauvegarde de fichiers
cpio -o[L]
L’option « -L » demande à cpio de sauvegarder les fichiers liés et non les liens
symboliques.

Liste des fichiers sauvegardés


cpio -it

Restitution de fichiers
cpio -i[umd] [Fichier...]

5-10 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 5 : La sauvegarde

A défaut de dire quels sont les fichiers à restituer, cpio restitue la totalité de l’archive.
Si les noms de fichiers que l’on désire restituer sont décrits avec des jokers (*,?,[...]),
ils doivent être protégés (\,’, ").
L’option « -d » indique à cpio de reconstruire les sous-répertoires manquants.
L’option « -m » indique à cpio de conserver les dates de dernière modification pour
les fichiers restaurés.
L’option « -u » demande à la commande cpio de restaurer les fichiers
inconditionnellement. A défaut, les fichiers qui existent toujours sur disque ne sont pas
restaurés s’ils sont plus récents ou de même âge que leurs homonymes sur disque.

Quelques options utiles des commandes find, cpio et touch


Les commandes find, cpio et touch comportent de multiples options et nous
renvoyons le lecteur au manuel de référence. La liste qui suit mentionne quelques
options utiles des deux commandes.
Commande Option Utilisation
find -newer fichier Vrai si la date de dernière modification du fichier est
plus récente que « fichier ». Cela permet de définir
un fichier de référence dont on peut éventuellement
forcer la date de dernière modification.
-mount Cette option restreint la recherche au système de
ou fichiers auquel appartient l’arborescence.
-xdev
cpio -H format L’option H précise le format que la commande cpio
doit utiliser pour les fichiers.
bin format binaire, utilisé par défaut.
ustar format POSIX (IEEE/P1003). Il reconnaît
le format GNU TAR
tar format TAR.
Le manuel de référence de la commande cpio décrit
les autres formats.
touch La commande touch force la date de dernière
modification à la date de l’exécution de la
commande. On peut préciser une date particulière.
Cette commande est utile pour forcer la sauvegarde
d’un fichier qui n’a pas été modifié.

Exemples
Sauvegarder des fichiers sur disquette.
# cpio -ocvB > /dev/fd0
f1
/etc/group
Ctrl-D
10 blocks
Sauvegarder l’arborescence courante avec compression.
# find . -print | cpio -ocvB | compress > /dev/rft0
Sauvegarder tous les fichiers des utilisateurs modifiés depuis la modification de fref.
# find /home –type f –newer fref | cpio –ocvB > /dev/rft0
Sauvegarder le système de fichiers /usr.
# find /usr –mount | cpio –ocvB >/dev/rft0

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 5-11
Module 5 : La sauvegarde

La sauvegarde par dd
La sauvegarde par dd

dd if=/dev/hda1 of=/dev/rft0

dd
dd

dd of=/dev/hda1 if=/dev/rft0

if=fichier
if=fichier Le
Lefichier
fichierààcopier
copier
of=fichier
of=fichier La copie
La copie
bs=n
bs=n La
Lataille
tailledes
desblocs
blocs
skip=n
skip=n Nombre
Nombrede deblocs
blocssautés
sautésen
enentrée
entrée
seek=n
seek=n Nombre
Nombre de blocs sautés ensortie
de blocs sautés en sortie
count=n
count=n Nombre
Nombrede deblocs
blocscopiés
copiés

TSOFT - Linux Administration Module 5 : La sauvegarde - 5.5

La commande dd
La commande dd (« Device to Device ») est destinée à la copie physique, bloc à bloc,
d’un fichier périphérique vers un fichier périphérique. Elle a été originellement créée
pour permettre la lecture ou l’écriture de bande magnétique. Sachant la logique du
système UNIX, elle peut être employée pour n’importe fichier, spécial ou régulier, à
condition que l’on dispose des droits nécessaires de lecture ou d’écriture. Elle dispose
de nombreuses possibilités qui lui permettent de lire beaucoup de fichiers, à condition
que l’on en connaisse le format. La commande dd peut être également utilisée pour
réaliser la copie physique d’un disque, y compris d’un disque contenant un système de
fichiers. Elle offre dans ce cas une grande facilité d’usage mais présente par contre
trois inconvénients :
• La commande dd copie tous les blocs, y compris ceux qui ne sont pas utilisés.
• La commande dd ne gère pas les blocs défectueux.
• La commande dd n’est pas multi-volume. Cela peut être programmé dans un
script.
Les arguments de la commande dd se présentent sous la forme :
Mot_clé=valeur
« Mot_clé » désigne une option de la commande dd et « valeur », son argument.
Argument Utilisation
if=fichier « fichier » désigne le fichier à copier, à défaut l’entrée
standard. Cette dernière possibilité est utile quand l’entrée de
dd vient d’une commande, de compression par exemple.
of=fichier « fichier » désigne le fichier résultant de la copie, à défaut la
sortie standard. Cette possibilité est utile pour envoyer la
sortie de dd vers une commande, de compression par

5-12 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 5 : La sauvegarde

exemple.
bs=valeur « valeur » désigne la taille commune du bloc pour les fichiers
d’entrée et de sortie. Il est, par défaut, de 512 octets. A
chaque fois que possible, il est conseillé de l’augmenter pour
accélérer l’exécution de dd.
ibs=valeur La taille du bloc du fichier d’entrée.
obs=valeur La taille du bloc du fichier de sortie.
skip=n n indique le nombre de blocs qu’il faut sauter au début de la
copie du fichier d’entrée.
seek=n n indique le nombre de blocs à sauter au début du fichier de
sortie.
count=n n indique le nombre de blocs à copier.
conv=conversion[,con « conversion » indique la conversion à réaliser lors de la
version…] copie. Plusieurs conversions peuvent être groupées. Les
principales valeurs possibles pour « conversion » sont :
• lcase, conversion en minuscule.
• ucase, conversion en majuscule.
• ebcdic, conversion en ebcdic (code ibm).
• ascii, conversion en ascii.
• swab, échange les octets.

Exemples
Copie d’un disque et peut-être d’un système de fichiers.
# dd if=/dev/hda2 of=/dev/rft0 bs=5k
Restauration du disque et de son éventuel système de fichiers.
# dd if=/dev/rft0 of=/dev/hda2 bs=5k
Sauvegarde d’une arborescence, avec compression.
# find . -print | cpio -o | compress | dd of=/dev/rft0 bs=5k
Restauration de l’arborescence.
# dd if=/dev/rft0 bs=5k | uncompress | cpio -id
Sauvegarde d’un disque de 20 000 blocs sur deux cartouches.
# dd if=/dev/hda1 of=/dev/rft0 count=10000 # les 10 000 premiers blocs
# dd if=/dev/hda1 of=/dev/rft0 skip=10000 # les 10 000 suivants
Restauration du disque de 20 000 blocs.
# dd if=/dev/rft0 of=/dev/hda1 count=10000
# dd if=/dev/rft0 of=/dev/hda1 seek=10000
Copie d’une disquette.
# dd if=/dev/fd0 of=/tmp/floppy # le fichier de sortie est un fichier régulier
# dd if=/tmp/floppy of=/dev/fd0
Copie d’un bloc de boot d’un disque à un autre, pour un système de fichiers « s5 ».
# dd if=/dev/hda1 of=/dev/hda2 bs=1k count=1 skip=0

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 5-13
Module 5 : La sauvegarde

Lecture d’une bande au format IBM, contenant des images de cartes (80 caractères)
avec dix cartes par bloc. L’option « cbs » donne la taille de l’enregistrement à
l’intérieur d’un bloc.
# dd if=/dev/rft0 of=x ibs=800 cbs=80 conv=ascii,lcase

5-14 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 5 : La sauvegarde

Les autres outils de sauvegarde


Les autres outils de sauvegarde

„ La commande ISO : pax


# pax -w -f /dev/rft1 /home

„ La sauvegarde incrémentale : dump/restore


# dump 0uf /dev/rft0 /home
# restore -x /home/pierre/.pierre

TSOFT - Linux Administration Module 5 : La sauvegarde - 5.6

La commande pax de l’ISO


La commande pax est une nouvelle commande de sauvegarde qui recouvre les
commandes tar et cpio dont elle emprunte, selon les arguments, la logique de
fonctionnement de l’une ou de l’autre. L’intérêt principal de la commande pax est
d’autoriser la sauvegarde des fichiers dans l’un des deux formats, tar ou cpio, tar par
défaut, et de détecter automatiquement le format d’une bande à restaurer.
La commande pax permet d’affiner les paramètres de restauration des fichiers quant
aux droits et aux attributs (UID, …).
Elle propose quatre possibilités :
pax –w … Pour sauvegarder.
pax –r … Pour restaurer.
pax –rw … Pour copier un arbre (cf. cpio –p).
pax … Pour lister le contenu de l’archive.
Si les noms de fichiers à sauvegarder ne figurent pas dans la ligne de commandes, ils
sont lus depuis l’entrée standard (comportement de la commande cpio). De même,
l’archive peut être précisée en argument de l’option « -f » (comportement de la
commande tar) ou à défaut être respectivement la sortie standard pour une sauvegarde
ou l’entrée standard pour une restauration.
Sauvegarde de l’arborescence courante.
# pax –w –f /dev/rft0 .
Restauration dans le répertoire courant.
# pax –r –f /dev/rft0
Sauvegarde de l’arborescence courante au format cpio.
# pax –w – x cpio –f /dev/rft0 .

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 5-15
Module 5 : La sauvegarde

Restituer les fichiers en conservant tous les attributs.


# pax –r –p e –f /dev/rft0
L’argument « e » de l’option « -p » conserve l’UID, le GID, les droits, les dates de
dernier accès et de dernière modification.
Remarque
La commande pax n’est pas disponible dans la distribution Red Hat, mais elle est
disponible sur de nombreux sites Internet, dont celui de la distribution Debian.

La sauvegarde incrémentale
Les commandes dump et restore sont les commandes incrémentales du système
Linux.
La commande dump possède essentiellement deux arguments :
• La clé « u » qui mémorise les paramètres de la sauvegarde dans le fichier
/etc/dumpdates.
• La clé « niveau », une valeur comprise entre 0 et 9, qui précise le niveau de
sauvegarde. La valeur 0 entraîne la sauvegarde de tous les fichiers demandés, y
compris des arbres. Une valeur comprise entre 1 et 9 provoque la sauvegarde de
tous les fichiers demandés s’ils ont été modifiés depuis la dernière sauvegarde
réalisée avec un niveau inférieur. C’est le principe de la sauvegarde incrémentale.
La sauvegarde incrémentale rend obligatoire la présence de la clé « u » qui amène
la commande dump à mémoriser les paramètres de la sauvegarde dans le fichier
/etc/dumpdates. A défaut, l’incrémental est impossible car aucun comparatif ne
peut être effectué pour décider quels sont les fichiers à sauvegarder.
• La clé « f » à laquelle est associé le nom du fichier de sauvegarde (« /dev/xxx »).
L’exemple du transparent sauvegarde l’intégralité du répertoire /home sur le support
/dev/rft0, point de départ d’une sauvegarde incrémentale, et restitue le fichier
/home/pierre/.profile.
Remarques
• La plupart des outils de sauvegarde incrémentale permettent de sauvegarder
plusieurs arbres tout en excluant certains sous-répertoires, en une seule opération.
• Les commandes dump et restore ne sont pas installées par défaut.

Exemple de plan de sauvegarde


Les sauvegardes sont effectuées le soir, du lundi au vendredi. La sauvegarde complète
est faite le lundi matin, tous les dix jours. Une sauvegarde intermédiaire des
modifications de la semaine est effectuée le lundi matin, au bout d’une semaine. Nous
supposons, pour simplifier, que l’ensemble d’une sauvegarde tient sur une bande. Pour
des raisons de sécurité, la bande utilisée le mercredi est différente de celle du mardi,
bien que la sauvegarde du mercredi inclue les fichiers sauvegardés le mardi.
L M Me J V L M Me J V L
0 4 4 4 4 4 2 4 4 4 4 4 0 4
-------- fichiers modifiés le lundi
------------------ fichiers modifiés depuis lundi
----------------------------
--------------------------------------

5-16 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 5 : La sauvegarde

------------------------------------------------
--------------------------------------------------
------- fichiers modifiés le lundi
----------------- fichiers modifiés depuis lundi
--------------------------
------------------------------------

Dans ce cas, la commande dump comporte obligatoirement la clé « u », le schéma ne


mentionne que le niveau de la sauvegarde.
Il est nécessaire de disposer d’un jeu de huit bandes :
B0,1 Sauvegarde complète
B4l Sauvegarde du lundi
B4m Sauvegarde du mardi
B4me Sauvegarde du mercredi
B4j Sauvegarde du jeudi
B4v Sauvegarde du vendredi
B2 Sauvegarde de la semaine
B4… On réutilise les bandes de la série B4
B0,2 On utilise une nouvelle bande pour la sauvegarde globale, la bande B0,1 sera
employée la prochaine fois

Exemples
Sauvegarde complète du système de fichiers /home de niveau 0.
# dump -0uf /dev/nst0 /home
DUMP: Date of this level 0 dump: Tue Nov 7 16:06:00 2000
DUMP: Date of last level 0 dump: the epoch
DUMP: Dumping /dev/sda5 (/ (dir home)) to /dev/st0

DUMP: DUMP: 6863 tape blocks on 1 volumes(s)
DUMP: finished in 22 seconds, throughput 311 KBytes/sec
DUMP: level 0 dump on Tue Nov 7 16:06:00 2000
DUMP: DUMP: Date of this level 0 dump: Tue Nov 7 16:06:00 2000
DUMP: DUMP: Date this dump completed: Tue Nov 7 16:06:22 2000
DUMP: DUMP: Average transfer rate: 311 KB/s
DUMP: DUMP IS DONE
Contenu du fichier /etc/dumpdates
# more dumpdates
/dev/sda5 0 Tue Nov 7 16:06:00 2000
Sauvegarde incrémentale de niveau 4, les fichiers du répertoire
/home/gilles ont été modifiés via la commande touch.
# dump -4uf /dev/nst0 /home
DUMP: Date of this level 4 dump: Tue Nov 7 16:11:54 2000

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 5-17
Module 5 : La sauvegarde

DUMP: Date of last level 0 dump: Tue Nov 7 16:10:25 2000



DUMP: estimated 1746 tape blocks on 0.04 tape(s).
DUMP: Volume 1 started at: Tue Nov 7 16:11:55 2000

DUMP: DUMP: 1771 tape blocks on 1 volumes(s)

DUMP: DUMP IS DONE
Visualiser le contenu d’une bande.
# mt –f /dev/st0 rewind
# restore -tf /dev/st0
Level 0 dump of / (dir home) on aurore11.goubet.fr:/dev/sda5
Label: none
Dump date: Tue Nov 7 16:10:25 2000
Dumped from: the epoch
spcl.c_filesys = / (dir home)
dirptr = (dir home)
dirptr =
filesys = /
2 .
31557 ./home
161680 ./home/ftp
161700 ./home/ftp/bin
161706 ./home/ftp/bin/compress

Restauration complète.
# mt –f /dev/st0 rewind
# cd /
# restore -rf /dev/nst0 # bande de niveau 0
# restore -rf /dev/nst0 # bande de niveau 4
Restauration d’un fichier.
# mt –f /dev/st0 rewind
# cd /
# restore -xf /dev/st0 /home/gilles/fiche
spcl.c_filesys = / (dir home)
dirptr = (dir home)
dirptr =
filesys = /
restore: ./home: Le fichier existe.
restore: ./home/gilles: Le fichier existe.
You have not read any tapes yet.
Unless you know which volume your file(s) are on you should start
with the last volume and work towards the first.
Specify next volume #: 1
set owner/mode for '.'? [yn] y
[root@aurore11 /]# ls -l /home/gilles/fiche
-rw-r--r-- 1 gilles gilles 736 nov 7 16:08 /home/gilles/fiche

5-18 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 5 : La sauvegarde

Les bandes
Les bandes

„ Format d’une bande

EOF EOM (2*EOF)


Début physique 2ème fichier Fin physique

„ La commande mt
# mt fsf 1
# mt eom

TSOFT - Linux Administration Module 5 : La sauvegarde - 5.7

Introduction
Des fichiers, au sens UNIX, sont sauvegardés sur une cartouche magnétique sous
forme d’une suite de blocs. Ils constituent un fichier, au sens de la sauvegarde. Ce
fichier se termine par une marque physique de fin de fichier. On peut mettre plusieurs
fichiers de sauvegarde sur la même cartouche. Le dernier se termine par deux fins de
fichiers. Les cartouches présentent également un début et une fin physiques.
Sur la cartouche, un élément mobile permet de la protéger en écriture.
Les cartouches « QIC » nécessitent une « retension » si :
• La cartouche est neuve.
• La cartouche est inutilisée depuis longtemps.
• Il se produit des erreurs de lecture/écriture.
Cette retension consiste en un déroulement complet de la bande, suivi d’un
rembobinage.
Normalement, les bandes sont vendues formatées (le formatage délimite les blocs).
Les fichiers spéciaux du système Linux permettent de préciser notamment :
• Le lecteur.
• Si la bande est rembobinée à la fermeture.
• Si l’on effectue une retension de la bande (QIC).
• La densité.

La commande mt
La commande mt permet de se positionner sur une bande magnétique, en se déplaçant
de fichier archive en fichier archive.

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 5-19
Module 5 : La sauvegarde

# mt -f /dev/nrft0 rewind
# # La variable d’environnement TAPE indique à mt le lecteur à utiliser.
# TAPE=/dev/nrft0 ; export TAPE
# mt rewind # on rembobine
# mt fsf 1 # on saute un fichier
# mt bsf 2 # on revient en arrière de deux fichiers
# mt eof # on écrit une marque de fin de fichier
# mt asf 3 # on va au 3ème fichier (en absolu)
# mt eom # on va en fin logique de la bande
# mt status # on affiche l’état de l’unité
# mt offline # on rembobine et on déconnecte l’unité

5-20 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 5 : La sauvegarde

Atelier 5 : La sauvegarde
Atelier 5 : La sauvegarde

Objectifs :
„ Savoir réaliser des sauvegardes et
des restaurations grâce aux
commandes tar et cpio
„ Savoir utiliser la commande dd

Durée : 60 minutes.

TSOFT - Linux Administration Module 5 : La sauvegarde - 5.8

Exercice n°1
Les exercices qui suivent illustrent l’utilisation de la commande tar. On utilise comme
support d’archive le fichier /tmp/pierre.sauve et l’arborescence de fichiers créée dans
l’exercice n°4 du module 3. On est connecté sous le compte de l’utilisateur pierre.
a) Sauvegardez les fichiers de pierre (l’arborescence /home/pierre).
b) Listez le contenu de la sauvegarde.
c) Détruisez un fichier, restaurez-le.
d) Détruisez l’ensemble des fichiers de pierre, restaurez-les.
e) Sauvegardez les fichiers de pierre de telle manière que l’on puisse restaurer un
fichier chez cathy. Listez le contenu de la sauvegarde.

Exercice n°2
Sans utiliser le support, quelle est la signification de « cpio -icvdumB » ?

Exercice n°3
Exercice identique à l’exercice n°1, mais en utilisant la commande cpio.

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 5-21
Module 5 : La sauvegarde

Exercice n°4
Dupliquez la sauvegarde cpio (le fichier /tmp/pierre.sauve réalisé à l’exercice
précédent), avec dd sur une disquettte. Restaurez un fichier à partir de la disquette
avec cpio.

Exercice n°5
Dupliquez une disquette MS-DOS avec dd.

Exercice n°6
Quelle est la taille en bloc d’une disquette ? Utilisez la commande dd.

Exercice n°7
Listez les commandes gérant les bandes (« tape » en anglais) de votre système.

Exercice n°8
Montez le système de fichiers créé sur la disquette (Exercice n° 14 du module 4) et
réalisez une sauvegarde complète, avec la commande dump, dans un fichier ordinaire
du disque. Affichez la liste des fichiers sauvegardés. Recréez un système de fichiers
sur la disquette et restaurez les fichiers.

5-22 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 6 : La gestion des processus

• Concept de processus
• PID, signal
• Démon, groupes de
processus
• ps, kill, fuser, su
• Le service cron
• Les IPC

6Module 6 :
La gestion des
processus
Objectifs
A l’issue de ce module, le lecteur connaît les concepts fondamentaux des processus du
système Linux. Il sait identifier les démons, maîtrise les commandes usuelles et le
service cron pour automatiser l’exécution de tâches périodiques. Il sait ce que sont les
IPC et il est capable de les paramétrer.

Contenu
Les processus
Panorama des commandes de gestion des processus
Le service cron
Les IPC

Références
HOWTO : Program-Library HOWTO
Livres : « The design of the UNIX Operating System »
« Programmation Linux 2.0 »
Le manuel : ps(1), kill(1), signal(7), fork(2), exec(2), environ(5), crontab(1)

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 6-1
Module 6 : La gestion des processus

Les processus (1/2) : les signaux


Les processus (1/2) : les signaux

fork() init
init PID=1

PID=225

httpd
httpd kill
kill sh
sh PID=382

Processus détaché

# kill -HUP 225


# kill -9 -382
Groupe de processus

TSOFT - Linux Administration Module 6 : Les processus - 6.2

Introduction
Lorsqu’un utilisateur demande à exécuter une commande externe (i.e. /bin/date), le
noyau Linux crée un processus (une tâche) qui exécute les instructions de la
commande. Ce processus est une entité qui, de sa création à sa mort, est identifiée par
une valeur numérique, le « PID » (« Process IDentifier ») et transite par différents
états selon qu’il s’exécute (actif), attend que le noyau lui alloue le processeur (prêt) ou
qu’un événement se produise (en attente).
A un instant donné, une valeur de PID est unique dans le système et cela garantit
qu’un processus est identifié sans ambiguïté par son PID, alors que le nom de
commande ne garantit pas l’unicité. Plusieurs instances de la commande sh
s’exécutent en même temps quand plusieurs utilisateurs sont connectés. A chaque
instance correspond un processus avec un PID unique.
La création d’un processus est réalisée par la primitive fork(2) du noyau. Rappelons
que le chiffre 2, situé entre parenthèses, désigne la section 2 du manuel de référence,
c’est-à-dire l’ensemble des primitives programmables, entre autres, en langage C.
Cette primitive crée un clone du processus qui l’exécute. Le clone, que l’on appelle
processus fils, exécute le code d’une autre commande grâce à la primitive exec(2). Il
en résulte un arbre de processus. L’ancêtre de tous les processus, init, est créé au
démarrage du système et se trouve à la racine de cet arbre. Son PID est 1.
Il existe plusieurs manières d’exécuter un processus :
• En avant-plan (« foreground ») dans une session de travail, c’est le mode normal
d’exécution d’une commande. Le shell de connexion est le père du processus qui
exécute la commande. Il attend que le processus fils se termine pour afficher à
nouveau l’invite (« prompt »).
• A l’arrière-plan (« background ») dans une session de travail, c’est le mode utilisé
quand on termine une ligne de commande par « & ». Après avoir créé le processus
fils qui exécute la commande, le shell affiche immédiatement l’invite sans attendre
la fin du processus fils. Rappelons qu’un processus d’arrière-plan est insensible au

6-2 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 6 : La gestion des processus

caractère de contrôle « CTRL C » qui, normalement, met fin au processus d’avant-


plan.
• En mode détaché, un processus détaché n’a plus de terminal de contrôle. On voit
le caractère « ? » dans la colonne TTY produite par la commande ps.
• Les démons (« daemon ») désignent communément les processus détachés
associés aux services du système Linux, souvent en mode client-serveur. Ils sont
créés par les scripts de démarrage, qui contiennent la ligne de commande pour les
exécuter, et détruits lors de l’arrêt du système.

Les signaux
Le seul moyen d’agir sur l’exécution d’un processus détaché est de lui envoyer un
signal (cf. UNIX shell : Module 12).
Le signal 1 est conventionnellement utilisé pour dire à un démon de relire ses fichiers
de configuration.
Le signal 15 (« TERM ») est conventionnellement utilisé pour dire à un démon de se
terminer. C’est d’ailleurs le signal que la commande shutdown envoie aux processus
actifs.
Le signal 9 tue le processus sans qu’il puisse intercepter le signal et exécuter une
quelconque action avant de se terminer. Le signal 9 ne doit, pour cette raison, être
utilisé qu’en dernier recours. Les fichiers de configuration et de données du service
associé au processus qui est tué brutalement sont certainement dans un état incohérent.
Le rétablissement de la cohérence doit alors être réalisé manuellement par
l’administrateur et peut s’avérer fort complexe.
Il arrive qu’un processus et ses descendants forment un groupe de processus. Le
groupe de processus est identifié par un numéro de groupe. Ce numéro de groupe est
le PID du processus « leader ». Il est possible d’envoyer un signal à l’ensemble des
membres du groupe, y compris le « leader » (cf. Panorama des commandes de gestion
de processus).
Quand un processus crée un processus fils, il peut indiquer au noyau qu’il ne souhaite
pas être averti de sa terminaison. A défaut, le noyau considère que le processus père
souhaite savoir la cause de la mort de son fils, ce qui peut se produire parce qu’il a
exécuté la primitive exit(2) ou qu’il a reçu un signal ayant provoqué sa mort. Si le fils
vient à se terminer avant que le père ne se soit mis en attente de sa fin, le noyau
conserve le descripteur du processus pour ensuite pouvoir rendre compte au père.
Durant toute cette période, le processus est dit « zombie ». Dans la liste des processus
produite par la commande ps, il apparaît comme « <defunct> »). Au cas où son père
meurt aussi, c’est le processus init qui hérite de la paternité.
Remarque
Un processus « zombie » compte pour un processus, bien qu’il n’existe plus
réellement. En cas de bogue dans une application exécutée par root, leur multiplication
peut entraîner l’effondrement du système dès que l’on a atteint le nombre maximum
de processus autorisés.

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 6-3
Module 6 : La gestion des processus

Les processus (2/2) : l’environnement


Les processus (2/2) : l’environnement

init
init

1 bash Shell de connexion


bash
/etc/profile

2
~/.bash_profile

TERM=vt100; export TERM

TSOFT - Linux Administration Module 6 : Les processus - 6.3

Quand un processus crée un processus fils, ce dernier hérite de son père d’un
ensemble d’éléments définis par ses ancêtres. Parmi ces éléments, ceux qui intéressent
particulièrement l’administrateur sont :
• Le répertoire courant de son père (le répertoire « . »).
• Le « umask » qui, rappelons-le, sert à définir les droits par défaut des fichiers
créés par le processus.
• Le « ulimit » qui fixe la taille du plus gros fichier que le processus peut créer.
• Les variables d’environnement dont le processus reçoit une copie. Elles ont été
créées par un ancêtre du processus, du processus init jusqu’à son père (cf. UNIX
shell : Module 5, les variables).
• Le répertoire racine (« / ») peut être modifié par la commande chroot. Le
processus et ses descendants ne voient plus que l’arbre issu du nouveau répertoire
racine.
Dans la pratique, l’administrateur est amené à ajouter, pour le bon déroulement de
logiciels applicatifs, la définition de nouvelles variables d’environnement. Pour cela,
il dispose de plusieurs fichiers (cf. Annexe D : le shell bash, les fichiers de
configuration) :
• Le fichier /etc/profile pour définir les variables valables pour tous les utilisateurs.
• Les fichiers ~/.bash_profile ou ~/.profile des seuls utilisateurs concernés par les
variables.
La variable d’environnement la plus célèbre est sans doute la variable TERM qui
permet à l’éditeur de texte vi de s’adapter au terminal de l’utilisateur.

6-4 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 6 : La gestion des processus

Panorama des commandes de gestion de


processus
Panorama des commandes de gestion de processus

„ Les commandes externes


ps aux Liste des processus
kill -9 Tue un processus, envoie un signal
su -c Lance une application sous un compte donné
ident Affiche la version d’une application
fuser Liste des processus utilisant un fichier
at Lance un processus en mode différé
crontab Lance des applications de manière périodique
env Visualise l’environnement courant, ou le crée
„ Les commandes internes du shell
cmd & Lance une commande (cmd) en parallèle
wait Attend la terminaison des processus lancés en
tâche de fond
exec cmd Substitue le shell par la commande (cmd)
. cmd Exécute le script cmd par le shell courant

TSOFT - Linux Administration Module 6 : Les processus - 6.4

Il existe de nombreuses commandes qui ont trait à la gestion des processus et


beaucoup ont déjà été étudiées. Pour les plus communes nous ne mentionnons qu’un
exemple pour rappeler la forme de leur utilisation.

Commandes externes
ps
La commande ps affiche des informations sur les processus en cours. La commande
ps accepte maintenant la syntaxe issue de UNIX BSD, le choix initial de Linux, ainsi
que les options de UNIX System V AT&T. Dans la forme initiale de Linux, l’option
est représentée par une lettre. Les options de type AT&T sont, comme de coutume,
des lettres précédées du caractère « - ».
En adoptant les options de UNIX System V, Linux est conforme au standard UNIX 98
de l’Open Group. Nous recommandons leur utilisation.
Les principales options de type BSD sont :
u Affiche le nom du propriétaire.
a Affiche les processus des autres utilisateurs.
l Affiche des informations supplémentaires (format long).

# ps
PID TTY STAT TIME COMMAND
396 1 S 0:00 -bash
400 5 S 0:00 /sbin/mingetty tty5
401 6 S 0:00 /sbin/mingetty tty6
990 1 S 0:00 vi 6.5.1
991 1 S 0:00 /bin/bash -c ( ps) >/tmp/voa00990 2>&1
992 1 R 0:00 ps

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 6-5
Module 6 : La gestion des processus
# ps l
FLAGS UID PID PPID PRI NI SIZE RSS WCHAN STA TTY TIME
COMMAND
100 0 396 1 0 0 1256 832 wait4 S 1 0:00 -
bash

# ps au
USER PID %CPU %MEM SIZE RSS TTY STAT START TIME COMMAND
cathy 398 0.0 2.6 1244 812 3 S 06:50 0:00 -bash
paul 399 0.0 2.7 1316 860 4 S 06:50 0:00 -bash
pierre 397 0.0 2.6 1244 812 2 S 06:50 0:00 -bash
root 396 0.0 2.7 1256 832 1 S 06:50 0:00 -bash
root 400 0.0 0.9 724 296 5 S 06:50 0:00 /sbin/mingetty
tty5
root 1213 0.0 1.5 848 476 1 R 07:12 0:00 ps au

Les principales options de type System V sont :


-e Affiche des informations sur tous les processus.
-f Affiche des informations supplémentaires, notamment le nom du
propriétaire du processus (colonne UID), le PID du père du processus
(colonne PPID) et la ligne de commande complète qui l’a exécuté
(colonne CMD).
-u util Affiche des informations sur tous les processus de l'utilisateur « util ».
-g Affiche le numéro de groupe du processus (colonne PGID).

# ps –e
PID TTY TIME CMD
1? 00:00:04 init
4? 00:00:00 kswapd
229 ? 00:00:00 syslogd
254 ? 00:00:00 crond
272 ? 00:00:00 inetd

# ps –f
UID PID PPID C STIME TTY TIME CMD
root 510 1 0 08:16 tty1 00:00:00 login -- root
root 518 510 0 08:16 tty1 00:00:00 –bash
root 629 518 0 08:32 tty1 00:00:00 vi 6_6
root 663 629 0 08:39 tty1 00:00:00 /bin/bash -c ( ps -f) >/tmp/voc2
# ps -fu pierre
UID PID PPID C STIME TTY TIME CMD
pierre 568 511 0 08:22 tty2 00:00:00 –bash
pierre 703 568 0 08:46 tty2 00:00:00 mail cathy

kill
La commande kill envoie un signal à un (des) processus. Le signal 9 tue un processus.
# kill –9 1540 # tue le processus de PID 1540.
# kill –l # affiche la liste des signaux.
# kill –2 0 # envoie le signal à tous les processus du groupe du shell.
# kill –2 –1 # envoie le signal à tous les processus dont l’UID réel est identique à
l’UID effectif du propriétaire du shell émetteur.
# kill –2 –1540 # envoie le signal à tous les processus du groupe 1540.

6-6 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 6 : La gestion des processus

killall
La commande killall envoie un signal à tous les processus qui exécutent une
commande spécifique. Le signal SIGTERM est envoyé par défaut, comme dans la
commande kill.
# killall httpd

su
La commande su permet, entre autres, de faire exécuter un processus avec une autre
identité que la sienne, ce qui est intéressant pour root qui n’a pas, quand il exécute
l’une des formes de la commande su, à fournir le mot de passe de l’utilisateur dont il
emprunte l’identité. Grâce à l’option « -c », il est possible de n’exécuter qu’une
commande, fournie immédiatement sur la même ligne de commande que id. Cette
forme est particulièrement intéressante dans les scripts.
# su pierre # prendre l’identité de pierre.
$exit
#
# su – pierre # prendre l’identité de pierre et changer d’environnement, le
fichier ~/ .bash_profile de pierre est exécuté.
$ exit
# su pierre -c "id" # exécute la commande avec l’identité de pierre.
uid=200(pierre) gid=51(stage) groups=51(stage),52(formateur)
#
ident
La commande ident affiche des informations sur la version d’une commande. Elle est
équivalente à la commande what d’Unix System V.
# ident mail
mail:
$OpenBSD: version.c,v 1.4 1996/06/08 19:48:46 christos Exp $
$OpenBSD: aux.c,v 1.4 1996/06/08 19:48:10 christos Exp $
$OpenBSD: cmd1.c,v 1.5 1996/06/08 19:48:11 christos Exp $
$OpenBSD: cmd2.c,v 1.5 1996/06/08 19:48:13 christos Exp $

strace, truss
Les commandes strace et truss permettent d’exécuter une application et de visualiser
les appels système qu’elle exécute.
strings
La commande strings affiche les chaînes de caractères ASCII présentes dans les
fichiers binaires.
# strings /bin/date
fuser
La commande fuser fournit des informations sur les processus qui ont ouvert un
fichier, même un disque (cf. Module 4 : Les systèmes de fichiers).

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 6-7
Module 6 : La gestion des processus

lsof
La commande lsof (cf. Module 4 : Les systèmes de fichiers) permet de lister les
fichiers ouverts et de connaître les applications qui y accèdent.
# lsof -u pierre
COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
bash 968 pierre cwd DIR 8,5 4096 51296 /home/pierre

bash 968 pierre txt REG 8,5 512540 110453 /bin/bash
bash 1181 pierre 3r REG 8,5 1179 64945 /etc/passwd
bash 1181 pierre 255u CHR 136,1 3 /dev/pts/1
at
La commande at exécute des commandes en différé (cf. Service cron).
crontab
La commande crontab exécute des commandes périodiquement (cf. Service cron).
env
La commande env visualise l’environnement d’un shell.
ldd
La commande ldd liste toutes les bibliothèques partagées (les fichiers *.so) utilisées
par un exécutable (cf. Chapitre Les bibliothèques dynamiques).

Les commandes internes


&
La commande & exécute un processus en arrière-plan.

wait
La commande wait attend que les commandes exécutées à l’arrière-plan soient
terminées pour poursuivre l’exécution du shell.
# commande1 &
# commande2 &

# wait
# commande_suite # est exécutée quand commande1,2,… sont terminées
Cela n’a d’intérêt que s’il existe plusieurs commandes d’arrière-plan, au moins deux.
C’est sinon le mode de fonctionnement normal du shell.

exec
La commande exec remplace le code du shell par le code de la commande. Il n’y a pas
de création de processus. Il n’y a pas de retour si la commande exec réussit.
# ps
# exec ps

login :

. unscript
Le shell courant exécute lui-même le script unscript.

6-8 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 6 : La gestion des processus

crontab (1/2)
Crontab (1/2)
/etc/cron.allow
Fichier crontab /etc/cron.deny
/var/spool/cron/pierre

crontab
crontab SPOOL

/etc/crontab
pierre
crond
crond
Le démon crond

/var/log/cron

TSOFT - Linux Administration Module 6 : Les processus - 6.5

Exécution périodique ou différée des commandes


Le démon crond exécute des commandes pour des utilisateurs. L’heure et la date
d’exécution de ces commandes sont régies par :
• La périodicité (tou(te)s les) quand elles sont soumises par la commande crontab.
Le démon atd exécute les commandes différées selon :
• L’échéance (à telle heure) quand elles sont soumises par la commande at.
• A leur tour et dès que possible quand elles sont soumises par la commande batch.
Les démons crond et atd définissent des principes et des contraintes d’utilisation qui
sont toujours valables, quel que soit le mode de soumission :
1. Pour soumettre une requête, il faut être un utilisateur autorisé. L’administrateur
dispose, pour définir qui est autorisé, des fichiers cron.allow et cron.deny pour la
commande crontab et des fichiers at.allow et at.deny pour les commandes at et
batch. Ces fichiers sont situés dans le répertoire /etc.
Comprenons l’utilisation avec cron.allow et cron.deny. Elle est similaire avec
at.allow et at.deny.
Si les fichiers n’existent pas, il existe deux cas de figure selon la configuration du
système : seul l’administrateur (« root ») est autorisé à exécuter la commande
crontab ou tous les utilisateurs. Tous les utilisateurs sont autorisés dans le cas de
la distribution Red Hat.
Si le fichier cron.allow existe, les utilisateurs dont il contient les noms, un par
ligne, sont autorisés à exécuter la commande crontab, les autres non.
Si le fichier cron.deny existe, les utilisateurs dont il contient les noms, un par
ligne, n’ont pas le droit d’exécuter la commande crontab, les autres oui.

cathy, pierre et root sont les seuls autorisés.


# cd /etc
# more cron.allow

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 6-9
Module 6 : La gestion des processus

root
pierre
cathy
Tout le monde est autorisé.
# ls cron.*
cron.deny
# more cron.deny # il est vide
#

2. crond mémorise l’historique des commandes qu’il exécute dans le fichier


/var/log/cron qu’il faut purger périodiquement.
3. Lorsque le démon crond exécute une commande, il définit un environnement
réduit composé des variables « HOME », « LOGNAME », « SHELL » qui est
initialisé avec une valeur par défaut /bin/sh et une variable « PATH » réduite à
/bin:/usr/bin. Les commandes qui ont besoin d’un environnement plus complet
peuvent être appelées dans un script qui crée les autres variables. Les scripts
doivent préciser le shell qui les exécute grâce au pseudo-commentaire « # ! » (cf.
UNIX shell : Module 4, Les scripts shell). Une autre solution consiste à définir les
variables d’environnement dans le fichier des requêtes (cf. crontab(2/2)).
4. Pour les commandes qui nécessitent une entrée standard, il est nécessaire de
prévoir une redirection explicite en entrée.
A défaut de redirection de la sortie standard et des erreurs, les résultats et les
messages d’erreur sont envoyés dans la boîte à lettres.
5. Les répertoires des requêtes des démons crond et atd sont respectivement
/var/spool/cron pour la commande crontab et /var/spool/at pour les commandes
at et batch.
Le fichier de requêtes d’un utilisateur de la commande crontab, une fois transféré
dans le répertoire des requêtes, porte le nom de l’utilisateur. Cela limite à un le
nombre de fichiers de requêtes actifs que peut posséder un utilisateur.

Remarques
• La commande crontab est très certainement la plus utilisée par l’administrateur à
qui cela permet d’automatiser l’exécution de nombreuses commandes, dont les
sauvegardes et la surveillance de l’activité du système.
• L’administrateur dispose du fichier /etc/crontab pour faire exécuter
périodiquement des commandes avec l’identité de n’importe quel utilisateur du
système.

6-10 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 6 : La gestion des processus

crontab (2/2)
Crontab (2/2)

„ Un fichier crontab (* : toutes les valeurs possibles)


$ more moncron
* * * * * date
0 21 * * * who La commande 6
0 0 1 * 1-6 cal
30 12 3,8,15 3-10 * touch .profile

1 2 3 4 5
Minutes Heures Jour Mois Jour de la semaine
(0-59) (0-23) (1-31) (1-12) (0-6, 0:Dimanche)

„ La commande crontab
$ crontab -e # édite son crontab
$ crontab -l # liste son crontab
$ crontab -r # supprime son crontab
TSOFT - Linux Administration Module 6 : Les processus - 6.6

crontab
On a coutume d’appeler un fichier au format de la commande crontab, une « cron
table ».
L’utilisateur la crée avec un éditeur de texte. Une ligne peut être une ligne de
commande (une requête), une ligne de commentaire qui commence alors par le
symbole # ou comporter la définition d’une variable d’environnement pour les
commandes.
Les variables HOME et SHELL qui indiquent respectivement le répertoire de
connexion et le shell qui doit exécuter les commandes peuvent être redéfinies, mais
pas la variable LOGAME. Il est possible de désigner l’utilisateur qui doit recevoir les
résultats ou les erreurs par courrier en créant la variable MAILTO qui contient alors le
nom du récepteur.
Les lignes vides et les espaces en début de ligne sont ignorés.
Une ligne de commande est constituée de six champs, séparés par des espaces ou des
tabulations. Les cinq premiers définissent la périodicité et le dernier la commande à
exécuter :
Minutes Heures Jours Mois Jour de la Commande
du mois semaine
Le contenu d’un champ exprimant un élément de la périodicité peut être :
• Une valeur pour indiquer « à quel(le) » moment il faut exécuter la commande. La
valeur 15 dans le champ minute signifie à la quinzième minute, dans le champ
jour du mois, le 15 du mois.
• Une liste de valeurs, séparées par des virgules, pour indiquer « au(x)quel(le)s »
moments il faut exécuter la commande. La liste 1,3,5,7 dans le champ mois
signifie janvier, mars, mai et juillet.

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 6-11
Module 6 : La gestion des processus

• Un intervalle pour représenter de « tant à tant ». L’intervalle 1-3 dans le champ


jour de la semaine signifie du lundi au mercredi.
• Le caractère * pour indiquer le plus grand intervalle possible. * est équivalent à 0-
6 dans le champ jour de la semaine.
Plusieurs requêtes sont présentées dans le transparent :
1. La commande date est exécutée toutes les minutes.
2. La commande who tous les jours à 21 heures.
3. La commande cal à 0 heure, le premier du mois seulement si le mois ne débute
pas un dimanche.
4. La commande touch à 12 heures 30 le 3, 8 et 15 des mois de mars à octobre.

Remarques
• Il est possible de définir une fréquence en faisant suivre l’intervalle par un pas,
sous la forme « intervalle/pas ».
*/10 dans le champ des minutes est équivalent à 0,10,20,30,40,50.
6-20/2 dans le champ heure est équivalent à 6,8,10,12,14,16,18,20.
• On peut indiquer les noms des jours de la semaine et des mois plutôt que leur
numéro. Les noms sont définis en saisissant les trois premiers caractères du mot.
« sun » signifie dimanche, « mon » lundi …
• Si le champ commande comporte le caractère %, non protégé, tous les caractères
qui suivent, dans la ligne, définissent l’entrée standard de la commande. C’est la
forme cron des « here document » du shell.
Envoi du message « Tout le monde debout ! ! » à tous les utilisateurs, chaque jour
à huit heures du matin.
0 8 * * * wall %Tout le monde debout ! !

Soumission d’une table cron


Pour soumettre la « cron table » au démon cron, l’utilisateur exécute la commande :
$ crontab moncron
où moncron est le nom du fichier de requêtes, celui qui est copié dans /var/spool/cron
avec pour nom, celui de l’utilisateur.
L’option « -u nom_utilisateur » permet à l’administrateur d’exécuter un fichier de
requêtes en endossant l’identité d’un autre utilisateur.
# crontab –u pierre moncron

Visualisation de la table cron active


Pour connaître les requêtes soumises au démon cron, c’est-à-dire visualiser la « cron
table » active, il faut exécuter la commande :
$ crontab –l

Arrêt de l’exécution de la table cron active


Pour arrêter l’exécution de la « cron table » active, il faut exécuter la commande :
$ crontab –r

Modification de la table cron active


Pour modifier la « cron table » active, il faut exécuter la commande :
$ crontab –e

6-12 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 6 : La gestion des processus

L’édition est réalisée via l’éditeur de texte vi. La commande crontab –e permet de
créer directement une « cron table » active initiale, donc vide.

Le fichier /etc/crontab
En plus des fichiers de requêtes du répertoire /var/cron, le démon crond exécute
également le fichier /etc/crontab. C'est par ce biais que se fait, entre autres, la mise à
jour quotidienne de la base de données d'aide simplifiée « whatis ».
Une ligne de ce fichier comporte les cinq champs qui définissent la périodicité. Le
sixième champ indique l’identité du propriétaire du processus qui exécutera la
commande. Le septième champ définit la commande à exécuter.
Le fichier /etc/crontab de base utilise le script /usr/bin/run-parts pour exécuter :
toutes les commandes du répertoire /etc/cron.hourly toutes les heures
toutes les commandes du répertoire /etc/cron.daily toutes les nuits
toutes les commandes du répertoire /etc/cron.weekly chaque dimanche
toutes les commandes du répertoire /etc/cron.monthly le premier jour de chaque mois
Pour exécuter une commande avec l’une de ces périodicités, il suffit à l'administrateur
de copier la commande dans le répertoire correspondant. Il est sinon possible d’ajouter
une ligne au format des requêtes cron, directement dans le fichier /etc/crontab.

# cat /etc/crontab
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
# run-parts
01 * * * * root run-parts /etc/cron.hourly
02 4 * * * root run-parts /etc/cron.daily
22 4 * * 0 root run-parts /etc/cron.weekly
42 4 1 * * root run-parts /etc/cron.monthly

at
La commande at permet de faire exécuter des commandes à une heure et une date
données. C’est le démon atd qui prend en charge l’exécution des requêtes.
La commande at lit les commandes à exécuter depuis l’entrée standard. Il faut, si elles
ont été stockées dans un fichier, cas le plus fréquent, procéder à une redirection de
l’entrée standard.
$ at heure [date] < fichier_requête
L’heure et la date sont au format standard d’UNIX (cf. man date) ou intègrent des
mots clés propres à la commande date (cf. man at).
# at 1500 <fcommande # exécuter le fichier fcommande à 15 heures.
# at midnight < fcommande # exécuter le fichier fcommande à minuit.
# at now + 3 hours < fcommande # exécuter le fichier fcommande dans 3 heures.
Pour connaître les travaux soumis, il faut exécuter la commande at -l ou la commande
atq.
$ at -l
1 1999-05-11 12:30 a

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 6-13
Module 6 : La gestion des processus

2 1999-05-10 20:30 a
Pour supprimer un travail avant qu'il ne soit exécuté, il faut exécuter la commande
at -d ou la commande atrm :
$ at -d 2 # Supprime le travail numéro 2

batch
La commande batch utilise le même schéma de fonctionnement que at, mais on ne
précise pas d’heure ni de date d’exécution. Le travail soumis est mis en attente dans
une « FIFO » et exécuté à son tour et quand la charge système le permet.
$ batch < fcommande
$ at –l # Visualiser les travaux en attente. Les travaux ont l’extension « .b »
$ at –d 3 # Supprimer le travail numéro 3

6-14 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 6 : La gestion des processus

Les bibliothèques dynamiques


Les bibliothèques dynamiques

Les processus Les sous programmes


$ calcul sin
y=sin(x) ...
… ...
printf(…);

$ compta
… Printf
printf(…); …
...
$ ps
PID TTY TIME CMD
854 pts/0 00:00:00 calcul
1029 pts/0 00:00:00 compta

TSOFT - Linux Administration Module 6 : Les processus - 6.7

Les bibliothèques dynamiques, le concept


Un programme binaire, sous sa forme exécutable, fait appel à des bibliothèques de
sous-programmes. Chaque sous-programme d’une bibliothèque est une unité de
programme qui réalise une fonction particulière, comme écrire des données sur la
sortie standard, ce que réalise le sous-programme printf ou calculer le sinus d’un
angle, ce que réalise le sous-programme sin. Une bibliothèque est spécialisée. La
bibliothèque mathématique contient les fonctions cosinus, sinus, tangente…
Les sous-programmes des bibliothèques peuvent être inclus dans le fichier image de
l’exécutable. On parle alors d’édition de lien statique. Le programme est alors
autonome. Il suffit de disposer du fichier qui contient le programme pour exécuter
l’application. C’est le mode que l’on choisit pour installer un logiciel embarqué sur
une machine cible sur laquelle il n’existe rien d’autre que le noyau Linux et le logiciel.
On peut également utiliser des bibliothèques dynamiques (« DLL : Dynamic Link
Library »). Les bibliothèques sont associées au processus pendant l’exécution. On
parle d’édition de lien dynamique. Le code des sous-programmes n’est pas inclus dans
le fichier image de l’exécutable. Leur présence est nécessaire au moment de
l’exécution de l’application. Les bibliothèques sont partagées par tous les exécutables
qui y font appel simultanément. C’est pourquoi les termes de bibliothèque dynamique
et de bibliothèque partagée (« Shared library ») sont synonymes.
Le choix de l’édition de lien, statique ou dynamique, se fait au moment de la
compilation de l’application. Il nécessite, en conséquence, la possession des sources.
Remarque
La taille d’un fichier exécutable produit avec une édition de lien statique est plus
importante que celui obtenu en réalisant une édition de lien dynamique. Le second ne
contient pas les sous programmes des bibliothèques

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 6-15
Module 6 : La gestion des processus

Les bibliothèques
Une bibliothèque se présente sous la forme d’un fichier qui possède l’extension « .a »
(« archive ») pour une bibliothèque statique et l’extension « .so » (« shared object »)
pour une bibliothèque partagée.
Le nom complet d’une bibliothèque partagée inclut son numéro de version, sous la
forme MAJEUR.MINEUR. Le nom libtermcap.so.2.0.8 désigne la révision de majeur
2 et de mineur 0.8 de la bibliothèque termcap.
Une application peut utiliser une bibliothèque de version plus récente que celle utilisée
lors de la compilation, à condition que le majeur reste identique. S'il existe plusieurs
applications qui ont été conçues à partir de majeurs différents, cela implique de
conserver les différentes versions de ces bibliothèques, une version par majeur.
La politique normalement suivie lors de l’installation d’une application est de créer les
bibliothèques dynamiques dans le répertoire /lib et d’avoir, d’autre part, un lien
symbolique pour chaque majeur, qui pointe sur la bibliothèque la plus récente
compatible avec ce majeur, par exemple :
# ls -l libresolv*
-rwxr-xr-x 1 root root 169720 fév 29 2000 libresolv-2.1.3.so
lrwxrwxrwx 1 root root 18 sep 1 12:38 libresolv.so.2 -> libresolv-2.1.3.so
Remarque
Si pour une raison ou pour une autre, des bibliothèques essentielles, comme libc , la
bibliothèque standard du langage C, venaient à ne plus être accessibles, les
commandes ne fonctionneraient plus. Il faut donc impérativement posséder des
disquettes de démarrage qui contiennent les principales commandes (cp, ls, …), créées
par édition de lien statique. Ces disquettes permettent de réparer le système, par
exemple, en restaurant les bibliothèques (cf. Annexe J : Dépannage).
Pour la raison que l’on vient de mentionner, la mise à jour de ces bibliothèques est
périlleuse. Il est plutôt conseillé de réaliser une mise à jour du système. Pour y
procéder, il faut utiliser la commande « ln –sf » qui permet de remplacer un lien sans
qu’il y ait de vacance.

Emplacement des bibliothèques


Les bibliothèques dynamiques sont chargées par l’utilitaire ld.so. Ce chargeur
recherche les bibliothèques en respectant l’ordre suivant :
• Les répertoires mentionnés par la variable d’environnement
LD_LIBRARY_PATH sont parcourus.
• Le fichier cache /etc/ld.so.cache est ensuite pris en compte.
• La recherche se termine en scrutant les répertoires /lib et /usr/lib.
Le fichier /etc/ld.so.cache, contient une liste de chemins de bibliothèques. Il est
normalement mis à jour au démarrage par la commande ldconfig, qui se base sur son
fichier de configuration /etc/lib.so.conf. La commande ldconfig, avec l’option « –n »,
peut être exécutée à tout moment, pour prendre en compte de nouveaux répertoires.

Compilation et édition de liens


La commande cc réalise la compilation et l’édition de liens d’un programme. La
compilation consiste dans la production d’un fichier contenant un code binaire non
exécutable et l’édition de lien dans celle d’un fichier binaire exécutable. C’est à
l’édition de liens que l’on indique le type des bibliothèques. Par défaut, c’est la
bibliothèque dynamique qui est utilisée. L’option « -static » entraîne l’utilisation des
bibliothèques statiques.

6-16 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 6 : La gestion des processus

Les commandes d’information


Plusieurs commandes peuvent donner des renseignements sur les bibliothèques
partagées.
La commande ldd liste les bibliothèques partagées d’un exécutable. L’ensemble de
ces bibliothèques doivent être accessibles.
La commande objdump liste les en-têtes d’un fichier au format ELF, par exemple un
exécutable ou une bibliothèque partagée. L’option « –x » est la plus intéressante du
point de vue de l’édition de liens dynamique.
La commande ldconfig permet de configurer le cache. L’option « –p » affiche le cache
et l’option « –v » scrute les différents répertoires mentionnés dans le fichier
/etc/lib.so.conf

Exemples
$ cat motcode.c
#include <stdio.h>
#include <string.h>
main()
{
char *motcode="linux"; char motut[100];
printf("Saisissez un mot : "); gets(motut);
if ( ! strcmp(motut,motcode))
printf("Bravo, le mot codé est linux\n");
else
printf("Perdu, il fallait trouver linux\n");
}
$ cc -static motcode.c -o motcode.sta # compilation en statique
$ cc motcode.c -o motcode.dyn # compilation en dynamique
$ ls –l mot*. ? ? ? # motcode.dyn est dynamique, motcode.sta est statique
-rwxrwxr-x 1 gilles gilles 12103 nov 7 17:21 motcode.dyn
-rwxrwxr-x 1 gilles gilles 965445 nov 7 17:22 motcode.sta
$ motcode.dyn # la bibliothèque standard du langage C est inaccessible
motcode.dyn: error in loading shared libraries: libc.so.6: cannot open shared ob
ject file: No such file or directory
$ ldd /bin/tcsh
libnsl.so.1 => /lib/libnsl.so.1 (0x4001c000)
libtermcap.so.2 => /lib/libtermcap.so.2 (0x40032000)
libcrypt.so.1 => /lib/libcrypt.so.1 (0x40036000)
libc.so.6 => /lib/libc.so.6 (0x40063000)
/lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)
$ objdump -x /bin/tcsh | grep NEEDED
/bin/tcsh: no symbols
NEEDED libnsl.so.1
NEEDED libtermcap.so.2
NEEDED libcrypt.so.1
NEEDED libc.so.6

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 6-17
Module 6 : La gestion des processus

Les IPC
Les IPC

„ Les différents IPC (« Inter Process Communication »)


z Les files d’attente de messages inter processus
z Les segments de mémoire partagés
z Les tableaux de sémaphores
„ Les commandes
z ipcs Liste les IPC actifs par type d’IPC
z ipcrm Permet de détruire une IPC

TSOFT - Linux Administration Module 6 : Les processus - 6.8

Introduction
Les IPC (« Inter Process Communication ») désignent des mécanismes de
synchronisation et de communication implémentés dans le noyau Linux, auxquels les
processus applicatifs font appel pour échanger des données ou régler des problèmes de
concurrence d’accès à des ressources.
Les processus utilisent, pour cela, des primitives du noyau. Les IPC sont décrits dans
la section 2 du manuel de référence.
En quoi, alors, l’administrateur est-il concerné ?
Cela le concerne à trois niveaux :
• Parfaire sa connaissance globale du système.
• Etre capable d’identifier les IPC utilisés par les processus, vérifier que leur
nombre est suffisant et à en supprimer à la main en cas de « plantage » d’un
logiciel.
• Savoir modifier les paramètres du système si les ressources IPC viennent à
manquer pour exécuter les processus applicatifs. L’administrateur qui n’est pas un
spécialiste de la programmation système consulte la documentation du logiciel
pour déterminer le nombre de ressources IPC qui convient.

Les catégories d’IPC


Les IPC appartiennent à trois catégories distinctes :
• Les files d’attente de message (« Message Queue ») que les processus utilisent
pour échanger des données. Les files d’attente de message sont des « FIFO ».
Elles offrent comme avantages principaux sur les tubes de permettre une gestion
de priorité entre messages et de consulter la présence de messages, sans les lire
pour autant.

6-18 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 6 : La gestion des processus

• Les zones de mémoire partagées (« Shared Memory ») par plusieurs processus


permettent à plusieurs processus de lire ou d’écrire des données dans une zone
commune.
• Les tableaux de sémaphore permettent aux processus de se synchroniser pour
éviter des conflits d’accès à des ressources partagées, des zones de mémoire
partagées par exemple.

Les commandes
Il existe deux commandes qui traitent des IPC :
La commande ipcs qui les visualise.
# ipcs # visualise les informations essentielles des trois catégories
# ipcs –q # visualise les informations essentielles des files de messages
# ipcs –m # visualise les informations essentielles des mémoires partagées
# ipcs –s # visualise les informations essentielles des sémaphores
Dans tous les cas, la commande ipcs affiche, en colonne, des informations relatives
aux IPC existantes :
key La clé désigne le nom de l’IPC. Il a été choisi par le créateur de l’IPC.
id L’identificateur de « l’IPC » désigne une valeur attribuée par le noyau à la
création de l’IPC. C’est l’équivalent du « handle » d’un fichier. L’en-tête de
colonne est respectivement shmid, semid et msqid pour les zones de
mémoire partagée, les sémaphores et les files d’attentes de messages.
owner Le nom du propriétaire de l’IPC.
perms Le champ perms définit, sous forme numérique, les droits d’accès à l’IPC.
La lecture en est identique à celle des droits des fichiers.
bytes | nsems | used_bytes
Selon l’en-tête de colonne, le champ désigne respectivement :
La taille de la zone de mémoire partagée (bytes).
Le nombre de sémaphores d’un tableau de sémaphores.
Le nombre d’octets occupés dans une file d’attente de messages.
Les colonnes supplémentaires des zones de mémoire partagées sont respectivement le
nombre de processus attachés à cette zone (nattach) et l’état de la zone (status).
La colonne supplémentaire des sémaphores est l’état de la zone (status).
La colonne supplémentaire des files d’attente de messages est le nombre de messages
en attente.
# ipcs
------ Shared Memory Segments --------
key shmid owner perms bytes nattch status
0x00000000 0 nobody 600 46084 11 dest
------ Semaphore Arrays --------
key semid owner perms nsems status
0x0000000a 0 root 666 1
------ Message Queues --------
key msqid owner perms used-bytes messages
0x00000000 0 root 700 0 0

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 6-19
Module 6 : La gestion des processus

La commande ipcrm qui permet de supprimer une ressource IPC.


ipcrm type_IPC ID_de_la_ressource_de_type_x_a_détruire
Le symbole peut être :
• msg pour les files d’attente de message,
• shm pour les zones de mémoire partagée,
• sem pour les sémaphores.

6-20 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 6 : La gestion des processus

Atelier 6 : La gestion des processus


Atelier 6 : La gestion des processus

Objectifs :
„ Savoir lancer et arrêter une
application
„ Savoir gérer le service cron pour
activer des tâches périodiques

Durée : 30 minutes.

TSOFT - Linux Administration Module 6 : Les processus - 6.8

Exercice n°1
Est-ce que l’application « crond » est active ? Si oui, quel est son PID ?

Exercice n°2
On exécute la commande suivante :
$ sleep 200 &
a) Quel est son père ?
b) Tuer cette application.

Exercice n°3
L’utilisateur pierre étant connecté, tuez son shell de connexion.

Exercice n°4
Comment autoriser tout le monde à utiliser la commande crontab ?

Exercice n°5 (suite de l’exercice précédent)


Comment interdire uniquement à paul d’utiliser la commande crontab ?

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 6-21
Module 6 : La gestion des processus

Exercice n°6
Quel est le nom du fichier log utilisé par le démon cron ?
Visualisez-le.

Exercice n°7
Créez, sous le compte de pierre, un fichier crontab qui réalise les actions suivantes :
a) Ajout toutes les minutes du message « Bonjour » suivi de la date, au fichier
/tmp/log.
b) Liste des processus tous les ¼ d’heure, de 8h à 17h du lundi au vendredi, dans le
fichier /tmp/processus.
Listez le crontab actif et supprimez-le après avoir constaté qu’il fonctionne.

Exercice n°8
Sauvegardez le fichier crontab de l’administrateur, et ensuite ajoutez-y l’action
suivante :
Ajout toutes les vingt minutes de la date au fichier /tmp/log.
Cette action doit être exécutée avec les droits de l’utilisateur pierre.

Exercice n°9
En analysant le résultat de la commande ps aux, indiquez, selon votre avis, quelles
sont les applications susceptibles d’être des démons.

Exercice n°10
Ajoutez la variable d’environnement « PAYS=France » à tous les utilisateurs.

Exercice n°11
Quelles sont les commandes gérant les IPC sur votre système ?

Exercice n°12
Quelles sont les bibliothèques dynamiques respectivement utilisées par les
commandes cp et kedit ?

6-22 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 7 : L’arrêt et le démarrage

• LILO
• Système de fichiers
root, swap primaire,
périphérique de boot
• mkbootdisk, « rescue »
• Le processus init, le
fichier /etc/inittab
• Les scripts /etc/rc
• shutdown
7Module 7 : L’arrêt et le
démarrage
Objectifs
Après l’étude du chapitre, le lecteur sait démarrer et arrêter le système. Il maîtrise le
paramétrage de l’arrêt et du démarrage.

Contenu
Le démarrage d’un PC
Le démarrage du système Linux
Le processus init
Les scripts /etc/rc
Les sessions
L’arrêt du système

Références
HOWTO : lilo mini-HOWTO, Boot-Prompt HOWTO, Bootdisk-HOWTO,
Multi-boot-with-Lilo-HOWTO, From-PowerUp-to-bash-prompt-HOWTO
Le manuel : lilo(8), inittab(5), init(1), shutdown(8)
Internet : les sites des distributions Linux (http://www.redhat.com…)

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 7-1
Module 7 : L’arrêt et le démarrage

L’organisation d’un disque de PC


L ’organisation d ’un disque de PC

Secteur de boot Programme Table des « magic


« MBR » « loader » partitions number »

Boot Boot Boot


DOS/WIN9x NT Linux

Partition Partition Partition


FAT NT Linux

TSOFT - Linux Administration Module 7 : L’arrêt et le démarrage - 7.2

Le disque dur d’un PC peut être partitionné. Un système d’exploitation (Windows 9x,
NT ou Linux) peut être installé dans l’une des partitions et il est possible que
plusieurs systèmes cohabitent sur un même disque dur, un par partition. Dans ce
dernier cas, un système est actif à la fois et c’est celui-ci qui est chargé en mémoire au
démarrage de l’ordinateur.
Le transparent schématise un disque qui contiend trois partitions où sont
successivement installés les systèmes Windows 9x, NT et Linux.
Le premier secteur du disque contient ce que l’on appelle le « MBR » (« Master Boot
Record ») qui décrit le partitionnement du disque. Il est à l’origine du chargement, on
dit aussi amorce ou « boot » du système actif, quel qu’il soit.
La structure du MBR est la suivante :
• Les 446 premiers octets contiennent un programme de chargement, « loader » en
anglais, qui va démarrer l’exécution du programme de chargement propre au
système d’exploitation actif.
• Les 64 octets qui suivent décrivent les partitions : taille, localisation, type et statut.
Cette table ne contient actuellement que quatre entrées. Il en résulte qu’un disque
ne peut contenir que quatre partitions dites primaires ou principales. Pour dépasser
cette limite, il est possible de définir une des partitions primaires comme partition
étendue. La partition étendue peut contenir des partitions logiques.
• Les deux derniers octets du MBR constituent le « magic number », une valeur
numérique que certains systèmes utilisent pour vérifier la signature du secteur.
Le processus de démarrage d’un PC commence par l’exécution automatique d’un
programme de chargement situé dans le « BIOS » (« Basic Input Output System »). Le
BIOS réside dans la mémoire morte de type « ROM » (« Read Only Memory »). Ce
programme charge le programme de chargement du MBR, qui prend la relève.
Il existe plusieurs programmes de chargement qui peuvent être installés dans le MBR.
Dans le cas le plus simple, le chargeur choisit le système d’exploitation de la partition

7-2 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 7 : L’arrêt et le démarrage

active ou, sinon, offre la possibilité de choisir le système d’exploitation que l’on
souhaite effectivement démarrer. Le programme de chargement charge à son tour le
secteur de « boot » du système d’exploitation choisi. C’est ce dernier qui procède au
chargement effectif du système d’exploitation en RAM.
Dans les cas où Linux cohabite avec un système d’exploitation de type Windows NT,
il est possible de choisir le système d’exploitation au moment du démarrage du PC,
même si la stratégie utilisée change en fonction du chargeur.
Les principaux chargeurs sont :
LILO Le chargeur de Linux (« LInux LOader ») sait charger tous les
systèmes d’exploitation qui fonctionnent sur PC.
Boot Manager Le chargeur « boot manager » a été conçu par IBM pour OS/2. Le
boot manager charge un exécutable installé sur une partition
séparée. C’est lui qui propose le choix du système à exécuter. Cette
solution a l’inconvénient de monopoliser une partition primaire.
NT Loader Le chargeur de Windows NT recherche les systèmes à proposer
dans un fichier de sa propre partition.

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 7-3
Module 7 : L’arrêt et le démarrage

Le démarrage avec LILO


Le démarrage avec LILO

# fichier /etc/lilo.conf

boot=/dev/hda

delay=100

image=/boot/vmlinux
root=/dev/hda1
label=linux

other=/dev/hda4
label=dos

TSOFT - Linux Administration Module 7 : L’arrêt et le démarrage - 7.3

Qu’est-ce que LILO


La fonction première de LILO (« Linux Loader ») est de démarrer un système Linux.
LILO permet un démarrage automatique ou interactif. Dans le second cas, il offre le
choix du noyau Linux que l’on veut charger et la définition de valeurs de paramètres
de démarrage différentes de celles par défaut.
Il permet également le démarrage d’autres systèmes d’exploitation (Windows 98, NT,
OS/2, ...). LILO possède une architecture complexe et ne se résume pas à une simple
commande.

Les composants de LILO


La commande /sbin/lilo (« map installer »).
C’est elle qui installe les programmes de démarrage. Cette commande crée et installe
également le fichier map. La commande lilo est configurée, par défaut, par le fichier
/etc/lilo.conf ou par le fichier associé à l’option « -C ».
Le fichier /boot/boot.b (« boot loader »).
C'est la clef de voûte de LILO. Il contient les programmes de démarrage du noyau
Linux, ce qu’on appelle également le chargeur. Il permet également le démarrage
d'autres système d’exploitation. Il contient le « boot primaire » et le « boot
secondaire ». Le « boot primaire » est stocké dans le secteur de boot, le « MBR » dans
le cas d'un disque dur. Le « boot secondaire » se situe dans la partition Linux.
Le fichier /boot/map (« map file »).
C’est le fichier qui mémorise l’emplacement physique des blocs qui composent les
programmes de démarrage. Il faut avoir à l’esprit que ces derniers ne peuvent pas
utiliser de systèmes de fichiers pour trouver l’emplacement des blocs qui les
composent.

7-4 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 7 : L’arrêt et le démarrage

Le fichier /etc/lilo.conf.
C’est le fichier de configuration de la commande lilo. Il spécifie les différents noyaux
Linux et éventuellement les autres systèmes d’exploitation que les programmes de
démarrage peuvent activer. Il définit des options dont certaines sont générales et
d’autres ne s’appliquent qu’à un noyau particulier. Enfin, il précise où sont installés
les programmes de démarrage :
• Dans le premier secteur d'une disquette
• Dans le MBR du premier disque dur
• Dans le secteur de boot de la partition Linux
Dans les deux premiers cas, LILO contient le boot primaire. Il est donc autonome pour
démarrer Linux. Dans le troisième cas, il se résume au boot secondaire et il doit donc
être activé par un tiers (« boot manager » de OS/2 ou « NT Loader », ...).

Le fichier /etc/lilo.conf
Un exemple de fichier
# paramètres globaux
boot=/dev/hda
delay=100
# paramètres de l’image
image=/boot/vmlinux
root=/dev/hda1
label=linux
# paramètres de l’image
other=/dev/hda4
label=dos
Structure du fichier
Le fichier est constitué de lignes qui définissent des paramètres de la forme :
nom=valeur
Les paramètres qui précèdent la première configuration sont globaux. Chaque
configuration est introduite par le mot clé « image= » dans le cas d’un noyau Linux,
ou bien par le mot clé « other= » s’il s’agit d'un autre système d’exploitation. Les
paramètres qui suivent (root, label, ...) ne s’appliquent qu’à l’image courante. Pour une
meilleure lisibilité, on les indente. Le caractère « # » introduit un commentaire.
Les principaux paramètres globaux
boot=<Loacalisation de lilo>
boot=/dev/fd0 pour la disquette.
boot=/dev/hda dans le MBR d’un disque IDE.
boot=/dev/hda2 en tête d’une partition linux
install=<Chemin d’accès du chargeur (« boot loader »), par défaut /boot/boot.b>
map=<Chemin du fichier des blocs du chargeur (« map file »), par défaut /boot/map.>
compact Accélère le chargement du noyau. Elle n’est pas possible avec tous les
disques.
delay=<Délai en dixièmes de secondes, avant le démarrage automatique>

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 7-5
Module 7 : L’arrêt et le démarrage

timeout=<Délai, en dixièmes de secondes, avant le démarrage automatique associé au


paramètre prompt>
prompt Ce paramètre doit être présent pour que le timeout soit pris en compte. Si
prompt est présent et timeout absent, le système reste sur le prompt.
default=<Nom de l’image à charger par défaut>
En l’absence de cette option, c’est celui de la première configuration qui
est activé.
Les options spécifiques d’une image
image=<Le chemin d’accès d’un noyau Linux>.
label=<Nom de la configuration de démarrage>
C’est l’identificateur qui est affiché quand l’utilisateur appuie sur la
touche <TAB> pour choisir la configuration de démarrage. Le label par
défaut est le nom du système sans le chemin, tel que défini par la clause
image.
root=<La partition qui contient le système de fichiers racine>
Par défaut c’est la partition spécifiée par la commande rdev.
other=<La partition qui abrite un système autre que Linux et que lilo peut activer>

La commande lilo
La commande lilo installe le chargeur et crée le fichier map. Elle est configurée, par
défaut, par le fichier /etc/lilo.conf ou par le fichier associé à l'option « -C ». L’option
« –t » permet de tester la syntaxe des options et du fichier lilo.conf. La liste qui suit
indique les options importantes. Certaines sont équivalentes aux paramètres de
lilo.conf :
-b boot=<Périphérique de démarrage>
-c compact # Pour un chargement plus rapide
-d delay=<Délai (en 1/10 secondes)>
-D default=<L’image à charger par défaut>
-i install= <Le chemin du chargeur>
-m map=<Le chemin du fichier map à créer>
-v verbose=<Le niveau de commentaires (valeur comprise entre 1 et 5)>

Mise en œuvre
Précautions préalables
La mauvaise utilisation de lilo peut détruire la configuration actuelle du système. Il est
donc préférable de réaliser une sauvegarde complète du système qui permette une
réinstallation après crash. Il faut au minimum sauvegarder la configuration actuelle de
lilo et le MBR. Il est vivement recommandé également de posséder une disquette de
démarrage (cf. La commande mkbootdisk et l’annexe J : Dépannage).
# cp /etc/lilo.conf /etc/lilo.conf.old
# dd if=/dev/hda of=/mnt/floppy/MBR bs=512 count=1
Le MBR peut être ultérieurement réinstallé par la commande MS-DOS.
c:\> fdisk /MBR

7-6 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 7 : L’arrêt et le démarrage

Ou bien par la commande (si l’on a sauvegardé comme ci-dessus) :


# dd if=/mnt/floppy/MBR of=/dev/hda bs=446 count=1
Remarque
La commande lilo réalise elle-même une sauvegarde du MBR dans les fichiers
/boot/boot.0300 pour un disque IDE et dans /boot/boot.0800 pour un disque SCSI.
L’extension indique le majeur et le mineur, en hexadécimal, du disque de démarrage.

Activer la commande lilo


Avant d’activer la commande lilo, il faut copier les fichiers de démarrage et le noyau à
l’emplacement idoine, tel que référencé dans le fichier lilo.conf.
On exécute ensuite la commande lilo :
# /sbin/lilo –C fichier
On peut au préalable tester le fichier de configuration, /etc/lilo.conf par défaut. Les
fichiers de démarrage ne sont pas installés.
# /sbin/lilo –C fichier –v -t
Démarrer le système
Lorsque le système démarre, le prompt « LILO boot: » apparaît si l’option prompt a
été activée ou bien si l’on appuie sur la touche Shift, Alt, Ctrl ou si les touches Caps
Lock ou Num Lock sont enfoncées.
L’appui sur la touche <Entrée> active la configuration par défaut. On a la possibilité
d’appuyer sur la touche Tabulation pour faire apparaître toutes les configurations. Les
noms affichés sont les textes associés aux paramètres « label= ». Il suffit de saisir l’un
des noms et de valider. Si le délai est trop court, le système active rapidement la
configuration par défaut. Les options d’une image peuvent être saisies à la suite du
label :
LILO boot: linux single root=/dev/hda2
L'utilisateur peut spécifier un niveau pour la commande init :
LILO boot: linux 3

Utilisation avancée
Il existe des options de configuration complémentaires :
Linear Force le système à utiliser des numéros de secteur linéaire plutôt que des
adresses de la forme : cylindre, tête, secteur. Cette option est nécessaire
pour certains disques. Elle est incompatible avec compact.
message=<Le fichier qui contient le message affiché avant le prompt de lilo>
message=/boot/bootmesg.txt
backup=<Le fichier de sauvegarde du secteur de démarrage>

Options spécifiques d’une image :


append=<Paramètres à transmettre au noyau>
Cette option est souvent utilisée pour indiquer les caractéristiques d’un
périphérique non reconnu par le système.
append="ether=10,0x210,eth0"
Un autre exemple illustre son utilisation, démarrer en mode maintenance :
append="single"

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 7-7
Module 7 : L’arrêt et le démarrage

vga=<normal|extended|1|2|3|ask>
Cette option précise le mode vga qui doit être utilisé lors du démarrage.
ro,read-only
Cette option provoque le montage du système de fichiers root en lecture
seulement. Cela permet d’y exécuter la commande fsck. Cette option est
utilisée habituellement.
rw,read-write
A l’inverse, cette option provoque le montage immédiat du système de
fichiers root en lecture écriture.
mem=<La taille de la mémoire vive prise en compte par le noyau>
Cette option permet ainsi de réduire la mémoire à des fins de tests.
mem=32m.
ramdisk=<La taille en Ko d’un disque virtuel en mémoire vive>
password=<Mot_de_passe>
Le mot de passe « Mot-de-passe> est demandé au démarrage.
restricted Le mot de passe n’est demandé que si l’on passe des paramètres à
l’image, par exemple : « linux single ».
alias=<Alias pour l’image, en plus du label>
single-key Autorise le chargement d’une image par l’appui d’une simple touche,
sans validation. Il faut que le label ou l'alias ne comporte qu’un seul
caractère.
init=<Le programme qui remplace init>
init=/bin/sh
initrd=<Disque à charger en mémoire>
Permet le chargement d'un disque en mémoire par le chargeur. Ce disque
virtuel peut être monté en tant que FS root.
panic=<Timeout>
Provoque un redémarrage automatique en cas de crash au bout du
timeout. Timeout est exprimé en secondes.
loader=<Chargeur>
Spécifie, pour un système différent de Linux, le boot secondaire.
loader=/boot/chain.b Le chargeur par défaut
loader=/boot/any_d.b Permet de démarrer une partition Windows 95/98
située sur le deuxième disque.
table=<Disque>
Spécifie, pour un système différent de Linux, le disque qui contient la
table des partitions.

Références
• Le manuel en ligne : lilo(8), lilo.conf(5).
• La documentation du paquetage : /usr/doc/lilo-*/README, c’est la
documentation la plus complète sur lilo. Elle décline notamment toutes les options
et contient une section « Troubleshooting ».
• Les HOW-TO :
- Lilo-Mini How-to : exemples types d’utilisation de LILO
- The Linux Bootdisk HOWTO : la création d’un mini-système Linux, comme
par exemple une disquette de démarrage

7-8 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 7 : L’arrêt et le démarrage

• BootPrompt HOWTO : les paramètres de démarrage du noyau Linux.


• Multi-boot-with-LILO.
• LILO, Linux Crash Rescue HOW-TO : les précautions à prendre pour prévenir un
crash.
• Configuration HOWTO : la configuration d’un système Linux, un chapitre donne
une vision globale de LILO.
• Autre : le fichier initrd.txt de la documentation du noyau.
(/usr/scr/linux/Documentation/kernel/)

Démarrer à partir des disquettes de réparation


Les administrateurs sont un jour confrontés à la défaillance du disque dur contenant le
système de fichiers principal root et boot par défaut. Il est nécessaire qu’il puisse
« booter » à partir d’un autre support et pour cela disposer d’un support « bootable ».
La solution consiste à créer deux disquettes de réparation. La première est une
disquette de boot qui contient LILO et le noyau Linux. La seconde contient le système
de fichiers principal root avec un jeu minimal de commandes indispensables.
La disquette d’installation peut être utilisée comme disquette de boot. Il est cependant
préférable de créer une disquette qui corresponde à la configuration actuelle du
système. La disquette est créée avec l’utilitaire mkbootdisk. C’est un script qui
nécessite, comme argument, le numéro de version du noyau Linux. Le numéro de
version est affiché quand on exécute la commande uname –r, c’est aussi le nom du
répertoire où se trouvent les pilotes (« drivers ») configurés dans le noyau.
Remarque
La disquette que crée la commande mkbootdisk permet de démarrer le système
normalement, s’il n’est pas endommagé.
# ls /lib/modules
2.4.7-10
# mkbootdisk 2.4.7-10
Pour certaines distributions, la disquette image du système de fichiers principal
« root » est créée en effectuant la copie physique, via la commande dd, du fichier
/images/rescue.img du CD-ROM qui contient la distribution Linux.
# mount –t iso9660 /dev/cdrom /mnt/cdrom
# dd if=/mnt/cdrom/images/rescue.img of=/dev/fd0
Pour démarrer à partir des disquettes de secours, il suffit d’opérer comme suit :
1. Booter avec la disquette de boot et, à l’invite de LILO, saisir rescue.
2. Quand le système le demande, il faut insérer la disquette « rescue », c’est-à-dire la
disquette root, qui contient le système de fichiers principal. Le noyau Linux crée à
partir de cette disquette un système de fichiers principal en RAM et affiche
l’invite du shell bash, en mode « super user ».

bash #
3. Il suffit ensuite de diagnostiquer et de réparer le système de fichiers du disque dur.
Si les dégâts ne sont pas irrémédiables, on peut espérer récupérer le système de
fichiers. Dans le cas contraire, nous souhaitons à l’administrateur de disposer de
sauvegardes récentes.
L’exemple qui suit suppose que le système de fichiers root est /dev/hda5.

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 7-9
Module 7 : L’arrêt et le démarrage

# mount /dev/hda5 /mnt

Les commandes de la disquette « rescue » :


badblocks, bash, bzip2, cat, chmod, chroot, cp, cpio, dd, e2fsck, fdisk, grep,
gunzip, gzip, head, ifconfig, init, ln, ls, lsmod, mkdir, mke2fs, mknod, mount,
mt, mv, open, pico, ping, ps, restore, rm, route, rpm, sed, sh, swapoff, swapon,
sync, tac, tail, tar, traceroute, umount, vi, vim.
Remarques
• Le document « HOWTO » bootdisk explique en détail la création des disquettes
boot et root. Il donne aussi des conseils pour créer une disquette root
personnalisée, qui contienne les commandes de son choix.
• L’utilitaire rawrite.exe est un équivalent de la commande dd pour DOS et
Windows.

Démarrer avec l’utilitaire LOADLIN


L'utilitaire LOADLIN, fourni avec la distribution RedHat, permet de démarrer le
système depuis DOS, Windows 95 ou Windows 98. Il existe d’autres méthodes
décrites dans le document HOWTO intitulé Linux+Win95. La méthode mise en œuvre
par LOADLIN est intéressante car on peut définir un menu, en mode texte, qui permet
de choisir le système d’exploitation que l’on veut charger.
1. Copier l'utilitaire LOADLIN sur le disque DOS/Windows (C:), avec la commande
dd de Linux ou la commande rawrite sous DOS/Windows.
Les commandes qui suivent réalisent l’opération sous Linux :
# mkdir /doswin
# mount -t vfat /dev/hda1 /doswin
# mount /dev/cdrom /mnt/cdrom
mount: block device /dev/cdrom is write-protected, mounting read-only
# dd if=/mnt/cdrom/dosutils/loadlin.exe of=/doswin/loadlin.exe
62+1 enregistrements lus.
62+1 enregistrements écrits.
2. Copier le noyau Linux sur le disque de Windows.
Monter la partition DOS/Windows (C:) et utiliser la commande cp pour y
copier le noyau. Le nom du fichier, image du noyau, doit respecter les
conventions de Windows, en particulier ne contenir qu’un seul caractère « . ».
# cd /doswin
# mkdir linux
# cp /boot/vmlinuz-2.4.7-10 linux/vmlinuz
3. Configuration de Windows.
Il faut éditer les fichiers de configuration config.sys et autoexec.bat de Windows.
En supposant que la partition Linux (« / ») soit la partition /dev/hda2 et en tenant
compte des opérations effectuées dans les points 1 et 2, les lignes qui suivent
doivent être ajoutées au début du fichier config.sys :
[menu]
menuitem=Win98, démarrage Windows 98
menuitem=Linux, démarrage de Linux

7-10 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 7 : L’arrêt et le démarrage

menucolor=15,1

menudefault=Win98, 15

[linux]
shell=c:\loadlin.exe c:\linux\vmlinuz root=/dev/hda2 ro

[win98]

Il faut également modifier le fichier autoexec.bat en y ajoutant comme premières


lignes :
goto %config%
:win98
4. Il faut ensuite redémarrer l’ordinateur pour obtenir l’écran suivant :
Menu de démarrage de Microsoft Windows 98
1 . démarrage Windows 98
2 . démarrage de Linux

Entrez un choix : 1 Temps restant 15


..
F5=Mode sans échec …

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 7-11
Module 7 : L’arrêt et le démarrage

L’activation des processus : init (1/2)


L’activation des processus : init (1/2)

init
init
(PID=1)
(PID=1)
/etc/inittab

Applications
compatibles
avec le niveau
courant

TSOFT - Linux Administration Module 7 : L’arrêt et le démarrage - 7.4

Principes de fonctionnement
Le système Linux offre plusieurs niveaux de fonctionnement. A chacun d’eux
correspond un certain nombre de services pour les utilisateurs. Le rôle de la
commande init, qui a comme argument le niveau de fonctionnement choisi, est
d’activer tous les processus associés à ce niveau. La commande init trouve la
définition des commandes à exécuter pour un niveau donné dans le fichier /etc/inittab.
On ne peut avoir qu’un seul niveau de fonctionnement actif à la fois.
Une commande peut être associée à plusieurs niveaux. Cela permet de définir des
services qui sont activés pour plusieurs niveaux. Pour le reste, on trouve deux cas de
figure :
• Un niveau en englobe un autre. Il ajoute de nouveaux services à ceux déjà offerts
par le niveau précédent. Le niveau 4 offrira, par exemple, tous les services du
niveau 3 plus un service particulier.
• Un niveau offre des services totalement différents de ceux offerts par les autres
niveaux. Le changement de niveau se traduit alors par une forme complètement
nouvelle de fonctionnement.
Au démarrage du système, lorsque le noyau crée le processus init, il ne spécifie pas de
niveau. C’est le niveau défini par défaut dans inittab qui est choisi.
Si l’on change de niveau de fonctionnement, init envoie le signal SIGTERM (le signal
15 ) à tous les processus qui ne sont pas concernés par le nouveau niveau demandé.
Au bout de cinq secondes, les processus qui ne sont pas terminés reçoivent le signal
SIGKILL (le signal 9) qui, rappelons-le, ne peut pas être intercepté. L’option
« -t Nb_secondes» de la commande init permet de fixer ce « time out ».

7-12 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 7 : L’arrêt et le démarrage

Les niveaux
Il existe onze niveaux définis par les chiffres de 0 à 9, plus le niveau s ou S.
Le tableau qui suit présente leur usage conventionnel.
Niveau Utilisation conventionnelle
0 Le niveau 0 est utilisé pour arrêter le système. La commande shutdown
exécute, en final, le basculement au niveau 0 (init 0).
1 Le niveau 1 est associé au mode maintenance. Dans ce mode, tous les
systèmes de fichiers sont montés mais seul un nombre restreint de services
est démarré. Les utilisateurs ne peuvent pas se connecter. La console
opérateur est disponible pour l’administrateur root.
2 Le niveau 2 est associé au mode multi-utilisateur. Les systèmes de fichiers
sont montés, les services, y compris réseau, sauf NFS, sont démarrés et
autorisent des connexions, via la commande telnet.
3 Le niveau 3 est associé au démarrage des services de partage de fichiers à
distance, tel que « NFS » (« Network File System »). Le niveau 3 est
typiquement un sur ensemble du niveau 2.
4 Le niveau 4, rarement utilisé, est associé à un mode multi-utilisateur
spécifique, propre à un site.
5 Le niveau 5 est associé au mode de connexion graphique, via le démon
xdm.
6 Le niveau 6 est associé à l’arrêt et au redémarrage du système.
s, S Le niveau « s » ou « S », indifféremment, est associé au mode « un seul
utilisateur » (« single user »). Dans ce mode, les systèmes de fichiers des
utilisateurs sont montés mais seuls les processus fondamentaux pour le
bon fonctionnement du système sont démarrés et un shell en mode root est
activé sur la console maîtresse. Le niveau « s » ne requiert pas de fichier
/etc/inittab et n’y est pas référencé.
7,8,9 A définir par l’utilisateur.

Il est possible de passer, à l’invite de LILO, des paramètres au processus init.


Paramètre Signification
s ou single Le processus init démarre le système en mode mono-utilisateur. Il
exécute les scripts rc* avant d’exécuter un shell, en tant que super user,
sur la console maîtresse, sans demander le mot de passe.
1-5 Le processus init démarre le système avec le niveau demandé, de 1 à 5.
b ou Le processus init démarre le système en mode mono-utilisateur sans
emergency exécuter préalablement les scripts rc*.
Exemples
LILO boot : linux emergency
Give root password for maintenance
(or type Control-D for normal startup) : xxxxxxx

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 7-13
Module 7 : L’arrêt et le démarrage

[root@(none)/root]#
LILO boot : linux single
bash #
Il existe aussi des pseudo-niveaux, les niveaux « a », « b » et « c ». Ils permettent de
faire exécuter les commandes qui sont associées à l’un de ces niveaux, en sus de celles
déjà exécutées pour le niveau courant. Ils ne se traduisent pas par un changement de
niveau. Cela permet à l’administrateur de rassembler toutes les commandes dans
/etc/inittab, plutôt que de les activer manuellement.
Remarque
Les processus qui résultent de l’exécution de commandes associées aux pseudo-
niveaux « a », « b » et « c » ne sont pas tués lors d’un véritable changement de niveau.
Il existe aussi le niveau « q » qui, par le biais de la commande init q, demande à init
de relire le fichier /etc/inittab.

7-14 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 7 : L’arrêt et le démarrage

L’activation des processus : init (2/2)


L’activation des processus : init (2/2)

„ Le fichier /etc/inittab
$ more /etc/inittab
si::sysinit:/etc/rc.d/rc.sysinit
l0:0:wait:/etc/rc.d/rc 0
5:2345:respawn:/sbin/mingetty tty5

1 2 3 4
Etiquette Niveaux Action Commande

„ Les commandes
telinit Permet de changer de niveau
runlevel Permet de connaître le niveau courant

TSOFT - Linux Administration Module 7 : L’arrêt et le démarrage - 7.5

Le fichier /etc/inittab
Le fichier /etc/inittab détermine quelles sont les commandes que le processus init doit
exécuter pour un niveau donné. Le processus init l’examine séquentiellement. C’est
un fichier composé de lignes de texte. Chaque ligne est une ligne de commentaires qui
commence par le caractère # où elle définit une commande à exécuter. Une ligne de
commande est composée de quatre champs séparés par le caractère :.
Id : [niveau …]:action:commande [ # commentaire ]
Les champs ont la signification suivante :
Champ Signification
Id Le champ « id » est composé d’au plus quatre caractères et n’a comme
seule utilité que d’identifier la ligne. Il est ignoré par le processus init.
Niveau Le champ « niveau » permet à init de décider si la commande doit être
prise en compte pour le niveau demandé. Il est possible de préciser
plusieurs niveaux. Un champ vide est équivalent à 0123456 (tous les
niveaux sauf « s »). On comprend ainsi comment faire pour qu’un
niveau en englobe un autre. Ajoutons un service, actif pour le niveau 4,
qui s’ajoute à ceux du niveau 3.
1. On édite le fichier /etc/inittab (vi /etc/inittab).
2. On ajoute la ligne spécifique au niveau 4.

Id4:4:----------:----------------------------

3. On modifie toutes les lignes mentionnant le niveau 3, pour y


intégrer le niveau 4.

Avant :

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 7-15
Module 7 : L’arrêt et le démarrage

id31:23:---------:--------------------------
id3:3:----------:----------------------------

Après

id31:234:---------:--------------------------
id3:34:----------:----------------------------

Remarque
L’administrateur est très rarement concerné par la modification des
lignes « tous niveaux », qui sont associées à des commandes
fondamentales dont il ne faut surtout pas modifier la logique
d’exécution.
Action Le champ « action » indique à init le contexte dans lequel la
commande doit être exécutée. Pour chaque cas, il existe deux variantes
possibles, avec ou sans attente. Dans le cas avec attente (« wait »), init
attend que le processus qui exécute la commande soit terminé pour
passer à la ligne suivante. Dans le cas sans attente, init passe à
l’exécution de la ligne suivante du fichier, sans attendre que le
processus en cours soit achevé. Ceci permet de décider d’une exécution
séquentielle (attente) ou parallèle (sans attente) des commandes du
fichier inittab. Les valeurs possibles sont :
sysinit Les lignes dont le champ action est « sysinit » sont
exécutées une seule fois, lors du démarrage à froid du
système. Les lignes en « sysinit » ne tiennent pas compte
des niveaux. Elles sont par nature « tous niveaux » et
exécutent les commandes fondamentales et nécessaires au
bon fonctionnement du système.
boot Les lignes dont le champ action est « boot » sont
exécutées la première fois que l’on active l’un des niveaux
du champ niveau. Elles ne le sont plus ensuite.
Soit la ligne :
Bo23:23:boot:cmd
Le niveau de fonctionnement actuel est 2, la commande
cmd a été exécutée. La commande émise par
l’administrateur est :
# init 3
La ligne est ignorée, le service a déjà été activé lors
du boot en niveau 2.
Avec le champ « boot », le processus init n’attend pas que
le processus soit terminé pour exécuter le reste du fichier
inittab.
bootwait Le principe de fonctionnement est le même que
précédemment mais init attend que l’exécution de la
commande soit terminée pour poursuivre.

7-16 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 7 : L’arrêt et le démarrage

initdefault L’action « initdefault » permet à init de déterminer quand


il est créé par le noyau, le niveau de fonctionnement par
défaut. Cette ligne est la première recherchée avant que
init exécute le fichier. Si la ligne « initdefault » n’existe
pas, init demande à l’utilisateur, sur la console maîtresse,
le niveau de démarrage souhaité.
off La ligne est ignorée.
once La commande est activée à chaque fois que le processus
init exécute inittab et que la ligne est concernée par le
niveau demandé. « once » est la forme sans attente.
wait Le comportement est identique à celui d’une ligne
« once », mais avec attente.
respawn La commande est exécutée une première fois quand init
exécute inittab et que la ligne est concernée par le niveau
demandé. Si le processus généré vient à se terminer avant
que init n’ait eu à relire le fichier inittab, init exécute à
nouveau la commande. Le cas le plus significatif de ligne
avec le champ « respawn » est celui des lignes de la
commande getty qui rend possible la connexion sur un
terminal. Si une telle ligne était « once », il n’y aurait
qu’une seule connexion possible sur le terminal, sauf à
exécuter à nouveau init ou à rebooter le système.
ondemand Le terme « ondemand » est synonyme de respawn. On le
réserve aux pseudo-niveaux « a », « b » et « c ».
Commande Le champ « commande » contient la ligne de commandes à exécuter.
La commande et ses arguments sont désignés par un chemin absolu.
Les commandes, majoritairement des scripts, n’ont pas de terminal de
contrôle quand elles s’exécutent. C’est pourquoi on note les
redirections : cmd < /dev/console > /dev/console 2>&1
qui permettent aux scripts de s’exécuter en dialoguant avec l’opérateur
de la console maîtresse.

Exemple complet de fichier /etc/inittab


#
# inittab This file describes how the INIT process should set up
# the system in a certain run-level.
#
# Author: Miquel van Smoorenburg, miquels@drinkel.nl.mugnet.org
# Modified for RHS Linux by Marc Ewing and Donnie Barnes
#
# Default runlevel. The runlevels used by RHS are:
# 0 - halt (Do NOT set initdefault to this)
# 1 - Single user mode
# 2 - Multiuser, without NFS (The same as 3, if you do not have networking)
# 3 - Full multiuser mode
# 4 – unused
# 5 - X11
# 6 - reboot (Do NOT set initdefault to this)
#
id:3:initdefault:
# System initialization.
si::sysinit:/etc/rc.d/rc.sysinit

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 7-17
Module 7 : L’arrêt et le démarrage

l0:0:wait:/etc/rc.d/rc 0
l1:1:wait:/etc/rc.d/rc 1
l2:2:wait:/etc/rc.d/rc 2
l3:3:wait:/etc/rc.d/rc 3
l4:4:wait:/etc/rc.d/rc 4
l5:5:wait:/etc/rc.d/rc 5
l6:6:wait:/etc/rc.d/rc 6
# Things to run in every runlevel.
ud::once:/sbin/update
# Trap CTRL-ALT-DELETE
ca::ctrlaltdel:/sbin/shutdown -t3 -r now
# When our UPS tells us power has failed, assume we have a few minutes
# of power left. Schedule a shutdown for 2 minutes from now.
# This does, of course, assume you have powerd installed and your
# UPS connected and working correctly.
pf::powerfail:/sbin/shutdown -f -h +2 "Power Failure; System Shutting Down"
# If power was restored before the shutdown kicked in, cancel
it.pr:12345:powerokwait:/sbin/shutdown -c "Power Restored; Shutdown Cancelled"
# Run gettys in standard runlevels
1:12345:respawn:/sbin/mingetty tty1
2:2345:respawn:/sbin/mingetty tty2
3:2345:respawn:/sbin/mingetty tty3
4:2345:respawn:/sbin/mingetty tty4
5:2345:respawn:/sbin/mingetty tty5
6:2345:respawn:/sbin/mingetty tty6
# Run xdm in runlevel 5
x:5:respawn:/usr/bin/X11/xdm -nodaemon

Les commandes
Les commandes sont simples et peu nombreuses :
La commande runlevel affiche le niveau de fonctionnement courant.
La commande init permet de changer de niveau.
# runlevel
53
Remarque
La valeur 5 représente le niveau précédent et la valeur 3 le niveau actuel de
fonctionnement.
# init 2
# init s
# init a
La commande telinit a le même effet.
# telinit 2
# telinit –t 12 s # Le signal SIGKILL est envoyé douze secondes après le signal
# SIGTERM

Remarque
Le changement de niveau est souvent réalisé via une commande, souvent un script, qui
cache à l’administrateur l’exécution de la commande init. Le script shutdown en est
un exemple significatif. Pour exécuter manuellement la commande init,
l’administrateur doit parfaitement maîtriser le contenu du fichier inittab.

7-18 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 7 : L’arrêt et le démarrage

Les scripts de démarrage : /etc/*rc* (1/2)


Les scripts de démarrage : /etc/*rc* (1/2)

„ Vérification des FS (fstat ou e2fsck)


„ Montage des FS (mount -a)
„ Activation des quotas (quotaon)
„ Activation du swap secondaire (swapon)
„ Lancement des démons
z crond gère les travaux périodiques
z lpd gère les impressions
„ Le réseau est activé
z Les cartes réseaux sont activées (ifconfig)
z Le routage est activé (route)
z Les démons réseaux sont lancés (inetd, ...)
TSOFT - Linux Administration Module 7 : L’arrêt et le démarrage - 7.6

La connaissance de la structure du fichier /etc/inittab et de la programmation en shell


est théoriquement suffisante pour qu’un administrateur analyse toutes les opérations
exécutées à partir de ce fichier.
La plupart des commandes exécutées à partir de inittab sont en effet des scripts.
L’administrateur ne modifie que rarement ce fichier mais plutôt les scripts qu’il
déclenche.

Le script rc.sysinit
Le processus init commence d’abord par exécuter le script /etc/rc.d/rc.sysinit qui
contient des commandes de contrôle et d’initialisation indispensables au
fonctionnement de Linux. Les principales opérations sont :
• Initialisation de la variable PATH avec les répertoires /bin, /usr/bin, /sbin et
/usr/sbin.
• Initialisation des disques de « swap ».
• Détermination du nom de la machine, le « hostname ».
• Vérification du système de fichiers principal root et montage du pseudo-système
de fichiers /proc.
• Montage de tous les systèmes de fichiers, à l’exception des systèmes de fichiers
NFS.
• Suppression des fichiers verrous des services « uucp », « X », …
• Initialisation des ports série.
• Chargement des pilotes dynamiques, les modules (cf. Module 11 : Les
périphériques).
• Création du fichier /var/log/dmesg qui contient la configuration du système.

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 7-19
Module 7 : L’arrêt et le démarrage

Les « run commands »


Le processus init exécute ensuite les scripts spécifiques au niveau de démarrage
demandé. C’est, par défaut, le niveau défini par la ligne dont le champ action est
« initdefault ». Il est cependant possible, rappelons-le, de dire à init le niveau demandé
en paramètre de LILO.
Le niveau initial par défaut est le niveau 3. Les principaux démons associés aux
services de base de Linux sont activés au niveau 3 :
• Le démon crond qui gère l’exécution de tâches périodiques.
• Le démon lpd qui gère les impressions.
• Le démon principal du réseau : inetd.
• Le démon sendmail qui gère l’échange de courrier à travers le réseau.
Les scripts activés à partir du fichier /etc/inittab et qui exécutent les opérations
précédentes sont communément appelés des « run commands ». Le préfixe de leur
nom est d’ailleurs « rc ».

Le script rc.local
Le dernier script exécuté par init est le script run commands /etc/rc.d/rc.local, qui est
pratiquement vide. C’est ce script que l’administrateur modifie pour que soient
exécutées des commandes propres au site, tels des démons associés à des logiciels
spécifiques.
Remarque
L’ajout d’un système de fichiers, d’un disque de swap secondaire ou la mise en place
des quotas ne requièrent normalement pas de modification des run commands. Il suffit
de modifier le fichier de montage automatique (cf. Module 4 : Les systèmes de
fichiers).

7-20 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 7 : L’arrêt et le démarrage

Les scripts de démarrage : /etc/*rc* (2/2)


Les scripts de démarrage : /etc/*rc* (2/2)

init
init
/etc/inittab
/etc/rc.d/rc3.d/*

/etc/rc.d/rc
/etc/rc.d/rc33

K20rwhod
K20rwhod S40crond
S40crond S50inet
S50inet S60lpd
S60lpd S80sendmail
S80sendmail

TSOFT - Linux Administration Module 7 : L’arrêt et le démarrage - 7.7

Introduction
Les premiers systèmes UNIX, avant que n’existent les niveaux de fonctionnement et
le fichier inittab, possédaient un seul fichier rc, exécuté directement par init. Le
schéma adopté aujourd’hui dans Linux est simple et la lecture du fichier /etc/inittab
nous renseigne. C’est le script /etc/rc.d/rc qui exécute les actions pour le niveau qui
lui est passé en argument. Ainsi le démarrage du niveau 2 est exécuté par le script
/etc/rc.d/rc appelé de la manière suivante : /etc/rc.d/rc 2.
Le schéma de programme du script rc est simple. Il comporte deux boucles de
programmes. La première déclenche l’exécution des scripts K* du répertoire
/etc/rc.d/rc<n>.d, la seconde celle des scripts S* du même répertoire
/etc/rc.d/rc<n>.d. La lettre « K » signifie « kill » et « S » « start ». Elles ont comme
rôle respectif d’arrêter ou de démarrer un service. Le nombre qui suit la lettre « K » ou
« S » guide l’ordre d’exécution, celui des noms de fichiers générés par le shell par
« K* » ou « S* ». Le suffixe nous fait comprendre le contenu du script.
Le script S40crond démarre le démon crond. Il est clair que le répertoire /etc/rc2.d,
associé au démarrage du système en mode multi-utilisateur, contient essentiellement,
et peut-être uniquement, des scripts Snnxxx, alors que le répertoire /etc/rc0.d, associé
à l’arrêt du système, ne contient que des scripts Knnxxx, à l’exception du script
S00halt.

Exemples
Extraits du script /etc/rc.d/rc
# Is there an rc directory for this new runlevel?
if [ -d /etc/rc.d/rc$runlevel.d ]; then
# First, run the KILL scripts.
for i in /etc/rc.d/rc$runlevel.d/K*; do
# Check if the script is there.
[ ! -f $i ] && continue

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 7-21
Module 7 : L’arrêt et le démarrage

# Check if the subsystem is already up.


subsys=${i#/etc/rc.d/rc$runlevel.d/K??}
[ ! -f /var/lock/subsys/$subsys ] && \
[ ! -f /var/lock/subsys/${subsys}.init ] && continue
# Bring the subsystem down.
$i stop
done
# Now run the START scripts.
for i in /etc/rc.d/rc$runlevel.d/S*; do
# Check if the script is there.
[ ! -f $i ] && continue
# Check if the subsystem is already up.
subsys=${i#/etc/rc.d/rc$runlevel.d/S??}
[ -f /var/lock/subsys/$subsys ] || \
[ -f /var/lock/subsys/${subsys}.init ] && continue
# Bring the subsystem up.
$i start
done
fi
Extrait de la liste des fichiers du répertoire /etc/rc/rc3.d
# ls -l
lrwxrwxrwx 1 root root 16 Sep 23 23:37 K20rstatd -> ../init.d/rstatd
lrwxrwxrwx 1 root root 17 Sep 23 23:37 K20rusersd -> ../init.d/rusersd
lrwxrwxrwx 1 root root 15 Sep 23 23:37 K20rwhod -> ../init.d/rwhod
lrwxrwxrwx 1 root root 16 Sep 23 23:37 K55routed -> ../init.d/routed
lrwxrwxrwx 1 root root 17 avr 26 23:03 S10network -> ../init.d/network
lrwxrwxrwx 1 root root 17 avr 26 23:15 S11portmap -> ../init.d/portmap
lrwxrwxrwx 1 root root 15 avr 26 23:15 S15nfsfs -> ../init.d/nfsfs
lrwxrwxrwx 1 root root 16 avr 26 23:09 S30syslog -> ../init.d/syslog
lrwxrwxrwx 1 root root 15 avr 26 23:10 S40crond -> ../init.d/crond
lrwxrwxrwx 1 root root 13 avr 26 23:05 S60lpd -> ../init.d/lpd
lrwxrwxrwx 1 root root 18 avr 26 23:03 S75keytable -> ../init.d/keytable
lrwxrwxrwx 1 root root 18 avr 26 23:08 S80sendmail -> ../init.d/sendmail

Remarques
La commande chkconfig permet d’automatiser le lancement et l’arrêt des services
utilisateurs (crond, nfsfs, sendmail, ...) en configurant les scripts du répertoire
/etc/rc.d/init.d et en créant les liens symboliques correspondants dans les différents
répertoires /etc/rc.d/rc<n> (cf. man chkconfig).
La commande ntsysv, est une interface conviviale à la commande chkconfig. Elle
permet de réaliser les mêmes opérations à partir d’un menu comportant des cases à
cocher ou à décocher, selon que l’on veut activer ou désactiver un service.

Ajout d’un script S* ou K*


Un administrateur qui veut automatiser le démarrage et l’arrêt d’un nouveau service
n’a pas à modifier le fichier /etc/inittab mais, plus souvent, à intégrer un nouveau
script Snnxxx pour le démarrer et Knnxxx pour l’arrêter dans les répertoires rc<n>.d
associés aux niveaux de démarrage et d’arrêt du service (généralement 3 et 0).
Deux stratégies sont possibles :
1. Ecrire un script Snnxxx qui démarre le service dans le répertoire /etc/rc.d/rc3.d et
un script Knnxxx qui l’arrête, dans le répertoire /etc/rc.d/rc0.d, en choisissant le

7-22 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 7 : L’arrêt et le démarrage

nombre « nn » pour qu’ils soient exécutés en bonne place, c’est-à-dire en dernier


pour le script Snnxxx.
2. Si l’administrateur est expérimenté dans la programmation en shell, il est
préférable de garder la logique utilisée pour les scripts K* et S* déjà existants.
Dans le script rc, la commande d’exécution d’un script K* comporte l’argument
« stop » et la commande d’exécution d’un script S* comporte l’argument « start ».
Ce fait, surprenant au premier abord car les noms semblent suffisants pour
discriminer les scripts, s’explique simplement. Les noms des scripts K* et S* se
rapportent à un même service, « rpc » par exemple. Ce sont des liens symboliques
qui renvoient à un seul et même script situé dans le répertoire /etc/rc.d/init.d. Ce
script comporte un aiguillage (case in) de traitement du « start » et du « stop ».
Pour ajouter le service, l’administrateur doit créer un script mondemon dans le
répertoire /etc/rc.d/init.d, qui effectue l’arrêt et le démarrage du service selon qu’il
est appelé avec l’argument start ou stop et créer les liens symboliques
K<nn>mondemon et S<nn>mondemon respectivement dans tous les répertoires
rc<n>.d où le service associé à mondemon doit être arrêté ou démarré. Cette
solution est avantageuse car le script du service n’existe qu’en un seul exemplaire,
ce qui est fondamental pour gérer les modifications ultérieures.
Remarque
Le script K<nn>mondemon n’est exécuté que si le fichier
/var/lock/subsys/mondemon existe. Ce fichier est normalement créé par le script
S<nn>mondemon.

Extraits des répertoires /etc/rc.d/init.d, /etc/rc.d/rc3.d et


/etc/rc.d/rc0.d
-rwxr-xr-x 1 root root 883 jun 13 1998 /etc/rc.d/init.d/crond
lrwxrwxrwx 1 root root 15 avr 26 23:15 /etc/rc.d/rc3.d/S40crond ->
../init.d/crond
lrwxrwxrwx 1 root root 15 avr 26 23:10 /etc/rc.d/rc0.d/K60crond ->
../init.d/crond

Remarque
Quand l’administrateur veut arrêter ou démarrer manuellement un service, crond par
exemple, en saisissant une ligne de commande et être certain de ne pas oublier
d’exécuter des opérations, il peut exécuter la ligne de commande suivante :

# /etc/rc.d/init.d/crond start # démarrage


# /etc/rc.d/init.d/crond stop # arrêt

Extrait du script lpd du répertoire /etc/rc.d/init.d


# config: /etc/printcap
# Source function library.
. /etc/rc.d/init.d/functions
# Source networking configuration.
. /etc/sysconfig/network
# Check that networking is up.
[ ${NETWORKING} = "no" ] && exit 0
[ -f /usr/sbin/lpd ] || exit 0
[ -f /etc/printcap ] || exit 0
# See how we were called.
case "$1" in
start)

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 7-23
Module 7 : L’arrêt et le démarrage

# Start daemons.
echo -n "Starting lpd: "
daemon lpd
echo
touch /var/lock/subsys/lpd ;;
stop)
# Stop daemons.
echo -n "Shutting down lpd: "
killproc lpd
echo
rm -f /var/lock/subsys/lpd ;;
esac

La commande chkconfig
La commande chkconfig est un moyen simple pour définir les niveaux pour lesquels
un service doit être démarré ou arrêté.
Elle permet de visualiser, d’ajouter ou de retirer un service pour un ou plusieurs
niveaux de fonctionnement.
Syntaxe
Sa syntaxe est la suivante :
Afficher les services et le mode arrêt ou démarrage selon les niveaux.
chkconfig --list [service]
Ajouter un service.
chkconfig --add service
Retirer un service.
chkconfig --del service
Positionner le mode arrêt ou démarrage selon les niveaux indiqués.
chkconfig [--level niveaux] service <on|off|reset>
Exemples
Nous prenons comme exemple le service autofs. La configuration actuelle est :
Contenu du répertoire /etc/rc/d/init.d pour le service autofs.
# ls au*
autofs
Recherche des liens pour démarrer ou arrêter le service.
# find .. -name '*auto*'
../init.d/autofs
../rc0.d/K82autofs
../rc1.d/K82autofs
../rc2.d/K82autofs
../rc3.d/S18autofs
../rc4.d/S18autofs
../rc5.d/S18autofs
../rc6.d/K82autofs
Visualisation, via chkconfig.

7-24 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 7 : L’arrêt et le démarrage

# chkconfig --list autofs


autofs 0:Arrêt 1:Arrêt 2:Arrêt 3:Marche 4:Marche 5:Marche
6:Arrêt
Retrait du service.
# chkconfig --del autofs
# ls autofs
autofs
# find .. -name '*auto*' # Les liens ont été supprimés
../init.d/autofs
On ajoute le service.
# chkconfig --add autofs
# find .. -name '*auto*'
../init.d/autofs
../rc0.d/K82autofs
../rc1.d/K82autofs
../rc2.d/K82autofs
../rc3.d/S18autofs
../rc4.d/S18autofs
../rc5.d/S18autofs
../rc6.d/K82autofs
# chkconfig --list autofs
autofs 0:Arrêt 1:Arrêt 2:Arrêt 3:Marche 4:Marche 5:Marche
6:Arrêt
On invalide le démarrage pour les niveaux 4 et 5.
# chkconfig --level 45 autofs off
# chkconfig --list autofs
autofs 0:Arrêt 1:Arrêt 2:Arrêt 3:Marche 4:Arrêt 5:Arrêt 6:Arrêt

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 7-25
Module 7 : L’arrêt et le démarrage

Les sessions
Les sessions

init
init /etc/inittab

getty
getty getty
getty
tty0 tty1
/etc/gettydefs
login
login login
login

/etc/passwd
/etc/bashrc
sh
sh bash
bash

~/.profile /etc/profile ~/.bash_profile ~/.bashrc

TSOFT - Linux Administration Module 7 : L’arrêt et le démarrage - 7.8

Principes
La commande getty affiche l’invite de connexion « login : » sur les terminaux passifs
connectés par une liaison filaire asynchrone, multiplexée ou non.
Le processus qui l’exécute est créé par init, via le fichier /etc/inittab avec un champ
action à « respawn ».
Dans la pratique, on rencontre de moins en moins de terminaux de type texte
connectés ainsi au système Linux. Les connexions se font essentiellement à partir d’un
poste client, connecté sur le réseau, et fonctionnant en émulation terminal.
Cependant, Linux offre douze consoles virtuelles, accessibles sur la console maîtresse
de l’ordinateur. Pour gérer ces consoles virtuelles, Linux utilise la commande
mingetty, qui est une commande getty allégée. Il est possible d'ouvrir une session de
travail par console virtuelle. La commutation d’une console virtuelle à une autre se fait
par la combinaison de touches <ALT> <F1> pour la première, <ALT> <F2> pour la
deuxième, et ainsi de suite.
# grep getty /etc/inittab
# Run gettys in standard runlevels
1:12345:respawn:/sbin/mingetty tty1
2:2345:respawn:/sbin/mingetty tty2
3:2345:respawn:/sbin/mingetty tty3

Remarques
• Sur les douze consoles virtuelles possibles, six seulement sont activées par le
fichier /etc/inittab. Pour en activer d’autres, il suffit de compléter ce fichier en
ajoutant des lignes construites sur le même modèle que celles déjà définies.
• A partir d’une session graphique, il faut utiliser la touche <CTRL> en plus des
touches <ALT> <Fnuméro> pour basculer sur une des consoles virtuelles. Ainsi,

7-26 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 7 : L’arrêt et le démarrage

la combinaison <CTRL> <ALT> <F1> bascule sur la console virtuelle numéro


un. Le retour à la session graphique se fait de la même manière <CTRL>
<ALT><Fn>.

getty, mingetty
La commande getty peut prendre en charge la gestion d’un terminal connecté sur le
port série. Elle requiert alors deux arguments : l’identification de la liaison sur laquelle
est connecté le terminal (le port de connexion) et la clé d’entrée dans le fichier
/etc/getttydefs pour paramétrer la liaison. La clé est souvent l’expression de la vitesse
de la liaison en bits par seconde.
Une ligne du fichier /etc/gettydefs est composée de champs séparés par le caractère #.
Sa structure est la suivante :
Clé d’entrée # paramètres initiaux # paramètres finaux # invite # clé suite
avant la connexion après la connexion
Les paramètres initiaux et finaux sont constitués d’identificateurs, séparés par des
espaces, qui définissent les caractéristiques de la liaison, telles que la vitesse, la parité,
etc.
Ces identificateurs sont présentés dans la documentation de la commande stty ou dans
la présentation des principes de gestion des terminaux (man stty, man 3 termios).
La clé « clé suite » renvoie à une autre entrée de /etc/gettydefs, qui sera utilisée par la
commande getty, pour tenter un autre paramétrage, au cas où celui-ci ne
fonctionnerait pas. Cette fonctionnalité est utile dans le cas d’une liaison par modem
pour chaîner les clés des différentes possibilités de fonctionnement du modem.
La commande mingetty utilise l'entrée suivante du fichier /etc/gettydefs :
# 38400 fixed baud Dumb Terminal entry
DT38400# B38400 CS8 CLOCAL CRTSCTS # B38400 SANE -ISTRIP CLOCAL
CRTSCTS #@S login: #DT38400
Paramètre Signification
B38400 La vitesse de la ligne.
CLOCAL Désactive le signal de commande de modem.
CRTSCTS Active le protocole RTS/CTS.
-ISTRIP N'efface pas le huitième bit des caractères en entrée.
SANE Positionne ou inhibe d’autres drapeaux standard (cf. man stty).
@S Désigne le nom réseau de la machine (« Hostaname ») (cf. man
getty).

Remarque
Les connexions réalisées sur un réseau TCP/IP, via l’émulation de terminal « telnet »,
ne sont pas concernées par la commande getty. Le démon principal du réseau inetd
crée, à chaque demande de connexion via telnet, un démon serveur, telnetd, qui alloue
un pseudo-terminal pour la session. Le processus telnetd est le père du processus qui
exécute le shell et il prend fin en même temps que la session, donc du shell.

Les étapes de la connexion


Quand l’utilisateur, en réponse à l’invite de connexion « login : » saisit un nom, le
processus qui réalise la commande getty exécute la commande login qui valide ou

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 7-27
Module 7 : L’arrêt et le démarrage

rejette la demande de connexion en saisissant le mot de passe de l’utilisateur et en


examinant ensuite le fichier /etc/passwd. La commande getty et la commande login
sont exécutées par le même processus.
La commande login échoue si l’administrateur a créé le fichier /etc/nologin. Le
contenu du fichier est affiché sur l’écran de l’utilisateur et la connexion ne se fait pas,
à l’exception de root. L’administrateur peut paramétrer la connexion des utilisateurs
pour améliorer la sécurité de connexion de son système (cf : Module 17 : La sécurité).
Nous renvoyons l’administrateur au manuel de référence « man login » pour apprécier
l’étendue des possibilités.
En cas de validation, le processus exécute la commande, en général un shell, associée
à l’utilisateur par le dernier champ du fichier /etc/passwd.
Le shell bash, activé sous le nom de commande /bin/sh (le shell standard de l’ISO)
exécute le fichier /etc/profile et, s’il existe, le fichier ~/.profile de l’utilisateur qui se
connecte.
Le shell exécute à son tour le fichier /etc/profile puis, s’il existe, le fichier
.bash_profile de l’utilisateur (~/.profile). Dans le cas du shell bash, il peut exécuter en
sus le fichier ~/.bashrc. Pour les autres shells, consultez le manuel UNIX shell.
Le processus qui exécute le shell est toujours celui qui exécutait les commandes getty
et login. Le père du shell est donc le processus init (PID=1). L’exécution de la
commande ps l permet de s’en convaincre. Quand le shell se termine, init crée un
nouveau processus qui exécute à nouveau la commande getty pour cette liaison.

7-28 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 7 : L’arrêt et le démarrage

Le fichier /etc/termcap
Le fichier /etc/termcap

TERM=vt100 sh
sh
export TERM TERM=vt100
TERM=vt100
~/.bash_profile <ESC>[2J

vi
vi
TERM=vt100
TERM=vt100
/etc/termcap

TSOFT - Linux Administration Module 7 : L’arrêt et le démarrage - 7.9

Le fichier /etc/termcap décrit les séquences de contrôle des attributs de la vidéo de la


quasi-totalité des terminaux de type texte existants. Ces séquences de contrôle
consistent en une suite de caractères qui, lorsqu’ils sont reçus par le moniteur,
génèrent des actions telles que le déplacement du curseur, le passage en vidéo inverse,
en surbrillance ou en caractère gras. Comme le premier caractère de la séquence est
souvent le caractère « Escape », elles sont souvent appelées les « Escape sequence ».
Le contenu du fichier /etc/termcap est peu facile à lire. Un terminal y est décrit sur
plusieurs lignes. Comme souvent dans Linux, la présence du caractère « \ » en fin de
ligne indique que la ligne suivante contient la suite de la description, ici du terminal.
Le rôle de l’administrateur se borne bien souvent à vérifier que les terminaux ou les
modes d’émulation de son système sont bien définis dans le fichier. Le cas d’un
terminal exotique qui ne serait pas décrit dans le fichier /etc/termcap serait vraiment
une curiosité du monde informatique.

Un terminal du fichier /etc/termcap


Les lignes qui suivent donnent le début de la description du terminal vt100. La
première ligne donne le nom du terminal et ses synonymes, séparés par le caractère
« | ». Les lignes suivantes décrivent les séquences de contrôle. Les séquences sont
séparées les unes des autres par le caractère « : ».
vt100|vt100-am|dec vt100 (w/advanced video):\
:am:ms:xn:xo:\
:co#80:it#8:li#24:vt#3:\
:@8=\EOM:DO=\E[%dB:K1=\EOq:K2=\EOr:K3=\EOs:K4=\EOp:\
:K5=\EOn:LE=\E[%dD:RA=\E[?7l:RI=\E[%dC:SA=\E[?7h:\
:UP=\E[%dA:\

Principe de fonctionnement
Le programme qui a besoin d’utiliser les séquences de contrôle d’un terminal doit
trouver son nom dans la variable d’environnement TERM.

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 7-29
Module 7 : L’arrêt et le démarrage

L’alternative terminfo
La base de données, connue sous le nom de terminfo, représente une alternative
efficace au fichier /etc/termcap. L’accès à la définition des séquences de contrôle d’un
terminal par un programme se fait toujours grâce à la variable TERM. Il est plus
rapide car il existe un fichier par terminal. Pour améliorer encore les temps d’accès, le
format du fichier est binaire. C’est la commande tic qui fabrique la base de données de
termcap.
La base de données terminfo est située dans le répertoire /usr/share/terminfo. Elle
consiste en un ensemble de répertoires nommés « a », « b » ... Le répertoire « v »
contient les fichiers de tous les terminaux dont le nom commence par « v ». Le nom
du fichier est celui du terminal qu’il décrit, vt100 par exemple.
Une commande utilise /etc/termcap ou la base de données terminfo selon le choix
réalisé par le programmeur. Ce n’est pas l’utilisateur qui en décide.

7-30 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 7 : L’arrêt et le démarrage

L’arrêt du système : shutdown


L’arrêt du système : shutdown

„ Les utilisateurs sont prévenus de l’arrêt du système


„ Les applications sont arrêtées proprement
(grâce à un signal ou une commande ad hoc)
„ Les sessions des utilisateurs sont stoppées
„ L’intégrité des FS est assurée (umount, sync)
„ En fonction des options, le système :
z Passe en mode mono-utilisateur
z Est arrêté
z Est redémarré

TSOFT - Linux Administration Module 7 : L’arrêt et le démarrage - 7.10

Principes
L’arrêt du système est réalisé par la commande shutdown qui, toutes les cinq minutes,
avertit les utilisateurs de l’arrêt imminent du système et, pour terminer, bascule le
système UNIX dans le niveau de fonctionnement 0 pour un arrêt définitif du système.
Mis à part l’apprentissage des options de la commande shutdown, le paramétrage de
l’arrêt du système nous renvoie directement au fonctionnement du processus init et à
la lecture des scripts /etc/rc.d/rc0.d/*, qui s’inscrit complètement dans la logique des
scripts rc<n>.
On exécute les scripts du répertoire /etc/rc.d/rc0.d, c’est-à-dire les scripts du répertoire
/etc/rc.d/init.d avec l’argument stop, à l’exception du script S00halt qui est appelé
avec l’argument start.

La commande shutdown BSD


Syntaxe
shutdown [-h] époque [message]
shutdown [ -t secondes] –r époque [message]
shutdown –c
L’option « -h » déclenche l’arrêt effectif du système, arrêt qui peut être suivi de la
mise hors tension de l’ordinateur.
L’option « -r » arrête et redémarre immédiatement le système. On parle de « reboot ».
Si la commande est exécutée sans que soit mentionnée l’une des deux options « h » ou
« r », le système bascule en mode maintenance. Rappelons que ce mode est un mode
mono-utilisateur dans lequel tous les systèmes de fichiers sont montés, sauf ceux de
type NFS.

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 7-31
Module 7 : L’arrêt et le démarrage

L’administrateur peut fournir à la commande shutdown un message optionnel. Ce


message est affiché en sus des messages standard de la commande.
L’époque de l’arrêt du système peut être exprimée de plusieurs façons :
A telle heure hh:mm exemple : 03:25 pour 3h25.
Dans n minutes +minutes exemple : +5 pour dans cinq minutes
Maintenant now (équivalent à +0)
En cas de changement de niveau, l’option « -t » indique à init le nombre de secondes à
attendre avant d’envoyer aux processus le signal de terminaison (15).
L’arrêt du système en cours d’exécution peut être interrompu par l’exécution de la
commande :
# shutdown –c

La commande shutdown AT&T


Linux autorise maintenant la syntaxe issue des systèmes AT&T.
Syntaxe
shutdown [ -g délai] [-y] [-i niveau]
Le délai associé à l’option « -g » exprime, en secondes, la durée avant l’arrêt du
système. L’option « -y » signifie que l’on répond oui à toutes les questions posées par
la commande shutdown. Le niveau associé à l’option « -i » donne le niveau de
redémarrage du système. Ce niveau est par défaut 0, soit l’arrêt complet du système.
La frappe des touches <CTRL><ALT><SUPPR> provoque l’exécution de la
commande shutdown –r now. Il est heureusement possible de modifier ou d’interdire
cette action en modifiant la ligne de commande shutdown présente dans le fichier
/etc/inittab.
# Trap CTRL-ALT-DEL
ca::ctrlaltdel:/sbin/shutdown -t3 -r now
L’arrêt du système par la frappe des touches <CTRL><ALT><SUPPR> peut être
limité aux seuls utilisateurs dont le nom figure dans le fichier /etc/shutdown.allow et
qui sont connectés depuis l’un des terminaux virtuels de la console opérateur.
# cat /etc/shutdown.allow # pierre est autorisé
pierre
Remarque
La commande halt est équivalente à la commande shutdown –h now.
La commande reboot est équivalente à la commande shutdown –r now.

Exemples
Arrêt immédiat.
# shutdown -h now
The system is going DOWN for system halt NOW !!
# shutdown –g0 -y
Arrêt dans 15 minutes
# shutdown -h +15
Broadcast message from root (ttyp1) Fri May 14 09:01:45 1999...

7-32 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 7 : L’arrêt et le démarrage

The system is going DOWN for system halt in 15 minutes !!


Basculement en mode maintenance pour une sauvegarde.
# shutdown +5 "Arrêt pour sauvegarde"
Broadcast message from root (ttyp1) Fri May 14 09:10:07 1999...
Arrêt pour sauvegarde.
The system is going DOWN to maintenance mode in 5 minutes !!
Arrêt et redémarrage dans 10 minutes.
# shutdown -r 10
Broadcast message from root (ttyp1) Fri May 15 19:01:45 1999...
The system is going DOWN for reboot in 10 minutes !!

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 7-33
Module 7 : L’arrêt et le démarrage

Atelier 7 : L’arrêt et le démarrage


Atelier 7 : L’arrêt et le démarrage

Objectifs :
„ Comprendre le démarrage de son
système
„ Savoir modifier le démarrage en
modifiant /etc/inittab et les scripts
/etc/*rc*
„ Savoir arrêter le système avec
shutdown
Durée : 60 minutes.

TSOFT - Linux Administration Module 7 : L’arrêt et le démarrage - 7.11

Remarque préalable
Les exercices n°8, 9, 11, 12 et 15 peuvent être regroupés pour minimiser les arrêts et
les redémarrages.

Exercice n°1
L’utilisation de la commande lilo est-elle dangereuse ? Pourquoi ?

Exercice n°2
Modifiez l’exemple du fichier lilo.conf pour permettre l’activation du noyau
/boot/linux.old.

Exercice n°3
Créez une disquette de démarrage qui active le noyau courant dans la partition Linux
qui réside sur /dev/hda2 et démarre, par défaut, au bout de 10 secondes, un système
Windows sur /dev/hda1.

Exercice n°4
Quel est le niveau de fonctionnement actuel pour init ?

7-34 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 7 : L’arrêt et le démarrage

Exercice n°5
A quoi correspond le niveau 5 d’init ?
Vérifiez en l’utilisant comme niveau initial de démarrage.

Exercice n°6
Quels sont les scripts qui sont activés au niveau 2 d’init ?

Exercice n°7
Quelles différences existent, sur votre système Linux, entre les niveaux 2 et 3 ?

Exercice n°8
Dans le fichier inittab, ajoutez une application qui enregistre la date dans le fichier
/home/pierre/date.log et qui est lancée dans le niveau usuel (le niveau 3). Réalisez un
arrêt et un redémarrage pour tester la commande.

Exercice n°9
Sans supprimer la ligne ajoutée dans l’exercice n°5, désactivez la commande.

Exercice n°10
Quel est le script de démarrage du niveau 3 qui active le démon crond ?

Exercice n°11
Créez un script qui écrit le résultat de la commande ps dans le fichier
/home/pierre/ps.log. Ce script doit s’exécuter au démarrage au niveau 3. Réalisez un
arrêt et un redémarrage pour tester la commande.

Exercice n°12
Provoquez l’arrêt complet du système dans trois minutes avec l’affichage du message
« arrêt pour maintenance ». Eteignez le système et ensuite remettez-le sous tension,
lisez les messages qui s’affichent.

Exercice n°13
Visualisez les messages affichés lors du dernier démarrage.

Exercice n°14
Passez en mode maintenance (niveau S), modifiez la date et l’heure système et
revenez au mode multi-utilisateur (niveau 3).

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 7-35
Module 7 : L’arrêt et le démarrage

Exercice n°15
Ecrivez un script qui enregistre la date à la fin du fichier /home/pierre/arret. Ce script
doit être activé automatiquement à chaque arrêt du système. Réalisez un arrêt et un
redémarrage pour tester la commande.

Exercice n°16
Faites en sorte que l’utilisateur pierre possède la commande vi comme application
gérant sa session : vi remplacera son shell de connexion et à chaque démarrage vi sera
activé, la sortie de vi entraînera la fin de la session. Testez et reconfigurez la session
dans l’état antérieur.

Exercice n°17
Générez et testez un jeu de disquettes de récupération (« rescue ») à partir de votre
CD-ROM. Testez ce jeu en montant le système de fichiers root actuel sur le répertoire
/mnt du système de fichiers généré en mémoire (après redémarrage).

Exercice n°18
Créez un nouveau mode d’exploitation, associé à l’un des niveaux 7, 8 et 9, qui active
un shell d’administration sur la console maîtresse (sans saisie du mot de passe). Testez
ce nouveau mode.

7-36 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 8 : L’impression

• spool d’impression
• Le démon lpd
• Les commandes lpr,
lpq, lprm
• La commande de
gestion des
imprimantes lpc

8Module 8 : L’impression
Objectifs
Après la lecture de ce module, le lecteur sait administrer les files d’attente
d’impression. Le principe des imprimantes déportées lui a été présenté.

Contenu
Les files d’attente d’impression (les spools)
Les commandes lpr, lpq, lprm, lpc, lpd.

Références
HOWTO : Config-HOWTO, Printing-HOWTO, Printing-Usage-HOWTO,
Hardware-HOWTO, LPRng-HOWTO
Le manuel : printcap(5), lpd(8)
Livres : Running linux, Network printing

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 8-1
Module 8 : L’impression

Les spools d’impression


Les spools d’impression
/etc/hosts.equiv SPOOL sp1
/etc/hosts.lpd
spool distant

cfxx dfxx lpd


lpd
lpr
lpr SPOOL sp2
Le démon
d’impression

c’est une
cfxx dfxx
imprimante
qui imprime

lpd
lpd

/dev/lp1

TSOFT - Linux Administration Module 8 : L’impression - 8.2

Introduction
Le système Linux a adopté le service d’impression du système UNIX BSD, plus
connu sous la dénomination « LPD » (« Line Printer Daemon »), acronyme du démon
d’impression de ce service.
Le service LPD, basé sur les protocoles TCP/IP, fonctionne selon le modèle
client-serveur. En tant que serveur, il peut exécuter des requêtes d’impression émises
localement ou venant d’un client distant. En tant que client, il peut diriger les requêtes
émises localement vers un serveur LPD distant. Le serveur distant n’est pas
nécessairement un système Linux. Cela peut être un autre système UNIX, un serveur
Windows NT ou une imprimante connectée directement sur le réseau.
A chaque imprimante, désignée par son nom de fichier spécial périphérique
/dev/lp<n>, sont associées une ou plusieurs files d’attente, souvent une, dans
lesquelles sont mémorisées les requêtes d’impression des utilisateurs, émises via la
commande lpr. La file d’attente constitue le « spool ». Dans le cas d’une impression
déportée, la file d’attente locale est associée à une file distante d’un hôte distant.
C’est au moment du dépôt de la requête par la commande lpr (cf. Les commandes
d’impression) que l’utilisateur désigne, avec l’option « -P nom_de_lafile_d_attente »,
la file d’attente d’impression, en fait un répertoire situé généralement dans le
répertoire /var/spool/lpd.
Les utilisateurs n’ont pas à connaître le fichier spécial périphérique de l’imprimante
ou, dans le cas d’une impression déportée, l’adresse IP du serveur d’impression. Le
nom de la file d’attente sélectionnée suffit, pour les utilisateurs, à identifier le support
d’impression.

8-2 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 8 : L’impression

Le démon lpd
Le démon lpd est exécuté par le script S60lpd lors du démarrage du système (cf.
Module 7 : L’arrêt et le démarrage). Le démon lpd lit alors le fichier /etc/printcap
afin de connaître les imprimantes installées.
Remarque
Comme lpd est un service TCP/IP qui fonctionne en client-serveur, il exécute les
appels système de l’API « socket » (cf. Module 15 : Le réseau) accept(2) et listen(2),
pour prendre en compte les requêtes des utilisateurs.
Le démon lpd fait exécuter les requêtes d’impression d’une file d’attente, un spool,
par un processus fils. Le fichier lock du spool concerné prévient la création de
plusieurs processus fils pour le même spool. Ce fichier contient le PID du processus
fils lpd et le nom du fichier de contrôle de la requête en cours de traitement. On trouve
aussi un deuxième fichier, status, qui décrit l'état de l'imprimante.
# cd /var/spool/lpd
# cat epson/lock
391
cfA001Aa00390
# cat epson/status
epson is ready and printing
# cat hp6/status
waiting for hp6 to become ready (offline ?)

Le fonctionnement du service lpd


Le mécanisme de fonctionnement du service d’impression de Linux, bien que
complexe, est normalement transparent à l’administrateur et, a fortiori, aux
utilisateurs. En cas de problème, il peut cependant être utile de connaître la suite des
opérations qui conduisent du dépôt d’une requête à son exécution.
1. L’utilisateur dépose une requête d’impression grâce à la commande lpr.
2. La commande lpr consulte le fichier /etc/printcap pour préparer le travail (« job »)
d’impression selon les caractéristiques des formats d’impression de la file
d’attente sélectionnée (taille du papier, police, …), puis copie dans le répertoire du
« spool » deux fichiers :
• Un fichier de contrôle de nom cfxx où « cf » signifie « Control File » et « xx »
est l’identificateur de la requête. Dans les informations du fichier de contrôle,
figurent le nom de l’utilisateur qui a déposé la requête et le nom du fichier à
imprimer. Chaque ligne commence par un caractère de contrôle qui identifie
l’information donnée sur le reste de la ligne. Voici quelques caractères de
contrôle des fichiers cfXX :
J « Job », le nom du fichier à imprimer.
P « Person », le nom de l’utilisateur qui a déposé la requête.
H « Host », le nom de l’hôte émetteur.
N Le nom du fichier à imprimer.
U Le nom du fichier dfXX à supprimer en fin d'impression.
• Un fichier de données de nom dfxx où « df » signifie « Data File » et « xx »
est l’identificateur de la requête. Ce fichier est la copie du fichier à imprimer.
3. La commande lpr signale au démon lpd le dépôt d’une nouvelle requête. Le
démon vérifie que l’hôte qui a émis la requête est défini dans le fichier
/etc/hosts.equiv ou /etc/host.lpd. Dans la négative, le démon lpd rejette la requête.

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 8-3
Module 8 : L’impression

Remarques
Le fichier /etc/hosts.lpd contient le nom de tous les ordinateurs clients autorisés à
imprimer. On met un nom d’ordinateur par ligne. Le fichier /etc/hosts.equiv est un
fichier qui est utilisé pour autoriser des clients d’autres services que le service TCP/IP
(cf. Module 15 : Le réseau).

4. Dans le cas où la file d’attente est attachée à une imprimante locale, le démon lpd,
sur la base des informations du fichier /etc/printcap, fait exécuter les requêtes en
attente par un processus fils. Ce fils est créé, si besoin est. Il en existe un par file
d’attente. Dans le cas d’une file attachée à une file d’attente distante, le démon lpd
initie une connexion TCP sur le serveur distant, transfère les fichiers cfxx et dfxx
dans le spool distant et notifie au démon lpd distant l’arrivée de la requête. Il
supprime localement les fichiers cfxx et dfxx.
Remarque
Le service lpd est défini par l’X/OPEN dans le guide de programmation XPG4 et dans
le RFC 1179.

Autres services d’impression


Les systèmes d’impression actuels doivent prendre en compte l’impression en réseau,
supporter les nouveaux protocoles et les systèmes d’impression non UNIX.
Deux systèmes du monde libre s’imposent actuellement :
- CUPS (« Common UNIX Printing System »).
- LPRng (« LPR new generation ») qui dérive du système BSD.
Ces deux systèmes s’interfacent avec le logiciel libre Samba et permettent ainsi
l’impression venant de ou destinée à un système Windows (cf. Références Internet).

8-4 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 8 : L’impression

Les commandes d’impression


Les impressions déportées

f2
lpr
lpr f2 f1

f1
lpq
lpq
f2

lprm
lprm f2 f1

TSOFT - Linux Administration Module 8 : L’impression - 8.3

La commande lpr
La commande lpr permet de déposer une requête d’impression dans un spool.
Rappelons que la commande lpr crée deux fichiers dans le répertoire de spool (cf. Le
fonctionnement de lpd) : le fichier de contrôle, nommé cfxx (« Control File xx ») et un
fichier de données, nommé dfxx (« Data File xx »).
Une fois ces fichiers créés, lpr envoie un signal au démon lpd, qui lance alors un autre
démon lpd, pour traiter cette requête ; ce dernier restera actif jusqu’à ce qu’il n’y ait
plus de requêtes dans cette file d'attente.
Si, depuis la machine locale, le service lpd n’est pas accessible (l’appel système
connect retourne en erreur), lpr affiche le mesage :
lpr: connect: Connexion refusée.
jobs queued, but cannot start daemon.
Syntaxe
lpr [-Pprinter] [-#num] [-mrs] [name ...]
Les lignes qui suivent mentionnent les principales options de la commande lpr. Nous
renvoyons le lecteur au manuel de la commande pour trouver la liste exhaustive des
possibilités.
-P imp Impression sur le spool imp au lieu du spool par défaut. La
variable d'environnement PRINTER définit sinon la file d’attente par
défaut.
-m L’utilisateur est prévenu par un message envoyé par mail en fin
d’impression.
-r Le fichier à imprimer est détruit en fin d'impression.

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 8-5
Module 8 : L’impression

-s Plutôt que de réaliser une copie du fichier dans le spool, la commande


lpr crée un lien symbolique.
-# nb Imprime le fichier en « nb » exemplaires.
Exemples
# lpr –P epson /etc/services
request id is 6
# ls /usr/spool/lpd/epson
cfA000Aa00426
dfA000Aa00426
Extrait du fichier cfxxx résultant de la commande précédente.
# cat /usr/spool/lpd/epson/cfA000Aa00426
Hlocalhost.localdomain
Proot
Jservices
Clocalhost.localdomain
Lroot
UdfA000Aa00426
N/etc/services

La commande lpq
La commande lpq affiche des informations sur le spool.
Syntaxe
lpq [-l] [-P imp] [Numéro_de_job ...] [Nom_utilisateur ...]
-P imp Spécifie le spool imp au lieu du spool par défaut. La
variable d'environnement PRINTER définit sinon la file d’attente
par défaut.
-l Affiche des informations détaillées.
Numéro_de_job Indique le numéro de la requête pour laquelle on veut
des informations.
Nom_utilisateur Indique le nom de l’utilisateur pour lequel on veut
des informations.
Exemples
# lpq
printing disabled
Rank Owner Job Files Total Size
1st pierre 25 .bash_profile 220 bytes
1st cathy 21 /etc/hosts 43 bytes
2nd cathy 22 /etc/group 395 bytes
3rd pierre 23 /etc/passwd 676 bytes
4th pierre 24 /etc/services 4534 bytes
5th root 26 /etc/profile 516 bytes
# lpq -P hp6
no entries
# lpq -P hplanman
hplanman is ready and printing
Rank Owner Job Files Total Size
active root 0 /etc/passwd 676 bytes

8-6 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 8 : L’impression

La commande lprm
La commande lprm permet de détruire des requêtes d'impression.
Syntaxe
lprm [-P imp] [-] [Numéro_de_job ... ] [Nom_utilisateur ...]
-P imp Supprime sur le spool imp au lieu du spool par défaut. La
variable d'environnement PRINTER définit sinon la file d’attente
par défaut.
- Détruit toutes les requêtes de l’utilisateur. Dans le cas de root,
détruit toutes les requêtes du spool.
Numéro_de_job Indique le numéro de la requête à supprimer.
Nom_utilisateur Indique le nom de l’utilisateur pour lequel on veut
supprimer toutes les requêtes.

Remarque
La commande lprm commence par tuer le démon lpd qui prend en charge
l’impression des requêtes du spool avant de détruire une requête. Le démon associé au
spool est ensuite exécuté.

Exemples
Détruit la requête 26.
# lprm 26
dfA026Aa01215 dequeued
cfA026Aa01215 dequeued
Affiche les requêtes du spool par défaut.
# lpq
printing disabled
Rank Owner Job Files Total Size
1st pierre 25 bash_profile 220 bytes
1st cathy 21 /etc/hosts 43 bytes
2nd cathy 22 /etc/group 395 bytes
3rd pierre 23 /etc/passwd 676 bytes
4th pierre 24 /etc/services 4534 bytes
Détruit toutes les requêtes de pierre.
# lprm pierre
dfA023Aa00993 dequeued
cfA023Aa00993 dequeued
dfA024Aa00995 dequeued
cfA024Aa00995 dequeued
dfA025Aa00997 dequeued
cfA025Aa00997 dequeued
# lpq
printing disabled
Rank Owner Job Files Total Size
1st cathy 21 /etc/hosts 43 bytes
2nd cathy 22 /etc/group 395 bytes

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 8-7
Module 8 : L’impression

La gestion du service d’impression


La gestion du service d ’impression

„ /etc/printcap Fichier de configuration de toutes les


imprimantes
„ printtool Outil qui fonctionne en mode graphique
pour configurer le service
d’impression
„ lpc Commande de gestion des spools :
- Autorise ou interdit l’impression des
requêtes
- Autorise ou interdit le dépôt des
requêtes
- Affiche la configuration courante

TSOFT - Linux Administration Module 8 : L’impression - 8.4

Le fichier /etc/printcap
Le fichier /etc/printcap contient la description de toutes les imprimantes accessibles
depuis la machine. Ce fichier peut être modifié manuellement mais il est fortement
conseillé d’agir sur lui indirectement, via la commande lpc ou l’outil printtool.
La structure du fichier est similaire à celle du fichier /etc/termcap. La description
d’une imprimante est constituée de champs séparés les uns des autres par le caractère
« : ». La description d’une imprimante est constituée d’une seule ligne logique répartie
sur plusieurs lignes physiques du fichier. Le caractère « \ », quand il est en fin de
ligne, est le caractère de suite. Il indique que la description se poursuit sur la ligne
suivante du fichier. Les commentaires sont définis par le caractère « # ». Le premier
champ définit tous les synonymes qui désignent l’imprimante. Ils sont séparés par le
caractère « | » .
Le nom réservé lp désigne l’imprimante par défaut. Un utilisateur peut définir sa
propre imprimante par défaut via la variable d’environnement PRINTER.
Les paramètres de description sont composés de deux caractères aux formats suivants :
XX Le paramètre XX est booléen, vrai si présent, faux si absent.
XX=chaîne Le paramètre XX prend comme valeur la chaîne de caractères « chaîne ».
XX#nombre Le paramètre XX a la valeur numérique « nombre ».
Les principaux paramètres sont :
Nom Type Description
sd chaîne « Spool Directory », définit le répertoire de la file d'attente.
lf chaîne « Log File », définit le fichier « log » des erreurs.
af chaîne « Acounting File », définit le fichier comptable.
mx numérique Taille du plus gros fichier. La valeur 0 indique une taille
illimitée.

8-8 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 8 : L’impression

sh booléen Supprime l’impression de l’en-tête (« Suppress Header »).


lp chaîne Nom du périphérique auquel l’imprimante (« line Printer »)
est attachée.
rm chaîne « Remote », nom d’hôte d’une imprimante distante.
rp chaîne « Remote Printer », nom de la file d’attente distante.
rs booléen. « Restricted », restreint le service aux utilisateurs distants
possédant un compte local.
if chaîne « Input Filter », désigne le filtre d’entrée.
of chaîne « Output Filter », désigne le filtre de sortie.
Exemple
#
# This printcap is being created with printtool v.3.27
# Any changes made here manually will be lost if printtool
# is run later on.
# The presence of this header means that no printcap
# existed when printtool was run.
#
##PRINTTOOL3## LOCAL laserjet 300x300 letter {} LaserJet Default {}
hp6|Serveur Linux :\
:sd=/var/spool/lpd/hp6:\
:mx#0:\
:sh:\
:lp=/dev/lp1:\
:if=/var/spool/lpd/hp6/filter:
##PRINTTOOL3## REMOTE laserjet 300x300 letter {} LaserJet Default {}
epson|Salle de formation:\
:sd=/var/spool/lpd/epson:\
:mx#0:\
:sh:\
:rm=petunia:\
:rp=epson:\
:if=/var/spool/lpd/epson/filter:
##PRINTTOOL3## SMB laserjet 300x300 letter {} LaserJet Default {}
hplanman|Imprimante 3eme étage:\
:sd=/var/spool/lpd/hplanman:\
:mx#0:\
:sh:\
:if=/var/spool/lpd/hplanman/filter:\
:af=/var/spool/lpd/hplanman/acct:\
:lp=/dev/null:
##PRINTTOOL3## LOCAL TEXT NAxNA letter {} TextPrinter Default {}
ficdisk|fichier /home/imp/ficdisk:\
:sd=/var/spool/lpd/ficdisk:\
:mx#0:\
:sh:\
:lp=/home/imp/ficdisk:\
:if=/var/spool/lpd/ficdisk/filter:

Lors de la suppression d’une imprimante, l’outil printtool retire l’imprimante du


fichier /etc/printcap, mais ne supprime pas le répertoire du spool.

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 8-9
Module 8 : L’impression

L'administrateur doit alors supprimer ce répertoire manuellement avec la commande


suivante :
rm -rf /usr/spool/lpd/nom_de_file_d_attente.

L’outil printtool
L’outil graphique /usr/bin/printtool est un script TCL exécuté par le shell wish
(Windowing shell).
Cet outil est accessible à travers les menus de KDE ou GNOME. Il peut aussi être
exécuté comme commande dans un terminal exécuté sur le bureau.
Les informations à fournir lors de la création d'un spool sont :
• Le type de file d’attente : locale ou distante.
• Le nom de la file d’attente, souvent le nom de l’imprimante.
• Le répertoire de la file d’attente, par défaut /var/spool/lpd/nom_de_file_d_attente.
• Le port physique, dans le cas d'une imprimante locale, par défaut /dev/lp0 (cf.
Module 11 : Les périphériques).
• Le nom de la machine distante et le nom de la file d'attente distante dans le cas
d'une imprimante déportée.
• Le nom du filtre spécifique à chaque type d’imprimante. C’est lui qui met les
données à imprimer dans un format compréhensible par l’imprimante.
• Les paramètres de mise en page : taille du papier, impression noire ou couleur, ...
Notons, en particulier, la case « send EOF after job to eject page ? » que certaines
imprimantes obligent à cocher pour éjecter la dernière page imprimée.

Remarques
Les imprimantes déportées peuvent être d’une autre catégorie que celle associée au
service lpd. Linux supporte aussi des imprimantes distantes d'autres systèmes
d'exploitation. On trouve comme possibilités :
Les imprimantes Lan Manager, utilisant le protocole SMB (« Server Messages
Block ») du système Windows NT (cf. Module 15 : Le réseau - Samba).
Les imprimantes Netware de Novell, utilisant le protocole NCP (« Netware Core
Protocol »).
Dans les deux cas, il faudra fournir un nom d’utilisateur et un mot de passe, définis sur
la machine distante, et le mot de passe est enregistré en clair dans un fichier !!!

La commande lpc
La commande lpc permet de gérer les spools, d’afficher des informations sur le
service, d’activer ou de désactiver un spool, de le purger, d’arrêter ou de démarrer le
démon lpd.
Syntaxe
lpc [commande [argument] ...]
En l’absence de commande, lpc affiche un prompt et passe en mode interactif.

8-10 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 8 : L’impression

Dans le tableau qui suit, le terme « imp » désigne le nom de la file d’attente sur
laquelle lpc doit opérer. L’attribut « all » permet d’agir sur toutes les files d’attente.
Les principales commandes sont :
Commande Description
status imp Affiche des informations sur le spool imp.
abort imp | all Arrête l’impression en cours et remet le job dans le spool.
clean imp | all Supprime toutes les requêtes.
disable imp | all Désactive la mise en file d’attente. Le dépôt de requêtes par la
commande lpr n’est plus possible.
down imp message Arrête une imprimante et écrit le message « message » dans le
fichier status du répertoire de spool imp. Ce message est
affiché sur l’écran des utilisateurs qui tentent de déposer des
requêtes sur cette file d’attente.
enable imp | all Active la mise en file d'attente. Le dépôt de requêtes par la
commande lpr est possible.
start imp Lance le démon d'impression du spool imp. Cette commande
démarre l’impression des requêtes en attente.
stop imp Arrête le démon du spool imp. Les requêtes déposées restent
bloquées en file d’attente..
restart imp | all Redémarre le démon (souvent après une fin anormale).
topq imp numreq Place la requête numreq en début de file d’attente.
topq imp user Place les requêtes de l’utilisateur « user » en début de la file
d’attente.
up imp Redémarre une imprimante arrêtée par down.
exit Quitte le programme lpc.
help Affiche de l’aide.
help commande Affiche de l’aide sur la commande.
Exemples de gestion du spool avec la commande lpc
# lpq
lp is ready and printing
Rank Owner Job Files Total Size
active cathy 21 /etc/hosts 43 bytes
1st cathy 22 /etc/group 395 bytes
2nd pierre 23 /etc/passwd 676 bytes
3rd pierre 24 /etc/services 4534 bytes
4th pierre 25 .bash_profile 220 bytes
5th root 26 /etc/profile 516 bytes
# lpc
lpc> help Commands may be abbreviated. Commands are:
abort enable disable help restart status topq ?
disable hp6
hp6:
queuing disabled
lpc> stop hp6

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 8-11
Module 8 : L’impression

hp6:
printing disabled
lpc> status hp6
hp6:
queuing is disabled
printing is disabled
no entries
no daemon present
lpc>
lpc> enable hp6
hp6:
queuing enabled
lpc> start hp6
hp6:
printing enabled
daemon started
lpc> status hp6
hp6:
queuing is enabled
printing is enabled
no entries
no daemon present
lpc> topq epson 25
epson:
moved cfA025Aa00997
lpc>q
# lpq
lp is ready and printing
Rank Owner Job Files Total Size
1st pierre 25 .bash_profile 220 bytes
1st cathy 21 /etc/hosts 43 bytes
2nd cathy 22 /etc/group 395 bytes
3rd pierre 23 /etc/passwd 676 bytes
4th pierre 24 /etc/services 4534 bytes
5th root 26 /etc/profile 516 bytes

8-12 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 8 : L’impression

Atelier 8 : L’impression
Atelier 8 : L’impression

Objectif :
„ Savoir ajouter et configurer un spool
d’impression

Durée : 15 minutes.

TSOFT - Linux Administration Module 8 : L’impression - 8.5

Exercice n°1
Quelles sont les différentes files d’attente d’impression (spool) définies sur votre
système ?

Exercice n°2
Est-ce que le démon gérant le multi-spooler d’impression est actif ?

Exercice n°3
Ajoutez une file d’attente d’impression associée au fichier disque /home/pierre/imp.
Réalisez quelques impressions sur cette file, à fin de tests.

Exercice n°4
Quelles sont les commandes gérant l’impression sur votre système ?

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 8-13
Module 9 : Les disques

• Disques IDE, SCSI,


• Système de fichiers,
swap.
• Disque RAID, « striped
disk »,
• /dev/hda, /dev/sda,…
• Partition primaire,
partition étendue

9Module 9
Les disques
Objectifs
Après la lecture de ce module, le lecteur sait la définition et toutes les utilisations
possibles d’un disque au sens du système Linux.

Contenu
Les disques
Ajout d’un disque
Les disques RAID
Les striped disks
Le swap
Les partitions

Références
HOWTO : Linux-Partition mini HOWTO, Bootdisk-HOWTO, Large-Disk-HOWTO,
Multi-Disk-HOWTO, Software-RAID-HOWTO, LVM-HOWTO,
Swap-Space mini HOWTO, Hard-Disk-Upgrade mini HOWTO,
SCSI-HOWTO, SCSI-Programming-HOWTO, Root-RAID-HOWTO,
Partition-Rescue-mini-HOWTO
Le manuel : hdparm(8), scsi_info(8), fdisk(8), lvm(8), mkraid(8), mkswap(8)

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 9-1
Module 9 : Les disques

Les disques physiques


Les disques physiques

Les
Lesdisques
disquesIDE
IDE

Port primaire Port secondaire

Maître Esclave Maître Esclave

Les
Lesdisques
disquesSCSI
SCSI

CDROM DAT

Id. 7 Id. 0 Id. 4 Id. 5

TSOFT - Linux Administration Module 9 : Les disques - 9.2

Le contrôleur de disque dur des premiers PC se trouvait sur une carte d’extension. La
plus célèbre des interfaces utilisées alors se nommait ST-506. On ne pouvait installer
qu’un seul contrôleur de ce type. Il pilotait, au plus, deux disques durs avec un taux de
transfert relativement modeste.
Une nouvelle interface, l’ESDI (« Enhanced Small Device Interface ») est ensuite
apparue. Elle apportait de meilleures vitesses de transfert et de plus grandes capacités
de stockage. Le manque de compatibilité entre les disques et les contrôleurs ESDI,
parfois du même constructeur, a grandement contribué à en limiter la durée de vie.

L’interface IDE
Avec l’interface IDE (« Integrated Device Electronics »), chaque lecteur de disque
possède son propre contrôleur. La première spécification de l’interface IDE apparut
sous la dénomination ATA (« AT-Attachment »), nom officiel de la technologie IDE.
Il décrit le protocole de connexion des disques durs à un PC (AT désignant le PC de
l’époque). Un contrôleur IDE permet de piloter deux disques durs, un maître et un
esclave. Le contrôleur IDE est souvent intégré à la carte mère de l’ordinateur.
La norme IDE a connu une première évolution, ATA-2, plus communément connue
sous le nom de EIDE (« Extended Integrated Device Electronics » ). Elle définit des
vitesses de transfert plus élevées et permet principalement au contrôleur de piloter
jusqu’à quatre disques. Le contrôleur dispose de deux ports IDE, le port principal et le
port secondaire, qui supportent chacun un disque maître et un disque esclave.
La deuxième évolution, la plus connue, est désignée par le terme ATAPI (« ATA
Pocket Interface »). Elle décrit la connexion des CD-ROMs et des lecteurs de
cartouches DAT (« Digital Audio Tape ») à un PC.
Comme il existe plusieurs types de disques IDE, il est nécessaire de faire reconnaître
le disque par le BIOS de son PC. Le BIOS (« Basic Input Output System ») mémorise
la configuration matérielle de l’ordinateur. Pour qu’un disque soit reconnu du BIOS, il
faut renseigner la géométrie du disque : nombre de têtes de lecture et d’écriture,

9-2 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 9 : Les disques

nombre de cylindres, nombre de pistes par cylindre et nombre de secteurs par piste.
Les BIOS proposent une option de reconnaissance automatique.
Le lecteur de disque IDE doit être matériellement configuré pour être en accord avec
sa position de maître ou d’esclave piloté par le port principal ou le port secondaire.
Cette configuration se fait, sur le disque dur, avec des cavaliers, petits commutateurs
enfichés sur des broches.

L’interface SCSI
L’interface SCSI (« Small Computer System Interface ») est une interface déjà
ancienne qui ne fut portée que tardivement sur les PC.
Cette interface permet de connecter plusieurs périphériques différents, principalement
des disques durs, des lecteurs de CD-ROM et des lecteurs de bandes. Le premier
périphérique est connecté au contrôleur SCSI et les suivants sont reliés les uns aux
autres et forment ainsi une chaîne SCSI, dont le contrôleur est le premier maillon. On
doit activer un « terminateur SCSI » sur le dernier périphérique (cf. Documentation de
votre carte SCSI).
Chaque élément de la chaîne SCSI, y compris la carte contrôleur, est identifié par un
numéro, qu’on appelle l’identificateur (Id) SCSI. Ces identificateurs sont assignés par
le BIOS de la carte SCSI (cf. Documentation de votre carte SCSI).
Remarques
• Un lecteur SCSI n’a pas besoin d’être connu par le BIOS de l’ordinateur. Il est
entièrement géré par le BIOS spécifique du contrôleur SCSI.
• Le standard SCSI a évolué afin d’intégrer plus de périphériques et d’augmenter les
taux de transfert. On trouve ainsi les standards SCSI-2 et Wide SCSI.

Les commandes et les fichiers de gestion des disques


hdparm(8) Donne des informations et paramètre les disques IDE.
scsi_info(8) Donne des informations sur les disques SCSI.
fdisk(8) Gère le partitionnement des disques (cf. Les disques d’UNIX et de
Linux).
badblocks(8) Recherche les blocs endommagés d’une partition. La liste générée peut
être exploitée par la commande fsck.
fdformat(1) Formate, mais de bas niveau, une disquette.
dd(1) Permet de sauvegarder des disques ou des partitions (cf. Module 5 : La
sauvegarde).
/proc/ide/ Le répertoire qui contient les fichiers de description des disques IDE.
/proc/scsi/ Le répertoire qui contient les fichiers de description des périphériques
SCSI.
/proc/scsi/scsi Le fichier qui liste les périphériques SCSI.

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 9-3
Module 9 : Les disques

Les disques d’UNIX et de Linux


Les disques d’UNIX et de Linux

Partition /dev/hda2
de 20 000 blocs

Un
volume Utilisation
Utilisation::
physique ••FS
FS
••swap
swap
••Disque
Disquedédié
dédié

TSOFT - Linux Administration Module 9 : Les disques - 9.3

Les disques d’un système UNIX


La forme d’un disque UNIX est variable selon les systèmes, suivant qu’ils sont vus
physiquement ou logiquement. Quoi qu’il en soit, un disque d’un système UNIX peut
toujours être défini comme un ensemble de blocs logiquement contigus et accessibles
par deux noms définis dans le répertoire /dev du système de fichiers principal. Le
premier le désigne comme périphérique de type bloc, le second de type caractère.
Suivant le nom utilisé, la nature des échanges, et donc des écritures de données entre
le module de gestion de fichiers du noyau (le disque est vu comme un fichier) et le
pilote du disque, est en mode caractère ou en mode bloc. On utilise alors des buffers
du noyau pour procéder aux échanges.
La question du choix du nom, donc du mode de transfert, ne se pose en réalité que
dans un nombre très limité de cas. La grande majorité des commandes impose
l’utilisation du nom en mode bloc ou en mode caractère, selon leur vision du disque.
Les commandes de formatage utilisent le nom en mode caractère et les commandes de
gestion des systèmes de fichiers le nom en mode bloc. La commande tar est un cas où
le choix est laissé d’utiliser l’un ou l’autre. On utilisera le nom en mode caractère si, à
l’instar d’une bande magnétique, on souhaite définir sa propre taille de bloc et un
facteur de blocage. De plus, les écritures de données fournies par l’application sont
synchrones puisque l’on n’utilise pas les buffers du noyau.
Il existe deux approches pour nommer les disques :
1. Les noms sont directement définis dans le répertoire /dev. Les noms sont alors
/dev/disque pour un disque en mode bloc et /dev/rdisque pour le même disque en
mode caractère.
2. Les noms des disques en mode bloc sont définis dans le répertoire /dev/dsk et les
noms des disques en mode caractère sont définis dans le répertoire /dev/rdsk. Dans
les deux répertoires les noms qui désignent un même disque sont alors identiques :
/dev/dsk/disque et /dev/rdsk/disque.

9-4 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 9 : Les disques

Un disque UNIX peut avoir trois utilisations :


1. Contenir un système de fichiers.
2. Etre utilisé comme disque de swap.
3. Etre utilisé directement par un logiciel. Les gestionnaires de bases de données
savent utiliser des disques de cette manière. Les tables de la base de données ne
sont plus visibles dans l’arborescence. Leur gestion relève exclusivement du
logiciel.
C’est d’ailleurs le cas des commandes de sauvegarde, telles tar ou cpio, quand
elles sauvegardent des fichiers sur un disque.

Les disques d’un système Linux


Dans le système Linux, les disques sont aussi des fichiers spéciaux dont les noms sont
définis dans le répertoire /dev.
A la différence des autres systèmes UNIX, leurs noms n’existent qu’en mode bloc. On
ne peut donc pas parler de « raw device », au sens traditionnel du terme, même si les
applications peuvent utiliser des disques qui leur sont dédiés.
Les noms des disques Linux
Les noms des disques IDE sont de la forme /dev/hdx, où x est une lettre comprise entre
a et h et qui désigne le lecteur de disque. Ainsi, /dev/hda désigne le premier lecteur de
disque IDE, /dev/hdb le second et ainsi de suite.
Les noms des disques SCSI sont de la forme /dev/sdx, où x est une lettre comprise
entre a et h et qui désigne le lecteur de disque. De la même manière que les disques
IDE, /dev/sda désigne le premier disque SCSI, /dev/sdb le second et ainsi de suite.
# ls /dev/hd?
brw-rw---- 1 root disk 3, 0 mai 5 1998 /dev/hda
brw-rw---- 1 root disk 3, 64 mai 5 1998 /dev/hdb
brw-rw---- 1 root disk 22, 0 mai 5 1998 /dev/hdc

# ls /dev/sd?
brw-rw---- 1 root disk 8, 0 mai 5 1998 /dev/sda
brw-rw---- 1 root disk 8, 16 mai 5 1998 /dev/sdb
brw-rw---- 1 root disk 8, 32 mai 5 1998 /dev/sdc

Les partitions dans le système Linux
Un disque IDE peut comporter jusqu’à soixante-trois partitions alors qu’un disque
SCSI ne peut en comporter qu’au plus seize.
Les noms des partitions des disques IDE ou SCSI sont de la forme /dev/hdxn ou
/dev/sdxn, où x et n désignent respectivement le lecteur et le numéro de la partition.
# ls -C /dev/hda*
/dev/hda /dev/hda11 /dev/hda14 /dev/hda2 /dev/hda5 /dev/hda8
/dev/hda1 /dev/hda12 /dev/hda15 /dev/hda3 /dev/hda6 /dev/hda9
/dev/hda10 /dev/hda13 /dev/hda16 /dev/hda4 /dev/hda7
# ls -C /dev/sda*
/dev/sda /dev/sda11 /dev/sda14 /dev/sda3 /dev/sda6 /dev/sda9
/dev/sda1 /dev/sda12 /dev/sda15 /dev/sda4 /dev/sda7 /dev/sda10
/dev/sda13 /dev/sda2 /dev/sda5 /dev/sda8

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 9-5
Module 9 : Les disques

Création d’un disque en RAM (« ramdisk »)


Le paramètre de configuration de lilo, ramdisk, permet de créer un disque en RAM
(cf. Module 7 : L’arrêt et le démarrage). On peut ensuite utiliser ce disque virtuel
grâce aux nom de disques /dev/ram*. L’exemple qui suit montre comment on peut
associer un tel disque au système de fichiers /tmp.
# cat /etc/lilo.conf
prompt
timeout=50
...
image=/boot/vmlinuz-2.4.7-10
label=linux1

ramdisk=60
# ls -l /dev/ram*
lrwxrwxrwx 1 root root 4 jan 3 17:15 /dev/ram -> ram1
brw-rw---- 1 root disk 1, 0 aoû 30 22:30 /dev/ram0
brw-rw---- 1 root disk 1, 1 aoû 30 22:30 /dev/ram1
brw-rw---- 1 root disk 1, 2 aoû 30 22:30 /dev/ram2
...
lrwxrwxrwx 1 root root 4 jan 3 17:15 /dev/ramdisk -> ram0
# mke2fs /dev/ram
Filesystem label=

# mount /dev/ram /tmp
# mount
/dev/hda7 on / type ext2 (rw)
...
/dev/ram on /tmp type ext2 (rw)
# df /tmp
Filesystem 1k-blocks Used Available Use% Mounted on
/dev/ram 19362 13 18349 1% /tmp
Le partitionnement
Le disque d’un PC ne peut compter que quatre partitions physiques, limitation due à la
taille de la table des partitions située dans le premier secteur du disque (cf. Module 7 :
L’arrêt et le démarrage).
Pour dépasser cette limitation, les systèmes d’exploitation ont introduit le concept de
partition étendue. Il est possible de créer trois partitions physiques principales qui
correspondent à des partitions du système d’exploitation Linux et une partition
physique, dite étendue, dans laquelle le système d’exploitation Linux peut créer autant
de partitions logiques supplémentaires que nécessaire.
Les partitions /dev/hda1, /dev/hda2, /dev/hda3 et /dev/hda4 désignent les quatre
partitions physiques du premier lecteur IDE. Les partitions /dev/hda5 et les suivantes
sont des partitions logiques créées dans la partition physique étendue.

Panorama des commandes de partitionnement


fdisk La commande interactive de partitionnement, en mode
commande.
cfdisk La commande de partitionnement qui fonctionne avec des menus

9-6 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 9 : Les disques

en mode texte.
sfdisk Une commande de partitionnement proche de fdisk. Les
commandes de partionnement sont passées en argument et les
données sont lues sur l’entrée standard. Cette commande est utile
quand elle est utilisée dans un script.
drakConf Outil graphique de Mandrake qui permet le partitionnement.
fips Outil rudimentaire pour redimensionner les partitions Windows
(cf. Module 10 : Installation de Linux).
partition-magic Outil commercial qui permet de redimensionner les partitions sans
perte de données.
gnu-parted Outil du monde libre qui permet de redimensionner les partitions
sans pertes de données.

La commande fdisk
La commande fdisk, bien connue des utilisateurs de PC, permet de gérer le
partitionnement d’un disque.
Syntaxe
fdisk [Nom_du_lecteur]
En l’absence du nom du lecteur, la commande fdisk utilise le premier lecteur IDE
/dev/hda. L’utilisateur dispose de plusieurs commandes dont les principales sont
résumées dans le tableau qui suit :
Commandes Description
p Affiche la liste des partitions. La commande fdisk –l est équivalente.
m Affiche la liste des commandes.
n Ajout d’une nouvelle partition. Il faut en préciser le type primaire ou
logique, le cylindre de début et la taille que l’on peut exprimer en
méga-octets.
a Définit la partition de boot. La commande a active ou désactive la
partition concernée comme partition de boot selon qu’elle l’était déjà
ou pas.
d Supprime une partition.
l Affiche la liste des types de partitions reconnues par Linux (Linux
native, swap, FAT, …).
t Attribue un type à une partition, tel que défini précédemment (Linux
native, swap, …).
w Enregistre les modifications et quitte.
q Quitte sans enregistrer les modifications.
Exemples
# fdisk
Using /dev/hda as default device!
Command (m for help): p
Disk /dev/hda: 255 heads, 63 sectors, 524 cylinders
Units = cylinders of 16065 * 512 bytes
Device Boot Start End Blocks Id System

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 9-7
Module 9 : Les disques

/dev/hda1 * 1 319 2562336 b Win95 FAT32


/dev/hda2 320 524 1646662+ 5 Extended
/dev/hda5 320 447 1028128+ 83 Linux native
/dev/hda6 448 452 40131 82 Linux swap
Command (m for help): m
Command action
a toggle a bootable flag
b edit bsd disklabel
c toggle the dos compatibility flag
d delete a partition
l list known partition types
m print this menu
n add a new partition
o create a new empty DOS partition table
p print the partition table
q quit without saving changes
t change a partition's system id
u change display/entry units
v verify the partition table
w write table to disk and exit
x extra functionality (experts only)

Command (m for help): n


Command action
l logical (5 or over)
p primary partition (1-4)
l
First cylinder (453-524): 453
Last cylinder or +size or +sizeM or +sizeK ([453]-524): +200M
Command (m for help): p
Disk /dev/hda: 255 heads, 63 sectors, 524 cylinders
Units = cylinders of 16065 * 512 bytes
Device Boot Start End Blocks Id System
/dev/hda1 * 1 319 2562336 b Win95 FAT32
/dev/hda2 320 524 1646662+ 5 Extended
/dev/hda5 320 447 1028128+ 83 Linux native
/dev/hda6 448 452 40131 82 Linux swap
/dev/hda7 453 478 208813+ 83 Linux native
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
Re-read table failed with error 16: Périphérique ou ressource occupé..
Reboot your system to ensure the partition table is updated.
WARNING: If you have created or modified any DOS 6.x
partitions, please see the fdisk manual page for additional
information.

9-8 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 9 : Les disques

La commande cfdisk
La commande cfdisk (« curses fdsik ») est une alternative, plus simple d’emploi, à la
commande fdisk. Elle fonctionne avec des menus déroulants. Pour répondre à la
curiosité de son nom, il faut se souvenir que la bibliothèque curses est la bibliothèque
standard du système UNIX, pour développer des programmes semi-graphiques pour
des terminaux de type texte. Elle fonctionne donc avec telnet.
Exemple
# cfdisk

cfdisk 0.8l
Disk Drive: /dev/hda
Heads: 255 Sectors per Track: 63 Cylinders: 524
Name Flags Part Type FS Type [Label] Size (MB)
--------------------------------------------------------------------------------
hda1 Boot Primary Win95 FAT32 2502.32
hda5 Logical Linux ext2 1004.07
hda6 Logical Linux Swap 39.23
hda7 Logical Linux 203.96
Pri/Log Free Space 360.84
[ Help ] [ New ] [ Print ] [ Quit ] [ Units ] [ Write ]
Create a new logical partition

[Primary] [Logical] [Cancel ]


Size (in MB): 360.84

cfdisk 0.8l
Disk Drive: /dev/hda
Heads: 255 Sectors per Track: 63 Cylinders: 524
Name Flags Part Type FS Type [Label] Size (MB)
--------------------------------------------------------------------------------
hda1 Boot Primary Win95 FAT32 2502.32
hda5 Logical Linux ext2 1004.07
hda6 Logical Linux Swap 39.23
hda7 Logical Linux 203.96
hda8 Logical Linux 360.84
[Bootable] [ Delete ] [ Help ] [Maximize] [ Print ] [ Quit ] [ Type ] [
Units ] [ Write ]

Write partition table to disk (this might destroy data)


Are you sure you want write the partition table to disk? (yes or no): yes
Warning!! This may destroy data on your disk!

Wrote partition table, but re-read table failed. Reboot to update table.

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 9-9
Module 9 : Les disques

Ajout d’un disque


Ajout d’un disque

„ Connecter physiquement le disque


„ Ajouter, si nécessaire, le pilote du disque au noyau
„ Formater le disque
„ Définir les partitions (au moins une)
„ Créer les fichiers spéciaux
„ Créer un FS par partition (utilisation courante)
„ Réaliser le montage automatique des FS

TSOFT - Linux Administration Module 9 : Les disques - 9.4

L’ajout d’un disque à un ordinateur fonctionnant sous Linux comporte plusieurs


opérations dont certaines dépendent de l’utilisation attendue du disque.

Opérations de base
1) Installez physiquement le nouveau disque. Cette procédure est différente selon
que le disque est de type IDE ou SCSI.
Cas d’un disque IDE
Branchez le disque sur le port primaire ou sur le port secondaire du contrôleur
IDE. Selon que, sur ce port, le disque est unique ou pas, vous devrez positionner
un cavalier pour indiquer s’il est unique (« single »), maître (« master ») ou
esclave « slave »). Ce choix dépend des périphériques déjà installés pour ce port
et de leur propre configuration. Nous invitons vivement le lecteur à consulter la
documentation de son ordinateur ou à contacter l’assistance technique du
fabricant.
Demandez au BIOS de procéder à la reconnaissance automatique du nouveau
disque. Pour exécuter le programme « setup » du BIOS, il faut appuyer sur la
touche mentionnée pendant le démarrage de votre PC, souvent « Suppr ». Il suffit
ensuite de naviguer dans les menus du « setup » et d’exécuter la commande de
détection, normalement l’option « IDE HDD AUTO DETECTION ». Pensez à
vérifier que la géométrie du disque, telle que détectée par le BIOS, est bien celle
du disque.
Cas d’un disque SCSI
Si vous installez également la carte SCSI dans votre ordinateur, il faut, au
préalable, installer le pilote SCSI de la carte (cf. Module 12 : Le noyau). Si le
nouveau disque est le dernier élément de la chaîne SCSI, il faut également activer
son terminateur, grâce à un cavalier présent sur le disque.

9-10 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 9 : Les disques

Remarque
Le disque SCSI n’a pas à être reconnu par le BIOS du PC. Il est entièrement géré
par le BIOS SCSI de la carte. Linux voit le disque exactement comme le voit le
BIOS SCSI de la carte.
2) Formatez et partitionnez le disque. Pour cela, on utilise la commande fdsik ou sa
variante cfdisk, afin de créer des partitions qui pourront être utilisées comme
partitions de « swap » secondaires, des systèmes de fichiers additionnels ou bien
dédiées à des logiciels.
3) Créez éventuellement des fichiers spéciaux pour le disque nouvellement installé.
Cette opération n’est exécutée que dans des cas très particuliers. Le programme
d’installation de Linux a en effet créé, dans le répertoire /dev, les noms pour les
huit premiers disques. Si cette opération doit être réalisée, il faut utiliser la
commande mknod (cf . Module 11 : Les périphériques).

Opérations spécifiques
L’usage le plus fréquent d’un disque, souvenons-nous qu’une partition est un disque,
est de contenir un système de fichiers. L’administrateur doit alors créer un système de
fichiers sur ce disque et automatiser son montage (cf. Module 4 : Les systèmes de
fichiers).
L’administrateur peut aussi décider d’utiliser le disque comme disque de « swap ».
Quand c’est un disque dédié à une application, c’est évidemment elle qui prend en
charge les opérations d’initialisation.

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 9-11
Module 9 : Les disques

Les disques RAID


Les disques RAID

Ordinateur sous
Disque RAID
UNIX, NT, Netware, ...

SCSI

Principaux
Principauxniveaux
niveauxde
deRAID
RAID: :
0:0: Fusion
Fusion
1:1: Miroir
Miroir
3:3: Fusion
Fusionavec
avecparité
parité
5:5: Fusion
Fusion avecparité
avec paritérépartie
répartiesur
surles
lesdisques
disques

TSOFT - Linux Administration Module 9 : Les disques - 9.5

Disques en miroir
La technique des disques en miroir consiste à dupliquer l’écriture des données sur
plusieurs disques, typiquement deux, pour se prémunir contre la perte de données en
cas de défaillance d’un disque. Les disques en miroir sont gérés par le logiciel ou par
le matériel, la seconde technique étant la plus efficace.

Bandes de données (« data striping », « striped disk »)


La technique des bandes de données (« data striping ») consiste à découper les
données à écrire sur disque en une suite de segments séquentiels, logiquement
contigus et qui peuvent résider sur plusieurs disques physiques distincts. L’ensemble
des segments d’une bande constitue en fait un disque logique (« striped disk »). Une
solution, plus élaborée, consiste à disposer d’une bande spécifique de parité, calculée à
partir des données des autres bandes. La bande de parité permet de reconstituer une
bande de données défaillante.

Disques RAID
La mise en œuvre des disques en miroir et des bandes de parité se fait le plus souvent
grâce à l’utilisation de disques conformes aux spécifications « RAID » (« Redundant
Arrays of Independant Disks »). On parle en fait de disques RAID. Ils trouvent leur
origine dans un projet de recherche sur les systèmes à tolérance de panne, mené par
l’université de Berkeley en Californie.
Il existe plusieurs spécifications de disques RAID, connues sous les appellations
RAID 0, RAID 1, RAID 2, RAID 3, RAID 4 et RAID 5.

9-12 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 9 : Les disques

A ces spécifications correspondent des fonctionnalités que l’on peut résumer de la


manière suivante :

linéaire Un regroupement de disques en un seul disque. Les écritures se font


sur le second disque quand le premier disque est plein, et ainsi de
suite.
RAID 0 Un regroupement de disques en un seul disque, avec écriture en
parallèle sur les disques.
RAID 1 Des disques en miroir.
RAID 2 Miroir et écriture en parallèle avec contrôle et correction d’erreur
(« EEC »).
RAID 3 Ecriture en parallèle avec contrôle de parité.
RAID 4 Bandes avec parité, la bande de parité est sur un seul disque.
RAID 5 Bandes avec parité, les bandes sont réparties sur plusieurs disques.

Les solutions les plus courantes dans les systèmes à tolérance de panne sont le RAID 1
et le RAID 5.
Le choix est essentiellement fonction de la nature des applications, du coût et des
performances attendues.
Remarque
Un disque RAID est transparent pour le système qui le voit comme un disque. Les
performances sont supérieures à celles obtenues en émulant le disque RAID au niveau
du noyau. Dans ce dernier cas, les performances pourront être améliorées en éclatant
les entrées/sorties sur plusieurs contrôleurs.

Linux et les disques RAID


Le système Linux supporte le RAID logiciel, sur des disques de type IDE ou SCSI.
Leur prise en compte est réalisée par l’intermédiaire des pilotes de disques MD
(« Multiple Devices ») qui permettent le regroupement de plusieurs partitions
physiques (/dev/hda<n> ou /dev/sda<n>) gérées en RAID. Le type d’une partition
affectée à un RAID est « FD » (cf. La commande cfdisk). Le disque RAID est connu
sous le nom de fichier spécial /dev/md<n>.
Pour que le RAID soit efficace, il est important que les partitions RAID soient situées
sur des disques physiques associés à des contrôleurs distincts. Ceci étant, rien
n’interdit de mettre en œuvre un ensemble RAID sur des partitions de disques
connectés au même contrôleur IDE, voire sur des partitions d’un même disque dur.
Les niveaux de RAID supportés par Linux sont le mode linéaire, le RAID0, le RAID1,
le RAID4 et le RAID5.
Un ensemble de disques constitués en RAID peut également comporter des disques de
réparation (« spare disk ») pour la reconstitution du disque endommagé, lors du
prochain démarrage du RAID. Cette reconstitution est automatique et s’effectue en
parallèle avec l’utilisation du RAID. En cas de perte d’un disque, à défaut de posséder
un disque de réparation, il est nécessaire de procéder à une sauvegarde des données du
RAID, de recréer le RAID et de recharger les données.
Lors du boot, le noyau Linux reconnaît automatiquement les RAID existants, grâce au
« persistent super block ». Ce bloc, dont la création est fortement conseillée, existe sur
chaque disque de l’ensemble RAID. Il contient la description du RAID, celle-là même

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 9-13
Module 9 : Les disques

que l’on a décrite, dans la plupart des distributions, dans le fichier /etc/raidtab. Il
permet au noyau de pouvoir reconnaître les RAIDs existants sans attendre que le
disque contenant le répertoire /etc, généralement le système de fichiers racine, soit
monté. Le « persistent super block » permet qu’un ensemble RAID contienne le
système de fichiers racine.
Le noyau fait une auto-détection du RAID grâce au « persistent super block » qu’il
trouve sur chaque disque du RAID. Le RAID est réellement démarré par rc.sysinit,
dans la distribution RedHat, si les fichiers /etc/raidtab et /proc/mdstat existent. Le
script /etc/rc.d/init.d/halt appelle la commande raidstop.
Le tableau qui suit résume les principaux attributs d’un ensemble RAID logiciel de
Linux :
Mode Nombre Nombre de Avantages et inconvénients
de disques disques de
requis réparations
pour le
RAID
Linéaire Au moins Aucun Un disque peut dépasser la taille physique du
deux plus grand disque dur du système. Si un
disque est endommagé, les données du RAID
sont perdues.
RAID 0 Au moins Aucun En plus de l’avantage précédent, on améliore
deux la vitesse des opérations de lecture et
d’écriture, qui s’effectuent en parallèle, si les
deux disques sont liés à des contrôleurs
distincts. Si un disque est endommagé, les
données du RAID sont perdues.
RAID1 Deux De zéro à n Les écritures se font en miroir sur les deux
disques disques. Si l’un des disques est hors service, le
second contient la copie des données.
RAID 4 Au moins De zéro à n Ce niveau n’est pas très utilisé. Un disque est
trois utilisé pour stocker une bande de parité. Si un
disque est endommagé, le disque de parité
permet de reconstituer les données. Le disque
de parité doit être mis à jour à chaque écriture
réalisée sur l’un des disques du RAID.
RAID 5 Au moins De zéro à n Les bandes sont réparties uniformément sur
trois tous les disques du RAID.
Le paquetage
Le paquetage « raidtools-*.rpm » doit être installé pour que le RAID puisse être mis
en œuvre.
Les commandes
Linux propose un ensemble de commandes pour créer et administrer un RAID :
mkraid /dev/md<n> Initialise un ensemble de disques RAID.
Les principales options sont :
-c, --configfile fichier_de_config. (à défaut de /etc/raidtab)
–really-force pour forcer l’écrasement du RAID existant.
Ceci entraîne la perte des données.

9-14 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 9 : Les disques

raidstart /dev/md<n> Active un ensemble RAID.


raidstop /dev/md<n> Arrête un ensemble RAID.

Pour mémoire, nous signalons trois commandes aujourd’hui obsolètes : raidadd,


raidrun et ckraid.
Les fichiers
/etc/raidtab Le fichier qui décrit les ensembles RAID.
Exemple de description d’un ensemble RAID :
raiddev /dev/md0 # L’ensemble RAID
raid-level 5 # Le niveau de RAID
nr-raid-disks 3 # Le nombre de disques RAID
nr-spare-disks 1 # Le nombre de disques de réparation
persistent-superblock 1 # RAID avec « persistent super block »
parity-algorithm left-symmetric # Algorithme pour la parité
chunk-size 8
# La plus petite quantité de données, exprimée en kilo-octets, que l’on
peut écrire sur un disque. Cette option ne fonctionne pas avec le mode
linéaire. Dans les autres cas, elle détermine la quantité de données que
l’on écrit en parallèle sur les disques du RAID. Dans le cas d’un
RAID0 avec deux disques et un bloc de 32 Ko de données et un
« chunk-size » de 8 Ko, on obtient :

chunk 1 chunk 2 chunk 3 chunk 4


<- --------- > <- --------- > <- --------- > <- --------- >
écriture en parallèle écriture en parallèle
sur sur
Disque 1 Disque 2 Disque 1 Disque 2
Il convient de faire des tests de performance pour déterminer le bon
« chunk-size » d’un RAID.
La commande mke2fs possède une option pour lui indiquer combien
de blocs, au sens de ext2, constituent un « chunk » :
mke2fs –b 4096 -R stride=2 …
device /dev/hdb5 # Les disques du RAID
raid-disk 0
device /dev/hdb6
raid-disk 1
device /dev/hdb7
raid-disk 2
device /dev/hdb8 # Les disques de réparation
spare-disk 0
/proc/mdstat Le fichier qui décrit les RAID actifs. Son contenu est mis à jour en
temps réel, il permet de voir évoluer le pourcentage de reconstruction
d’un disque.

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 9-15
Module 9 : Les disques

Exemple de RAID0
Les disques disponibles pour les exemples RAID0 et RAID1
# fdisk -l /dev/hda
Disk /dev/hda: 255 heads, 63 sectors, 525 cylinders
Units = cylindres of 16065 * 512 bytes
Device Boot Start End Blocks Id System
/dev/hda1 1 132 1060258+ 6 FAT16

/dev/hda6 392 474 666666 fd Linux raid
autodetect

# fdisk -l /dev/hdb
Disk /dev/hdb: 64 heads, 63 sectors, 1023 cylindersUnits =
cylindres of 4032 * 512 bytes
Device Boot Start End Blocks Id System
/dev/hdb1 * 1 563 1134976+ b Win95 FAT32
/dev/hdb2 564 894 667296 fd Linux raid
autodetect
# cat /etc/raidtab
# mode RAID0 - Les deux disques /dev/hda6 et /dev/hdb2 constituent
# un seul disque, écriture en parallèle
# /dev/hda6 392 474 666666 fd Linux raid
# /dev/hdb2 564 894 667296 fd Linux raid
raiddev /dev/md0
raid-level 0
nr-raid-disks 2
persistent-superblock 1
chunk-size 4
device /dev/hda6
raid-disk 0
device /dev/hdb2
raid-disk 1
#mkraid
# more /proc/mdstat
Personalities : [raid0]
read_ahead 1024 sectors
md0 : active raid0 hdb2[1] hda6[0] 1333760 blocks 4k chunks
unused devices: <none>

# raidstop /dev/md0
# more /proc/mdstat
Personalities : [raid0]
read_ahead 1024 sectors
unused devices: <none>
# raidstart /dev/md0
# mke2fs -b 4096 -R stride=1 /dev/md0
mke2fs 1.18, 11-Nov-1999 for EXT2 FS 0.5b, 95/08/09
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
166848 inodes, 333440 blocks

9-16 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 9 : Les disques

16672 blocks (5.00%) reserved for the super user


First data block=0
11 block groups
32768 blocks per group, 32768 fragments per group
15168 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912
Writing inode tables: done
Writing superblocks and filesystem accounting information: done

# mount /dev/md0 /mnt/appli


# mount
/dev/hda5 on / type ext2 (rw)
none on /proc type proc (rw)
/dev/hda2 on /boot type ext2 (rw)
none on /dev/pts type devpts (rw,gid=5,mode=620)
/dev/md0 on /mnt/appli type ext2 (rw)
# df
Filesystem 1k-blocks Used Available Use% Mounted on
/dev/hda5 2016016 411280 1502324 21% /
/dev/hda2 31111 2446 27059 8% /boot
/dev/md0 1312768 20 1246060 0% /mnt/appli

Exemple de RAID1
# cat /etc/raidtab
raiddev /dev/md0
raid-level 1
nr-raid-disks 2
persistent-superblock 1
chunk-size 8
device /dev/hda6
raid-disk 0
device /dev/hdb2
raid-disk 1
# mkraid /dev/md0
handling MD device /dev/md0
analyzing super-block
disk 0: /dev/hda6, 666666kB, raid superblock at 666560kB
disk 1: /dev/hdb2, 667296kB, raid superblock at 667200kB

# more /proc/mdstat
Personalities : [raid1]
read_ahead 1024 sectors
md0 : active raid1 hdb2[1] hda6[0] 666560 blocks [2/2] [UU] resync=3% finish=5.7
min
unused devices: <none>

# mke2fs -b 4096 -R stride=1 /dev/md0


mke2fs 1.18, 11-Nov-1999 for EXT2 FS 0.5b, 95/08/09
Filesystem label=
OS type: Linux

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 9-17
Module 9 : Les disques

Block size=4096 (log=2)



# mount /dev/md0 /mnt/appli/
# df
Filesystem 1k-blocks Used Available Use% Mounted on
/dev/hda5 2016016 413772 1499832 22% /
/dev/hda2 31111 2454 27051 8% /boot
/dev/md0 656064 20 622716 0% /mnt/appli
# lsmod
Module Size Used by
raid1 7964 1 (autoclean)
lockd 30344 1 (autoclean)
sunrpc 52132 1 (autoclean) [lockd]
3c509 6032 1 (autoclean)
Vérification de l’égalité stricte des deux disques
# od -c /dev/hda6 |grep 6740100
6740100 r t a s t e . . . . \n \n b u t
# od -c /dev/hdb2 |grep 6740100
6740100 r t a s t e . . . . \n \n b u t

Exemple de RAID5, avec un disque de réparation


# more /etc/raidtab
raiddev /dev/md0
raid-level 5
nr-raid-disks 3
nr-spare-disks 1
persistent-superblock 1
parity-algorithm left-symmetric
chunk-size 8
device /dev/hdb5
raid-disk 0
device /dev/hdb6
raid-disk 1
device /dev/hdb7
raid-disk 2
device /dev/hdb8
spare-disk 0
# fdisk -l /dev/hdb
Disk /dev/hdb: 64 heads, 63 sectors, 1023 cylinders
Units = cylindres of 4032 * 512 bytes
Device Boot Start End Blocks Id System
/dev/hdb1 * 1 563 1134976+ b Win95 FAT32
/dev/hdb2 564 755 387072 5 Extended
/dev/hdb5 564 611 96736+ fd Linux raid autodetect
/dev/hdb6 612 659 96736+ fd Linux raid autodetect
/dev/hdb7 660 707 96736+ fd Linux raid autodetect
/dev/hdb8 708 755 96736+ fd Linux raid autodetect
# mkraid /dev/md0
# more /proc/mdstat
Personalities : [raid5]
read_ahead 1024 sectors

9-18 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 9 : Les disques

md0 : active raid5 hdb8[3] hdb7[2] hdb6[1] hdb5[0] 193280 blocks level 5, 8k chu
nk, algorithm 2 [3/3] [UUU] resync=7% finish=4.8min
unused devices: <none>

# mkfs –b 4096 –R stride=2 /dev/md0


# mount /dev/md0 /mnt/appli
# cd /mnt/appli
# cp /etc/g* .
# mkdir r1
# cp /etc/termcap r1
# df
Filesystem 1k-blocks Used Available Use% Mounted on
/dev/hda5 2016016 414372 1499232 22% /
/dev/hda2 31111 2454 27051 8% /boot
/dev/md0 187208 664 176880 0% /mnt/appli
# umount /dev/md0
# raidstop /dev/md0
# dd if=/dev/zero of=/dev/hdb6 bs=8k
# ls –R # on a bien le contenu du système de fichiers, de type ext2.
.:
gettydefs gpm-root.conf group group- gshadow gshadow- lost+found r1
./lost+found:
./r1:
termcap
# raidstart /dev/md0
# more /proc/mdstat
Personalities : [raid5]
read_ahead 1024 sectors
md0 : active raid5 hdb8[3] hdb7[2] hdb5[0] 193280 blocks level 5, 8k chunk,
algorithm 2 [3/2] [U_U] recovery=3% finish=5.3min
unused devices: <none>
# mount /dev/md0
# more /proc/mdstat
Personalities : [raid5]
read_ahead 1024 sectors
md0 : active raid5 hdb8[3] hdb7[2] hdb6[1] hdb5[0] 193280 blocks level 5, 8k chu
nk, algorithm 2 [3/3] [UUU]
unused devices: <none>
# ls –R # on a bien le contenu du FS (type ext2)
.:
gettydefs gpm-root.conf group group- gshadow gshadow- lost+found r1
./lost+found:
./r1:
termcap

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 9-19
Module 9 : Les disques

# more /proc/mdstat
Personalities : [raid5]
read_ahead 1024 sectors
md0 : active raid5 hdb8[1] hdb7[2] hdb5[0] 193280 blocks level 5, 8k chunk,
algorithm 2 [3/3] [UUU]
unused devices: <none>

Références pour les disques RAID


Le HOWTO.
Software-RAID-HOWTO
La documentation.
/usr/doc/raidtools-0.90
Le manuel.
mkraid(8), raidstart(8), raidstop(8) , raidtab(5)

9-20 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 9 : Les disques

Les volumes logiques


Les volumes logiques

Volume physique
Groupe de (PV)
volumes
(VG)

Volume logique
(LV)

Utilisation
Utilisation::
lv1
••FS
FS
lv2
Espace libre
••swap
swap
••disque
disquedédié
dédié

TSOFT - Linux Administration Module 9 : Les disques - 9.7

Les volumes logiques représentent une alternative intéressante aux partitions


physiques. Ils offrent souplesse et dynamisme pour la création de disques Linux.
Parmi les systèmes Linux qui supportent les groupes de volumes, nous citerons les
distributions Debian et SuSE. Les volumes logiques sont intégrés en standard dans les
distributions qui utilisent le noyau 2.4 et les versions ultérieures. Les volumes logiques
ont été introduits, dans le monde UNIX, par les sociétés IBM pour le système
d’exploitation AIX et Hewlett Packard pour le système HP-UX, où ils sont d’ailleurs
devenus le standard pour les disques.
Les volumes logiques de Linux reprennent exactement les commandes développées
par Hewlett Packard. Il en découle que les lecteurs familiers de HP-UX n’auront
aucune difficulté de mise en œuvre des volumes logiques sous Linux.

Les concepts
Un groupe de volumes (« Volum Group ») est un ensemble de disques physiques,
encore appelés volumes physiques (« Physical Volum »). Un groupe de volumes peut
au plus comporter 256 volumes physiques. Il est aisé d’ajouter ou de retirer un volume
physique d’un groupe de volumes. Un système qui utilise les groupes de volumes est
constitué d’au moins un groupe constitué d’au moins un volume physique.
L’espace total d’un groupe de volumes est constitué d’un ensemble d’unités (granules)
d’allocation physique (« Physical Extent » ) qui peuvent être allouées à des disques
logiques ou volumes logiques (« Logical Volum »). La taille d’un volume logique est
si besoin arrondie pour correspondre à un nombre entier de « Physical extent ». Le
nombre maximum de volumes logiques par groupe de volumes est de 256 et la taille
d’un « extent » est de quatre Mo, par défaut.
Un volume logique est constitué d’un certain nombre d’unités d’allocation logiques
(« Logical Extent ») qui correspondent aux « Physical Extent » allouées dans le groupe

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 9-21
Module 9 : Les disques

de volumes. Les unités d’allocation physiques qui ont été allouées ne sont pas
contiguës.
Le tableau qui suit rappelle les sigles utilisés pour les différents concepts qui viennent
d’être présentés :
Sigle Description
PV Un disque physique.
VG Un groupe de volumes.
LV Un volume logique.
PE Une unité d’allocation physique.
LE Une unité d’allocation logique.

Un volume logique, comme tous les disques UNIX, possède, dans le répertoire /dev,
l’entrée qui le désigne en mode bloc.
Les gestionnaires de volumes logiques proposent des noms par défaut pour les groupes
et les volumes logiques, mais l’administrateur peut librement choisir des noms à sa
convenance.
/dev/volume_groupe/volume_logique

Remarque
Grâce aux volumes logiques, la taille d’un disque peut être supérieure à la taille d’un
disque physique et celle d’un fichier également.
Les principales opérations que l’on peut réaliser sur les groupes de volumes sont :
• La création d’un groupe de volumes.
• L’ajout d’un disque physique à un groupe de volumes.
• Le retrait d’un disque physique d’un groupe de volumes.
• Le rattachement d’un disque physique à un nouveau groupe de volumes.
Les principales opérations que l’on peut réaliser sur les volumes logiques sont :
• La création ou la suppression d’un volume logique.
• L’extension ou la réduction de la taille d’un volume logique.

Remarques
S’il est possible de réduire la taille d’un volume logique, on en est souvent empêché
par les données qu’il contient et qui seraient endommagées.

Quand on étend la taille d’un volume logique qui contient un système de fichiers, il ne
faut surtout pas oublier d’augmenter également la taille du système de fichiers.
L’espace nouvellement alloué reste sinon inexploité.

Les commandes
Il existe un grand nombre de commandes. Toutes n’ont pas le même degré
d’importance. Le tableau qui suit en donne la liste, mais seules les commandes
fondamentales sont ensuite développées :

9-22 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 9 : Les disques

Commande Description
pvcreate La commande pvcreate est la première commande à exécuter pour un
disque que l’on souhaite ensuite intégrer à un groupe de volumes. Si
ce disque est une partition (/dev/hda8), elle doit être marquée du type
0x8e (cf. Commande fdisk). Si le disque est un disque physique dans
sa totalité (/dev/hda), le premier secteur doit être mis à 0 (dd
if=/dev/zero of=/dev/hda count=1). Les disques peuvent être de type
IDE, SCSI, loop (cf. Module 4 : Les systèmes de fichiers), ou de type
RAID. Dans les deux derniers cas, nous renvoyons le lecteur aux
commandes losetup(8) et mdadd(8).
Syntaxe :
pvcreate [-f[f]] [-y] PV [PV…]
L’option « –y » pour répondre oui à toutes les questions.
L’option « –ff » pour forcer la réinitialisation d’un PV appartenant à
un groupe de volumes.
vgcreate La commande qui crée un groupe de volumes.
Syntaxe :
vgcreate [-s taille_PE[kmg] [-l maxLV] [-p maxPV] nomVG PV…
Par défaut, taille_PE vaut 4 Mo, maxLV et maxPV valent 256.
La commande crée un répertoire /dev/nomVG.
lvcreate La commande qui crée un volume logique.
Syntaxe :
lvcreate [-l taille_en_PE] [-L taille_en_Mo] [-n nomLV] nomVG
Il est obligatoire de mentionner la taille, exprimée en PE ou Mo.
Le volume logique possède évidemment un nom de fichier spécial. Si
un nom a été fourni grâce à l’option « -n », le volume logique se
nommera /dev/nomVG/nomLV. A défaut, le volume logique
s’appellera /dev/nomVG/lvol<n>.
vgdisplay La commande qui visualise les caractéristiques d’un groupe de
volumes.
Syntaxe :
vgdisplay [-v] nomVG
lvdisplay La commande qui visualise les caractéristiques d’un volume logique.
Syntaxe :
lgdisplay [-v] /dev/nomVG/nomLV
vgextend La commande qui étend un groupe de volumes par incorporation de
nouveaux PVs.
Syntaxe :
vgextend nomVG PV…
lvextend La commande qui accroît la taille d’un volume logique.
Syntaxe :
lvextend [-l [+]taille_PE] [-L [+]taille_Mo] /dev/nomVG/nomLV

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 9-23
Module 9 : Les disques

On indique , par défaut, la nouvelle taille du volume logique. Pour que


la valeur fournie représente l’accroissement, la valeur doit être
précédée du signe « + ».
vgchange La commande qui modifie les attributs d’un VG, en particulier
l’attribut actif/inactif. La désactivation d’un groupe de volumes est un
préalable à sa suppression.
Syntaxe :
vgchange [ -a y|n ] nomVG…
vgremove La commande qui supprime un groupe de volumes.
Syntaxe :
vgremove nomVG…
lvremove La commande qui supprime un volume logique.
Syntaxe :
lvremove [ -f ] /dev/nomVG/nomLV
L’option « -f » force la suppression, sans poser de questions.
e2fsadm La commande qui étend (réduit) un volume logique et le système de
fichiers de type ext2 qu’il contient. La commande lvextend accroît la
taille d’un volume logique. S’il contient un système de fichiers, il
convient ensuite d’étendre manuellement le système de fichiers. On
dispose pour cela de la commande FSF ext2resize (cf. Module 4 : Les
systèmes de fichiers) ou de la commande resize2fs. La commande
e2fsadm enchaîne les deux opérations. Pour réaliser l’extension du
système de fichiers, la commande e2fsadm fait appel à resize2fs.
La modification d’un volume logique et de son système de fichiers ne
se conçoit, sans perte de données, que dans le cas d’une extension.
Syntaxe :
e2fsadm [-l [+|-]taille_PE] [-L [+|-]taille[kmgt]] /dev/nomVG/nomLV
Autres
commandes
des volumes
physiques
pvchange Change les attributs d’un volume physique.
pvdata Visualise le VGDA qui se trouve sur le volume physique.
pvdisplay Visualise les attributs d’un volume physique.
pvscan Examine tous les disques connus du système pour retrouver les
volumes physiques.
pvmove Déplace les PE alloués d’un volume physique vers un autre volume
physique.
Autres
commandes
des groupes
de volume
vgcfgbackup La commande qui sauvegarde la description des données de gestion du
groupe : VGDA (« volume group descriptor area ») dans le fichier
/etc/lvmconf. Cette commande ne sauvegarde pas les données.

9-24 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 9 : Les disques

vgcfgrestore L’opération symétrique de restauration du VGDA.


vgck Contrôle la cohérence du VGDA d’un groupe de volumes.
vgexport Permet de retirer des volumes physiques d’un groupe de volumes
inactif pour les réinstaller dans un autre système. Le groupe de
volumes devient inconnu du système.
vgimport Le groupe de volumes, préalablement exporté, devient connu du
système où est réalisé l’import.
vgmerge Fusionne deux groupes de volumes en un seul. La fusion est réalisée
dans le premier des deux groupes de volumes donnés en argument.
vgmknodes Recrée les fichiers spéciaux associés d’un groupe de volumes.
vgreduce Retire des PV d’un groupe de volumes.
vgrename Renomme un groupe de volumes.
vgscan Examine tous les disques d’un groupe de volumes pour recréer la base
de données du groupe de volumes, constituée des fichiers /etc/lvmtab
et /etc/lvmtab.d/* nécessaires pour toutes les autres commandes.
vgsplit La commande qui crée un nouveau groupe de volumes par extraction
de PV du groupe de volumes existant et insertion dans le nouveau.
Autres
commandes
des volumes
logiques
lvchange Modifie les attributs d’un volume logique.
lvreduce Réduit la taille d’un volume logique.
lvrename Renomme un volume logique.
lvscan Examine tous les volumes logiques du système.
lvmchange Réinitialise le gestionnaire de volumes logiques. Il faut s’assurer que
tous les volumes logiques sont fermés.
lvmdiskscan Affiche la liste de tous les disques utilisables par le gestionnaire de
volumes logiques.
lvmcreate_i Crée un disque de type « ram disk » pour booter sur un volume
nitrd logique.
lvmsadc Collecte des statistiques sur les opérations d’entrées/sorties réalisées
par le gestionnaire de volumes logiques.
lvmsar Reporte les informations préalablement collectées par lvmsadc.

Exemples
Les disques disponibles
# fdisk -l /dev/hda
Disk /dev/hda: 255 heads, 63 sectors, 525 cylinders
Units = cylinders of 16065 * 512 bytes
Device Boot Start End Blocks Id System

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 9-25
Module 9 : Les disques

/dev/hda8 416 427 96358+ 8e Linux LVM


/dev/hda9 428 439 96358+ 8e Linux LVM
/dev/hda10 440 451 96358+ 8e Linux LVM
# fdisk -l /dev/hdb
Disk /dev/hdb: 64 heads, 63 sectors, 1023 cylinders
Units = cylinders of 4032 * 512 bytes
Device Boot Start End Blocks Id System
/dev/hdb5 564 611 96736+ 8e Linux LVM
/dev/hdb6 612 659 96736+ 8e Linux LVM
/dev/hdb7 660 756 195520+ 8e Linux LVM
La création des volumes physiques
# pvcreate /dev/hda8 /dev/hdb5 /dev/hdb6
pvcreate -- reinitializing physical volume
pvcreate -- physical volume "/dev/hda8" successfully created
pvcreate -- reinitializing physical volume
pvcreate -- physical volume "/dev/hdb5" successfully created
pvcreate -- reinitializing physical volume
pvcreate -- physical volume "/dev/hdb6" successfully created
La création du groupe de volumes
# vgcreate cao /dev/hda8 /dev/hdb5 /dev/hdb6
vgcreate -- INFO: using default physical extent size 4 MB
vgcreate -- INFO: maximum logical volume size is 255.99 Gigabyte
vgcreate -- doing automatic backup of volume group "cao"
vgcreate -- volume group "cao" successfully created and activated
Visualisation des attributs du groupe de volumes
vgdisplay -v cao
--- Volume group ---
VG Name cao
VG Access read/write
VG Status available/resizable
VG # 0
MAX LV 256
Cur LV 0
Open LV 0
MAX LV Size 255.99 GB
Max PV 256
Cur PV 3
Act PV 3
VG Size 276 MB
PE Size 4 MB
Total PE 69
Alloc PE / Size 0/0
Free PE / Size 69 / 276 MB
--- No logical volumes defined in cao ---
--- Physical volumes ---
PV Name (#) /dev/hda8 (1)
PV Status available / allocatable
Total PE / Free PE 23 / 23

9-26 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 9 : Les disques

PV Name (#) /dev/hdb5 (2)


PV Status available / allocatable
Total PE / Free PE 23 / 23
PV Name (#) /dev/hdb6 (3)
PV Status available / allocatable
Total PE / Free PE 23 / 23
Création d’un volume logique
# lvcreate -L 75M -n database cao
lvcreate -- rounding up size to physical extent boundary "76 MB"
lvcreate -- doing automatic backup of "cao"
lvcreate -- logical volume "/dev/cao/database" successfully created

# lvcreate -L 50M -n programme cao


lvcreate -- rounding up size to physical extent boundary "52 MB"
lvcreate -- doing automatic backup of "cao"
lvcreate -- logical volume "/dev/cao/programme" successfully created
On visualise à nouveau le groupe de volumes
--- Volume group ---
VG Name cao
VG Access read/write

Alloc PE / Size 32 / 128 MB
Free PE / Size 37 / 148 MB
--- Logical volume ---
LV Name /dev/cao/database
VG Name cao
LV Write Access read/write
LV Status available
LV # 1
# open 0
LV Size 76 MB
Current LE 19
Allocated LE 19
Allocation next free
Read ahead sectors 128
Block device 58:0

--- Physical volumes ---

On visualise les fichiers spéciaux
# ls –l /dev/cao/*
brw-r----- 1 root root 58, 0 Jan 9 15:17 /dev/cao/database
crw-r----- 1 root root 109, 0 Jan 9 15:12 /dev/cao/group
brw-r----- 1 root root 58, 1 Jan 9 15:18 /dev/cao/programme
On crée les systèmes de fichiers
# mke2fs -b 4096 -N 100 /dev/cao/database
mke2fs 1.18, 11-Nov-1999 for EXT2 FS 0.5b, 95/08/09

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 9-27
Module 9 : Les disques

Filesystem label=
OS type: Linux

# mke2fs -b 4096 -N 100 /dev/cao/programme

On monte le système de fichiers
# mkdir /cao
# mkdir /cao/database
# mkdir /cao/programme
# mount /dev/cao/database /cao/database/
# mount /dev/cao/programme /cao/programme/
# mount

/dev/cao/database on /cao/database type ext2 (rw)
/dev/cao/programme on /cao/programme type ext2 (rw)
# df
Filesystem 1k-blocks Used Available Use% Mounted on

/dev/cao/database 77792 20 73884 0% /cao/database
/dev/cao/programme 53216 20 50536 0% /cao/programme
On étend le volume logique /dev/cao/database
#vgdisplay cao
VG Name cao
VG Size 276 MB

PE Size 4 MB
Total PE 69
Alloc PE / Size 32 / 128 MB
Free PE / Size 37 / 148 MB
# lvextend -L +48M /dev/cao/database
lvextend -- extending logical volume "/dev/cao/database" to 124 MB
lvextend -- doing automatic backup of volume group "cao"
lvextend -- logical volume "/dev/cao/database" successfully extended
# lvdisplay /dev/cao/database
--- Logical volume ---
LV Name /dev/cao/database
VG Name cao

LV Size 124 MB
Current LE 31
Allocated LE 31
Allocation next free
Read ahead sectors 128
Block device 58:0
On étend ensuite le système de fichiers
# e2fsck -f /dev/cao/database # Opération préalable nécessaire
# resize2fs /dev/cao/database # Par défaut, tout l’espace libre

9-28 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 9 : Les disques

resize2fs 1.19 (13-Jul-2000)


The filesystem on /dev/cao/database is now 31744 blocks long.
On étend le système de fichiers en même temps que le volume
logique
# umount /dev/cao/programme
# e2fsadm -L +25M /dev/cao/programme
e2fsadm -- correcting size 77 MB to physical extent boundary 80 MB
e2fsck 1.19, 13-Jul-2000 for EXT2 FS 0.5b, 95/08/09

lvextend -- extending logical volume "/dev/cao/programme" to 80 MB
lvextend -- doing automatic backup of volume group "cao"
lvextend -- logical volume "/dev/cao/programme" successfully extended
resize2fs 1.19 (13-Jul-2000)
Begin pass 3 (max = 1)
Scanning inode table
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
The filesystem on /dev/cao/programme is now 20480 blocks long.
e2fsadm -- ext2fs in logical volume "/dev/cao/programme" successfully extended to
80 MB
On remonte les systèmes de fichiers
# mount /dev/cao/programme /cao/programme/
# mount /dev/cao/database /cao/database
# df
Filesystem 1k-blocks Used Available Use% Mounted on

/dev/cao/programme 81888 20 78592 0% /cao/programme
/dev/cao/database 126944 20 121848 0% /cao/database
On ajoute un disque au groupe de volumes cao
# pvcreate /dev/hda9 /dev/hda10 /dev/hdb7
pvcreate -- reinitializing physical volume
pvcreate -- physical volume "/dev/hda9" successfully created
pvcreate -- reinitializing physical volume
pvcreate -- physical volume "/dev/hda10" successfully created
pvcreate -- reinitializing physical volume
# vgextend cao /dev/hda9
vgextend -- INFO: maximum logical volume size is 255.99 Gigabyte
vgextend -- doing automatic backup of volume group "cao"
vgextend -- volume group "cao" successfully extended
On crée un second groupe de volumes, baptisé compta
# vgcreate compta /dev/hda10 /dev/hdb7

Réduction du groupe de volumes compta
# vgreduce compta /dev/hdb7
vgreduce -- doing automatic backup of volume group "compta"
vgreduce -- volume group "compta" successfully reduced by physical volume:
vgreduce -- /dev/hdb7

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 9-29
Module 9 : Les disques

# vgreduce compta /dev/hda10


vgreduce -- can't reduce volume group "compta" to zero physical volumes
# vgremove compta
vgremove -- ERROR: can't remove active volume group "compta"
# vgchange -a n compta
vgchange -- volume group "compta" successfully deactivated
# vgremove compta
vgremove -- volume group "compta" successfully removed

Références pour les volumes logiques


Le HOWTO
LVM-HOWTO, Logical Volume Manager HOWTO
Le manuel
lvm(8), pvcreate(8), vgcreate(8), vgextend(8), vgremove(8), lvcreate(8),
lvextend(8), lvreduce(8), lvremove(8), e2fsadm(8), resize2fs(8)…

9-30 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 9 : Les disques

Le « swap »
Le swap

swap
mémoire

Différents types de swap :


z swap primaire : activé au démarrage par le noyau
z swaps secondaires : activés par les scripts de démarrage
- Une partition complète
- Un fichier à l’intérieur d’un FS

TSOFT - Linux Administration Module 9 : Les disques - 9.8

Principes
Le « swapping » est un mécanisme d’échange de données entre la mémoire RAM et
un espace sur disque spécialement aménagé à cet effet.
Pour réaliser les échanges avec le maximum d’efficacité, le système Linux oblige, dès
l’installation du système, à créer un disque de swap, dit disque de swap primaire,
réservé à cet usage.
Il est généralement conseillé de créer un disque de swap primaire d’une taille égale à
au moins deux fois la taille de la RAM. L’administrateur peut affiner le calcul de la
taille du disque de swap. La règle de calcul n’est pas complexe mais prend souvent en
compte des informations que l’administrateur ignore.
La version 2.1 du noyau a introduit une nouvelle technique de gestion du swap. Une
signature dans les dix derniers octets de la première page du swap permet de
distinguer l’ancienne de la nouvelle, respectivement « SWAP_SPACE » pour
l'ancienne et « SWAPSPACE2 » pour la nouvelle.
Dans l'ancienne technique, la première page contient une table « bit map » où chaque
bit est associé à une page de swap du disque de swap. Un simple calcul nous montre
que pour une taille de page de 4096 octets, la plus courante sur PC, la taille d’un
disque de swap peut être au plus de 127 Mo.
Dans la nouvelle technique, il n'y a plus de « bit map », la taille maximum d’un disque
de swap est définie par un nombre entier qui dépend du processeur. Elle est de 2 Go
pour le processeur Intel 386. On atteint alors des capacités plus conformes aux besoins
actuels des applications.
Si la taille du disque de swap s’avère insuffisante, le fichier /proc/swaps ou la
commande free permettent de surveiller l’utilisation du swap. On peut créer des
disques de swap secondaires. Le fichier /proc/swaps contient également la définition
des différents espaces de swap.
Les swaps peuvent être créés :

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 9-31
Module 9 : Les disques

• Sur un nouveau disque Linux dédié à cet usage. Le disque est une partition qui
occupe éventuellement la totalité d’un disque physique.
• Dans un fichier.
Remarque
Pour améliorer la rapidité des échanges, il est préférable de créer deux disques de
swap de 20 Mo sur deux disques physiques différents, plutôt qu’un seul disque de 40
Mo.
Si l’administrateur n’a plus d’espace disque libre disponible, Linux permet de faire du
swap dans un fichier de l’arborescence. Les performances sont moindres mais cela
permet de pallier temporairement l’insuffisance d’espace disque.
Les zones de swap sont généralement activées automatiquement au démarrage du
système UNIX par le script /etc/rc.d/rc.sysinit qui exécute la commande swapon –a,
d’origine BSD. Cette dernière active tous les disques de swap définis dans le fichier
/etc/fstab.
Un premier disque de swap est créé lors de l’installation du système Linux (cf. Module
10 : Installation de Linux). La commande mkswap permet d’ajouter des swaps
secondaires sur un disque ou dans un fichier, que l’on peut alors activer manuellement
grâce à la commande swapon. Symétriquement, la commande swapoff permet de
désactiver un swap.
Syntaxe
mkswap [-c] [ -v0| -v1 ] [-f] périphérique [taille_en_Ko]
L’option « -c » permet de rechercher les blocs défectueux du disque.
L’option « –v0 » demande de créer un swap selon l’ancienne technique
(« SWAP_SPACE »).
L’option « –v1 » demande de créer un swap selon la nouvelle technique
(« SWAP_SPACE2 »).
Il faut noter que Linux crée par défaut un swap selon l’ancienne technique, si la taille
du swap n’excède pas la taille maximum du swap selon cette technique ou si la
version du noyau Linux est inférieure à 2.1.117.
L’option « –f », sur une station dotée d’un processeur SPARC, force la création du
swap, même si le disque contient un système de fichiers valide. La création n’est pas
réalisée sinon.
L’argument « périphérique » désigne le disque ou le fichier ordinaire où doit être créé
le swap. Dans le cas où le swap est créé dans un fichier ordinaire, le fichier doit avoir
été préalablement créé d’une taille au moins égale à celle du swap qu’il va contenir.
Ceci peut être réalisé facilement par la commande dd (cf. Exemples).
Par défaut, la totalité du disque est utilisée pour le swap à créer. L’option «
taille_en_blocs » est maintenue pour la compatibilité avec les anciennes versions.
Exemples
Création d’une partition swap secondaire. On commence par créer la partition avec la
commande fdisk.
# fdisk /dev/hda
Using /dev/hda as default device!
Command (m for help): p
Disk /dev/hda: 255 heads, 63 sectors, 524 cylinders
Units = cylinders of 16065 * 512 bytes

9-32 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 9 : Les disques

Device Boot Start End Blocks Id System


/dev/hda1 * 1 319 2562336 b Win95 FAT32
/dev/hda2 320 524 1646662+ 5 Extended
/dev/hda5 320 447 1028097 83 Linux
/dev/hda6 448 452 40131 82 Linux swap
Command (m for help): n
Command action
l logical (5 or over)
p primary partition (1-4)
First cylinder (458-524, default 458):
Using default value 458
Last cylinder or +size or +sizeM or +sizeK (458-524, default 524): +32M
Command (m for help): p
Device Boot Start End Blocks Id System
/dev/hda1 * 1 319 2562336 b Win95 FAT32
/dev/hda2 320 524 1646662+ 5 Extended
/dev/hda5 320 447 1028097 83 Linux
/dev/hda6 448 452 40131 82 Linux swap
/dev/hda7 453 457 40131 83 Linux
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
Re-read table failed with error 16: Périphérique ou ressource occupé.
Reboot your system to ensure the partition table is updated.
WARNING: If you have created or modified any DOS 6.x
partitions, please see the fdisk manual page for additional
information.
Remarque
Le système vous recommande de redémarrer. On formate ensuite la partition en swap,
le système va initialiser la première page. Nous choisissons la dernière version du
swap Linux (version 1).
# mkswap -v1 /dev/hda7
Setting up swapspace version 1, size = 41086976 bytes
On active ensuite ce nouveau swap.
# sync # Met à jour les super blocs des systèmes de fichiers
(cf. Module 4 : Les systèmes de fichiers)
# swapon -v /dev/hda7
swapon on /dev/hda7
On affiche la liste des swaps actifs.
# free
total used free shared buffers cached
Mem: 118588 32504 86084 0 1896 19092
-/+ buffers/cache: 11516 107072
Swap: 80248 0 80248
# cat /proc/swaps
Filename Type Size Used Priority
/dev/hda6 partition 40124 0 -1
/dev/hda7 partition 40124 0 -4
Création d’un swap de 32 Mo dans un fichier.

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 9-33
Module 9 : Les disques

# dd if=/dev/zero of=/fichier.swap bs=1024 count=32768


32768+0 enregistrements lus.
32768+0 enregistrements écrits.
# mkswap /fichier.swap
Setting up swapspace version 0, size = 33550336 bytes
# chmod 600 /fichier.swap
# sync
# swapon -v /fichier.swap
swapon on /fichier.swap
# cat /proc/swaps
Filename Type Size Used Priority
/dev/hda6 partition 40124 0 -1
/dev/hda7 partition 40124 0 -6
fichier.swap file 32764 0 -7
Désactiver un swap.
# sync
# swapoff -v /fichier.swap
swapoff on /fichier.swap
# swapoff -v /dev/hda7
swapoff on /dev/hda7

9-34 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 9 : Les disques

Les disques dédiés


Les disques dédiés

/dev/hda8

oracle
oracle Disque dédié

••Une
Uneapplication
applicationutilise
utilisede
demanière
manièreexclusive
exclusiveun
undisque.
disque.

TSOFT - Linux Administration Module 9 : Les disques - 9.9

La partition d’un disque peut être dédiée à un logiciel d’application.


Les fichiers de données du disque ne sont connus que du logiciel et sont dans un
format spécifique. Ils n’apparaissent pas dans l’arborescence.
Les gestionnaires de bases de données offrent cette possibilité de stocker une base de
données dans un disque dédié plutôt que dans les systèmes de fichiers d’UNIX.
C’est l’administrateur de bases de données (le « DBA »), plus que l’administrateur du
système UNIX, qui effectue l’administration du disque. L’administrateur du système
UNIX se limite à initialiser le disque (partition ou volume logique) et éventuellement
à en modifier les attributs (droits, propriétaire et groupe).
La commande dd permet de les sauvegarder quand les applications qui les utilisent
sont arrêtées.
Remarque
Les administrateurs de systèmes Linux qui utilisent des disques RAID et des vloumes
logiques ont intérêt à conserver le système de fichiers root sur un disque ordinaire. Les
procédures de maintenance et de réparation s’en trouvent facilitées.

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 9-35
Module 9 : Les disques

Atelier 9 : Les disques physiques et logiques


Atelier 9 : Les disques physiques et logiques

Objectifs :
„ Comprendre les possibilités
d’organisation d’un système UNIX
„ Comprendre les opérations que
nécessite l’ajout d’un disque
„ Faire le lien entre ressource physique
et FS

Durée : 30 minutes.

TSOFT - Linux Administration Module 9 : Les disques - 9.11

Exercice n°1
Quels sont les types de disques supportés par Linux ?

Exercice n°2
Quel est le nom du fichier spécial du deuxième disque IDE ?

Exercice n°3
Quel est le nom du fichier spécial de la première partition du premier disque SCSI ?

Exercice n°4
Indiquez les plages de valeurs des partitions physiques et des partitions logiques d’un
disque IDE.

Exercice n°5
Listez les commandes gérant l’espace de swap de votre système.

Exercice n°6
Quels sont les espaces de swap actifs de votre système ?

9-36 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 9 : Les disques

Exercice n°7
Procédez à la création d’une partition logique.

Exercice n°8
Créez un swap sur la partition définie à l’exercice n° 7.

Exercice n°9
Créez un swap dans un fichier de 16 Mo spécialement créé à cet effet.

Exercice n°10
Affichez l’espace libre des swaps de votre système.

Exercice n°11
Nous suggérons au lecteur qui dispose d’espace disque de créer un disque RAID0, en
reproduisant l’exemple du support. Il n’y a évidemment de corrigé en annexe. Une
mise en pratique favorise la compréhension du mécanisme.

Exercice n°12
De la même manière, le lecteur peut créer un groupe de volume.

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 9-37
Module 10 : Installation de Linux

• Disquette de boot,
rawrite, FIPS,
• Installation locale, en
réseau
• Partitions, « FS »,
Disk Druid,
• Paquetages, LILO

10Module 10 :
Installation de Linux
Objectifs
Après la lecture de ce module, le lecteur sait installer un système Linux.

Contenu
Les principes d’installation de Linux
Les types d’installation
Le partitionnement
Les étapes de l’installation de Linux
Le multi-boot avec LILO
Le démarrage de Linux depuis un autre système
L’installation réseau

Références

HOWTO : Installation-HOWTO, Laptop-HOWTO, Linux-From-Scratch-HOWTO


PLIP-Install-HOWTO, Hardware-HOWTO, Prc-Installation-checklist mini
HOWTO, Upgrading your Linux Distribution minit-HOWTO,
Laptop-HOWTO
Livre : Le guide d’installation fourni avec la distribution
Internet : Les sites de la distribution (http://www.redhat.com…)

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 10-1
Module 10 : Installation de Linux

Principes d’installation de Linux


Principes d’installation de Linux

„ Chargement d’un mini-système Linux


Chargement à partir d’une unité bootable. Le script d’installation
propose une installation rapide ou paramétrée
„ Préparation des disques
Reconnaissance, formatage et partitionnement des disques. Création
des FS et du swap. Le mini-système s’installe sur le disque dur
„ Installation des paquetages
„ Installation du reste du système
Collecte d’informations sur la configuration matérielle. Création du
noyau adéquat

TSOFT - Linux Administration Module 10 : Installation de Linux - 10.2

Aujourd’hui, l’installation d’un système Linux n’a plus la complexité des premières
versions et ne nécessite plus une connaissance approfondie du système. Elle est
réalisée par une procédure d’installation qui évite de connaître les commandes
utilisées. Il suffit de répondre à un ensemble de questions pour lesquelles il est souvent
nécessaire d’avoir préalablement, hors du feu de l’action, prévu les bonnes réponses.
Répondre au hasard ou accepter une valeur par défaut, sans en savoir les
conséquences, amène souvent à reprendre complètement l’installation. « On corrigera
plus tard » nécessite souvent une expérience que l’on n’a pas encore ou alors, on
saurait répondre.
Il est possible de définir quelques éléments essentiels qu’il faut connaître avant de
démarrer l’installation :
Quelle est la configuration physique de son ordinateur ?
• Combien de disques ? Quelle taille ont-ils individuellement et globalement ?
Quel est le type de contrôleur, IDE ou SCSI ?
• Quels sont les systèmes de fichiers que le système va automatiquement créer ?
Quel espace disque vont-ils occuper ?
• Quelle taille pour le disque de swap primaire ?
• Quelle taille pour le système de fichiers des utilisateurs (/home) ?
• Faut-il créer des systèmes de fichiers supplémentaires ? Si oui, immédiatement ?
Si non, quel espace doit-on laisser pour les partitions ?
Remarque
Pour connaître la configuration physique de son ordinateur et les caractéristiques des
périphériques existants, on peut utiliser d’autres systèmes d’exploitation, notamment
Windows. Sous Windows 95, on utilise l’outil « Système » du panneau de
configuration. Si un système Linux est déjà installé et à défaut d’une commande
adaptée, le répertoire /proc est riche de fichiers d’informations.

10-2 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 10 : Installation de Linux

Quels paramètres pour le réseau ?


• Définir une adresse IP et choisir un masque (« Netmask »)
• Un nom d’hôte ?
• Quelles sont les IRQ et les adresses pour les entrées/sorties ?
Quel est le fuseau horaire ?
Quel mot de passe pour root ?
Quels sont les produits à installer immédiatement ?
Remarques
La lecture du manuel d’installation livrée avec le CD-ROM peut être instructive.
Il est aussi conseillé de lire attentivement les fichiers « Howto » qui décrivent les
multiples expériences vécues par d’autres et qui vous disent comment éviter les pièges
ainsi que les fichiers README du CD-ROM d’installation.
L’installation peut alors commencer.
Dans le cas où le système Linux va cohabiter avec d’autres systèmes d’exploitation ou
si l’on effectue une mise à jour du système, il est fortement conseillé de commencer
par réaliser une sauvegarde de l’existant.
Pour démarrer l’installation, il faut « booter » un système qui déclenche l’exécution du
script d’installation. Ceci se fait à partir d’une unité « bootable » : disquette, CD-ROM
ou d’un serveur d’installation sur le réseau.
Le système chargé en mémoire crée un système de fichiers root en mémoire, dans un
disque virtuel en RAM (RAM disk) et démarre l’exécution de la procédure
d’installation qui propose une installation typique ou paramétrée.
A l’issue de cette phase, un nouveau noyau est généré et le système Linux est installé.
Il reste à réaliser la post-installation, dont la création des comptes des utilisateurs et
l’installation des progiciels spécifiques.

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 10-3
Module 10 : Installation de Linux

Les types d’installation


Les types d’installation

Installation
Installationlocale
locale
boot CD Linux

Installation
Installationréseau
réseau

bootnet
Réseau
TCP/IP

serveur

TSOFT - Linux Administration Module 10 : Installation de Linux - 10.3

Parmi les différentes distributions de Linux, nous avons choisi de présenter


l’installation de Linux Red Hat version 6.0. Ce choix n’a pas pour but de faire pencher
la balance en faveur de cette distribution en particulier. C’est, rappelons-le, le choix
initial des auteurs.

Les types d’installation


Linux Red Hat offre, depuis la version 5.2, trois classes d’installation qui
correspondent à trois types de configuration.
1. La classe station
Cette classe est destinée aux utilisateurs non initiés au processus d’installation. Elle
ne nécessite de fournir que quelques informations essentielles. Elle supprime toutes
les partitions Linux existantes et utilise tout l’espace disque disponible pour créer :
• Une partition « /boot » de 16 Mo,
• Une partition « / » de 600 Mo environ.
Dans le cas où elle détecte la présence d’un autre système d’exploitation, le plus
souvent Windows 9x, elle configure automatiquement le chargeur de Linux
« LILO » en « Dual boot » pour qu’il prenne en compte le démarrage de l’autre
système d’exploitation.
2. La classe serveur
En choisissant cette classe, où l’installation est également simplifiée, l’utilisateur
configure son ordinateur en serveur. Cette installation requiert un disque d’un
minimum de 1,6 Go. Elle supprime toutes les partitions existantes pour créer :
• Une partition « /boot » de 16 Mo,
• Une partition « / » de 256 Mo,
• Une partition « /usr » de 512 Mo,

10-4 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 10 : Installation de Linux

• Une partition « /home » de 512 Mo,


• Une partition « /var » de 256 Mo.
3. La classe paramétrable
L’utilisateur peut, avec la classe paramétrable, choisir librement le nombre et la taille
des partitions. Il choisit également les paquetages à installer et il décide de la
localisation du chargeur LILO.
• Le chargeur LILO peut être installé sur une disquette. Le système Linux est
ensuite démarré à partir de la disquette de boot que l’on vient de fabriquer.
• Le chargeur LILO peut être installé comme chargeur principal dans le MBR,
« Master Boot Record » (cf. Module 7 : L’arrêt et le démarrage). Il faut, s’il
existe plusieurs systèmes d’exploitation sur votre disque, les ajouter au fichier
de configuration de LILO, pour qu’il les propose au démarrage de l’ordinateur.
• Le chargeur LILO peut être installé dans la partition Linux. On doit alors
configurer le chargeur de l’ordinateur pour qu’il puisse aussi démarrer Linux.

Disquettes d’installation
La distribution Linux Red Hat comprend plusieurs CD-ROMs (Binaires, Sources et
outils divers ). Si le lecteur de CD-ROM de votre ordinateur n’est pas « bootable »,
vous pouvez fabriquer une disquette de démarrage (« boot ») qui permet de démarrer
votre ordinateur.
La disquette de démarrage contient LILO, un noyau Linux avec un nombre minimum
de pilotes de périphériques et un système de fichiers root contenant l’essentiel pour
réaliser l’installation.
Dans le cas d’une installation réseau, vous devez générer à partir du CD-ROM Linux,
une disquette de démarrage spéciale, que l’on baptisera « bootnet ».
Dans le cas où vous installez Linux à partir d’un CD-ROM PCMCIA, il vous faut en
plus de la disquette de démarrage, générer une disquette supplémentaire que l’on
baptisera « pcmcia ».

La création des disquettes


Les images des disquettes se trouvent dans le répertoire « images » du CD-ROM
Linux. Les fichiers boot.img et bootnet.img contiennent les images des disquettes de
démarrage en local et en réseau. Le répertoire contient également le fichier rescue.img
qui est l’image d’une disquette de réparation du système Linux. Elle contient un
système de fichiers root et les commandes nécessaires à la réparation du disque Linux.
Nous conseillons fortement au lecteur de fabriquer une disquette de secours. Dans le
cas où le démarrage à partir du disque dur ne se fait pas, l’utilisateur démarre avec la
disquette de boot. A l’invite de LILO, « LILO : », on répond alors « rescue ». Quand
la disquette « rescue » a été lue, on peut, à l’invite du shell bash, utiliser les
commandes utiles au diagnostic et à la réparation du disque dur (« mount, fdisk,
fsck »).
Pour fabriquer les disquettes de démarrage (boot), supplémentaire et de secours
(rescue), on utilise la commande rawrite du répertoire \dosutils si l’on opère à partir
de Windows ou la commande dd à partir de Linux.

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 10-5
Module 10 : Installation de Linux

La création des disquettes d’installation et de réparation sous


Windows 9x ou Windows NT
Le plus simple est d’ouvrir une fenêtre MS-DOS, en cliquant successivement sur
[Démarrer] [Programmes] [MSDOS], puis d’exécuter les commandes suivantes :
Nous supposons, dans les exemples, que le lecteur de CD-ROM dans lequel vous avez
inséré le CD-ROM Linux est le lecteur « D : ».
Création de la disquette de boot
Insérez une disquette vierge et formatée, puis exécutez la commande :
D: \> dosutils\rawrite
Enter disk image source file name: \images\boot.img
Enter target diskette drive: a:
Please insert a formatted diskette into drive A: and press -ENTER- :
Création de la disquette d’installation réseau « bootnet »
Insérez une disquette vierge et formatée, puis exécutez la commande :
D: \> dosutils\rawrite
Enter disk image source file name: \images\bootnet.img
Enter target diskette drive: a:
Please insert a formatted diskette into drive A: and press -ENTER- :
Création de la disquette rescue
Insérez une disquette vierge et formatée, puis exécutez la commande :
D: \> dosutils\rawrite
Enter disk image source file name: \images\rescue.img
Enter target diskette drive: a:
Please insert a formatted diskette into drive A: and press -ENTER- :
Les trois disquettes peuvent être étiquetées « INSTALL Linux Boot/LILO »,
« INSTALL » et « Réparation Linux ».

La création des disquettes d’installation et de réparation sous


Linux
Montez le CD-ROM :
# mount -t iso9660 /dev/cdrom /mnt/cdrom
mount: block device /dev/cdrom is write-protected, mounting read-only
Allez dans le répertoire de montage et affichez les fichiers de ce répertoire :
# cd /mnt/cdrom
Création de la disquette boot
Insérez une disquette vierge et exécutez la commande :
# dd if=images/boot.img of=/dev/fd0 bs=1440k
1+0 enregistrements lus.
1+0 enregistrements écrits.
Création de la disquette d’installation réseau
Insérez une disquette vierge et exécutez la commande :
# dd if=images/bootnet.img of=/dev/fd0 bs=1440k
1+0 enregistrements lus.
1+0 enregistrements écrits.

10-6 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 10 : Installation de Linux

Création de la disquette rescue


Insérez une disquette vierge et exécutez la commande :
# dd if=images/rescue.img of=/dev/fd0 bs=1440k
1+0 enregistrements lus.
1+0 enregistrements écrits.

Remarques
• Le répertoire de montage du CD-ROM peut être choisi librement, il suffit que ce
dernier existe.
• Si vous fabriquez les disquettes à partir d’un autre système UNIX que Linux, le
type de système de fichiers CD-ROM peut être différent d’ISO9660, et nous vous
invitons à consulter le manuel de votre système. La commande de montage du
CD-ROM pourrait être :
# mount -f HS /dev/cdrom /cdrom # typiquement SCO UNIX
# mount -F cdfs /dev/cdrom /cdrom # UNIX SVR4

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 10-7
Module 10 : Installation de Linux

Le partitionnement
Le partitionnement
Espace
Espacedisque
disquedisponible
disponible

Installation Linux
Un disque Win 9x Win 9x
IDE Espace Linux
libre
Linux
/dev/hda3
Aucun
Aucunespace
espacelibre
libre /dev/hda4

Win 9x Win 9x Win 9x


FIPS.EXE Partition Linux
DOS
Linux

TSOFT - Linux Administration Module 10 : Installation de Linux - 10.4

Définir les partitions


L’installation du système Linux requiert au minimum deux partitions, une partition de
swap (cf. Module 9 : Les disques du système Linux) et une partition « / » d’une taille
dépendante du nombre de paquetages que l’utilisateur souhaite installer. Une taille
minimum de 300 Mo paraît raisonnable.
Remarque
La taille de la partition de swap dépend de la nature, gestion ou calcul, et de la taille
des applications que vous allez exécuter sur le système Linux. A défaut d’éléments
précis et objectifs pour en déterminer précisément la taille, il est souvent conseillé de
disposer de deux fois la taille de la RAM. Il est possible de créer plusieurs disques de
swap.
Dans le cas où vous décidez d’une installation personnalisée, il est préférable de créer
suffisamment de partitions pour y installer des systèmes de fichiers pour Linux et
pour vos applications spécifiques. Nous rappelons que la partition « / » est
obligatoire. Le tableau qui suit fournit des idées de partitionnement que le lecteur peut
adapter à ses propres besoins.
Partition Taille Description
/boot De 10 à 20 Mo. Elle contient les fichiers de « boot LILO » et le
noyau Linux et doit résider en deçà du cylindre
1023 de votre disque.
/ De 50 à 100 Mo. Elle contient le système de fichiers principal de
Linux.
/usr Au moins 300 Mo. Elle contient les commandes et les services pour
Elle peut atteindre 1 les utilisateurs. C’est de loin la plus volumineuse.
Go et peut être plus.

10-8 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 10 : Installation de Linux

/var Elle est importante Elle est le pendant de « /usr ». Elle contient les
pour un serveur. requêtes adressées aux services des utilisateurs et
les fichiers historiques (fichiers log).
On peut l’estimer à
environ 50 Mo.
/tmp Sa taille dépend aussi Elle contient des fichiers temporaires créés par
du nombre de services des commandes et des services. La création
installés. On peut spécifique d’une partition pour /tmp évite la
l’estimer à environ 50 saturation de la partition root, où /tmp réside
Mo. sinon, par des fichiers temporaires trop
volumineux.
/home Sa taille dépend du Elle contient les répertoires de connexion des
nombre d’utilisateurs utilisateurs du système. La création spécifique
et de leur d’une partition pour /home évite la saturation de la
consommation partition root, où /home réside sinon, par des
d’espace disque. utilisateurs trop gourmands.
/usr/src Sa taille est d’au Elle contient les sources du noyau et des
minimum 30 Mo. paquetages. Elle est indispensable pour régénérer
un noyau personnalisé.

Libérer de l’espace disque


Si vous disposez de suffisamment d’espace disque pour installer le système Linux et y
créer les partitions que vous avez planifiées, vous pouvez démarrer l’installation
immédiatement.
Si la totalité de l’espace disque est occupé par le système Windows, ce qui est souvent
le cas des acquéreurs d’ordinateurs livrés déjà installés, ou si votre partition Windows
ne laisse pas assez d’espace disque libre, le CD-ROM d’installation de Linux propose
une commande \dosutils\fips.exe qui permet de modifier la taille de la partition
allouée à Windows afin de libérer de l’espace pour Linux. Cette opération peut être
réalisée par n’importe quel logiciel qui sache bouger dynamiquement, sans perte de
données, les frontières des partitions (Ghost, Magic Partition…).
Remarques
• Pour connaître les tailles des partitions actuellement installées et l’espace disque
libre, vous utiliserez la commande fdisk pour Windows 9x ou l’outil
« Administrateur de disques » pour Windows NT.
• Comme les manipulations des partitions sont toujours délicates, nous
recommandons fortement aux utilisateurs de commencer par sauvegarder les
données importantes du disque.
La mise en œuvre de FIPS se fait en plusieurs étapes :
1. Fabriquez une disquette « bootable » sous DOS. FIPS ne peut pas être exécuté
directement à partir de Windows ou de Linux. La création de la disquette est
réalisée en exécutant la commande :
C:\> FORMAT A:/S
Vous pouvez ensuite personnaliser les fichiers AUTOEXEC.BAT et CONFIG.SYS
de la disquette.
2. Copiez les fichiers FIPS.EXE, ERRORS.TXT et RESTORRB.EXE du répertoire
\DOSUTILS du CD-ROM Linux sur la disquette. La commande RESTORRB
permet une restauration ultérieure de l’ancien partitionnement.

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 10-9
Module 10 : Installation de Linux

3. Exécutez la commande SCANDISK pour vérifier la cohérence du disque.


4. Défragmentez le disque avec la commande DEFRAG pour que les fichiers soient
déplacés en début de la partition. La place libérée sera utilisée par FIPS. Certaines
commandes comme MIRROR ou IMAGE créent un fichier caché dans le dernier
secteur de la partition. Vous devez les supprimer. Ils seront recréés lors de la
prochaine exécution de ces commandes.
C:\>ATTRIB –R –H –S image.idx
C:\>DEL image.idx
C:\>ATTRIB –R –H –S mirorsave.fil
C:\>DEL mirorsave.fil
5. Supprimez le fichier d’échange de Windows. Le fichier d’échange doit être
réinstallé après l’exécution de FIPS. La suppression se fait en cliquant sur
[Démarrer][Paramètres][Système][Performance][Mémoire Virtuelle], puis en
cochant les cases « Me permettre de spécifier mes propres paramètres de mémoire
virtuelle » et « Désactivez la mémoire virtuelle (non recommandé ) ». La
réinstallation ultérieure se fait en sens inverse en cochant la case « Laissez
Windows gérer les paramètres de mémoire virtuelle ».
6. Bootez avec la disquette préparée dans les étapes 1 et 2 et, à l’invite de DOS,
exécutez la commande FIPS.
A:\>FIPS
Exemple de réalisation
A > fips
FIPS VERSION 1.5, Copyright © 1993/94 Arno Shaefer
FAT32 Support Copyright © 1997 Gordon Chafee
DO NOT use FIPS in a multitasking environment like Windows, OS/2, Desqview
Novell Task manager or the Linux emulator : boot from a DOS disk first.
If you use OS/2 or a disk compressor, read the relevant sections in FIPS.DOC.
FIPS comes with ABSOLUTELY NO WARRANTY, see file COPYING for details
This is a free software, and you are welcome to distribute it
Under certain conditions ; again see file COPYING for deatils.
Press any Key

Appuyez sur n’importe quelle touche pour voir s’afficher sur l’écran :
Partition Table
| | Start | | End | Start |Number of|
Part.|boot|Head Cyl. Sector|System|Head Cyl. Sector| Sector |Sectors | MB
-----+----+----------------+------+----------------+--------+---------+----
1 |yes | 1 0 1| 06h| 63 355 63| 63| 1435329| 700
2 | no | 0 356 1| 05h| 63 618 63| 1435392| 1060416| 517
3 | no | 0 0 0| 00h| 0 0 0| 0| 0| 0
4 | no | 0 0 0| 00h| 0 0 0| 0| 0| 0

Checking root sector … OK


Wich partition do you want to split (1/2) ? 1

Entrez 1 pour diminuer la taille de la partition FAT (ici Windows 95).

Bytes per sector: 512


Sectors per cluster: 32

10-10 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 10 : Installation de Linux

Reserved sectors: 1
Number of FATs: 2
Number of root directory entries: 512
Number of sectors (short): 0
Media descriptor byte: f8h
Sectors per FAT: 176
Sectors per track: 63
Drive heads: 64
Hidden sectors: 63
Number of sectors (long): 1435329
Physical drive number: 80h
Signature: 29h
Checking boot sector … OK
Checking FAT … OK
Checking for free space … OK

Il vous est ensuite demandé si vous voulez sauver sur disquette votre ancienne
configuration, afin de pouvoir la restaurer plus tard. Acceptez en tapant « y » (yes),
puis tapez aussi « y » quand il vous sera demandé si vous avez inséré une disquette
formatée dans le lecteur de disquettes. Il s’agit de la disquette de boot déjà présente
dans le lecteur de disquettes.
Do you want to make a backup of your root and boot sector before
Proceeding (y/n) ? y
Do you have a bootable floppy disk in drive A : as described in the
Documentation (y/n) ? y
Writing file a:\rootboot.000
A présent, il ne vous reste plus qu’à utiliser les touches <flèche gauche> et <flèche
droite> pour choisir la nouvelle taille de la partition.
Enter start cylinder for new parttion (349 - 355)
Use the curtsor key to choose the cylinder, <enter> to continue
Old partitionCylinder New partition
687.1 MB 349 13.8 MB
A la fin, après avoir validé votre choix en appuyant sur la touche <Entrée>, les
caractéristiques de la nouvelle partition s’affichent sur l’écran. Il suffit de taper « c »
(continue) pour finaliser la création de la partition dans laquelle vous installerez
Linux, et de confirmer en frappant « y » (yes) pour terminer.
First cluster : 43962
Last cluster : 44843
Testing if empty … OK
New partition Table
| | Start | | End | Start |Number of|
Part.|boot|Head Cyl. Sector|System|Head Cyl. Sector| Sector |Sectors | MB
-----+----+----------------+------+----------------+--------+---------+----
1 |yes | 1 0 1| 06h| 63 348 63| 63| 1407105| 687
2 | no | 0 356 1| 05h| 63 618 63| 1435392| 1060416| 517
3 | no | 0 349 1| 06h| 63 355 63| 1407168| 28224| 13
4 | no | 0 0 0| 00h| 0 0 0| 0| 0| 0

Checking root sector … OK

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 10-11
Module 10 : Installation de Linux

Do you want to continue or reedit the partition table (c/r) ? c


New boot sector
Bytes per sector: 512
Sectors per cluster: 32
Reserved sectors: 1
Number of FATs: 2
Number of rootdirectory entries: 512
Number of sectors (short): 0
Media descriptor byte: f8h
Sectors per FAT: 176
Sectors per track: 63
Drive heads: 64
Hidden sectors: 63
Number of sectors (long): 1435329
Physical drive number: 80h
Signature: 29h
Checking boot sector … OK
Ready to write new partition scheme to disk
Do you want to proceed (y/n) ? y
Remarque
La nouvelle partition est déclarée de type DOS. Vous devrez la supprimer pendant
l’installation de Linux afin de créer des partitions Linux.

10-12 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 10 : Installation de Linux

Etapes de l’installation de Linux


Etapes de l ’installation de Linux
„ Booter depuis la disquette
„ Choix de la langue et du clavier
„ Partitionnement avec « Disk Druid »
„ Choix des paquetages à installer
„ Configuration de X-Window
„ Configuration du réseau local
„ Choix du fuseau horaire
„ Configuration de l’imprimante
„ Définition du mot de passe de root
„ Création de la disquette de démarrage pour réparation
„ Configuration de LILO
TSOFT - Linux Administration Module 10 : Installation de Linux - 10.5

Nous allons à présent décrire avec précision toutes les étapes de l’installation du
système Linux depuis un CD-ROM local. Les autres types d’installation sont présentés
en fin du module.

Installation depuis le CD-ROM local


1. Démarrez l’ordinateur avec le système Linux
Trois possibilités s’offrent à l’utilisateur :
• Démarrer avec la disquette de boot Linux fabriquée avec la commande rawrite ou
dd. C’est sans doute la solution la plus standard, sachant qu’il est important, dans
tous les cas, d’avoir créé une telle disquette.
• Exécuter la commande autoboot.bat disponible sur le CD-ROM Linux. Il faut
pour cela redémarrer l’ordinateur en mode DOS [Démarrer][Arrêter][Redémarrer
en mode DOS]. Quand le DOS a affiché le prompt, il faut exécuter les
commandes suivantes (on suppose que le lecteur de CD-ROM est le lecteur D :).
C:\>D :
D:\>CD DOSUTILS
D:\DOSUTILS>AUTOBOOT.BAT
Quelle que soit la méthode de démarrage choisie, l’utilisateur aboutit au même écran
d’accueil sur lequel est affiché, en bas et à gauche, l’invite « boot : ». Les messages
affichés vous propose de répondre :
<Entrée> pour une installation classique,
fr<Entrée> pour une installation en français,
expert<Entrée> pour une installation effectuée par des spécialistes.
Nous allons effectuer le premier choix et appuyer sur <Entrée>.
2. Choisir la langue
Sélectionnez « french ».

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 10-13
Module 10 : Installation de Linux

3. Choisir le clavier
Sélectionnez « fr-latin1 »
4. Choisir la méthode d’installation
Sélectionnez « CD-ROM local », puis cliquez sur « OK ». Le programme
d’installation tente alors de détecter votre lecteur de CD-ROM. Il affiche un message
d’erreur en cas d’échec.
Remarque
Un lecteur de CD-ROM IDE-ATAPI ne pose aucun problème à Linux. Si vous
disposez d’un lecteur de CD-ROM SCSI, vous serez amené à indiquer le bon pilote.
Linux supporte les CD-ROM SCSI les plus courants. Vous serez cependant peut-être
invité à fournir quelques paramètres au pilote du lecteur (cf. Documentation du lecteur
de CD-ROM).
Une fois le CD-ROM reconnu, le programme d’installation vous demande si vous
souhaitez réaliser une installation ou une mise à jour. Dans le cas présent, vous
répondez « Installation ».
Puis, vous êtes invité à choisir la classe d’installation parmi « station », « serveur » ou
« personnalisée ». Nous présentons la classe « personnalisée ».
Remarque
Il existe un choix « mise à jour » qui permet, entre autres, d’installer des paquetages et
de régénérer la disquette de démarrage.

5. Choisir le type de disque dur


Vous sélectionnez « yes » ou « no » selon que votre disque dur est un disque SCSI ou
IDE.
6. Créer les partitions Linux
Le programme d’installation propose, pour créer les partitions, de choisir parmi deux
commandes : fdisk et Disk Druid. Nous conseillons de choisir Disk Druid. Cet
utilitaire est simple d’emploi. Il offre en outre l’avantage de demander les répertoires
de montage pour les partitions qui contiennent des systèmes de fichiers et de mettre à
jour immédiatement le fichier /etc/fstab, qui rend leur montage permanent (cf. Module
4 : Les systèmes de fichiers).
Si vous avez créé une partition avec la commande FIPS, vous devez commencer par
la supprimer pour restituer l’espace qu’elle occupait à l’espace libre du disque et créer
ensuite les partitions Linux.
Pour chaque partition, on choisit le type et la taille en Mo. S’il s’agit d’une partition
destinée à contenir un système de fichiers, on saisit également le répertoire de
montage. Cette dernière opération est évidemment inutile pour une partition de swap.
Nous rappelons aux débutants que l’installation de Linux oblige à créer une partition
de swap, mais que le reste du système peut résider dans la seule partition associée au
répertoire de montage « / ».
7. Activer les partitions
Une fois le partitionnement terminé, le programme d’installation demande à procéder
à l’initialisation et à l’activation de la partition de swap et à la création des systèmes
de fichiers sur les partitions précédemment créées. Cette étape peut débuter par le
formatage des partitions, opération que nous vous invitons fortement à réaliser.

10-14 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 10 : Installation de Linux

8. Sélectionner les paquetages à installer


Vous êtes maintenant invité à sélectionner les paquetages (« packages ») que vous
voulez installer. C’est une étape à la fois techniquement simple et difficile quant aux
choix. Le nom d’un paquetage n’est pas forcément évocateur de son utilité. On peut
distinguer ceux qui correspondent à des services, comme les paquetages associés au
réseau, ceux qui sont utiles aux développeurs d’application, ceux qui permettent la
régénération du noyau et les autres. Le livre qui accompagne la distribution renseigne
parfois l’utilisateur.
Muni de ces informations, vous pourrez sélectionner les paquetages à installer.
Si vous sélectionnez la case « [*] Tout », vous installez la totalité des paquetages.
L’ensemble des paquetages occupe environ 800 Mo de disque. Il faut noter qu’il est
facile d’installer ou de désinstaller ultérieurement des paquetages avec la commande
en mode texte, rpm ou la commande graphique gnorpm (cf. Module 13 : Les
paquetages).
Si vous cochez la case « [*] Sélectionnez individuellement les paquetages », vous
choisissez les composants de chaque paquetage que vous voulez installer, ce qui
nécessite alors de connaître les commandes et services internes de chaque paquetage.
Remarque
Il existe des dépendances entre certains paquetages. Quand le programme
d’installation détecte une dépendance, il vous propose d’installer le paquetage dont
dépend celui en cours pour la satisfaire. L’utilisateur n’a pas d’autre choix que
d’accepter !
Le programme d’installation copie ensuite tous les fichiers des paquetages
sélectionnés et crée un fichier historique de l’installation /tmp/install.log.
Pendant cette étape, un écran montre :
• Le nombre de paquetages à installer,
• La taille en Mo de tous les paquetages à installer,
• Le nombre et la taille des paquetages qui restent à installer,
• Le temps, en minutes, pour installer tous les paquetages, le temps écoulé et le temps
restant.
9. Installer la souris
Le programme d’installation tente de détecter la présence d’une souris. Normalement,
cette étape aboutit toujours bien, car les ports souris sont standard. Vous pouvez
cocher la case « [*] Emuler 3 boutons », ce qui est ensuite bien pratique quand on
utilise X-Window. Il ne reste plus qu’à valider le port souris détecté, normalement
/dev/cua0 (COM1 : en DOS).
10. Configurer X-Window (cf. Module 16 : X-Window)
Si votre carte graphique n’est pas détectée par le programme d’installation, vous êtes
invités à la choisir dans une liste de cartes supportées par Linux. A défaut, vous
pouvez sélectionner le standard « VGA Generic » en attendant de vous procurer le
pilote de votre carte. Même si toutes les qualités de votre carte ne sont pas exploitées,
vous bénéficierez quand même des outils graphiques et de leur convivialité.
Remarque
Si vous disposez d’un accès Internet, vous trouverez peut-être le pilote de votre carte
sur le site « http://www.suse.de ». La distribution suse sponsorise le groupe Xfree86
qui développe des pilotes pour les cartes graphiques récentes. Il est évident que cette
distribution est la première à les mettre à la disposition de la communauté Internet.

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 10-15
Module 10 : Installation de Linux

Il vous est ensuite demandé de sélectionner le moniteur. Le choix s’effectue aussi dans
une liste. A défaut de trouver votre moniteur, vous choisissez « Personnel ». Il vous
est demandé de choisir dans une liste la plage des fréquences verticales ainsi que la
fréquence de synchronisation horizontale de votre moniteur.
Remarque
Vous pouvez choisir des fréquences verticales inférieures à celles réellement
supportées par votre moniteur, mais en aucun cas supérieures. Vous risqueriez alors de
l’endommager (cf. Guide du moniteur).
Une fois les choix terminés, le programme d’installation vous demande si vous voulez
qu’il teste votre configuration graphique pour définir les modes de résolution par
défaut. Quand le test est terminé, vous gardez la liberté de les modifier.
11. Configuration du réseau
Vous pouvez configurer Linux pour votre réseau local (cf. Module 15 : Le réseau).
Pour cela, si vous n’optez pas pour une détection automatique, il vous faut
sélectionner la carte réseau qui équipe votre ordinateur et fournir les paramètres de
configuration de la carte : l’IRQ (souvent 3 ou 5 par défaut) et le champ I/O Address
(souvent 300 par défaut). Cette dernière information doit être fournie en hexadécimal.
Pour cela, on la préfixe par 0x, ce qui donne 0x300 pour l’adresse 300.
Après les paramètres de la carte réseau, vous devez renseigner la configuration de base
de TCP/IP :
• Le nom du domaine,
• Le nom d’hôte que vous attribuez à l’ordinateur dans le réseau,
• L’adresse IP de votre machine,
• Le masque de réseau,
• L’adresse du routeur par défaut (« Default gateway ») de votre réseau local.
12. Configuration de la zone géographique
Cette information permet de configurer Linux avec l’heure spécifique de votre pays, la
France.
Sélectionnez simplement « Europe/Paris » et Linux fera le reste.
13. Sélection des services Linux
Les services Linux sélectionnés seront ensuite activés automatiquement lors du
passage au mode multi-utilisateur. Il s’agit en fait des démons démarrés par les scripts
/etc/rc* (cf. Module 7 :L’arrêt et le démarrage).
14. Installation d’une imprimante
Vous pouvez configurer facilement votre imprimante. Pour les paramètres à fournir,
nous vous renvoyons au module 8 qui traite de l’impression.
15. Choix du mot de passe de root
Le programme d’installation vous demande de saisir le mot de passe de l’utilisateur
root. Ce mot de passe, très important, doit être saisi deux fois avant d’être mémorisé.
16. Configuration du démarrage de votre système Linux
Le programme d’installation vous demande si vous souhaitez créer une disquette de
démarrage. Nous vous recommandons de répondre par l’affirmative et d’insérer, à sa
demande, une disquette vierge dans le lecteur. Cette disquette vous permettra ensuite
de démarrer votre système si le programme de chargement « LILO » du disque dur est
endommagé.

10-16 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 10 : Installation de Linux

Il faut, pour terminer, indiquer où le chargeur LILO doit être installé. Vous avez deux
possibilités :
• Dans le secteur MBR (cf. Module 7 :L’arrêt et le démarrage).
• Dans le premier secteur de la partition de boot de Linux (/boot). Dans ce dernier
cas, le chargeur LILO doit être activé par le chargeur d’un autre système
d’exploitation ou depuis la disquette de boot créée à l’étape précédente.

Autres types d’installation


Installation depuis une image sur le disque dur local
Cette méthode nécessite que vous indiquiez le chemin d’accès du répertoire du disque
dur contenant l’image du CD-ROM Linux. Elle est, pour le reste, identique à
l’installation depuis le CD-ROM local.
Remarques
Seule l’arborescence « Redhat » est nécessaire pour cette installation.
Si l’image du CD-ROM Linux est sur une partition Windows 9x, vous devez vous
assurer de l’orthographe du répertoire, qui doit être très exactement « RedHat ». Au
besoin, il vous faudra le renommer, car le programme d’installation, contrairement à
Windows, respecte la distinction entre minuscule et majuscule dans les noms de
fichiers.

Installation depuis le réseau (cf. Fin du module)

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 10-17
Module 10 : Installation de Linux

Le multi-boot avec LILO


Le multi-boot avec LILO

Le
Lechargeur
chargeurLILO
LILO

Que charger ?

Le noyau Linux par Un autre noyau Linux Le boot d’un autre


défaut : vmlinuz : vmlinux.old système : Windows

TSOFT - Linux Administration Module 10 : Installation de Linux - 10.6

Principes
Le chargeur LILO peut démarrer le chargement d’un autre système d’exploitation que
Linux, le plus souvent Windows 9x ou NT.
Pour cela, il faut que LILO réside dans le secteur MBR et il faut indiquer la partition
où réside l’autre système d’exploitation dans le fichier de configuration du chargeur
LILO, le fichier /etc/lilo.conf. Pour terminer, vous devez exécuter la commande
/sbin/lilo.
Remarque
Chaque fois que l’on modifie le fichier /etc/lilo.conf ou que l’on recompile le noyau, il
faut exécuter la commande lilo.
Exemple d’ajout du système d’exploitation de la partition C : au chargeur LILO
# cat /etc/lilo.conf # on a ajouté, par vi, la partie other
boot=/dev/hda5
map=/boot/map
install=/boot/boot.b
prompt
timeout=50
image=/boot/vmlinuz- 2.4.7-10
label=linux
root=/dev/hda5
read-only
other=/dev/hda1
label=win95
table=/dev/hda
#/sbin/lilo
Added linux *
Added win95

10-18 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 10 : Installation de Linux

Lorsque LILO affiche son invite « LILO : », il suffit d’appuyer sur la touche <TAB>
pour connaître les systèmes d’exploitation que l’on peut exécuter et ensuite, de saisir
le nom du système que l’on souhaite effectivement démarrer.

Les principales directives du fichier /etc/lilo.conf


Le fichier /etc/lilo.conf contient des directives de la forme « mot_clé= ». Les
principales directives sont :
• La directive « boot= » précise où est installé le chargeur primaire. C’est le MBR
désigné par /dev/hda ou la partition racine de Linux, généralement /dev/hda<n>.
Par défaut, le secteur de boot est lu à partir de la partition montée comme système
de fichiers root.
• La directive « install= » précise le fichier utilisé comme secteur de boot, par
défaut /boot/boot.b.
• La directive « timeout= » précise, en dixième de secondes, le temps au bout
duquel le démarrage se poursuit automatiquement, en l’absence d’intervention de
l’opérateur.
• La directive « image= » indique le fichier ou le périphérique qui contient l’image
du noyau.

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 10-19
Module 10 : Installation de Linux

Le démarrage de Linux depuis un autre


système
Le démarrage de Linux depuis un autre système
Chargeur d’un autre MBR (« Master Boot
système Record »)

Windows 9x
LILO Partition Linux

LOADLIN

Noyau Linux
vmlinuz

TSOFT - Linux Administration Module 10 : Installation de Linux - 10.7

Quand LILO est installé dans le secteur de boot de la partition Linux, il peut être
activé par le chargeur du système qui réside dans le MBR, comme boot manager du
système OS/2 ou ntldr de Windows NT.
Le chargeur boot manager présente un inconvénient qui peut être dissuasif. Ce
chargeur nécessite une partition principale pour lui tout seul.
Nous avons choisi de présenter la solution NT loader de Windows NT.
La prise en charge de LILO par le chargeur se fait en partie sous Linux et en partie
sous Windows NT ou Windows 9x.
Pour que le chargeur NT (« ntldr ») sache activer le secteur de boot d’un autre
système, il suffit que celui-ci soit dans un fichier dont le chargeur ntldr connaisse le
nom. Il suffit donc de copier le secteur de boot de la partition Linux dans un fichier du
disque dur « C: » et de le renseigner dans le fichier de configuration du chargeur de
NT.
Sous Linux, supposons que la partition Linux est la partition /dev/hda3 et que la
partition C: corresponde à la partition /dev/hda1 de Linux. Deux solutions sont
possibles :
1. Monter la partition « C: » et créer directement le fichier contenant LILO sur la
partition « C: ».
# mount –t msdos /dev/hda1 /mnt
# dd if=/dev/hda3 of=/mnt/bootsect.lnx count=1 bs=512
# ls –l /mnt/bootsect.lnx
2. Créer le fichier sur une disquette au format DOS et le copier ensuite sur « C: ».
# dd if=/dev/hda3 of=/tmp/bootsect.lnx count=1 bs=512
# mcopy /tmp/bootsect.lnx a :

10-20 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 10 : Installation de Linux

Sous Windows, il faut copier le fichier de la disquette vers « C: » et éditer le fichier de


configuration du chargeur NT, le fichier boot.ini, et ajouter, en fin de fichier, la ligne
suivante :
C:\bootsect.lnx= "LINUX"
Remarques
• Pour modifier le fichier boot.ini, il est possible que vous soyez obligé de modifier
ces attributs en lecture seulement « Read Only », système « System » et caché
« Hidden » en exécutant la commande :
C:\> attrib –r –s –h boot.ini
et de les rétablir après l’édition en exécutant inversement
C:\> attrib +r +s +h boot.ini
• Le texte qui suit le caractère = dans la ligne C:\bootsect.lnx= "LINUX" est
entièrement libre.

Le chargeur DOS/Windows 9x ne sait pas charger d’autre système d’exploitation que


celui de la partition active (cf. Module 7 : L’arrêt et le démarrage). Les distributions
Linux proposent un exécutable DOS/Windows 9x, LOADLIN.EXE, pour démarrer
Linux à partir de DOS ou de Windows. L’utilisation de LOADLIN.EXE peut
essentiellement être envisagée dans deux cas de figure :
1. Le noyau Linux se trouve dans une partition située au delà du cylindre 1023.
2. Vous disposez de périphériques « Plug and play » que le pilote (« Device driver »)
de Linux n’arrive pas à initialiser correctement à la mise sous tension.

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 10-21
Module 10 : Installation de Linux

L’installation réseau
L’installation réseau

Installation
Installationréseau
réseau

/
Réseau
/home TCP/IP
bootnet
swap
Serveur
d’installation

TSOFT - Linux Administration Module 10 : Installation de Linux - 10.8

L’installation réseau peut être réalisée à partir d’un serveur NFS (UNIX, Linux) ou
d’un serveur FTP (Site Internet ou privé).
Ce type d’installation nécessite que vous ayez une carte réseau d’un type très répandu,
c’est le cas par exemple des cartes 3com, car le programme d’installation ne connaît
qu’un nombre restreint de cartes réseau.

Configuration d’un serveur NFS


Il suffit de monter le CD-ROM Linux et de partager ensuite le répertoire de montage
du CD-ROM.
L’exemple qui suit est le partage du CD-ROM à partir d’un système Linux.
# mount –t iso9660 /dev/cdrom /mnt/cdrom
# echo "/mnt/cdrom (ro)" >> /etc/exports
Il faut ensuite arrêter les services « rpc » qui gèrent le partage et les redémarrer.
# cd /etc/rc.d/init.d
# ./rpc stop
# ./rpc start
L’exemple qui suit est le partage du CD-ROM à partir d’un système UNIX SVR4.
# mount –F cdfs /dev/cd0 /cdrom
# share –F nfs /cdrom

Installation à partir du serveur d’un réseau


Démarrez l’installation à partir de la disquette de « bootnet », comme pour une
installation locale, et sélectionnez « NFS image » comme type d’installation dans le
menu qui propose les différents types d’installation réseau.

10-22 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 10 : Installation de Linux

Que vous utilisiez un serveur NFS, un serveur FTP ou un serveur HTTP (serveur
Web), la première partie de l’installation est commune aux trois méthodes, nous ne la
décrivons qu’une fois.
Partie commune aux trois types d’installation (NFS, FTP, HTTP)
Démarrez l’installation à partir de la disquette d’installation réseau « bootnet »,
comme pour une installation locale.
On doit, par la suite, sélectionner la carte réseau parmi les cartes disponibles, puis
choisir l’option [Autoprobe] pour que le programme d’installation détermine
automatiquement les paramètres « IRQ » et « I/O Address » de la carte ou l’option
[Specify] si vous souhaitez renseigner les paramètres vous-même.
Si la carte n’est pas détectée, vous ne pouvez pas continuer l’installation, sinon
l’écran suivant vous propose de configurer l’adresse IP de votre machine
manuellement [Adresse IP statique], [BOOTP] via un serveur BOOTP, ou [DHCP] via
un serveur DHCP (cf. Module 15 : Le réseau ).
Si vous choisissez l’option [Adresse IP statique], l’écran suivant vous demande de
saisir l’adresse IP que vous voulez affecter à votre ordinateur, ainsi que le masque de
réseau, la passerelle par défaut et l’adresse IP de votre serveur de noms primaire.
Entrez l’adresse IP de votre ordinateur et passez aux champs suivants. Le programme
d’installation renseignera les autres champs automatiquement. Si vous êtes connecté à
un réseau local qui dispose d’un serveur de noms (DNS), saisissez son adresse IP,
sinon effacez tout ce qu’il peut y avoir dans ce champ et validez avec le bouton
« OK ».
Si vous avez choisi l’option [BOOTP] ou l’option [DHCP], votre machine est
automatiquement configurée.
L’écran suivant vous demande de saisir le nom de votre domaine (par exemple
masociete.fr), le nom de votre ordinateur ainsi que les adresses IP des serveurs de
noms secondaires et tertiaires. Si vous ne disposez pas de ces informations, vous
pouvez ne pas renseigner les rubriques et directement valider avec le bouton « OK ».
Installation à partir d’un serveur NFS
Vous êtes maintenant invité à entrer le nom ou l’adresse IP du serveur NFS, ainsi que
le répertoire où se trouve la distribution RedHat. Saisissez ces deux informations, et
l’écran suivant vous indique que l’installation se poursuit normalement, ou vous
affiche un message d’erreur en cas de problème.
A titre d’exemple, si sur le serveur NFS, le CD-ROM ou une image sur disque dur du
CD-ROM de la distribution est monté dans le répertoire /intall_reso, vous devez saisir
« /install_reso » pour la rubrique « Chemin du répertoire RedHat ».
En cas de succès, le reste est identique à une installation locale.
Installation à partir d’un serveur FTP
Vous êtes maintenant invité à entrer le nom ou l’adresse IP du site serveur FTP, ainsi
que le répertoire où se trouve la distribution RedHat. Saisissez ces deux informations
dans tous les cas.
A titre d’exemple, si sur le serveur FTP, la distribution Red Hat est dans le répertoire
/public/linux_redhat, vous devez saisir « /public/linux_redhat» pour la rubrique
« Chemin du répertoire Red Hat ».
Si votre serveur FTP n’accepte pas de connexions anonymes, le cas d’un réseau privé
par exemple, ou si vous êtes dans un réseau local où les accès au reste du monde
passent par une machine qu’on appelle « proxy » c’est-à-dire un mandataire et que

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 10-23
Module 10 : Installation de Linux

votre serveur FTP n’est pas dans votre réseau local, vous devez activer l’option
[Utilisation d’un ftp non anonyme ou d’un service mandataire (proxy)]
Si vous avez activé l’option [Utilisation d’un ftp non anonyme ou d’un service
mandataire (proxy)], vous devrez saisir :
• Le nom du compte utilisateur ainsi que le mot de passe correspondant dans le cas
où votre serveur FTP n’accepte pas de connexions anonymes.
• L’adresse IP de la machine mandataire (proxy), ainsi que le numéro de port du
service proxy, normalement 80 ou 21.
Installation à partir d’un serveur HTTP
Vous êtes maintenant invité à entrer le nom ou l’adresse IP du site serveur HTTP,
ainsi que le répertoire où se trouve la distribution RedHat. Saisissez ces deux
informations dans tous les cas.
A titre d’exemple, si sur le serveur HTTP, la distribution Red Hat est dans le
répertoire /linux/redhat, vous devez saisir « /linux/redhat » pour la rubrique « Chemin
du répertoire Red Hat ».
Si votre serveur HTTP n’accepte pas de connexions anonymes (réseau privé par
exemple), ou si vous êtes dans un réseau local où les accès au reste du monde passent
par une machine qu’on appelle « proxy » c’est-à-dire un mandataire et que votre
serveur HTTP n’est pas dans votre réseau local, vous devez activer l’option
[Utilisation d’un ftp non anonyme ou d’un service mandataire (proxy)]
Si vous avez activé l’option [Utilisation d’un ftp non anonyme ou d’un service
mandataire (proxy)], vous devrez saisir :
• Le nom du compte utilisateur ainsi que le mot de passe correspondant dans le cas
où votre serveur HTTP n’accepte pas de connexions anonymes.
• L’adresse IP de la machine mandataire (proxy), ainsi que le numéro de port du
service proxy , normalement 80.

10-24 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 10 : Installation de Linux

Atelier 10 : L’installation de Linux


Atelier 9 : Les disques physiques et logiques

Objectifs :
„ Savoir installer le système Linux
localement ou depuis un réseau
„ Créer des partitions utiles au système
Linux
„ Configurer le multi-boot

Durée : 30 minutes.

TSOFT - Linux Administration Module 10 : Installation de Linux - 10.9

Exercice n°1
Combien de partitions, au minimum, nécessite l’installation d’un système Linux, et
lesquelles ?

Exercice n°2
Linux peut-il démarrer à partir d’une partition logique ?

Exercice n°3
Citez quelques-unes des partitions types que l’on peut créer lors de l’installation de
Linux. Indiquez leur contenu.

Exercice n°4
En dehors de l’installation à partir d’un CD-ROM local, quelles sont les autres
installations possibles du système Linux ?

Exercice n°5
Où peut-on installer LILO ?

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 10-25
Module 10 : Installation de Linux

Exercice n°6
Si LILO est installé dans le premier secteur de la partition Linux, comment démarrer
le système Linux ?

10-26 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 11 : La gestion des périphériques

• Périphérique, pilote,
contrôleur
• API du système Linux
• Fichier spécial (/dev),
majeur, mineur
• Mode caractère et
mode bloc
• Les modules, kmod et
modprobe

11Module 11 : La gestion
des périphériques
Objectifs
Après la lecture de ce module, le lecteur connaît les caractéristiques des périphériques
d’un système Linux et les principales conventions de nommage des périphériques. Il
sait identifier les périphériques configurés dans le système.

Contenu
Introduction à la gestion des périphériques
Les fichiers spéciaux
Les modules
L’USB

Références
HOWTO : Hardware-HOWTO
Le manuel : lspnp(8), scsi_info(8), lspci(8), lsusb(8), ide_info(8), st(4), MAJOR(9),
isdnctrl(8), fd(4), hd(4), lp(4)
Livre : Linux Hardware Handbook
Internet : http://lhd.datapower.com (« Linux Hardware Database »)

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 11-1
Module 11 : La gestion des périphériques

Introduction à la gestion des périphériques


Introduction à la gestion des périphériques

Noyau
Processus
Processus
Pilote
open(«/dev/périphérique», ...)

Fichier
Contrôleur CPU spécial

Périphérique

Bus

TSOFT - Linux Administration Module 11 : La gestion des périphériques - 11.2

Introduction
L’architecture physique des systèmes informatiques est fonctionnellement la même
sur tous les ordinateurs. Il existe un ou plusieurs bus où circulent les informations de
données et de commandes échangées entre l’unité centrale de l’ordinateur (le « CPU »,
« Central Processor Unit ») et les processeurs d’entrées/sorties que sont les
contrôleurs de périphériques.
Les contrôleurs de périphériques sont capables de piloter plusieurs périphériques d’un
même type, cas d’un contrôleur de disques IDE, par exemple, ou plusieurs
périphériques de types différents, tel un contrôleur « SCSI » (« Small Computer
System Interface »).
Dans le système Linux, les périphériques sont vus comme des fichiers. Les processus
agissent sur les périphériques par l’intermédiaire de primitives. Les primitives sont des
fonctions du langage C, dont le code est dans le noyau Linux et pas dans les processus.
L’ensemble des primitives définies dans une norme, comme « POSIX », constitue une
« API » (« Application Program Interface »).
Quand un processus veut lire ou écrire des données depuis ou vers un périphérique, il
doit préalablement procéder à l’ouverture du fichier spécial associé au périphérique,
grâce à la primitive « open » et ensuite lire ou écrire des données avec les primitives
« read » ou « write », comme il le ferait pour un fichier de données classiques, de type
texte ou binaire. Ces primitives appartiennent donc au module de gestion de fichiers
du noyau.
Les opérations de lecture ou d’écriture physiques de données vers le périphérique, via
le contrôleur, sont rassemblées dans le pilote (« driver ») associé au contrôleur. Le
pilote est également un module du noyau.
C’est dans le fichier spécial /dev/périphérique que le système de gestion de fichiers
trouve les informations nécessaires pour s’adresser au pilote concerné par le
périphérique ouvert par un processus.

11-2 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 11 : La gestion des périphériques

Le PC et ses entrées-sorties
L’unité centrale d’un PC dialogue avec les cartes d’interface grâce à un ensemble de
bus :
• Le bus local (« CPU bus » ou « local bus »). C’est le bus qui travaille à la vitesse
du Processeur, il permet essentiellement l’accès à la mémoire. Les contrôleurs PCI
et AGP sont branchés sur ce bus.
• ISA (« Industry Standard Architecture »). C’est le plus ancien bus disponible sur
un PC. Les cartes d’interface supportées sont de 8 ou 16 bits. Les connecteurs
d’extension (« slots ») 16 bits acceptent les cartes 8 bits. Le bus, qui travaille à
8.33 MHz, permet un taux de transfert de 8 Mo/s. Du fait de son ancienneté et de
sa simplicité, il existe, pour ce bus, un très grand nombre de cartes d’interface.
• PCI (« Peripheral Componant Interconnect »). C’est le bus le plus puissant. Il
travaille à 33 MHz, et permet des échanges en 32 bits à un débit de 132 Mo/sec.
Ce bus est tout à fait adapté au branchement de cartes contrôleurs SCSI et aux
cartes réseaux à haut débit. Les contrôleurs IDE, USB et ISA, inclus sur la carte
mère, sont souvent reliés au bus PCI.
• AGP (« Accelerated Graphics Port »). C’est une forme particulière de bus PCI,
adaptée aux cartes d’interface graphique, qui utilise des fréquences supérieures à
33 MHz.

La configuration d’une carte d’interface


Une carte d’interface (ou carte contrôleur ou « Adapter ») requiert une configuration
matérielle : l’IRQ, le canal DMA, les adresses d’entrées-sorties et les adresses
mémoire de la carte.
• IRQ (« Interrupt Request number »). Les périphériques signalent au processeur
qu’une donnée est prête en levant une interruption. Cette interruption déclenche
l’exécution d’un sous-programme du pilote associé au périphérique. Les
interruptions sont identifiées par un nombre, communément appelé l’IRQ. Les
IRQ 2 à 7 et 9 à 12 sont généralement disponibles.
• Le DMA (« Direct Memory Access ») permet le transfert de données directement
entre la carte d’interface et la mémoire. Le DMA permet des transferts très rapides
en comparaison avec la méthode traditionnelle d’échange de données octet par
octet en passant par le processeur. Il existe plusieurs canaux DMA qui permettent
des transferts simultanés.
• Les adresses d’entrées-sorties (« I/O ports »). La communication avec une carte
d’interface se fait essentiellement grâce aux ports d’entrées-sorties. Chaque port
correspond à un registre de la carte et est identifié par un numéro de port. Un port
est en lecture, en lecture/écriture ou en écriture. Il permet de connaître l’état d’un
périphérique, de modifier sa configuration ou tout simplement d’envoyer ou de
récolter des données. Les adresses d’I/O sont normalement situées entre 0x100 et
0x3FF.
• Les plages mémoire du contrôleur (« Adapter MemoryAaddress »). Une carte
d’interface peut éventuellement posséder une zone mémoire qui peut être mise en
correspondance avec l’espace mémoire du PC. Leurs valeurs s’étalent de 0xC0000
à 0xDFFFF.

Le mode opératoire
Il y a deux types de configurations. L’une est matérielle et l’autre logicielle. La
configuration matérielle peut être faite en positionnant des micro-interrupteurs
(« switches ») et des cavaliers situés sur la carte d’interface. La configuration

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 11-3
Module 11 : La gestion des périphériques

logicielle consiste à fournir aux pilotes les valeurs des paramètres d’entrées-sorties
choisis. Ces configurations constituent la principale difficulté pour ajouter un
périphérique. L’utilisation, par différents périphériques, des mêmes paramètres
engendre des conflits. L’idéal est de pouvoir automatiser ces configurations.
Les cartes PCI
Le bus PCI est dit « intelligent ». Il permet une configuration automatique des
paramètres d’entrées-sorties.
Les cartes ISA, le PnP
Les anciennes cartes ISA doivent obligatoirement être configurées manuellement. Les
cartes récentes peuvent être configurées manuellement ou bien par le PnP (« Plug aNd
Play »). Le PnP est une sorte de protocole entre la carte d’interface et le système
d’exploitation.

11-4 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 11 : La gestion des périphériques

Les fichiers spéciaux


Les fichiers spéciaux

„ Visualiser une entrée de périphérique


$ ls -l /dev/perif
crw-rw-rw-- 1 root sys 3,102 Jun 18 14:00 /dev/perif

Mode :
Majeur Mineur
c caractère
b bloc

„ Créer une entrée de périphérique


# mknod /dev/perif c 3 102

Mode Majeur Mineur

TSOFT - Linux Administration Module 11 : La gestion des périphériques - 11.3

Introduction
Les fichiers spéciaux ont leurs noms définis dans l’arborescence, dans le répertoire
/dev. La commande ls –l permet, comme pour n’importe quel fichier, d’en connaître
les attributs.
Le premier caractère « c » ou « b » identifie le type du périphérique : « c » pour le
mode caractère, « b » pour le type bloc. Rappelons que le type « c » ou « b » identifie
le type d’échange de données entre le module de gestion de fichiers et le pilote du
périphérique. En mode caractère, il n’y a pas d’utilisation des buffers du système.
L’échange se fait par groupes d’octets.
Les deux autres attributs essentiels d’un fichier périphérique sont la paire
d’information que l’on trouve, en lieu et place de la taille d’un fichier ordinaire. Ce
sont, respectivement, le majeur et le mineur du fichier spécial.
Le majeur, associé au type du périphérique (« c » ou « b »), identifie le pilote et, en
conséquence, le contrôleur du périphérique.
Le mineur identifie très souvent le périphérique mais il peut aussi désigner une
particularité physique d’un périphérique :
• Une partition d’un disque.
• Un emplacement (« slot ») d’un contrôleur de bus.
• Une particularité d’un périphérique : densité, rembobinage à la fermeture, ...
Prenons, par exemple, le cas de la console maîtresse, qui est un périphérique du noyau.
Le numéro de majeur est 4, mais l’on peut avoir jusqu’à 64 mineurs (de 0 à 63) qui
correspondent à des consoles virtuelles de nom /dev/tty0 à /dev/tty63. C'est, par défaut,
la console virtuelle de numéro 1, de mineur 1, qui est associée à la console maîtresse
physique. Il faut alors presser la combinaison de touches <ALT> <F2> pour activer la
console virtuelle numéro 2 de mineur 2, et ainsi de suite.

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 11-5
Module 11 : La gestion des périphériques

Les noms /dev/console et /dev/tty0, qui ont le mineur 0, désignent la console courante.
# ls -l /dev/console /dev/tty[0-6]
crw------- 1 root root 4, 0 aoû 28 07:35 /dev/console
crw------- 1 root root 4, 0 mai 5 1998 /dev/tty0
crw------- 1 root tty 4, 1 aoû 28 09:03 /dev/tty1
crw------- 1 root root 4, 2 aoû 28 07:35 /dev/tty2
crw------- 1 root root 4, 3 aoû 28 07:35 /dev/tty3
crw------- 1 root root 4, 4 aoû 28 07:35 /dev/tty4
crw------- 1 root root 4, 5 aoû 28 07:35 /dev/tty5
crw------- 1 root root 4, 6 aoû 28 07:35 /dev/tty6

Remarques
• Le programme d’installation crée le nom /dev/console et les noms des consoles
virtuelles /dev/tty0 à /dev/tty12 seulement. Les autres consoles peuvent être
ajoutées sans compilation du noyau (depuis la version 1.1.54 du noyau) avec la
commande mknod ou le script /dev/MAKEDEV présenté plus loin dans ce
chapitre.
• Il arrive parfois que plusieurs noms de périphériques différents aient le même
majeur et le même mineur. Ils sont équivalents à des liens symboliques, souvent
créés pour fournir des noms simplifiés de périphériques. Ils ne traduisent alors
aucune particularité de fonctionnement, à la différence de ceux dont le mineur
diffère et qui ont des inodes différents. Il est en effet plus simple de désigner le
lecteur de CD-ROM par le nom standard /dev/cdrom plutôt que par /dev/cdu535
pour un lecteur Sony et /dev/mcd0 pour un lecteur Mitsumi.

Les périphériques de Linux et de UNIX


Il existe certains périphériques particuliers dont les noms sont prédéfinis dans Linux et
que l’on retrouve aussi dans les autres systèmes UNIX :
Fichier spécial Signification
/dev/mem La mémoire physique.
/dev/kmem La mémoire virtuelle du noyau.
/dev/console, La console maîtresse et la console virtuelle en cours.
/dev/tty0
/dev/tty Le terminal de contrôle d’un processus. Le fichier /dev/tty en
désigne l’entrée et la sortie standard.
/dev/mouse La souris.
/dev/null La « poubelle » sans fond du système UNIX. On peut y écrire. La
lecture renvoie systématiquement fin de fichier. Ce périphérique est
principalement utilisé pour ignorer les messages d’erreur.
/dev/zero Le périphérique /dev/zero est une variante de /dev/null. A la
différence de /dev/null, la lecture renvoie le caractère « \0 ». Il
permet de créer des fichiers d’une taille donnée, grâce à la
commande dd par exemple, sans omettre de limiter le nombre de
blocs pour ne pas saturer le disque(cf. Module 9 : Les disques).

11-6 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 11 : La gestion des périphériques

Les périphériques de Linux


Le tableau qui suit donne la nomenclature des périphériques de Linux.

Fichier spécial Signification


/dev/hd[a-h] Un disque IDE.
/dev/sd[a-h] Un disque SCSI.
/dev/hda2 La deuxième partition du premier disque IDE.
/dev/rft[0-3] Lecteur de bandes.
/dev/nrft[0-3] Lecteur de bandes sans rembobinage.
/dev/scd[0-7] Périphérique SCSI.
/dev/sda2 La deuxième partition du premier disque SCSI.
/dev/fd0 Le premier lecteur de disquettes pour des disquettes déjà
formatées.
/dev/fd0H1440 Le même lecteur de disquettes pour la commande de formatage.
Le nom indique le format, une disquette 1,44 Mo.
/dev/tty3 La console virtuelle numéro 3.
/dev/ttyp1 Un pseudo-terminal utilisé dans les connexions réseaux, via
telnet ou pour les terminaux graphiques.
/dev/lp0 Une imprimante parallèle (adresse d’entrée-sortie : 378). Ce
fichier spécial correspond en fait au premier port parallèle,
nommé LPT1: sous Windows.
/dev/ttyS[0-3] Une liaison série (terminal, imprimante, ...).
/dev/cua[0-3] La même liaison si un modem lui est connecté.
/dev/cdrom Un lecteur de CD-ROM.
/dev/st[0-7] Un lecteur de bandes SCSI.
/dev/nst[0-7] Un lecteur de bandes SCSI sans rembobinage.
/dev/ht0 Le premier lecteur de bande ATAPI.
/dev/nht0 Le même, mais sans rembobinage.
/dev/ftape Nom générique d’un lecteur de cartouche.
/dev/nftape Le même, mais sans rembobinage.
/dev/modem Le nom générique du modem.
/dev/cdrom Le nom générique du CD-ROM.
/dev/mouse Le nom générique de la souris.

Création d’un fichier spécial


La création d’un fichier périphérique peut être réalisée par la commande mknod :
mknod /dev/périphérique type majeur mineur
L’administrateur n’est pas supposé être la personne qui a écrit le pilote du
périphérique, en connaître le mode, le majeur et être capable de reconstituer le mineur
en fonction de ses attributs physiques (emplacement, identificateur SCSI, …).

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 11-7
Module 11 : La gestion des périphériques

Pour créer les noms des fichiers spéciaux des périphériques usuels tels que les disques,
les bandes, les imprimantes, dont les pilotes sont livrés avec la distribution Linux en
votre possession, la démarche la plus simple est d’exécuter le script /dev/MAKEDEV
qui se charge de créer tous les noms de fichiers périphériques que peut supporter votre
machine.
Nous vous conseillons d’exécuter la commande man MAKEDEV pour savoir si votre
périphérique est pris en compte par le script MAKEDEV.

Exemple de création de fichiers périphériques pour une carte son :


# cd /dev ; ./MAKEDEV -v audio # Attention à bien respecter l’orthographe !
create mixer c 14 0 root:sys 666
create sequencer c 14 1 root:sys 666
create midi00 c 14 2 root:sys 666
create dsp c 14 3 root:sys 666
create audio c 14 4 root:sys 666
create sndstat c 14 6 root:sys 666
create mixer1 c 14 16 root:sys 666
create midi01 c 14 18 root:sys 666
create dsp1 c 14 19 root:sys 666
create audio1 c 14 20 root:sys 666
create midi02 c 14 34 root:sys 666
create midi03 c 14 50 root:sys 666
Dans le cas où le pilote du périphérique n’est pas déjà intégré dans le noyau de votre
système Linux, vous devez d’abord l’installer avec la commande rpm (cf. Module 13 :
Les paquetages), si votre pilote est au format « rpm ». Le pilote est au format « rpm »
si son nom est de la forme nom.rpm. Dans le cas contraire, vous utilisez la commande
tar (cf. Module 5 : La sauvegarde) s’il est sous forme d’archive tar compressée (nom
de fichier : *.gz).

11-8 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 11 : La gestion des périphériques

Ajout d’un périphérique


Ajout d ’un périphérique

„ Trouver le pilote
„ Intégrer le pilote au noyau
Recompiler le noyau
Charger le module
„ Configurer la carte d’interface
„ Paramétrer le pilote
„ Tester le pilote

TSOFT - Linux Administration Module 11 : La gestion des périphériques - 11.4

Les techniques associées à l’ajout d’un périphérique sont très dépendantes de la nature
du périphérique, mais il est possible de dégager certaines règles générales, notamment
liées à la gestion des pilotes.

Trouver le pilote du périphérique


Trouver le pilote du périphérique que l’on désire installer peut se révéler la tâche la
plus ardue lors de l’ajout d’un périphérique. Ce problème ne se pose normalement pas
dans le cas du système d’exploitation Windows 95/98 car le périphérique est vendu
avec le pilote de ce système. Dans le cas de Linux, on peut se poser la question : est-ce
que le pilote existe ? Et, si oui, où le trouver ?
Remarques
Il existe aussi une solution radicale. Au lieu de rechercher le pilote après avoir acheté
le périphérique, on peut faire l’inverse, rechercher les périphériques à priori supportés
par Linux (cf. Références), avec l’heuristique : les cartes d’interface qui ne sont pas
trop récentes et standard (3com, Adaptec, …) sont généralement supportées..
Si le pilote que l’on a trouvé est sous la forme d’un ensemble de fichiers sources, il
faut préalablement le compiler, opération inutile dans le cas où il est en binaire.

1) Trouver le nom du pilote


Une carte d’interface est fréquemment constituée autour d’un circuit intégré qui
accomplit la majorité des opérations (« chipset »). Le rôle essentiel du pilote est la
gestion du circuit. Il en résulte que la recherche du pilote passe souvent par la
recherche du nom de ce circuit. Plusieurs pistes peuvent être suivies :
- La documentation et l’emballage fournis avec le périphérique.
- Les inscriptions écrites sur le circuit lui-même.
- Si vous pouvez installer la carte sur un ordinateur disposant de Windows 95/98, on
peut récolter de précieuses informations : le nom du pilote, les paramètres d’entrées-
sorties, …

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 11-9
Module 11 : La gestion des périphériques

Pour cela, il faut afficher la liste des pilotes : [Démarrer][Panneau de


configuration][Système][Gestionnaire de périphériques]. On sélectionne le
périphérique et on appuie sur le bouton « Propriétés ». Si l’on sélectionne
l’ordinateur, le bouton « Propriétés » permet de connaître les paramètres d’entrées-
sorties (IRQ, adresses I/O, …) utilisés.
Exemple : carte réseau « Realtek RTL8139(A) PCI fast Internet NIC ». Le nombre
8139 correspond au numéro du chipset.
- On peut également afficher les chaînes présentes dans le pilote pour Windows ou
pour un autre système.
# mount –t msdos /dev/fd0 /mnt/floppy
# cd /mnt/floppy/win98
# strings *…
RTL8139(A) Based NDIS 5.0 driver

2) Le pilote est fourni
Même si cela est rare, le pilote peut être fourni avec le périphérique comme dans le
cas de Windows.
3) Rechercher le pilote sur le site du constructeur
Le constructeur a développé le pilote pour Linux après la commercialisation du
périphérique. Dans ce cas, le constructeur le met sur son site Internet pour qu’il soit
librement téléchargeable.
4) Rechercher le pilote au sein de la distribution
C’est généralement la démarche la plus fructueuse. Nos chances augmentent si
l’on utilise la distribution la plus récente, qui normalement inclut toujours plus de
pilotes. Il faut d’abord installer les sources du noyau (cf. Compilation du noyau) et
se déplacer dans l’arborescence où résident les pilotes. En exécutant la commande
grep, on obtient le nom recherché :
# cd /usr/src/linux
# grep –ril 8139 *
drivers/net/rtl8139.c
Si le pilote est disponible sous forme de module, et que ce dernier est présent, il
suffit de faire la recherche suivante :
# cd /lib/modules/$(uname –r)
# grep –ri 8139
modules.dep : /lib/modules/ 2.4.7-10/net/rtl8139.o :
Fichier binaire net/rtl8139.o concorde
5) Rechercher sur Internet
La démarche est similaire. Les moteurs de recherche remplacent la commande
grep (cf. les sites indiqués en fin du chapitre).
Exemple :
Recherche sur http://www.metacrawler.com avec les mots clés « rtl8139 driver
linux ».
La réponse obtenue est la suivante :

11-10 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 11 : La gestion des périphériques

The RTL8139 driver support web page has moved !


Excite : The linux RTL8139 Support page has moved to
http://www.scyld.com/network/rtl8139.html

Intégrer le pilote au noyau


Les pilotes de périphériques sont intégrés au noyau ou chargés dynamiquement sous
forme de modules (cf. Module 12 : Le noyau). Il est beaucoup plus simple d’ajouter un
pilote sous forme de module. Cela peut se ramener simplement à activer le pilote via
la commande insmod :
# insmod rtl8139
Cette commande peut être incluse dans un fichier de démarrage (cf. Module 7 : L’arrêt
et le démarrage - chapitre Les scripts de démarrage) ou déclenchée automatiquement
via le fichier modules.dep (cf. Module 12 : Le noyau).
Avant d’intégrer le pilote, il faut éventuellement le compiler et l’installer dans le bon
répertoire (cf. les paragraphes précédents). Il faut aussi s’assurer que le pilote est
compatible avec la version du noyau. Dans tous les cas, on se base sur les
commentaires du source. Le lecteur peut se reporter à l’exemple du paragraphe
« Installation d’un nouveau pilote » du chapitre Les modules du Module 12 : le noyau.
# tail rtl8139.c
compile command : gcc –DMODULE –Wall –Wstrict-prototypes –06 –c rtl8139.c
# grep LINUX_VERSION_CODE rtl8139.c
Si le pilote doit être intégré au noyau, il faut recompiler le noyau (cf. Module 12 : Le
noyau - chapitre Recompiler le noyau).

Configurer la carte d’interface


Les paramètres d’entrées-sorties ont été étudiés dans le chapitre Introduction à la
gestion des périphériques.
Une carte PCI n’a pas besoin d’être configurée, les procédures de démarrage s’en
chargeront.
Sur une carte ISA, non PnP, il faut modifier les micro-interrupteurs et les cavaliers
pour configurer matériellement la carte contrôleur. Il faut choisir les valeurs pour qu’il
n’y ait pas de conflit. Nous rappelons que plusieurs fichiers du répertoire /proc/
fournissent des données précieuses :
• /proc/interrupts Les interruptions utilisées par les pilotes
• /proc/ioports Les ports d’entrées-sorties utilisés
• /proc/dma Les canaux DMA utilisés
Une carte ISA PnP n’a normalement pas besoin d’être configurée. En cas de conflits
résiduels, on peut être amené à modifier le fichier de configuration /etc/isapnp.conf.
L’utilitaire pnpdump recherche les périphériques PnP et affiche un modèle pour
/etc/isapnp.conf. La commande isapnp, qui exécute le fichier de configuration,
paramètre la carte. En dernier ressort, il est quelquefois nécessaire de désactiver le
PnP au niveau de la carte d’interface et d’effectuer un paramétrage manuel. Cette
désactivation se fait généralement via un utilitaire pour MS-DOS fourni avec la carte.

Paramétrer le pilote
Les paramètres sont gérés automatiquement dans le cas des cartes PCI et dans le cas
des cartes ISA PnP (cf.Paragraphe suivant).

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 11-11
Module 11 : La gestion des périphériques

Dans le cas d’une carte ISA non PnP, il faut indiquer au pilote les paramètres qui ont
été positionnés matériellement. Ceci peut être effectué directement au démarrage par
l’intermédiaire de lilo, en argument du noyau, ou par la ligne « append= » (cf. Module
7 : L’arrrêt et le démarrage - chapitre lilo). L’exemple qui suit réalise le paramétrage
d’une carte réseau d’alias eth0, d’IRQ 10, et d’adresse d’entrées-sorties commençant
en 0x210 :
linux ether=10,0x210,eth0
Ou
append = "ether=10,0x210,eth0"
Si le pilote peut être chargé dynamiquement, on donne ces informations en paramètre
de la commande insmod ou par l’intermédiaire du fichier /etc/conf.modules (cf.
Module 12 : Le noyau – chapitre Les modules).
# insmod 3c509 io=0x330 irq=12
Remarque
Dans le cas d’une carte réseau, linuxconf, dans la section de configuration « adapter »,
permet non seulement le choix de l’adresse IP mais aussi celui du pilote Ethernet et
son paramétrage.

Tester le pilote
Lors du démarrage du système ou du chargement du pilote, le noyau affichera un
message d’initialisation disponible dans son fichier log /var/adm/messages ou
visualisable par la commande dmesg :
# dmesg | grep 8139
rtl8139.c :v1.07 5/6/99 Donald Becker
http://cesdis.gsfc.nasa.gov/linux/drivers/rtl8139.html
eth0 : RealTek RTL8139 Fast Ethernet 0xd400, IRQ 11, 00:48:54:3b:30:69.
Des messages d’erreur peuvent apparaître :
Lp : driver loaded but no device found
Certains développeurs de pilote fournissent un logiciel de test, qui peut donner des
renseignements complémentaires. Ce logiciel est disponible sur le site Internet qui
propose le téléchargement du pilote.
# more rtl8139-diag.c
/* rtl8139-diag.c : Diagnostics/EEPROM setup for RealTek8129/8139 chips.

Références : http://www.scyld.com/diag/index.html

Pour terminer, le meilleur test est d’utiliser le périphérique. Dans le cas d’une carte
réseau, on essaiera d’échanger des données en réseau.
Le logiciel LOTHAR
C’est un logiciel graphique qui rassemble de nombreux outils qui permettent de
simplifier l’ajout d’un périphérique.
Référence : http://www-linux-mandrake.com/lothar/

11-12 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 11 : La gestion des périphériques

Les périphériques par catégories


Les périphériques par catégorie
CPU MEMOIRE

BUS LOCAL
Adaptateur PCI
BUS PCI

Carte Carte Adaptateur


Ethernet Ethernet ISA

Carte son Carte modem

TSOFT - Linux Administration Module 11 : La gestion des périphériques - 11.5

L’interface SCSI
L’interface SCSI (« Small Computer System Interface ») est l’interface la plus
puissante pour brancher des disques ou des unités à supports amovibles (CD-ROM,
cartouche, …). Malheureusement, cette interface n’est pas disponible, en standard, sur
les PC. Elle nécessite d’ajouter un contrôleur SCSI qui peut gérer jusqu’à sept
périphériques SCSI chaînés les uns aux autres (cf. Module 9 : Les disques). Les
pilotes SCSI sont fournis dans toutes les distributions Linux. Le pilote de base est le
pilote sg qui est un pilote générique, mais de bas niveau. Il convient pour des scanners
ou des graveurs de CD-ROM. Le pilote sg intègre le pilote scsi_mod qui constitue le
cœur du système SCSI. Le pilote sg s’appuie sur le pilote de la carte contrôleur SCSI,
par exemple aha1542 pour une carte Adaptec 1542. Les pilotes de haut niveau sd, st et
sr, en mode bloc, permettent respectivement de gérer des disques, des lecteurs de
cartouche et des CD-ROMs. Le pilote sg peut également s’appuyer sur des
périphériques IDE par l’intermédiaire du pilote ATAPI, ce qui permet la gestion des
unités à support amovible qui sont vues comme des périphériques SCSI.

L’interface EIDE
Cette interface est présente dans tous les PC. C’est l’interface la plus utilisée. Les
pilotes EIDE sont fournis en standard. L’interface EIDE (« Enhanced Integrated
Device Electronics ») ne permet que de raccorder deux disques par contrôleur (cf.
Module 9 : Les disques).

L’interface ATAPI
L’interface ATAPI (« Advanced Technology Attachment Packet Interface »)
correspond en fait à l’interface EIDE, mais utilisée pour les périphériques qui ne sont
pas des disques, comme les CD-ROMs et les lecteurs de cartouche.

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 11-13
Module 11 : La gestion des périphériques

L’interface parallèle
L’interface parallèle est principalement utilisée pour relier une imprimante, mais elle
peut être utilisée à d’autres fins, comme brancher une caméra (« WebCam ») ou un
lecteur ZIP Iomega. Son débit est de 2 Mo/s. Le pilote de base est paride qui fournit
la plupart des méthodes d’accès au port parallèle. Il existe également des pilotes de
plus haut niveau : pd pour les disques IDE, pcd pour les CD-ROMs ATAPI, pf pour
les disques ATAPI, pt pour les lecteurs de bande et pg pour le support générique
ATAPI. L’usage de plusieurs périphériques sur le même port parallèle nécessite le
pilote parport.

L’interface série
L’interface série, plus connue sous le nom RS-232, est une des plus anciennes
interfaces de l’informatique. Contrairement à l’interface parallèle où les données sont
échangées octet par octet, les données sont transmises bit à bit. Par contre, l’échange
peut se faire sur des distances qui peuvent être très importantes, via l’utilisation de
modem. L’utilisation principale de cette interface est le branchement à un réseau en
utilisant le réseau téléphonique commuté (RTC). Un PC est normalement livré avec
deux ports série appelés COM1 et COM2 (terminologie MSDOS). Ces ports sont
accessibles sous Linux grâce aux fichiers /dev/ttyS0 et /dev/ttyS1. On établit un lien
symbolique entre le port utilisé et le fichier /dev/modem. Le logiciel minicom permet
de tester une liaison série.

L’interface USB
L’interface USB (« Universal Serial Bus ») est une technologie série, comme la
RS-232. Cette interface est récente et elle n’équipe pas les anciens PC.. L’interface est
très souple, car elle permet de brancher ou débrancher les périphériques « à chaud ».
Elle peut être utilisée pour brancher une souris, un modem, un scanner, un lecteur ZIP
Iomega…(cf. Chapitre USB).

Les disques (IDE, SCSI) (cf. Module 9 : Les disques)


Les lecteurs de cartouche (IDE, SCSI) (cf. Module 5 : La
sauvegarde)
Le lecteur de disquette
Son contrôleur est inclus sur la carte mère du PC et son pilote fait partie de toutes les
distributions Linux. Le premier lecteur est référencé par le fichier /dev/fd0. La
commande fdformat permet de formater une disquette.
# fdformat /dev/fd0H1440 # formatage 1,44 Mo

Lecteur ZIP Iomega


C’est un lecteur de disquette qui gère des supports de taille comparable aux disquettes
3,5 pouces mais de capacité de 100 ou 250 Mo. Le lecteur est relié au PC via
l’interface ATAPI, SCSI, parallèle ou USB. Le paquetage ziptool comprend des
logiciels qui permettent l’éjection des disquettes et la protection des données.
Exemple :
branchement d’un ZIP sur port parallèle. Il y a deux pilotes : pppa (ZIP 100 Mo) et
imm (ZIP 250 Mo).
# modprobe ppa
Le lecteur est vu comme un périphérique SCSI. Il est, par conséquent, accessible par
le fichier /dev/sda si l’on n’a pas de périphérique SCSI. C’est, sinon, le dernier de la

11-14 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 11 : La gestion des périphériques

liste, par exemple /dev/sdc. On peut créer un lien pour le référencer plus simplement.
L’utilisation de la partition n°4 permet une gestion commune d’un support par Linux
et par Windows.
# ln –s /dev/sda4 /dev/zip
La partition peut être montée par la commande mount, elle utilise le système de
fichiers vfat. On peut la monter au démarrage en modifiant /etc/fstab (cf. Module 4 :
Les systèmes de fichiers).
# grep zip /etc/fstab
/dev/zip /mnt/zip vfat noauto,user 0 0
# eject zip

Lecteur CD-ROM, graveur CD-ROM, lecteur DVD


Un lecteur CD-ROM accepte des CD-ROM de 650 Mo, un lecteur de DVD (« Digital
Versatil Disc ») accepte des DVD de 15,9 Go. Les lecteurs DVD récents acceptent les
CD-ROM. Les lecteurs de CD-ROMs, graveur, dvd sont accessibles via l’interface
ATAPI, SCSI, parallèle ou USB.
La commande mkiofs permet de créer des images ISO-9660 par gravage des fichiers
que vous avez sélectionnés. Le logiciel cdrecord permet la copie de CD-ROMs.

Carte son
Les cartes son sont disponibles au format ISA ou PCI. Les cartes son sont très
inégalement supportées par Linux. De nombreux pilotes, et en conséquence, de
nombreux fichiers périphériques permettent la gestion du son. Citons par exemple le
fichier /dev/dsp qui permet d’écouter ou d’enregistrer des fichiers .au. Le logiciel
sndconfig permet de configurer une carte son et le logiciel aumix (en mode texte)
permet de réaliser des tests.

Souris
Il existe plusieurs modes de raccordement d’une souris à un PC. Les plus courants
sont la liaison série (/dev/ttyS[01]) et le port PS/2 (/dev/psaux). Le logiciel
mouseconfig permet de configurer l’accès à la souris.

Scanner
Le logiciel SANE (« Scanner Access Now Easy ») est un ensemble de programmes qui
permettent l’accès à un scanner. Il est similaire à ce que permet l’interface TWAIN
dans le monde Windows. SANE fonctionne avec les scanners HP, Logitech, Epson, …

Imprimante
Une imprimante est le plus souvent accessible par l’interface parallèle (/dev/lp[01]) et,
éventuellement, par le port série. Elle ne nécessite pas de pilote spécifique. Ce que
l’on appelle vulgairement pilote d’imprimante est en fait un logiciel qui génère des
caractères de contrôle de l’impression (cf. Module 8 : L’impression).

Carte réseau
Les cartes réseaux sont au format ISA ou PCI. Elles sont très inégalement supportées
par Linux. La technologie Ethernet est la plus utilisée au sein des entreprises et, en
conséquence, les cartes réseaux sont principalement des cartes Ethernet. Les cartes
réseaux sont utilisées généralement avec les pilotes TCP/IP (cf. Module 15 : Le
réseau).

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 11-15
Module 11 : La gestion des périphériques

Carte graphique
Une carte graphique est au format PCI, AGP ou propre au bus local du PC. Les cartes
graphiques sont très inégalement supportées par Linux. Contrairement aux autres
périphériques, le pilote ne fait pas partie du noyau, mais est intégré au serveur X. En
conséquence, selon le type de carte, il faut choisir le serveur X adapté. De même, la
configuration du pilote (modèle, quantité de mémoire vive, « clok chip », …) se fera
en configurant le serveur (cf. Module 16 : X-Window). Si votre carte n’est pas
reconnue au niveau des serveurs Xfree86, l’ultime solution est d’utiliser le pilote fb
(« framebuffer »).

Références
Le manuel.
PNP : isapnp(8), isapnp.conf(5), pnpdump(8)
La documentation du noyau (répertoire /usr/src/linux/Documentation ).
Le bus PCI : pci.txt.
L’interface parallèle : parport.txt, paride.txt.
L’interface IDE : ide.txt.
L’interface SCSI : scsi.txt
Les paramètres du noyau (par exemple l’activation de PnP) :
kernel-parameters.txt
Les fichiers périphériques (nom, mode, majeur) : devices.txt.
Etc.
Il existe aussi plusieurs répertoires : fb/, isdsn/, network/, sound/
Les paramètres d’entrées-sorties des principales cartes réseaux :
network/net-modules.txt
Les HOWTO.
Hardware Howto, PCI-Howto, PCMCIA-Howto, Plug-and-Play Howto, SCSI Howto,
Serial Howto, Sound Howto, CD-ROM Howto, CD-Writing Howto, FrameBuffer
Howto, Ftape Howto, modem Howto, Ethernet Howto, Laptop Howto, UPS Howto,
mini Howto ZIP-Drive, …
Internet.
Le logiciel SANE (scanner) : http://tsx-11.mit.edu/pub/linux/packages/sane/
Les scanners compatibles SANE : http://www.mostang.com/sane/sane-backends.html
Linux Hardware Database : http://lhd.datapower.com
Les modems : http://www.linmodems.org
L’interface USB : http://www.linux-usb.org
Les cartes vidéo : http://www.xfree86.org
Les joysticks : http://www.linuxgames.com/joystick/
Les périphériques supportées par RedHat : http://www.redhat.com/support/hardware/

11-16 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 11 : La gestion des périphériques

L’USB
L ’USB

Contrôleur USB

Hub racine

Clavier Hub
Périphériques
composites

Souris Zip Scanner

TSOFT - Linux Administration Module 11 : La gestion des périphériques - 11.7

Introduction
L’USB (« Universal Serial Bus ») est une interface qui permet de relier des
périphériques à un PC. Elle a été créée par Intel, Microsoft, Compaq et NEC, qui
désiraient une interface économique. Sa première spécification date de 1996. Elle
possède les caractéristiques suivantes :
• Elle permet la connexion à chaud de périphériques (« Hot pluggable »).
• Elle permet de relier jusqu’à 126 périphériques au PC.
• Les périphériques reliés sont de tout type : clavier, souris, joystick, scanner,
imprimante, lecteur de disquettes, ZIP, modem, caméra, ...
• La vitesse de transfert s’étale de 1.5 Mbits/s à 12 Mbits/s. La prochaine
version , la version 2, permettra un débit de 480 Mbits/s.
L’interface USB, de type série, n’utilise qu’un seul type de connecteur.
On peut facilement étendre le bus USB en ajoutant des Hubs. L’ensemble des
connexions forme un arbre.

La technologie USB
Le contrôleur USB
Les contrôleurs USB sont intégrés à la carte mère ou présents sur une carte contrôleur
de bus PCI. Les contrôleurs USB sont compatibles avec l’interface OHCI (« Open
Host Controller Interface ») de Compaq ou avec l’interface UHCI (« Universal Host
Controller Interface ») d’Intel. Le contrôleur USB doit être actif pour qu’il fonctionne.
Il peut être désactivé au niveau du setup.

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 11-17
Module 11 : La gestion des périphériques

Le bus USB
La description du bus USB est libre. C’est donc une technologie ouverte (IEEE 1275 ).
Les périphériques sont reliés entre eux par des Hubs. L’ensemble forme un arbre. La
racine de cet arbre est le Hub faisant partie du système, appelé Hub racine. Chaque
périphérique et chaque hub possèdent une adresse. Certains périphériques, dits
composites, peuvent inclure un hub. D’autres peuvent avoir des périphériques
associés, par exemple un clavier auquel est reliée une souris. Dans ce cas, ils ne
possèdent qu’une seule adresse.
Un Hub USB permet de relier des périphériques et d’autres Hubs au Hub
hiérarchiquement supérieur. Il gère l’ajout ou le retrait d’un périphérique. Il gère
également l’alimentation du périphérique. Si on utilise l’alimentation du système, on
ne peut utiliser que des périphériques de faible puissance (limitée à 100 mA). Si on
utilise des Bus auto-alimentés, il n’y a pas de problème.
Le Hub racine (le sommet de l’arbre) est créé virtuellement par le contrôleur USB
pour unifier l’architecture. Il a un rôle de supervision. C’est lui qui joue l’arbitre des
transferts. Il décide du périphérique qui dialogue avec le contrôleur USB. C’est lui qui
interroge les périphériques à intervalle régulier (« polling »). L’USB ne permet qu’un
dialogue du type maître-esclave entre le système, représenté par le hub racine, et un
périphérique USB.
Les périphériques USB
Les périphériques USB sont divisés en classes. Chaque classe est gérée par un pilote
particulier. Un constructeur de périphériques USB peut très bien ajouter des éléments
spécifiques. Ces éléments ne peuvent être gérés par des pilotes génériques et imposent
des pilotes « maisons ».
Un périphérique connaît sa classe. L’appartenance à une classe implique notamment
de savoir comment est réalisée sa configuration et comment les données sont
transférées.
Voici les principales classes :
• Hub
• Interface humaine HID (« Human Interface Device »): clavier, souris,
joystick.
• Communication : modem, interface Numeris (ISDN)
• Sortie série (« Serial Converter »)
• Audio
• Moniteur
• Imprimante
• Scanner
• Appareils photos, caméra
• Stockage : lecteur de disquette, ZIP, disque Jaz ...
Descripteurs
Un périphérique est caractérisé par un ensemble de descripteur :
• Numéro de périphérique (« device number »).
Ce numéro, de 1 à 127, est unique et il est attribué lors du branchement du
périphérique.

11-18 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 11 : La gestion des périphériques

• Description de périphérique (« device descriptor »).


La structure de données qui décrit le périphérique. Cette structure est
organisée de manière hiérarchique.
• Description de configuration (« configuration descriptor »).
Chaque périphérique a une ou plusieurs configurations. Chaque configuration
a une ou plusieurs interfaces. Chaque interface a zéro ou plusieurs
terminaisons (« endpoints »).
• Description d’interface (« interface descriptor »).
Cela correspond à un ensemble alternatif de configuration. Par exemple, pour
une camera : caméra activée, microphone activée, caméra et microphone
activée.
• Description de terminaison (« endpoints descriptor »).
Cela permet au système de calculer la bande passante requise à chaque
terminaison. Une terminaison correspond à une source ou à un puits de
données.
• Chaîne de description.
Elle décrit le vendeur ou le constructeur.
Connexion à chaud
Quand on connecte à chaud un périphérique, il est immédiatement vu dans la
hiérarchie USB. De même, quand on le débranche, il est retiré de la hiérarchie, sauf
s’il est en cours d’utilisation. Dans ce dernier cas, les entrées-sorties reviennent en
erreur. Il faut rebrancher le périphérique, arrêter l’application qui accède au
périphérique et enfin débrancher le périphérique.
Attention ! Il ne faut jamais débrancher un périphérique lors de l’arrêt ou du
démarrage ou en cours d’utilisation.

USB et Linux
Le noyau Linux et l’interface USB
L’USB n’est quasiment pas supporté par les premiers noyaux 2.2.x. Le support
commence avec l’apparition des noyaux 2.3.x. Des patches permettent une mise à
niveau des noyaux 2.2.x. C’est seulement avec le noyau 2.2.18 que le support de
l’USB est natif et encore très incomplet. Le noyau 2.4 intègre mieux la technologie
USB. Il permet notamment la connexion à chaud (« hotplug ») et la gestion des
périphériques de stockage (Zip, lecteurs de disquettes ...).
Pilotes USB
L’usage de pilotes dynamiques est l’approche la plus logique. Elle se marie très bien
avec la connexion à chaud. Les pilotes sont empilés selon les usages. A la base, on
trouve le pilote du contrôleur. Il est fait de deux parties : une partie générique
(« usbcore ») et une partie spécifique du type de contrôleur (« usb-uhci ou usb-ohci »).
On trouve ensuite le pilote associé à la classe ou à l’interface : scanner.o, printer.o ...
L’USB device FS
L’USB device FS est un système de fichiers généré automatiquement et qui permet à
un développeur d’écrire des pilotes USB se présentant comme des applications
ordinaires. Ce FS permet à un administrateur de récolter une grande masse
d’informations sur les périphériques connectés.
L’USB device FS est normalement monté sur le répertoire /proc/bus/usb. Ce répertoire
contient ensuite les fichiers suivants :

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 11-19
Module 11 : La gestion des périphériques

001/ Le répertoire qui contient les numéros de périphériques. Il existe un


répertoire par Bus.
devices Définit la liste des périphériques attachés au système.
drivers Définit la liste des pilotes qui se sont enregistrés.
Le fichier devices contient les descriptions des périphériques. Pour chaque
périphérique, on trouve une information par ligne. Les informations sont les
suivantes :
T Topologie.
B Bande passante. Elle ne s’applique qu’au contrôleur USB, via le Hub racine.
D Description du périphérique.
P Identification du produit.
S Chaîne de description.
C Une description de configuration (* = configuration courante).
I Description d’interface.
E Description de terminaison.
La ligne « T : » pour la topologie contient les informations suivantes :
Bus= Numéro du bus.
Lev= Niveau hiérarchique du périphérique (00 : Hub racine).
Prnt= Numéro de périphérique du périphérique père.
Port= Le numéro de port du périphérique père sur lequel le périphérique est
branché.
Cnt= Nombre de périphériques à ce niveau.
Dev#= Numéro du périphérique (« device number »).
Spd= Vitesse en Mbits/s du périphérique.
MaxCh= Nombre maximum de périphériques fils (toujours à 0 sauf pour un Hub).
La ligne « B : » pour la bande passante contient les informations suivantes :
Alloc= Bande passante totale allouée à ce bus.
#Int= Nombre de requêtes d’interruption.
#Iso= Nombre de requêtes simultanées.
La ligne « D : » pour la description contient les informations suivantes :
Ver= La version de la spécification USB supportée par le périphérique
Cls= La classe du périphérique, une entrée 00(>ifc) indique qu’elle dépend
d’une interface
Sub= La sous-classe du périphérique.
Prot= Le protocole du périphérique.
MxPS= Taille maximale d’un paquet de la terminaison 0.
#Cfgs= Nombre de configurations du périphérique.
La ligne « P : » pour le produit contient les informations suivantes :
Vendor= Le code du vendeur du périphérique.

11-20 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 11 : La gestion des périphériques

ProdID= Le code du produit.


Rev= Le numéro de version du produit.
La ligne « C : » pour la configuration contient les informations suivantes :
#Ifs= Nombre d’interfaces.
Cfg# Numéro de cette configuration.
Atr= Attributs (0x80 : alimenté par le bus, 0x40 auto-alimenté, 0x20 réveil à
distance possible).
MPwr= Courant électrique maximum en mA.
La ligne « I : » pour l’interface contient les informations suivantes :
If# Numéro de cette interface.
Alt= Numéro de paramétrage alternatif.
#EPs= Nombre de terminaisons.
Cls= Classe d’interface.
Sub= Sous-classe d’interface.
Prot= Protocole.
Driver= Nom du pilote qui a réclamé cette interface.
La ligne « E : » pour la terminaison contient les informations suivantes :
Ad= L’adresse de terminaison, I pour l’entrée de données (Input), O pour
la sortie de données (Output).
Atr= Attribut.
MxPS= Taille maximale d’un paquet que la terminaison peut gérer.
Ivl= L’intervalle, en milli secondes, du polling. Il est ignoré pour les gros
transferts et les transfert de contrôle et mis à 1 pour les transferts
isochrones.
L’initialisation de l’USB
C’est normalement le script /etc/rc.d/rc.sysinit qui initialise automatiquement l’USB
au démarrage. Ce script monte le système de fichiers usbdevfs, charge les pilotes qui
gèrent le contrôleur USB et, pour terminer, les pilotes qui gèrent l’interface humaine
(clavier, souris ...).
Utilisation de périphériques USB
Chaque type de périphérique est un cas particulier. Nous renvoyons le lecteur à
l’ouvrage « USB-Guide » pour les détails d’utilisation de chaque type. Beaucoup de
périphériques USB peuvent être utilisés simplement, via l’entrée correspondante de
l’arborescence /dev/usb/, par exemple les imprimantes, les scanners ou les appareils
photos numérique. Il s’agit en fait des périphériques décrits dans la documentation du
noyau (cf. références).

Exemple d’utilisation d’un lecteur de disquette


# mount | grep usb
usbdevfs on /proc/bus/usb type usbdevfs (rw)
# more /proc/bus/usb/devices
T: Bus=01 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#= 1 Spd=12 MxCh= 2

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 11-21
Module 11 : La gestion des périphériques

B: Alloc= 12/900 us ( 1%), #Int= 1, #Iso= 0


D: Ver= 1.00 Cls=09(hub ) Sub=00 Prot=00 MxPS= 8 #Cfgs= 1
P: Vendor=0000 ProdID=0000 Rev= 0.00
S: Product=USB UHCI Root Hub
S: SerialNumber=1400
C:* #Ifs= 1 Cfg#= 1 Atr=40 MxPwr= 0mA
I: If#= 0 Alt= 0 #EPs= 1 Cls=09(hub ) Sub=00 Prot=00 Driver=hub
E: Ad=81(I) Atr=03(Int.) MxPS= 8 Ivl=255ms
T: Bus=01 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#= 2 Spd=12 MxCh= 0
D: Ver= 1.10 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs= 1
P: Vendor=0409 ProdID=0040 Rev= 1.09
S: Manufacturer=NEC
S: Product=NEC USB UF000x
C:* #Ifs= 1 Cfg#= 1 Atr=80 MxPwr=500mA
I: If#= 0 Alt= 0 #EPs= 3 Cls=08(stor.) Sub=04 Prot=00 Driver=usb-storage
E: Ad=82(I) Atr=02(Bulk) MxPS= 64 Ivl= 0ms
E: Ad=01(O) Atr=02(Bulk) MxPS= 64 Ivl= 0ms
E: Ad=83(I) Atr=03(Int.) MxPS= 2 Ivl=127ms
# more /proc/scsi/scsi
Attached devices:
Host: scsi0 Channel: 00 Id: 00 Lun: 00
Vendor: NEC Model: USB UF000x Rev: 1.09
Type: Direct-Access ANSI SCSI revision: 02
# dmesg | grep -i usb
usb.c: registered new driver usbdevfs
sb.c: registered new driver hub
usb-uhci.c: $Revision: 1.251 $ time 20:53:29 Apr 8 2001
usb-uhci.c: High bandwidth mode enabled
usb-uhci.c: USB UHCI at I/O 0x1400, IRQ 3
usb-uhci.c: Detected 2 ports
usb.c: new USB bus registered, assigned bus number 1
hub.c: USB hub found
hub.c: USB new device connect on bus1/2, assigned device number 2
usb.c: USB device 2 (vend/prod 0x409/0x40) is not claimed by any active driver.
Initializing USB Mass Storage driver...
usb.c: registered new driver usb-storage
scsi0 : SCSI emulation for USB Mass Storage devices
Vendor: NEC Model: USB UF000x Rev: 1.09
WARNING: USB Mass Storage data integrity not assured
USB Mass Storage device found at 2
USB Mass Storage support registered.

# mount -t msdos /dev/sda /mnt/floppy


Attached scsi removable disk sda at scsi0, channel 0, id 0, lun 0
usb-uhci.c: interrupt, status 3, frame# 1649
SCSI device sda: 2880 512-byte hdwr sectors (1 MB)
sda: Write Protect is off

# lsmod
Module Size Used by
nls_iso8859-1 2880 1 (autoclean)
nls_cp437 4384 1 (autoclean)
sd_mod 11728 1 (autoclean)
msdos 5424 1 (autoclean)

11-22 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 11 : La gestion des périphériques

fat 32672 0 (autoclean) [msdos]


autofs 11264 1 (autoclean)
pcnet_cs 10656 1
8390 6816 0 [pcnet_cs]
ds 7280 1 [pcnet_cs]
yenta_socket 11440 1
pcmcia_core 43072 0 [pcnet_cs ds yenta_socket]
ipchains 38976 0 (unused)
usb-storage 31792 1
scsi_mod 95104 2 [sd_mod usb-storage]
usb-uhci 20720 0 (unused)
usbcore 49664 1 [usb-storage usb-uhci]
#

Références
Internet : http://www.usb.org Les spécifications du Bus USB.
http://www.linux-usb.org/ Le projet de support de l’USB par
Linux.
http://linuxusbguide.sourceforge.net L’USB-Guide décrit l’utilisation de
chaque type de périphérique.
http://www.qbik.ch/usb/devices Les périphériques USB supportés par
Linux.
http://www.linux-usb.org/FAQ.htm FAQ.
http://www.kernel.org Les noyaux Linux.
http://linux-hotplug.sourceforge.net/ La connexion à chaud de périphériques
sous Linux.
les fichiers du paquetage documentation du noyau : /usr/share/doc/kernel-doc-*/usb/

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 11-23
Module 11 : La gestion des périphériques

Atelier 11 : La gestion des périphériques


Atelier 10 : La gestion des périphériques

Objectif :
„ Comprendre comment sont gérés les
périphériques sous UNIX

Durée : 15 minutes.

TSOFT - Linux Administration Module 11 : La gestion des périphériques - 11.8

Exercice n°1
Quels sont les majeur et mineur du périphérique /dev/fd0 ?

Exercice n°2
Quels sont les fichiers spéciaux, dont /dev/fd0, associés au pilote gérant /dev/fd0 ?

Exercice n°3
Grâce à la documentation, trouvez les commandes pour formater une disquette.

Exercice n°4
Toujours en utilisant la documentation, quel est le nom de fichier à utiliser pour
formater une disquette ?

11-24 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 12 : Le noyau

• Noyau
• API du système UNIX
• IPC
• « streams »

12Module 12 : Le noyau
Objectifs
Après l’étude de ce module, le lecteur sait comment, pourquoi et quand il est
nécessaire de construire un nouveau noyau.

Contenu
Le rôle du noyau
Historique du noyau
Pourquoi modifier ou reconstruire un noyau
La reconstruction d’un nouveau noyau
Informations sur le système, les périphériques
Le service syslog

Références
HOWTO : Kernel-HOWTO
Livre : Understanding the Linux Kernel
Internet : http://www.kernel.org

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 12-1
Module 12 : Le noyau

Le rôle du noyau
Le rôle du noyau

Processus

HARD Le noyau
Table système

••Gestion
Gestiondes
desprocessus
processus
••Gestion
Gestion desfichiers
des fichiers
••Gestion
Gestiondes
despériphériques
périphériques
Pilotes
L’API Linux

TSOFT - Linux Administration Module 12 : Le noyau - 12.2

Le rôle du noyau
Le noyau Linux est un fichier exécutable qui existe sur le disque de boot, dans le
répertoire /boot. Son nom, qui n’est pas standardisé, est souvent vmlinuz.
Le noyau assure la gestion des ressources physiques et logiques du système
informatique :
• La gestion des périphériques qui est réalisée par les pilotes de périphériques
intégrés au noyau.
• La gestion des fichiers qui s’appuie sur la couche VFS (« Virtual File System »).
VFS permet une vision uniforme des systèmes de fichiers, même si chaque
système de fichiers possède son propre pilote.
• La gestion des processus qui est prise en charge par l’ordonnanceur (« process
scheduler ») qui assure l’allocation du ou des processeurs aux processus qu’il
contrôle. Dans un mode de fonctionnement en temps partagé, cas le plus fréquent
pour les systèmes Linux, le partage du processeur vise à l’équité entre les
processus.

Accéder aux services du noyau


Les processus adressent des demandes de services au noyau, par le biais d’une
interface de programmation, une « API ».
Une API regroupe un ensemble des fonctions du noyau, des primitives.
Les primitives sont le seul et unique moyen que les processus ont pour accéder aux
fonctionnalités du noyau. Leur syntaxe les rend directement accessibles en langage C
et permet la portabilité des programmes d’un système Linux à UNIX, à condition que
les systèmes intègrent les mêmes API.
L’API POSIX, définie par l’IEEE et normalisée par l’ISO, est sans doute la plus
utilisée par les programmeurs d’application système du monde UNIX.

12-2 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 12 : Le noyau

Le système Linux est conforme à POSIX.


Les trois lignes qui suivent illustrent la primitive d’ouverture d’un fichier en lecture,
de création d’un processus et d’exécution d’un nouveau programme par un processus.
fd=open("donnee.txt",O_RDONLY) ;
i=fork() ;
execl("/bin/date","date",0) ;
Le noyau Linux initialise également, lors de son chargement, de nombreuses tables qui
lui permettent de mémoriser les paramètres de fonctionnement, les attributs des
processus, des fichiers, …

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 12-3
Module 12 : Le noyau

Historique du noyau
Historique du noyau

„ 1991 Version 0.01, inspirée de Minix


„ 1994 Version 1.0, la première version stable
„ 1996 Version 2.0
Support des modules dynamiques
Support d’autres architectures que le PC
„ 2001 Version 2.4
Nombre illimité de processus
Support de l’USB
Intégration d’ext3

TSOFT - Linux Administration Module 12 : Le noyau - 12.3

La naissance
En septembre 1991, Linus Torvald livre dans le forum Internet comp.os.minix sa
première version de Linux, la version 0.01. Elle s’inspire du système Minix, tout en
étant totalement originale. Minix lui même correspond au portage, pour la plate-forme
Intel 8086, du système Unix version 7.
Cette première version est faite pour le seul processeur Intel 386, qui supporte le mode
protégé. Cela permet aux différents processus de s’exécuter indépendamment les uns
des autres, chacun occupant un espace virtuel différent. Un processus ne peut faire
échouer un autre processus, ni faire échouer le noyau lui-même. Avec Linux 0.01, le
monde libre possède enfin un système d’exploitation destiné à être autre chose qu’un
jouet. Cette première version utilise les outils GNU : le bash, le compilateur GCC, ce
qui permet à terme le portage des logiciels libres écrits en C et conçus pour Unix.
Contrairement au système d’exploitation Hurd, qui à l’époque était encore dans les
limbes (et qui l’est toujours), Linux est un noyau monolithique. Il n’est pas basé sur
des micro-noyaux. Un micro-noyau n’est responsable que de l’ordonnancement des
tâches pour un ou plusieurs processeurs. Un système multi-processeurs peut comporter
plusieurs micro-noyaux. Les autres fonctions du système d’exploitation (la gestion des
entrées-sorties, la gestion des systèmes de fichiers ...) sont réalisées par des tâches
concurrentes. Inversement, un noyau monolithique accomplit l’ensemble des
opérations demandées par les processus, l’ordonnancement bien sûr, mais aussi la
gestion des entrées-sorties et la gestion de fichiers. La plupart des experts de l’époque,
dont A. Tannebaum (le père de Minix), ont critiqué Linus Torvald de ce choix. On
peut signaler que le système Windows a suivi une voie identique à Linux en optant
également pour un système d’exploitation monolithique.
Linus Torvald, après son postage de la version 0.01, reçoit par retour du courrier une
foules de commentaires, de résultat de tests, de découvertes de bugs. En octobre 1991,
il livre sa deuxième version, la version 0.02. Elle supporte maintenant tout un
ensemble d’outils GNU : sed, make, compress, ... Parmi les premiers supporters, un

12-4 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 12 : Le noyau

dénommé Alan Cox, devient rapidement l’un des principaux développeurs de Linux,
outre Linus lui-même.
La version 0.03 apparaît quelques semaines plus tard. En décembre, on en est déjà à la
version 0.10. Elle est en encore très rudimentaire, Il n’y a pas de « login ». On obtient
le prompt du bash à la fin du boot. Les périphériques supportés sont peu nombreux,
disques durs de type AT et clavier qwerty. Il faut attendre la version 0.11 pour la
gestion du lecteur de disquette ! Après la version 0.12 qui introduit le paging, on saute
directement à la version 0.96. On a ensuite les versions 0.97, 0.98 et .099.

Les versions 1.x


En 1994 Linus Torvald livre enfin la première version stable de Linux, la version 1.0.
Avec l’apparition de la version 1.0, Linux Torvald fait évoluer son système via les
deux branches parallèles 1.x_paire et 1.x_impair. La branche de mineur paire
correspond à une version stable et la branche impaire à version instable, en cours de
développement, et qui peut présenter des bugs. En 1995 la version 1.2 est surnommée
Linux 95.
Les versions 1.x adoptent le système de fichiers ext2 qui est une amélioration du
système ext (« Extended File System »). Ext2, conçu par Remy Card, s’inspire de FFS,
le système de fichiers de l’Université de Berkeley. Il permet de s’affranchir des
limitations du FS de Minix utilisé antérieurement.

La version 2.0
Cette version de juin 1996 est la première qui supporte plusieurs architectures : Digital
et ensuite SPARC. Les premières versions ne fonctionnaient que sur les processeurs
Intel x86. Linux supporte les systèmes multiprocesseurs (jusqu’à 4 processeurs en
SMP). Le noyau devient modulaire. Ce dernier point est très important. Jusqu’à cette
version l’adjonction de nouveaux pilotes nécessitait la recompilation du noyau. Cette
opération (cf. Chapitre : La construction d’un nouveau noyau) n’est pas une opération
simple et nécessite le redémarrage du système. Des erreurs de configuration entraînent
immanquablement des crashs systèmes. Avec un noyau modulaire, l’ajout et le retrait
de pilotes peuvent être réalisés de manière dynamique, par exemple lors de l’accès au
périphérique (cf. Chapitre : Les modules).

La version 2.2
Cette version date de janvier 1999. Elle va de paire avec la notoriété croissante de
Linux qui compte déjà plus de 10 millions d’utilisateurs ! La version 2.2 apporte les
améliorations suivantes :
• Support complet des processeurs suivants : x86 , SPARC, Ultra, Alpha, m68k
et PowerPC .
• Accès au CD-ROM via la norme ATAPI.
• Support audio modulaire.
• Intégration des pilotes « frame-buffers » comme base de tout le système
graphique.
• Support de nouveaux systèmes de fichiers : Amiga FFS, Macintosh HFS,
ROM Filesystem, UFS, CODA, OS/2, HPFS, NTFS...

La version 2.4
La version 2.4 voit le jour en janvier 2001. Avec elle, Le système Linux conforte sa
place de leader des systèmes d’exploitation libres. Il s’affirme comme système

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 12-5
Module 12 : Le noyau

d’exploitation de systèmes serveurs et peut prétendre à concurrencer Windows comme


poste de travail. Il apporte les améliorations suivantes :
• Le nombre de processus concurrents n’est plus limité à 1024 comme avant. La
limite peut être modifiée dynamiquement et dépend essentiellement de la
quantité de mémoire disponible.
• La mémoire RAM peut atteindre jusqu’à 4 Go de RAM sur plate-forme Intel.
• Un meilleur support de l’architecture Intel : support de MMX2, du Pentium
IV.
• Un meilleur support des systèmes multi-processeurs (jusqu’à 16 processeurs).
• Le support de dix contrôleurs IDE, ce qui représente donc vingt périphériques
IDE, au lieu de 4 antérieurement.
• Support de l’USB.
L’USB est devenu un élément incontournable du monde PC. Les PCs, les
portables possèdent, en standard, des ports USB. C’est pourquoi la plupart des
périphériques faits pour le particulier répondent à cette norme (cf. Module 11 :
La gestion des périphériques, chapitre USB). Il faut remarquer qu’un support
partiel de l’USB est apparu durant l’évolution des versions 2.2.x. Avec les
premières versions 2.4.x, on a le support des périphériques de stockage.
Certains périphériques USB ne sont toujours pas supportés.
• Apparition de DevFS.
Sur un système Unix traditionnel, les périphériques sont accessibles via des
fichiers de l’arborescence /dev. Cette approche n’est pas bien adaptée à
l’ajout, à chaud, de périphériques comme les périphériques USB. DevFS est
un système de fichiers qui n’existe seulement qu’en mémoire. Il est organisé
de manière hiérarchique. Les périphériques ajoutés à chaud apparaissent dans
son arborescence.
• Support de l’ISA PnP au niveau du noyau. Cette amélioration devrait à terme
permettre un support du Plug and Play sans aucun utilitaire.
• Réécriture du module réseau. La pile TCP/IP devient très performante.
• Améliorations notables du module SCSI.
• Meilleur support des lecteurs DVD et des lecteurs/graveurs de CD-ROM.
• Support des raw devices.
• Support complet de l’architecture 360 d’IBM.
• Support de la gestion des très gros fichiers (« large file ») de taille supérieure à
2 Go.
• Support complet des LVM (« Logical Volume Management »).
• Intégration d’ext3 fin 2001. Ce système de fichiers correspond à la version
journalisée d’ext2. Ext3 est compatible avec ext2 de manière ascendante et
descendante (cf. Module 4 : Les systèmes de Fichiers, chapitre Les systèmes
de fichiers journalisés ).
• Meilleur support du système de fichiers ReiserFS.
• Améliorations des systèmes de fichiers NFS (la version 3 est maintenant
supportée) et Samba FS.
• Réécriture du module pare-feu.
Le pare-feu de Linux, NetFilter, est maintenant complètement « stateful ».

12-6 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 12 : Le noyau

Netfilter permet également un filtrage au niveau MAC. Pour conserver les


investissements, des modules chargeables, permettent une complète
compatibilité avec les anciens pare-feu : Ipchains et ipfwadm.

Références
Internet : http://www.kernel.org/
http://www.linux10.org/history/
http://features.linuxtoday.com/search.php3?author=Joe:Pranevich

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 12-7
Module 12 : Le noyau

Pourquoi modifier ou construire un nouveau


noyau
Pourquoi modifier ou reconstruire un noyau ?

„ Ajouter un périphérique qui doit être reconnu dès le démarrage


„ Ajouter une nouvelle fonctionnalité au noyau
„ Retirer les pilotes inutilisés
„ Installer un noyau plus récent
„ Installer un noyau monolithique

TSOFT - Linux Administration Module 12 : Le noyau - 12.3

L’administrateur peut être amené à construire un nouveau noyau.


Le noyau issu de l’installation du système Linux est un noyau générique. Ses
composants (pilotes, systèmes de fichiers, et fonctionnalités diverses) correspondent
souvent à la configuration que vous souhaitez. Il existe cependant des situations
particulières où vous pouvez être alors amené à construire un nouveau noyau (cf. La
construction d’un nouveau noyau), même si votre noyau actuel fonctionne et répond à
l’essentiel de vos besoins.
Les raisons qui peuvent être précisément à l’origine de cette opération sont :
• L’ajout d’un périphérique qui doit être reconnu dès le démarrage. C’est, par
exemple, le cas si vous voulez démarrer depuis un disque SCSI.
Le noyau standard de Linux n’intègre pas de pilotes de disque SCSI. Ils sont, par
défaut, installés en tant que modules.
• L’ajout d’une fonctionnalité qui n’est pas configurée dans votre noyau actuel.
C’est le cas, par exemple, d’un système Linux que vous souhaitez utiliser comme
routeur dans un réseau local ou encore comme « proxy » Internet pour le parc
d’ordinateurs de votre entreprise.
• Le retrait des composants, pilotes ou systèmes de fichiers, que vous n’utilisez pas.
Cette opération va se traduire par un noyau moins encombrant en mémoire, et plus
performant.
• L’installation d’un noyau monolithique, c’est-à-dire d’un noyau qui ne gère pas de
modules. Tous les pilotes nécessaires sont intégrés dans le noyau et sont
disponibles dès le chargement du noyau (cf. La construction d’un nouveau noyau).
• Le remplacement du noyau actuel par un noyau plus récent, intégrant de nouvelles
fonctionnalités.
Les sources des noyaux récents sont disponibles sur le site Internet

12-8 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 12 : Le noyau

http://www.kernel.org, et ses sites miroirs,


http://www.fr.kernel.org/pub/linux/kernel/ en France.
Ils ne sont pas fournis sous forme de paquetages « *.rpm », mais sous forme
d’archives tar compressées « *.tar.gz » ou bien « *.tar.bz2 » pour les noyaux de
grande taille, encore appelés noyaux « big kernel ».
La procédure d’installation de telles archives est décrite plus loin (cf. La
construction d’un nouveau noyau).

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 12-9
Module 12 : Le noyau

La construction d’un nouveau noyau


La construction d’un nouveau noyau

„ Sauvegarder l'ancien noyau, ses modules et ses fichiers de


configuration
„ Installer les sources du noyau
„ Configurer le noyau
„ Compiler le noyau et les modules
„ Installer les modules et le nouveau noyau
„ Configurer le chargeur LILO
„ Créer une disquette de démarrage
„ Arrêter le système et redémarrer

TSOFT - Linux Administration Module 12 : Le noyau - 12.4

Construction d’un nouveau noyau


La construction d'un nouveau noyau est une opération délicate. Elle se fait en plusieurs
étapes. Il est important, avant toutes choses, de connaître la version et la date de
compilation du noyau en cours d’utilisation, surtout si on utilise plusieurs noyaux. On
utilise, pour cela, la commande uname :
# uname -r # affiche le numéro de version du noyau
# uname –a # affiche notamment la date de compilation du noyau
Pour construire un nouveau noyau, on procède aux opérations suivantes :
1. Sauvegarde
La construction d'un nouveau noyau est une opération qui peut se révéler très
destructrice. Il faut, en conséquence, se ménager la possibilité de faire machine arrière
et de continuer à utiliser le noyau actuel. Plusieurs stratégies alternatives ou
complémentaires sont possibles :
1.1 Sauvegarde totale du système
C'est la solution la plus longue, mais la plus sécurisante.
Il faut, en sus de la sauvegarde complète de l’arborescence, créer une disquette de
boot. Cette disquette contient une copie du noyau actuel (cf. Module 7: Arrêt et
redémarrage) :
# mkbootdisk $(uname –r)
1.2 Sauvegarde du noyau, des modules et de la configuration de lilo
La sauvegarde du noyau n’est nécessaire que si l’on installe un noyau de même nom
que l'ancien, car le fichier qui contient le nouveau noyau porte alors le même nom que
l’ancien. Cette sauvegarde consiste à renommer l’ancien noyau. Le noyau Linux se
trouve habituellement dans le répertoire /boot. Son nom de fichier est couramment

12-10 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 12 : Le noyau

vmlinuz-numéro_de_version. Vous le renommerez en lui ajoutant, par exemple, le


suffixe « old ».
# cd /boot
# ls vmlinuz*
vmlinuz-2.4.7-10
# mv vmlinuz-2.4.7-10 vmlinuz-2.4.7-10.old
La sauvegarde des modules n’est normalement pas nécessaire. Les modules se
trouvent en effet dans le répertoire /lib/modules/$(uname –r)/, un répertoire qui porte
comme nom le numéro de version du noyau. Si l’on installe un noyau de même
version que le noyau courant, le nouveau noyau utilise les mêmes modules. Si l’on
installe un noyau de version supérieure, il utilisera un autre répertoire. Il ne faut donc
sauvegarder les modules que si l'on met à jour des modules pour un noyau de même
version que le noyau courant.
La sauvegarde de la configuration de lilo doit être, au contraire, systématique. Le
démarrage à partir d’un nouveau noyau modifie la configuration de boot (cf. lilo) :
# cp /etc/lilo.conf /etc/lilo.conf.sauve
La sauvegarde du fichier /usr/src/linux/.config de configuration du noyau est
nécessaire si l’on désire recompiler un noyau de même niveau que le noyau actuel. Il
faut d’abord le générer, après avoir installé les sources du noyau :
# cd /usr/src/linux
# make oldconfig
# cp .config .config.sauve
2. Installer les sources du noyau
La compilation du noyau nécessite les fichiers sources, en langage C, du noyau. Ces
fichiers ont l’extension « .c » pour les fichiers sources et l’extension « .h » pour les
fichiers d’en-tête, comme pour n’importe quel programme écrit en langage C. Ces
fichiers sont fournis dans deux paquetages, kernel-source et kernel-headers, et doivent
être installés dans le répertoire /usr/src/linux.
Pour compiler un noyau de version identique à celui d’origine, vous commencez par
vérifier la présence de ces paquetages et, s’ils sont déjà installés, passez l’étape
suivante.
# rpm –q kernel-source
kernel-source-2.x-i386.rpm
Si les paquetages ne sont pas présents, il faut sinon procéder à l’installation des
sources du noyau depuis le CD-ROM de votre distribution (noyau au format rpm).
Montez le CD-ROM et exécutez la commande rpm :
# mount –t iso9660 /dev/cdrom /mnt/cdrom
# cd /mnt/cdrom/RedHat/RPMS
# rpm –iv kernel*
Pour installer les sources d’un nouveau noyau, généralement de version supérieure, il
est nécessaire de disposer d’un fichier obtenu à travers le réseau Internet.
L’exemple suppose que vous avez téléchargé le fichier linux-2.4.16.tar.gz, qui
correspond à une archive, au format tar, du noyau Linux version 2.4.16.
Copiez le fichier archive dans le répertoire /usr/src, positionnez-vous dans ce
répertoire et exécutez la commande tar (cf. Module 5 : La sauvegarde) afin de
décompresser et d’installer les sources de votre nouveau noyau.
# cd /usr/src
# tar xzf linux-2.4.16.tar.gz

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 12-11
Module 12 : Le noyau

3. Configurer le noyau
C’est l’étape la plus importante. Elle consiste à créer le fichier /usr/src/linux/.config
qui contient le paramétrage du noyau, principalement la liste des pilotes à intégrer au
nouveau noyau, ainsi que le mode d’insertion des pilotes, statique ou dynamique.
Dans le cas d’une insertion statique, le pilote est une composante présente en
permanence dans le noyau. Dans le cas d’une insertion dynamique, le pilote se
présente sous forme d’un module qui peut être chargé dynamiquement.
La configuration du noyau est réalisée par la commande make , le standard utilisé
dans les installations et les compilations de logiciels sous UNIX. La commande make
s’appuie sur un fichier de commandes, appelé Makefile. Ce fichier est situé, par
défaut, dans le répertoire courant. Il décrit toutes les tâches à réaliser pour atteindre un
but (« target »). La commande make n’exécute que les commandes qui s’appliquent
aux fichiers modifiés depuis sa dernière exécution.
Le fichier Makefile du noyau Linux donne trois modes de configuration selon
l’argument fourni à l’exécution de la commande make, le mode ligne de commande,
le mode menu dans un terminal texte ou le mode graphique sous forme de fenêtres
X-Window.
Vous devez d’abord aller dans le répertoire /usr/src/linux où se trouve le « Makefile »,
puis exécutez la commande make en indiquant le mode choisi :
• Mode X-Window

# make xconfig
• Mode menu texte

# make menuconfig
• Mode ligne de commande

# make config
Quelle que soit la forme utilisée, une copie de sauvegarde de l’ancienne configuration
du noyau est créée sous le nom .config.old. Il est préférable d’effectuer sa propre copie
si l’on recommence plusieurs fois cette opération, cela sera généralement le cas! Il est
important également de noter que la prochaine configuration du noyau s’appuiera sur
la précédente.
Dans l’étape de configuration, vous êtes invité, pour chaque pilote, système de fichiers
ou autres composants du noyau, à indiquer s’il doit être pris en compte ou pas. Pour
cela, vous choisirez :
y (yes) Le composant est intégré au noyau (insertion statique).
n (no) Le composant n’est pas pris en compte.
m (Module) Le composant est géré en tant que module (insertion dynamique).
En annexe, il est présenté un exemple d’utilisation commenté de « menu config ». Il
faut remarquer que certains choix nécessitent un grand niveau d’expertise. Un
débutant se contentera le plus souvent de compiler un noyau plus récent que le sien,
mais sans changer les options proposées.
Noyau monolithique ou noyau modulaire
Le choix du type de noyau, monolithique ou modulaire, est parmi les plus importants
de la phase de configuration. Dans le cas d’un noyau monolithique, tous les pilotes
sont inclus en permanence dans le noyau. Dans un noyau modulaire, les pilotes, s’ils

12-12 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 12 : Le noyau

ne sont pas inclus dans le noyau, sont compilés sous forme de module et chargés à la
demande. C’est le paramètre CONFIG_MODULE qui fixe le choix.
4. Compiler le noyau
C’est l’étape la plus longue. Elle comporte plusieurs phases, la création d’un fichier de
dépendances, le nettoyage des anciens fichiers (*.o) et la compilation proprement dite.
# make dep
# make clean
# make bzImage
Il est possible d’enchaîner ces actions :
# make dep clean bzImage > result.txt
A l’issue de ces opérations, le nouveau noyau, de nom bzImage, est créé dans le
répertoire /usr/src/linux/arch/i386/boot.
Au lieu d’utiliser « make bzImage », on peut exécuter « make bzdisk ». Cette dernière
forme copie le noyau bzImage sur une disquette. Il est fort possible de le faire
directement :
# cp /usr/src/linux/arch/i386/boot/bzImage /dev/fd0
Cette opération est très pratique pour tester un nouveau noyau sans modifier, via lilo,
la configuration de démarrage.
Remarques
On peut également exécuter « make zImage » au lieu de « make bzImage ». C’est
d'ailleurs l'ancienne pratique. Elle permet de construire un noyau non compressé, de
nom /usr/src/linux/vmlinux. Le noyau résultant est très souvent trop gros, et il ne peut
être démarré par lilo. Le fichier est /usr/src/linux/vmlinux également créé par « make
bzImage ».

Avant d’effectuer la configuration du noyau, il est possible de lancer la commande


make mrproper qui effectue un nettoyage des fichiers plus complet que make clean,
mais qui détruit le fichier .config.

5. Compiler et installer les modules


La compilation des modules consiste à produire les fichiers objets, d’extension « .o »
des modules précédemment sélectionnés, à partir des fichiers sources, d’extension
« .c ».
Il faut ensuite installer les modules dans le sous-répertoire de /lib/modules qui porte,
comme nom, le numéro de version de votre nouveau noyau, par exemple 2.4.16
(cf. Module 11 : Les périphériques).
# make modules
# make modules_install
La compilation des modules n’est nécessaire que si l’on crée un noyau d’une version
différente de la version actuelle.
Quand on ne veut qu’ajouter quelques nouveaux pilotes, il suffit de les compiler en
utilisant les options précisées dans le source des pilotes et de les installer dans le sous-
répertoire de /lib/modules adéquat.
Remarque
On peut enchaîner la compilation du noyau et des modules :
# make dep clean bzImage modules modules_install > result.txt

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 12-13
Module 12 : Le noyau

6. Installer le nouveau noyau


On place habituellement le noyau dans le répertoire /boot. Vous pouvez utiliser la
commande cp pour l’y copier sous le nom vmlinuz-Numéro_de_version.
# cp /usr/src/linux/arch/i386/boot/bzImage /boot/vmlinuz-2.4.16
# cp /boot/System.map /boot/System.map.old
# cp /usr/src/linux/System.map /boot/System.map
Remarques
Bien que le nom du noyau puisse être un nom quelconque, nous vous recommandons
d’utiliser la convention de nommage vmlinuz-Numéro_de_version.

Le fichier System.map est un fichier ASCII qui contient les adresses des symboles
externes du noyau. Il est utilisé par l’application klogd qui enregistre les messages du
noyau.

7. Configurer le chargeur LILO


Le chargeur LILO charge, par défaut, le noyau défini par la première clause « image »
du fichier /etc/lilo.conf (cf. Module 7 : L’arrêt et le démarrage). Il suffit de modifier
ce fichier pour que la clause « image » du nouveau noyau soit en première position et
d’y conserver la clause de l’ancien noyau.
Dans l’exemple qui suit, nous supposons que votre ancien noyau a été renommé
vmlinuz-2.4.7-10.old (cf. Sauvegarder l’ancien noyau) et que vous avez baptisé votre
nouveau noyau : vmlinuz-2.4.16.
Le fichier /etc/lilo.conf avant les modifications :
boot=/dev/hda
map=/boot/map
install=/boot/boot.b
prompt
timeout=500

image=/boot/vmlinuz-2.4.7-10
label=linux
root=/dev/hda2
read-only

other=/dev/hda1
label=win98
table=/dev/hda
Le fichier /etc/lilo.conf après les modifications :
boot=/dev/hda
map=/boot/map
install=/boot/boot.b
prompt
timeout=500
image=/boot/vmlinuz-2.4.16 # Votre nouveau noyau
label=linux # Le label de votre nouveau noyau
root=/dev/hda2
read-only
image=/boot/vmlinuz-2.4.7-10.old # Votre ancien noyau
label=linux.old # Le label de votre ancien noyau

12-14 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 12 : Le noyau

root=/dev/hda2
read-only

other=/dev/hda1
label=win98
table=/dev/hda
Il ne vous reste plus, à présent, qu’à exécuter la commande /sbin/lilo (cf. Module 7 :
L’arrêt et le démarrage) qui se charge de mettre à jour les fichiers binaires du
répertoire /boot, finalisant ainsi la construction de votre nouveau noyau.
#/sbin/lilo
Added linux *
Added linux.old
Added win98
8. Créer une disquette de démarrage
Cette opération permettra de démarrer sur le nouveau noyau dans le cas où le bloc de
démarrage du disque ou le noyau sont endommagés.
# mkbootdisk 2.4.16 # Si 2.4.16 est le numéro de version de votre noyau.
9. Arrêter et redémarrer votre système
Pour activer votre nouveau noyau, il faut arrêter et redémarrer votre ordinateur.
En cas de problème avec le nouveau noyau, il faut redémarrer votre ordinateur et à
l’invite « LILO boot : », saisir le label de votre ancien noyau « linux.old » (cf. Le
fichier /etc/lilo.conf).
Il ne vous reste plus qu’à recommencer toutes les étapes de la construction d’un
nouveau noyau en évitant les erreurs commises précédemment.

Restauration d’un ancien noyau


En dernier ressort, vous pouvez restaurer l’ancien noyau.
Dans l’exemple de restauration qui suit, nous utilisons les mêmes noms de fichiers que
ceux utilisés dans la construction du nouveau noyau ; vous devez donc le cas échéant,
les adapter à votre situation.
# cd /boot
# mv vmlinuz-2.4.7-10.old vmlinuz-2.4.7-10
Restaurer le fichier /etc/lilo.conf :
# cp /etc/lilo.conf.sauve /etc/lilo.conf
# /sbin/lilo # pour prendre en compte le fichier

Références
/usr/src/linux/README
Contient une vue globale de la compilation du noyau.
/usr/src/linux/Documentation/*
Ce répertoire est une mine d’informations, citons simplement les fichiers suivant :
Configure.help Explique en détail chaque élément du make config.
modules.txt Traite des modules.
Kernel-HOWTO Explique en détail comment compiler le noyau.

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 12-15
Module 12 : Le noyau

Hardware HOWTO Liste le matériel compatible.


http://www.kernel.org
C’est le site de référence où sont archivées les différentes versions du noyau Linux.
On y trouve également les versions bêta.

12-16 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 12 : Le noyau

Les modules
Les modules

„ Les commandes
insmod Charge un module
lsmod Liste les modules
rmmod Retire un module
depmod Établit les dépendances entre les modules
modprobe Charge ou retire un module et ses dépendances

„ Les fichiers
/etc/conf.modules ou /etc/modules.conf
Fichier de configuration pour kerneld et modprobe
/lib/modules/*/modules.dep
Fichier de dépendances entre modules

TSOFT - Linux Administration Module 11 : La gestion des périphériques - 11.6

Introduction
Depuis la version 2.0 du noyau Linux, certains pilotes comme les pilotes SCSI ou les
pilotes de cartes réseaux ne sont plus nécessairement intégrés au noyau par une édition
de liens préalable. Pour que les modifications résultant de cette édition de liens soient
prises en compte, il est nécessaire de procéder à l’arrêt et au redémarrage du système
Linux. Les pilotes peuvent être chargés puis liés (« linkés ») dynamiquement au noyau
en cours d’exécution et retirés automatiquement s’il n’y a plus de processus qui les
utilisent.
Le code objet compilé de ces pilotes est appelé un module. Un module ne fait pas
partie du code du noyau Linux, initialement chargé en mémoire, mais se trouve dans
des fichiers compilés, dont l’extension est « .o ». Ils sont regroupés, par type de
pilotes, dans le répertoire /lib/modules/numéro_de_version_du_noyau. On y trouve un
sous-répertoire par type de modules. Ainsi, le sous-répertoire net contient les pilotes
du réseau et le sous-répertoire scsi contient les pilotes des périphériques SCSI.
# ls -l /lib/modules/2.4.7-10
total 36
drwxr-xr-x 2 root root 1024 Sep 23 18:10 block
drwxr-xr-x 2 root root 1024 Sep 23 18:10 cdrom
drwxr-xr-x 2 root root 1024 Sep 23 18:10 fs
drwxr-xr-x 2 root root 1024 Sep 23 18:10 ipv4
drwxr-xr-x 2 root root 3072 Sep 23 18:10 misc
-rw-r--r-- 1 root root 23312 Nov 9 10:05 modules.dep
drwxr-xr-x 2 root root 2048 Sep 23 18:10 net
drwxr-xr-x 2 root root 1024 Sep 23 18:10 pcmcia
drwxr-xr-x 2 root root 1024 Sep 23 18:10 scsi
drwxr-xr-x 2 root root 1024 Sep 23 18:10 video

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 12-17
Module 12 : Le noyau

Remarque
L’usage de modules est un paramètre du noyau, qui n’est pas obligatoire, bien que
fortement recommandé (cf. Module 12 : Le noyau).
Le concept de modules présente bien des avantages pour un parc de machines de
même architecture matérielle, par exemple des PC à base de processeurs INTEL,
AMD ou CYRIX :
• Le déploiement du système Linux est facilité pour des configurations matérielles
différentes. Le système nécessite un noyau minimum commun et des modules
spécifiques pour les pilotes propres à chacun des ordinateurs. La même disquette
de boot, contenant un noyau minimal, peut démarrer n'importe quelle machine afin
de pouvoir réparer un système endommagé.
• Il n’y a plus lieu de reconstruire un nouveau noyau et de redémarrer le système en
cas de changement de pilote ou de périphérique. Ceci ne s’applique pas seulement
aux pilotes fournis avec la distribution Linux, mais également aux pilotes que l'on
acquiert ou que l’on écrit soi-même et que l’on peut ainsi tester.
• L’utilisation de la mémoire est optimisée. Le noyau reste en permanence et en
totalité en mémoire. Il ne fait jamais l’objet d’échange entre la mémoire et la zone
de swap. Les pilotes intégrés dans le noyau sont en mémoire dès le chargement du
noyau et encombrent la mémoire inutilement même s’ils ne sont pas utilisés, alors
que les modules sont chargés dynamiquement selon les besoins.

Chargement et retrait d’un module


Un module peut être chargé de trois façons :
1. Lors du démarrage du système, depuis les scripts /etc/rc.d/*, par la commande
modprobe. C’est le cas des pilotes qui doivent être disponibles immédiatement
après la phase de démarrage.
2. Automatiquement par le thread « kmod » du noyau. Il s’agit des pilotes dont la
présence n’est pas indispensable dès le démarrage, tels les pilotes de disques
amovibles et les pilotes de CD-ROM. Quand un pilote géré en tant que module est
requis par un processus, le noyau Linux détecte son absence et réveille le thread
kmod pour que ce dernier le charge. Le thread kmod remplace le démon kerneld
des versions antérieures. Il se contente de charger un module en faisant exécuter la
commande modprobe. Il n’assure pas le retrait du module qu’il a chargé.
L’administrateur peut programmer un travail, via cron, pour retirer les modules
inutilisés, grâce à la commande rmmod –a.
3. Manuellement, à tout moment, à l’aide des commandes insmod ou modprobe
pour les pilotes utilisés occasionnellement ou pour tester de nouveaux pilotes.
Un module peut être « retiré » manuellement, à n’importe quel moment, par les
commandes modprobe ou rmmod.

Les commandes de gestion de modules


La commande lsmod
La commande lsmod affiche, pour chaque module chargé, son nom, sa taille et le
nombre de processus qui utilisent ce module ainsi que la liste des modules dépendants.
Ces informations sont également disponibles dans le fichier /proc/modules.
Exemple de chargement de modules par le thread kmod.
# lsmod
Module Size Used by
Aucun module n’est chargé.

12-18 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 12 : Le noyau

On monte la partition Windows 98 (/dev/hda1) dans le répertoire /win98.


# mount -t vfat /dev/hda1 /win98
# lsmod # Le noyau a activé le thread kmod
Module Size Used by
nls_iso8859-1 2020 1 (autoclean)
ls_cp437 3548 1 (autoclean)
vfat 11516 1 (autoclean)
fat 25664 1 (autoclean) [vfat]
Le thread du noyau, kmod, a activé la commande modprobe qui a chargé le pilote
vfat ainsi que tous les modules dépendants.
La commande insmod
La commande insmod permet de charger ou seulement de tester la faisabilité du
chargement d’un module. Elle autorise le passage d’arguments nécessaires pour
certains pilotes. Il s’agit généralement des paramètres de configuration matérielle
« IRQ » et « I/O Address ».
Il existe un répertoire par catégorie de modules. Le répertoire net contient les pilotes
des cartes réseaux.
Syntaxe
insmod [options] nom_du_module [paramètre=valeur] ...
L’option « -p » permet de tester la faisabilité du chargement seulement. Elle consiste à
localiser le module, vérifier son numéro de version et résoudre les références externes
du module.
Exemples
Chargement du pilote d’une carte 3com avec les paramètres par défaut :
# insmod 3c509 # ou insmod 3c509.o
eth0: 3c509 at 0x300 tag 1, 10baseT port, address 00 60 08 80 f0 c6, IRQ 10.
3c509.c:1.16 2/3/98 becker@cesdis.gsfc.nasa.gov

Avec des paramètres « IRQ 12 » et « I/O Address » 330, la commande est :


# insmod 3c509 io=0x330 irq=12 # ou insmod 3c509.o io=0x330 irq=12
eth0: 3c509 at 0x330 tag 1, 10baseT port, address 00 60 08 80 f0 c6, IRQ
12.3c509.c:1.16 2/3/98 becker@cesdis.gsfc.nasa.gov
Remarques
• Le chargement échoue si le module utilise un module, dont il dépend, qui n’est
pas déjà chargé.
• Le paramètre de configuration « io » (« I/O Address ») doit être fourni en
hexadécimal. Il est, pour cela, préfixé par « 0x » (syntaxe du langage C).

La commande rmmod
La commande rmmod permet de retirer un module si ce dernier n’est pas utilisé par
un processus ou s’il n’est pas requis par d’autres modules chargés.
Syntaxe
rmmod nom_de_module

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 12-19
Module 12 : Le noyau

Exemple
Retrait du pilote de la carte 3com précédemment chargé.
# rmmod 3c509 # Ou rmmod 3c509.o
La commande depmod
La principale fonction de la commande depmod, qui est exécutée depuis le script de
démarrage /etc/rc.d/rc.sysinit, est de créer, à chaque démarrage du système, le fichier
/lib/modules/*/modules.dep. Il décrit principalement les chemins de recherche des
modules ainsi que les dépendances.
/lib/modules/preferred/misc/v_midi.o: /lib/modules/preferred/misc/sound.o
/lib/modules/preferred/misc/sb.o: /lib/modules/preferred/misc/soundcore.o \
/lib/modules/preferred/misc/uart401.o /lib/modules/preferred/misc/sound.o
Remarque
La commande depmod -a n’est exécutée que si le noyau supporte la gestion des
modules (cf. Module 12 : Le noyau).

La commande modprobe
A la façon des Makefile, bien connus dans le monde UNIX, la commande modprobe
permet d’automatiser la gestion des modules, le chargement ou le retrait d’un ou de
plusieurs modules et des modules dépendants sur la base des informations contenues
dans le fichier modules.dep.
Syntaxe
Charger un module et tous ses modules requis :
modprobe nom_de_module [ paramètre=valeur ...]
Retirer un module et toutes ses dépendances, si elles ne sont pas requises par d’autres
modules :
modprobe -r nom_de_module
Lister tous les modules d’un type donné. Le type est en fait le nom du répertoire qui
contient les modules, net par exemple :
modprobe -l -t type
Charger une liste de modules d’un type donné :
modprobe -a -t type modules_a_charger
Remarque
Les jokers fichiers sont autorisés dans l’expression modules_a_charger.
Afficher la configuration courante :
modprobe –c

Installation d’un nouveau module


Si vous avez téléchargé un nouveau module, il faut l’installer. Il est constitué d’un
ensemble de fichiers qui contiennent généralement une version déjà compilée du
module ainsi que les sources. Il faut intégrer ce module au noyau. Pour cela, il faut
respecter une procédure dont l’exemple qui suit présente les étapes à respecter. On
procède au chargement du pilote du modem interne, encore appelé « winmodem » :
1. Le module est fourni sous forme d’un fichier qu’il faut décompresser. Les fichiers
sont automatiquement décompressés dans une arborescence créée en dessous du
répertoire courant, par exemple /tmp.

12-20 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 12 : Le noyau

# unzip pctel.zip
Archive: pctel.zip
inflating: src/module/Makefile
inflating: src/module/ptmodule.c
inflating: lib/control.a
inflating: lib/dsp.a
inflating: lib/hal.a
inflating: lib/ptserial.a
inflating: lib/pctel.o

2. Il faut vérifier que le module qui vient d’être téléchargé n’est pas incompatible
avec la version actuelle du noyau. Pour cela, on tente d’insérer le module, sous sa
forme objet, tel qu’on vient de le récupérer.
# cd lib
# insmod pctel.o # on tente de le charger
pctel.o: kernel-module version mismatch
pctel.o was compiled for kernel version 2.2.5
while this kernel is version 2.4.7-10.
3. En cas de conflit de version, il faut le recompiler.
# cd ../src/module # il faut le compiler
# ls
Makefile ptmodule.c
# make
gcc -D__KERNEL__ -DMODULE -Wall -O -fomit-frame-pointer -I../../include
-c -ptmodule.o ptmodule.c
rm -f ../../lib/pctel.o
ld -r -o ../../lib/pctel.o ptmodule.o ../../lib/control.a ../../lib/hal.a ../../lib/dsp.a
./../lib/ptserial.a
#
4. Vérification des modules actuellement chargés.
# lsmod
Module Size Used by
lockd 31592 1 (autoclean)
sunrpc 53540 1 (autoclean) [lockd]
ppp 20268 0 (autoclean) (unused)
slhc 4568 0 (autoclean) [ppp]
ne 6768 1 (autoclean)
...
5. Insertion du module, nouvellement compilé.
# cd ../../lib
# insmod pctel.o
# lsmod
Module Size Used by
pctel 681528 0 (unused)
lockd 31592 1 (autoclean)
sunrpc 53540 1 (autoclean) [lockd]
ppp 20268 0 (autoclean) (unused)
slhc 4568 0 (autoclean) [ppp]
ne 6768 1 (autoclean)
...

Le nouveau module est correctement chargé.

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 12-21
Module 12 : Le noyau

6. Il reste à copier le code objet du module dans le répertoire des modules


# cp pctel.o /lib/modules/Version_du_noyau/net

Le fichier /etc/conf.modules ou /etc/modules.conf


Le fichier /etc/conf.modules peut être utilisé pour modifier le comportement du démon
kerneld et de la commande modprobe, essentiellement pour définir les chemins de
recherche des modules et les paramètres de configuration matérielle des pilotes.
Bien que le fichier /etc/conf.modules soit un fichier ascii que l’administrateur peut
modifier à l’aide d'un éditeur, l’emploi de la commande graphique kernelcfg s’avère
plus simple pour cette tâche.
Extrait du fichier /etc/conf.modules :
alias sound sb
alias midi opl3
options opl3 io=0x388
options sb io=0x220 irq=5 dma=1

La première ligne définit sound comme alias du pilote sb (fichier sb.o), le pilote d’une
carte Sound Blaster.
La deuxième ligne définit midi comme alias pour le pilote opl3 (fichier opl3.o).
Les deux dernières lignes définissent les paramètres de configuration matérielle des
pilotes.
Remarque
Les lignes du fichier /etc/conf.modules sont traitées par un shell, ce qui autorise
l’utilisation des caractères spéciaux du shell (cf. L’ouvrage : UNIX Shell).
Les lignes blanches et le texte qui suit le caractère « # » sont considérés comme des
commentaires et ignorés.
Le caractère « \ », en fin de ligne, indique que la configuration se poursuit sur la ligne
suivante.

12-22 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 12 : Le noyau

Les paramètres de Linux


Les paramètres de Linux

„ /proc/382/ Le processus de PID=382


./cmdline Ses arguments
./environ Son environnement
./status Ses caractéristiques
„ /proc/ioports Les ports d’entrées-sorties
„ /proc/interrupts Les interruptions
„ /proc/dma Les canaux DMA
„ /proc/pci Les périphériques PCI
„ Les paramètres du noyau
/proc/sys/fs/file-max

TSOFT - Linux Administration Module 12 : Le noyau - 12.5

Les paramètres système (« tunable parameters ») permettent au noyau de paramétrer


ses tables internes et de décider de l’espace nécessaire aux principales ressources dont
il a besoin pour fonctionner.
L’évolution des systèmes Linux tend à diminuer le nombre de paramètres statiques,
les seuls que l’administrateur peut être amené à modifier.
Les paragraphes présentent les paramètres importants, comment les connaître et les
modifier. La difficulté, pour l’administrateur, n’est pas de modifier une valeur mais
principalement de savoir donner un sens aux paramètres et de disposer, pour les
logiciels d’application, d’une documentation qui définisse précisément les besoins en
ressources système.

Introduction au répertoire /proc


Le pseudo-système de fichiers /proc est une interface aux structures de données du
noyau, pour les lire et pour en modifier certaines. Il contient notamment un répertoire
par processus dont le nom est le PID du processus. Chacun de ces répertoires contient
les informations clés de ce processus. Beaucoup de commandes Linux, qui affichent
ou modifient des paramètres système (ps, ifconfig, lsmod…), utilisent en fait le
répertoire /proc.
La description des fichiers situés dans le répertoire /proc est réalisée dans le fichier
/usr/src/linux/Documentation/proc.txt.
La plupart des fichiers de ce répertoire ont une taille nulle. Les informations qu’ils
contiennent sur le système Linux sont en fait les images de celles définies dans la
mémoire du noyau Linux. On peut cependant les visualiser à l’aide de la
commande more.
# ls –l /proc
-r--r--r-- 1 root root 0 Oct 2 15:22 ksyms
-r--r--r-- 1 root root 0 Oct 2 15:22 loadavg
-r--r--r-- 1 root root 0 Oct 2 15:22 locks

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 12-23
Module 12 : Le noyau

-r--r--r-- 1 root root 0 Oct 2 15:22 mdstat


-r--r--r-- 1 root root 0 Oct 2 15:22 meminfo

# more /proc/ioports
0000-001f : dma1
0020-003f : pic1
0040-005f : timer

00a0-00bf : pic2
fc80-fcff : eth0

Les fichiers du répertoire /proc


La liste qui suit présente les principaux fichiers du répertoire /proc :
cmdline Les arguments passés au noyau lors de son démarrage.
cpuinfo La description du processeur.
devices La liste des pilotes inclus dans le noyau, avec indication de leurs
majeurs (cf. Module 11 : Les périphériques).
dma La liste des canaux DMA utilisés par les contrôleurs.
filesystems La liste des systèmes de fichiers supportés par le noyau.
interrupts Les interruptions utilisées par les pilotes.
ioports Les ports d’entrées-sorties.
kcore La mémoire allouée au noyau.
ksyms La liste des symboles utilisés par les modules.
loadavg La charge du noyau.
locks La liste des verrous associés aux fichiers.
meminfo L’occupation de la mémoire centrale et de l’espace de swap.
misc Les pilotes associés au majeur 10.
modules Les pilotes chargés dans le noyau.
mounts Les systèmes de fichiers montés.
partitions La liste des partitions.
pci La liste des périphériques connectés sur le bus PCI.
rtc L'horloge temps réel.
slabinfo Des informations sur les tables système.
self Un lien sur le processus courant.
smp Le multi-processing.
uptime Depuis quand le système a démarré.
version La version du système.
swaps Les espaces de swap.
Exemple :
# cat interrupts
CPU0
0: 267884 XT-PIC timer

12-24 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 12 : Le noyau

1: 661 XT-PIC keyboard


2: 0 XT-PIC cascade
4: 12 XT-PIC serial
8: 2 XT-PIC rtc
11: 2499 XT-PIC eth0
13: 1 XT-PIC fpu
14: 62526 XT-PIC ide0
NMI: 0
# cat partitions
major minor #blocks name
3 0 1242864 hda
3 1 461632 hda1
3 2 1 hda2
3 5 717664 hda5
3 6 62464 hda6
3 64 1073741823 hdb

Les répertoires des processus


Il existe un sous-répertoire par processus et dont le nom correspond au PID du
processus. Chacun de ses répertoires contient les fichiers suivants :
cmdline Les arguments de la commande.
cwd Le répertoire courant.
environ L'environnement du processus.
exec Lien sur l’exécutable.
fd Les fichiers ouverts par le processus.
maps Les régions composants l’espace virtuel du processus.
root Le répertoire racine.
statm Des informations sur la mémoire.
status Les informations générales concernant le processus : le PID, UID,
GID, l’état du processus, la gestion des signaux...
Parmi eux, le fichier status est le plus significatif. L’exemple qui suit montre le fichier
/proc/395/status d’un démon nfsd.
# ps -e | grep 395
395 ? 00:00:00 nfsd
# cat /proc/395/status
Name: nfsd
State: S (sleeping)
Pid: 395
PPid: 1
Uid: 0 0 0 0
Gid: 0 0 0 0
FDSize: 32
Groups:
SigPnd: 0000000000000000
SigBlk: fffffffffffffef9
SigIgn: 0000000000000000
SigCgt: 0000000000000000
CapInh: 00000000fffffeff

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 12-25
Module 12 : Le noyau

CapPrm: 00000000fffffeff
CapEff: 00000000fffffeff

Les sous-répertoires des périphériques


Le répertoire /proc contient des fichiers qui donnent des informations sur les
périphériques. Il y a un répertoire par type de périphérique. On trouve ainsi :
bus Les bus.
fs Les systèmes de fichiers.
ide Les périphériques de type IDE.
net Le réseau.
parport Les ports parallèles.
scsi Les périphériques SCSI.
tty Les terminaux, les liaisons série..

Les paramètres du noyau


Le sous-répertoire /proc/sys est la racine d’une arborescence de fichiers représentant
les paramètres de gestion du système Linux.
Les principaux sous-répertoires de /proc/sys sont :
dev Les paramètres de périphériques.
fs Les paramètres des systèmes de fichiers.
kernel Les paramètres du noyau.
kernel/panic Le nombre de secondes avant que le système ne redémarre
automatiquement après un panic. Si la valeur est 0, il n’y a pas de
redémarrage automatique.
kernel/threads-max Le nombre maximum de processus et de threads concurrents. Ce
paramètre est une des nouveautés importantes des noyaux 2.4.
net Les paramètres réseau (/proc/sys/net/ipv4/*).
vm La pagination.
Certains paramètres du noyau peuvent être modifiés dynamiquement en modifiant des
fichiers de l’arborescence /proc/sys/.
Pour changer la valeur d’un paramètre du système, il suffit de rediriger la nouvelle
valeur dans le fichier associé au paramètre que l’on souhaite modifier.
La valeur maximale du nombre de fichiers que le noyau Linux peut ouvrir
simultanément est, par défaut, de 4096. L’exemple qui suit montre comment le porter
à 8192.
# cat /proc/sys/fs/file-max
4096
# echo 8192 > /proc/sys/fs/file-max
# cat /proc/sys/fs/file-max
8192
La modification doit être réalisée en connaissance de cause pour ne pas perturber le
bon fonctionnement du système et dégrader les performances. Vous devez écrire un
script exécuté à chaque démarrage si vous souhaitez que le changement soit
permanent.

12-26 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 12 : Le noyau

La commande sysctl
La commande sysctl permet d’afficher la valeur de ces paramètres et, quand cela est
possible, d’en modifier la valeur dynamiquement. Pour désigner un paramètre, on
utilise des variables dont le nom est construit de la manière suivante :
type_de_paramètre.Nom_de_variable où nom_de_variable est précisément le nom du
fichier paramètre. La variable fs.file-max désigne ainsi le paramètre Nombre
maximum de fichiers ouverts (cf. fichier /proc/sys/fs/file-max).
Syntaxe
sysctl [-n] variable...
sysctl [-n] -w variable=valeur...
sysctl [-n] -p <Nom_de_fichier>
sysctl [-n] -a
sysctl [-n] -A
Les options.
-a Affiche la valeur de toutes les variables.
-A Identique à l'option « a ».
-n Supprime l’affichage du nom de variable.
-w Permet de modifier une variable.
-p Nom_de_fichier .
Utilise ce fichier de configuration au lieu du fichier, par défaut, /etc/sysctl.conf.
Exemples
# cd /proc/sys
# ls
debug dev fs kernel net proc sunrpc vm
# ls fs
dentry-state dquot-nr file-nr inode-nr super-max
dquot-max file-max inode-max inode-state super-nr
# sysctl –a
...
fs.file-max = 4096
fs.file-nr = 449 19 4096
fs.inode-max = 8192
...
# sysctl fs.file-max
fs.file-max = 4096
# sysctl -w fs.file-max=8192
fs.file-max = 8192
# echo "fs.file-max=8192" >> /etc/sysctl.conf # Le changement est permanent
# cat /etc/sysctl.conf
...
# Disables automatic defragmentation (needed for masquerading, LVS)
net.ipv4.ip_always_defrag = 0
# Disables the magic-sysrq key
kernel.sysrq = 0

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 12-27
Module 12 : Le noyau

fs.file-max = 8192
...
Remarque
La modification de ces paramètres doit être réalisée en connaissance de cause pour ne
pas perturber le bon fonctionnement du système et dégrader les performances.
Si la valeur d’une variable contient des caractères spéciaux du shell, vous devez les
protéger afin d’interdire leur interprétation par le shell (cf. Le livre Shell - mêmes
auteurs et même éditeur).
Le fichier de configuration /etc/sysctl.conf
Si vous souhaitez que les changements soient permanents, il vous suffit de définir les
variables concernées dans le fichier /etc/sysctl.conf.

Les paramètres du noyau au démarrage de Linux


On peut transmettre, lors du démarrage, des paramètres au noyau. Ceci est réalisé par
l’intermédiaire de LILO. Ces paramètres sont fournis soit de manière interactive au
démarrage du système Linux, à l’invite de chargement LILO, soit en modifiant le
fichier /etc/lilo.conf.
Exemples
invite de chargement :
LILO : linux verbose=5
Fichier /etc/lilo.conf :
append="verbose=5"
root=/dev/hda3
Le tableau qui suit indique quelques paramètres significatifs :
Paramètre Description
init Le niveau de démarrage pour la commande init.
root Le disque qui contient le système de fichiers root.
ramdisk_size La taille, en kilo-octets, d’un disque créé en RAM. Le disque
est accessible par le nom de fichier spécial /dev/ram.
Les paramètres sont décrits dans la documentation du noyau du paquetage kernel-doc.

12-28 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 12 : Le noyau

Les IPC
Les IPC

„ Les IPC

IPC
messages

Kernel Sémaphores

Mémoires
partagées

TSOFT - Linux Administration Module 12 : Le noyau - 12.6

Introduction
Les IPC (« Inter Process Communication ») sont des mécanismes de synchronisation
de processus et d’échange ou de partage de données entre processus. Leur nombre et
leurs attributs sont des paramètres du noyau. La modification des paramètres associés
aux IPC (« Inter Process Communication ») n’est pas simple. Il est souhaitable que les
logiciels d’application documentent simplement l’utilisation des ressources système
(fichiers, processus et IPC).
Il existe trois catégories d’IPCs :
• Les sémaphores pour la synchronisation.
• Les files d’attente de messages pour l’échange de données avec synchronisation.
• Les segments de mémoire partagée pour le partage d’informations.
Une ressource de type IPC est identifiée par un identificateur ou une clé. C’est
l’identificateur qui est le plus souvent utilisé. Deux commandes existent pour
visualiser les IPC et leurs attributs, et les détruire : ipcs et ipcrm.

La commande ipcs
Syntaxe
ipcs [ -qmsctal]
Description
La commande ipcs affiche des informations sur les ressources IPC existantes.
-l Affiche les valeurs maximum pour les ressources IPC.
-q Informations sur les files d’attente de messages.
-m Informations sur les segments de mémoire partagée.

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 12-29
Module 12 : Le noyau

-s Informations sur les sémaphores.


-c Nom et groupe du créateur.
-t Informations sur les dates des dernières opérations réalisées sur les IPC.
-a Affiche tout.
Exemple
$ipcs
------ Shared Memory Segments --------
key shmid owner perms bytes nattch status
0x00000000 0 nobody 600 46084 11 dest
------ Semaphore Arrays --------
key semid owner perms nsems status
0x0000000a 0 root 666 1
------ Message Queues --------
key msqid owner perms used-bytes messages
0x00000000 0 root 700 0 0
# ipcs –l
------ Shared Memory Limits --------
max number of segments = 128
max seg size (kbytes) = 32768
max total shared memory (kbytes) = 16777216
min seg size (bytes) = 1
------ Semaphore Limits --------
max number of arrays = 128
max semaphores per array = 32
max semaphores system wide = 4096
max ops per semop call = 32
semaphore max value = 32767
------ Messages: Limits --------
max queues system wide = 128
max size of message (bytes) = 4056
default max size of queue (bytes) = 16384

La commande ipcrm
Syntaxe
ipcrm [msg | shm | sem ] id
Description
La commande ipcrm supprime une ressource de type IPC. L’option indique le type,
avec comme argument son « ID ».
Exemple
$ipcs
----- Shared Memory Segments --------
key shmid owner perms bytes nattch status
0x00000000 0 nobody 600 46084 11 dest

12-30 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 12 : Le noyau

$ipcrm shm 0
Les paramètres des IPC
Les paramètres des IPC sont définis dans des fichiers d’en-tête utilisés à la
compilation du noyau. L’administrateur qui souhaite modifier les valeurs des
paramètres des IPC est confronté, sous Linux, à deux problèmes, la connaissance et la
compréhension des IPC et celle de la structure d’un programme écrit en langage C.
Les fichiers d’en-tête sont dans le répertoire /usr/src/linux-2.4.7-10/include/linux.
Les quelques lignes qui suivent sont extraites du fichier msg.h et représentent la
définition de quelques paramètres des files d’attente de messages.
#define MSGMNI 128 /* <= 1K */ /* max # of msg queue identifiers */
#define MSGMAX 4056 /* <= 4056 */ /* max size of message (bytes) */
#define MSGMNB 16384 /* ? */ /* default max size of a message queue */
/* unused */
#define MSGPOOL (MSGMNI*MSGMNB/1024) /* size in kilobytes of message pool */
#define MSGTQL MSGMNB /* number of system message headers */
#define MSGMAP MSGMNB /* number of entries in message map */
Les fichiers de définition des paramètres des IPC sont msg.h, shm.h et sem.h pour les
files d’attente de messages, les zones de mémoire partagée et les sémaphores. Le
lecteur trouve, dans le tableau qui suit, la liste des paramètres des IPC.
Paramètres des files d’attente de messages Identificateur
Nombre d’entrées de la table de gestion des segments de messages MSGMAP
Longueur maximum d’un message MSGMAX
Longueur maximum d’une file MSGMNB
Nombre maximum de files dans le système MSGMNI
Taille, en octets, d’un segment de message.
Un message est stocké dans un ensemble contigu de segments
MSGSSZ * MSGSEG <= 128 Ko MSGSSZ
Nombre d’en-têtes de messages dans le système
(nombre maximum de messages en suspens) MSGQTL
Nombre de segments de message dans le système MSGSEG

Paramètres des sémaphores Identificateur


Nombre d’entrées de la table de gestion des tableaux de sémaphores SEMMAP
Nombre maximum de tableaux de sémaphores actifs en même temps SEMMNI
Nombre maximum de sémaphores dans le système SEMMNS
Nombre de structures « undo » dans le système SEMMNU
Nombre maximum de sémaphores par tableau (un tableau par id) SEMMSL
Nombre maximum d’opérations que peut réaliser un appel
de la primitive semop(2) SEMOPM
Nombre maximum d’entrées par structure « undo » SEMUME
Valeur maximum d’un sémaphore SEMVMX
Valeur maximum de « semadj », utilisée sur exit SEMAEM

Paramètres des segments de mémoire partagée Identificateur


Taille maximum d’un segment de mémoire partagée SHMMAX
Taille minimum d’un segment de mémoire partagée SHMMIN
Nombre maximum de segments de mémoire partagée dans le système SHMMNI
Nombre maximum de segments de mémoire partagée d’un processus SHMSEG
Nombre maximum de blocs de 4 Ko partageables dans le système SHMALL

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 12-31
Module 12 : Le noyau

Informations sur le système, les périphériques


Information sur le système

„ Commandes
z uname Affiche la version de l’OS, son nom, ...
z dmesg Affiche les données du démarrage
z ident Affiche les versions des logiciels
„ Fichier
z /var/log/messages Contient les messages du démarrage

TSOFT - Linux Administration Module 12 : Le noyau - 12.7

Il existe des commandes qui permettent d’obtenir des informations utiles sur le
système. A défaut d’être fondamentales pour l’administration, elles participent
souvent à la connaissance globale du système que l’on administre.

uname
La commande uname permet d’obtenir le nom du système Linux, le nom d’hôte de
l’ordinateur (son nom réseau), la version du système et le type de licence.
$ uname
Linux
$ uname –n
aurore.linux
$ uname –a
Linux aurore1.goubet.fr 2.4.7-10 #1 Thu Sep 6 17:27:27 EDT 2001 i686 unknown

dmesg
La commande dmesg visualise les informations affichées à la console maîtresse lors
du démarrage du système Linux.
$ dmesg
:4b:2a:06:97, IRQ 9
8K byte-wide RAM 5:3 Rx:Tx split, autoselect/10baseT interface.
Enabling bus-master transmits and whole-frame receives.
3c59x.c:v0.99 4/7/98 Donald Becker
http://cesdis.gsfc.nasa.gov/linux/drivers/vortex.html
loading device 'eth0'...

12-32 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 12 : Le noyau

ident
La commande ident affiche les commentaires de type RCS extraits du fichier auquel
on applique la commande. RCS est un système de gestion de versions de logiciels
développés, à l’origine, dans UNIX BSD.
# ident lsmod
lsmod:
$Id: lsmod.c,v 1.1 1997/09/10 22:14:48 rth Exp $
$Id: module.h,v 1.4 1998/05/20 15:07:49 jj Exp $
$Id: util.h,v 1.1 1997/09/10 22:13:04 rth Exp $
$Id: logger.h,v 1.1 1997/09/10 22:14:47 rth Exp $
$Id: logger.c,v 1.1 1997/09/10 22:14:47 rth Exp $
$Id: util.h,v 1.1 1997/09/10 22:13:04 rth Exp $
$Id: sys_qm.c,v 1.2 1997/09/10 22:28:54 rth Exp $
$Id: module.h,v 1.4 1998/05/20 15:07:49 jj Exp $
$Id: xmalloc.c,v 1.1 1997/09/10 22:22:37 rth Exp $
$Id: util.h,v 1.1 1997/09/10 22:13:04 rth Exp $
$Id: xrealloc.c,v 1.1 1997/09/10 22:22:38 rth Exp $
$Id: util.h,v 1.1 1997/09/10 22:13:04 rth Exp $

Le fichier /var/log/messages

Le fichier /var/log/messages contient des informations émises par les sous-systèmes


qui utilisent le service syslog (cf. Chapitre suivant). On y trouve des informations
relatives à des services démarrés en même temps que le système Linux.

# more messages
Sep 23 21:44:34 linux syslogd 1.3-3: restart.
Sep 23 21:44:34 linux syslog: syslogd startup succeeded
Sep 23 21:44:34 linux syslog: klogd startup succeeded
Sep 23 21:44:34 linux kernel: klogd 1.3-3, log source = /proc/kmsg started.
Sep 23 21:44:34 linux kernel: Inspecting /boot/System.map-2.2.5-15
Sep 23 21:44:36 linux atd: atd startup succeeded
Sep 23 21:44:37 linux kernel: Loaded 7132 symbols from /boot/System.map-2.2.5-15

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 12-33
Module 12 : Le noyau

Le service « syslog »
La journalisation des messages d’erreurs: syslogd
$ more /etc/syslog.conf
*.err;auth.notice /dev/console
*.err;daemon,auth.notice /var/log/messages
lpr.debug root
*.emerg *

1 2 3
Sous-système Niveau Destinataire
(kern, mail, (emerg, (fichier, périphérique,
lpr, daemon, alert, crit, e-mail, *: tous les
auth, *: tous err, warn, utilisateurs connectés)
les sous- notice, info,
systèmes) debug,
none)

TSOFT - Linux Administration Module 12 : Le noyau - 12.8

Introduction
Le démon syslogd reçoit des messages d’erreur émis par le noyau ou les démons de
certains services (les sous-systèmes). Le fichier /etc/syslog.conf permet à
l’administrateur de décider de la destination des messages pour chaque sous-système
et selon le degré de sévérité de l’erreur.
Sur chaque ligne du fichier /etc/syslog.conf qui n’est pas un commentaire, on
indique, comme premier champ, une liste des sous-systèmes avec, pour chacun d’entre
eux, le niveau de sévérité du message. Le second champ indique la destination du
message.
La structure d’une ligne est donc formellement définie de la manière suivante :
Priorité [ ; priorité … ] action
Un champ priorité est de la forme :
Sous-système[, sous-système …] .niveau
Le caractère * utilisé pour désigner un sous-système signifie tous les sous-systèmes.
Le caractère * comme niveau signifie tous les niveaux.
Le champ action désigne la destination du message.
La première ligne de l’exemple du transparent montre que les messages d’erreur de
tous les sous-systèmes et de notification du sous-système d’authentification sont
affichés sur la console maîtresse. La seconde ligne nous dit que ces messages ainsi que
les messages de notification du sous-système daemon sont dirigés vers le fichier
/var/log/messages. La troisième ligne nous dit que les messages de type debug du
sous-système lpr sont envoyés à root. La quatrième ligne nous dit que les messages
urgents de tous les sous-systèmes sont envoyés à tous les utilisateurs.

12-34 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 12 : Le noyau

Les sous-systèmes
Les sous-systèmes possibles sont :
Sous-système Signification
auth, authpriv Le service de sécurité et d’authentification. Le terme « auth » est
obsolète, il faut maintenant utiliser « authpriv ».
cron Le service cron.
daemon Les démons du système.
kern Le noyau.
lpr Le service d’impression.
mail Le service de messagerie.
news Le sous-système réseau.
syslog Le démon syslog lui-même.
user Messages envoyés par les processus des utilisateurs.
uucp Le sous-système uucp (« Unix to Unix CoPy »).
local0 à local7 huit possibilités réservées à un usage local.

Les niveaux de sévérité


Les niveaux de sévérité sont dans un ordre décroissant d’importance :
Niveau Signification
emerg Le système est inutilisable.
alert Une intervention immédiate est indispensable.
crit Erreur critique pour le sous-système.
err Erreur de fonctionnement.
warning Avertissement.
notice Evénement normal mais qui mérite d’être signalé.
info Pour information seulement.
debug Message envoyé pour la mise au point.
none Ignorer les messages.

Remarque
Un niveau de sévérité englobe les niveaux de sévérité supérieurs, ainsi le niveau err
englobe les niveaux crit, alert, et emerg.
Les messages sont écrits par le noyau dans /dev/error et par les sous-systèmes dans le
tube nommé /dev/syslog.
Des messages distants sont reçus sur la « socket » liée au port 514.
Le champ action peut être :
• Un fichier.
• Un hôte distant, le champ a alors la forme @hôte.
Le démon syslogd de l’hôte distant doit avoir été démarré avec l’option « -r » pour
accepter les messages entrants.

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 12-35
Module 12 : Le noyau

• Une adresse e-mail util@hôte.


• Une liste d’utilisateurs connectés : util[,util…].
• Le caractère * pour désigner tous les utilisateurs.
La commande logger ou la fonction syslog() du langage C peuvent être utilisées pour
envoyer des messages à syslogd.
Il est possible d’associer ce message à une priorité, l'exemple suivant envoie un
message associé à la priorité ftp.info :
# logger -p ftp.info "Activation du service ftp anonyme"

12-36 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 12 : Le noyau

Atelier 12 : Le noyau
Atelier 11 : Le noyau

Objectifs :
„ Savoir reconstruire un noyau pour
ajouter un pilote ou modifier une
fonctionnalité du système
„ Savoir rechercher les pilotes et les
périphériques présents sur le
système
„ Savoir afficher des informations
concernant le système
Durée minimum : 35 minutes.

TSOFT - Linux Administration Module 12 : Le noyau - 12.9

Exercice n°1
Quelle est la version actuelle de votre noyau ?

Exercice n°2
Quelles sont les caractéristiques de votre processeur ?

Exercice n°3
Quel est le nombre maximum d’inodes qu’il est possible d’utiliser simultanément ?
Portez ce paramètre à 8192.

Exercice n°4
Affichez les paramètres des sémaphores de votre système Linux.

Exercice n°5 (la durée est supérieure à une heure)


Recompilez le noyau. Testez-le en suivant la procédure décrite dans le chapitre
Construire un nouveau noyau.

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 12-37
Module 12 : Le noyau

Exercice n°6
Utilisez la commande logger pour copier le message « serveur xxx a démarré » sur le
fichier log de votre système. Lisez ensuite le message généré.

Exercice n°7
Listez les périphériques et leur port d’entrées-sorties.

Exercice n°8
Quels sont tous les modules qui sont chargés au démarrage de votre système ?

Exercice n°9
Listez tous les modules chargés de votre système.
Donnez deux solutions.

Exercice n°10
Ajoutez le module SCSI sg (ou un autre si vous l’utilisez déjà).
Affichez à nouveau les modules.
Retirez le module sg.
Affichez à nouveau les modules.

12-38 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 13 : Les paquetages

• Les paquetages
(« packages »)
• La commande en mode
texte rpm
• La commande en mode
graphique gnorpm

13Module 13 : Les
paquetages
Objectifs
Après la lecture de ce module, le lecteur connaît les caractéristiques des paquetages. Il
sait les installer et les retirer, en totalité ou partiellement.

Contenu
Introduction à la gestion des paquetages
La commande rpm
La commande gnorpm

Références
HOWTO : RPM-HOWTO
Le manuel : rpm(8)
Internet : http://rpmfind.net

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 13-1
Module 13 : Les paquetages

La gestion des paquetages


La gestion des paquetages

Les
Lescommandes
commandes

„ La commande rpm
La commande principale qui permet de
- Créer des paquetages
- D’installer ou de retirer un paquetage
- D’afficher des informations sur les paquetages
„ La commande gnorpm
L’interface graphique de la commande rpm
„ La commande rpm2cpio
Convertit un fichier rpm au format cpio

TSOFT - Linux Administration Module 13 : Les paquetages - 13.2

Le RPM (« Red Hat Package Manager ») est un système qui permet de gérer
l’installation ou la désinstallation d’applications fournies sous forme de paquetages
(« package »). Ce système, bien que créé par la société Red Hat, est un logiciel ouvert
sous licence GPL (cf. http://www.rpm.org).
Un paquetage se présente sous forme d’un fichier au format RPM. Ce fichier a
l’extension « .rpm ». Il contient les fichiers à installer, mais aussi des informations
générales sur le paquetage, comme la version, la description, et le script d’installation
du paquetage.
La gestion des paquetages est principalement réalisée par la commande rpm. La
commande gnorpm est une interface graphique à la commande rpm. Elle en simplifie
l’usage par la convivialité du mode graphique. Elle ne peut évidemment être exécutée
que dans un environnement X (cf. Module 16 : X-Window).
La commande rpm2cpio convertit un fichier au format rpm en un fichier au format
cpio.
Bien que beaucoup de distributions Linux utilisent les paquetages RPM, il existe un
autre logiciel de gestion de paquetages, très performant, « apt-get » fourni dans la
distribution Debian.

13-2 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 13 : Les paquetages

La commande rpm
La commande rpm

La
Lamise
miseen
enœuvre
œuvrede
derpm
rpm

„ Installer un paquetage
# rpm -i le_paquetage.rpm
„ Retirer un paquetage
# rpm -e le_paquetage
„ Afficher les paquetages installés
# rpm -qa
„ Afficher les caractéristiques d’un paquetage
# rpm -qpi le_paquetage.rpm
„ Afficher les composants d’un paquetage
# rpm -qpl le_paquetage.rpm

TSOFT - Linux Administration Module 13 : Les paquetages - 13.3

La commande rpm
La commande rpm gère les paquetages au format rpm.
Syntaxe
rpm –option_principale [ options_secondaires] [le_paquetage]
Options
Le tableau qui suit donne la liste essentielle des options « option_principale » de
la commande rpm, hormis celles de construction de paquetage.

Option Description
-i Installe un paquetage.
-U Mise à jour d’un paquetage.
-e Désinstalle un paquetage.
-q Affiche des informations sur un paquetage. L’option
complémentaire « -p » permet de préciser le nom d’un
paquetage non installé. Le nom doit alors être fourni sous la
forme d’une URL pour FTP.
-V Vérifie un paquetage.
--version Affiche la version.
--help Affiche les options de la commande rpm.
--checking Vérifie la signature d’un paquetage.

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 13-3
Module 13 : Les paquetages

Exemples
Remarque
Avant d’installer un paquetage de la distribution Red Hat, il faut monter le CD-ROM
d’installation sur le répertoire /mnt/cdrom. Les fichiers *.rpm se trouvent dans le
répertoire /RedHat/RPMS du CD-ROM.

Installer un paquetage.
# cd /mnt/cdrom/RedHat/RPMS # le répertoire où réside les paquetages
# ls *77*
compat-egcs-g77-5.2-1.0.3a.1.i386.rpm make-3.77-6.i386.rpm
egcs-g77-1.1.2-12.i386.rpm
# rpm -i egcs-g77-1.1.2-12.i386.rpm

Installer un paquetage en visualisant la progression de


l'installation.
# rpm -ivh egcs-g77*.rpm
egcs-g77 ##################################################

Installer un paquetage stocké sur une autre machine (via FTP).


# rpm -i ftp://venus/RPMS/le_package.rpm

Mettre un jour un paquetage ou l’installer si il ne l’était pas.


# rpm -Uvh egcs-g77*.rpm

Désinstaller un paquetage dont on recherche d’abord le nom


exact.
# rpm -qa | grep egcs-g77
egcs-g77-1.1.2-12
# rpm -e egcs-g77-1.1.2-12

Forcer l’installation si le paquetage est déjà installé ou dépend


d’autres paquetages.
# rpm -ivh --nodeps --force egcs-g77*.rpm

Vérifier si un paquetage est installé.


# rpm -q egcs-g77
egcs-g77-1.1.2-12

Visualiser les caractéristiques d’un paquetage déjà installé.


# rpm -qi egcs-g77
Name : egcs-g77 Relocations: (not relocateable)
Version : 1.1.2 Vendor: Red Hat Software

13-4 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 13 : Les paquetages

Release : 12 Build Date: dim 21 mar 1999 22:41:39 CET


Install date: sam 16 oct 1999 12:37:34 CEST Build Host:
porky.devel.redhat.com
Group : Development/Languages Source RPM: egcs-1.1.2-12.src.rpm
Size : 4742626 License: GPL
Packager : Red Hat Software http://developer.redhat.com/bugzilla/
URL : http://egcs.cygnus.com/
Summary : Fortran 77 support for the gcc compiler.
Description :
The egcs-g77 package provides support for compiling Fortran 77
programs with the GNU gcc compiler.
You should install egcs-g77 if you are going to do Fortran development and
you would like to use the gcc compiler. You will also need to install the
gcc package.

Visualiser les caractéristiques d’un paquetage non encore installé.


# rpm -qpi egcs-g77*.rpm

Connaître le paquetage d’origine d’un fichier.


# rpm -qf /usr/sbin/pwconv
shadow-utils-980403-12

Connaître la liste des fichiers, composants d’un paquetage.


# rpm -qpl egcs-g77*.rpm
/usr/bin/f77
/usr/bin/g77
/usr/info/g77.info.gz
/usr/lib/gcc-lib/i386-redhat-linux/egcs-2.91.66/f771
/usr/lib/gcc-lib/i386-redhat-linux/egcs-2.91.66/include/g2c.h
/usr/lib/gcc-lib/i386-redhat-linux/egcs-2.91.66/libg2c.a
/usr/man/man1/f77.1
/usr/man/man1/g77.1

Connaître la liste des paquetages installés. Nous n’affichons que


les derniers.
# rpm -qa | tail
yp-tools-2.2-1
ypbind-3.3-20
zlib-1.1.3-5
zlib-devel-1.1.3-5
XFree86-SVGA-3.3.3.1-49
XFree86-VGA16-3.3.3.1-49
XFree86-Mach32-3.3.3.1-49
XFree86-Mach64-3.3.3.1-49
XFree86-AGX-3.3.3.1-49
egcs-g77-1.1.2-12

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 13-5
Module 13 : Les paquetages

Connaître les dépendances d’un paquetage (-R ou --requires).


# rpm -qR egcs-g77
egcs = 1.1.2
/sbin/install-info
/bin/sh
ld-linux.so.2
libc.so.6
libc.so.6(GLIBC_2.0)
libc.so.6(GLIBC_2.1)

Connaître les versions d’un paquetage, du gestionnaire rpm.


# file egcs-g77*.rpm
egcs-g77-1.1.2-12.i386.rpm: RPM v3 bin egcs-g77-1.1.2-12
# rpm --version
RPM version 3.0

Afficher les scripts qui seront déclenchés automatiquement.


# rpm -q --scripts pdksh
postinstall script (through /bin/sh):
if [ ! -f /etc/shells ]; then
echo "/bin/ksh" > /etc/shells
else
if ! grep '^/bin/ksh$' /etc/shells > /dev/null; then
echo "/bin/ksh" >> /etc/shells
fi
fi
postuninstall script (through /bin/sh):
if [ ! -f /bin/ksh ]; then
grep -v /bin/ksh /etc/shells > /etc/shells.new
mv /etc/shells.new /etc/shells
fi

Afficher les caractéristiques des fichiers : chemin, taille, date de


modification et signature md5.
# rpm -q -l --dump -p egcs-g77*.rpm
/usr/bin/f77 3 922052494 0120777 root root 0 0 0 g77
/usr/bin/g77 68640 922052491 815e6c0fbd6de5459ecfc697fb203ae9 0100755
root
oot 0 0 0 X
/usr/info/g77.info.gz 265867 922052444 c2bbbe856c529e09d52be1e7c9aac694
100644 root root 0 1 0 X
/usr/lib/gcc-lib/i386-redhat-linux/egcs-2.91.66/f771 1881484 922052491
cc0e0f0993ef948a34eaf946058d05f2 0100755 root root 0 0 0 X
/usr/lib/gcc-lib/i386-redhat-linux/egcs-2.91.66/include/g2c.h 5614 922052489
26ccd6b28810977b3b0a5b53c1527965 0100644 root root 0 0 0 X
/usr/lib/gcc-lib/i386-redhat-linux/egcs-2.91.66/libg2c.a 2511742 922052489
9f78549164e2e0aa0b16edc6811f006f 0100644 root root 0 0 0 X
/usr/man/man1/f77.1 5 922052494 0120777 root root 0 1 0 g77.1

13-6 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 13 : Les paquetages

/usr/man/man1/g77.1 9271 922052439 c73cdd2b562212d0e720526ac277070d


0100644 root root 0 1 0 X

Vérifier un paquetage (cf. l'option --dump ci-dessus).


# rpm -V egcs-g77
# ls -l /usr/man/man1/f77.1g
-rw-r--r-- 1 root root 9271 Mar 21 1999 /usr/man/man1/g77.1
# chmod g+w /usr/man/man1/g77.1
# rpm -V egcs-g77
.M...... /usr/man/man1/g77.1

Afficher la liste des fichiers de documentation d’un paquetage


# rpm -q -d egcs-g77
/usr/info/g77.info.gz
/usr/man/man1/F77.1
/usr/man/man1/g77.1

Vérifier l’ensemble des paquetages installés


# rpm –Va

Vérifier la signature d’un fichier paquetage. Si l’on a installé


PGP, on peut se prémunir contre les chevaux de Troie.
# rpm --checksig --nopgp egcs-g77*.rpm
egcs-g77-1.1.2-12.i386.rpm: size md5 OK

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 13-7
Module 13 : Les paquetages

La commande GnoRPM
La commande GnoRPM

TSOFT - Linux Administration Module 13 : Les paquetages - 13.4

La commande GnoRPM est une interface graphique conviviale pour la gestion des
paquetages.
L’écran principal affiche des boutons et des dossiers. Chaque dossier contient une
distribution, c’est-à-dire un ensemble cohérent de paquetages : développement,
jeux, …

Navigation dans les dossiers


La navigation dans les dossiers est très facile et intuitive, comme il se doit pour une
interface graphique. En cliquant sur le symbole « + » d’un dossier, on fait apparaître
les dossiers ou les paquetages contenus dans le dossier où l’on a cliqué. Les
paquetages sont matérialisés par des boîtes contenant des objets. Pour sélectionner un
paquetage, il suffit de cliquer dessus. Pour désélectionner un paquetage, il suffit de
cliquer ailleurs. Il est sélectionné quand son nom est représenté à l’intérieur d’un cadre
colorié. En appuyant sur le bouton droit de la souris, on fait apparaître un menu
contextuel.

Les boutons de la barre d’outils principale


La barre d’outils propose plusieurs possibilités à l’utilisateur :
Install
La commande install nous amène à une boîte de dialogue qui permet de sélectionner
les paquetages à installer. C’est, par défaut et si le CD-ROM a été monté, le répertoire
/mnt/cdrom/RedHat/RPMS.
Upgrade
La commande upgrade nous amène à une boîte de dialogue identique à celle de
Install, pour préciser les paquetages dont on souhaite faire la mise à niveau.

13-8 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 13 : Les paquetages

Unselect
La commande Unselect permet de désélectionner des paquetages sélectionnés.
Uninstall
Cette commande désinstalle les paquetages sélectionnés.
Query
Cette commande permet d’obtenir la description des paquetages sélectionnés, la liste
de leurs composants et leurs attributs (nom, version, date, taille, vendeur,
distribution, …).
Verify
Cette commande compare les informations, notamment la taille et les droits, des
paquetages installés sélectionnés et des fichiers RPM.
Find
Cette commande recherche des paquetages selon différents critères.
Web Find
Cette commande recherche des paquetages sur le Web, via la commande rpmfind. Le
même site @ peut avoir plusieurs noms, http://rufus.w3.org/linux/RPM ou
http://rpmfind.net. Ce site contient un nombre très élevé de paquetages. Il faut
évidemment une liaison Internet.

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 13-9
Module 13 : Les paquetages

Atelier 13 : Les paquetages


Atelier 10 : La gestion des périphériques

Objectif :
„ Apprendre à gérer les paquetages de
Linux

Durée : 25 minutes.

TSOFT - Linux Administration Module 13 : Les paquetages - 13.5

Exercice n°1
Affichez les paquetages installés, combien sont-ils ?

Exercice n°2
Affichez les paquetages du CD-ROM d’installation, combien sont-ils ?

Exercice n°3
Affichez les informations du paquetage dont la commande bash fait partie.

Exercice n°4
Installez le paquetage « gnuchess ». Affichez sa description au préalable !

13-10 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 14 : La gestion des performances

• Mémoire virtuelle,
« paging » et
« swapping »
• Diagnostics et remèdes
• La commande vmstat
• Automatiser la
surveillance

14Module 14 :
La gestion des
performances
Objectifs
Après la lecture de ce module, le lecteur sait quelles sont les principales ressources à
surveiller et comment, les commandes existantes et particulièrement la commande sar.

Contenu
Les ressources à surveiller
Panorama des commandes de surveillance du système
Surveiller le système avec la commande vmstat

Références
HOWTO : Benchmarking-HOWTO
Le manuel : vmstat8), uptime(8), top(8), ps(1)
Livre : System Performance Tuning
Internet : http://www.tunelinux.com

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 14-1
Module 14 : La gestion des performances

Les ressources à surveiller


Les ressources à surveiller

Mémoire CPU Entrées/


Sorties

TSOFT - Linux Administration Module 14 : La gestion des performances - 14.2

Pourquoi surveiller les ressources ?


L’administrateur se doit de surveiller l’utilisation des principales ressources du
système : processeur, mémoire centrale, pagination et « swapping », et les entrées/
sorties.
Il doit être capable de remédier à leur mauvaise utilisation ou à leur insuffisance.
Après avoir effectué le diagnostic, il peut augmenter les ressources :
• Changer de machine.
• Augmenter la mémoire, le swap.
• Ajouter de l’espace disque.
• Augmenter la taille des tables système.
Il peut les gérer autrement, principalement en diminuant leur utilisation, par exemple :
• Décider d’exécuter certains programmes la nuit.
• Installer des quotas pour les utilisateurs.
• Diminuer la taille de certaines tables du système pour augmenter celle des autres.

Pagination et swapping
Rappelons que les processeurs actuels fonctionnent avec des mécanismes de mémoire
virtuelle. L’espace adressable d’un processus est virtuel. Il représente un espace
logique supérieur en taille à l’espace physique adressable.
L’espace mémoire du processus (code, données et pile) est découpé en pages. La taille
d’une page est de quelques kilo-octets, souvent quatre. Quand le processeur doit
accéder à une donnée ou à une instruction, il en convertit l’adresse virtuelle en une
adresse physique. Pour cela, il divise l’adresse virtuelle par la taille de la page. Le

14-2 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 14 : La gestion des performances

quotient lui fournit le numéro de la page et le reste, l’offset de la cellule mémoire dans
la page.

Taille de la page : 4 096 octets


Adresse virtuelle : 10 512
Numéro de page : 3
Offset dans la page : 2 320
Le numéro de page est une entrée dans la table des descripteurs de pages du processus.
Si la page est présente en RAM, le descripteur contient son adresse physique. L’offset
permet d’atteindre la donnée dans la page.
A défaut, une interruption matérielle de type « défaut de page » est générée, qui
déclenche le chargement de la page manquante du disque en RAM (« page in »). Ce
chargement nécessite parfois le vidage préalable d’une page non utilisée de la RAM
vers le disque (« page out ») de swap.
Un système qui échange peu ou pas de pages ne perd donc pas de temps à réaliser des
lectures et des écritures sur disque, pour son propre compte. Il se consacre tout entier
aux entrées/sorties demandées par les processus.
Le swapping entre en jeu quand la quantité de mémoire RAM libre devient critique.
Les seuils sont des paramètres du noyau. Des processus entiers sont copiés sur le
disque de swap pour libérer suffisamment de mémoire.
Pagination (« paging ») et swapping sont donc des mécanismes complémentaires.
Un système qui dispose de plusieurs processeurs peut exécuter physiquement plusieurs
processus en parallèle dans le temps.
Si deux disques IDE sont connectés à deux contrôleurs distincts, le système peut
exécuter des opérations d’entrées/sorties simultanément pour plusieurs processus.

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 14-3
Module 14 : La gestion des performances

Panorama des commandes de surveillance du


système
Panorama des commandes de surveillance du système

„ vmstat Utilisation de la mémoire (BSD)


„ uptime Charge générale du système (BSD)
„ free Affiche la mémoire libre, vive et de swap
„ ps, pstree Information sur les processus
„ top Les processus les plus gourmands en ressources
„ time Information sur l’utilisation des ressources par une
commande
„ netstat Utilisation du réseau

TSOFT - Linux Administration Module 14 : La gestion des performances - 14.3

Les commandes de surveillance des ressources du système sont nombreuses et nous


mentionnons ici les plus usuelles disponibles sur Linux. Des utilisateurs curieux
trouveront certainement d’autres outils. Les commandes que nous présentons couvrent
l’essentiel des ressources fondamentales et des besoins classiques de surveillance.

vmstat
La commande vmstat affiche des statistiques sur les ressources du système, dont les
processus, la mémoire, l’activité du CPU. Le chapitre qui suit en donne une
présentation détaillée.

iostat
La commande iostat affiche des statistiques sur l’utilisation des disques.

uptime
La commande uptime affiche des statistiques sur la charge du système durant la
dernière, les cinq et les quinze dernières minutes.
# uptime
5:54pm up 36 min, 4 users, load average: 0.01, 0.05, 0.01

free
La commande affiche la quantité totale de mémoire vive et de swap ainsi que la
quantité de mémoire libre. Par défaut, les résultats sont affichés en Ko.
# free
total used free shared buffers cached
Mem: 63140 21648 41492 15836 1284 13940
-/+ buffers/cache: 6424 56716
Swap: 36284 0 36284

14-4 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 14 : La gestion des performances

ps
La commande ps affiche des informations sur les processus. La commande ps de
Linux dispose de très nombreuses options et nous renvoyons le lecteur au manuel de la
commande. Les options « a », « u » et « x » utilisées dans l’exemple qui suit, ont la
signification suivante :
Option Description
a Affiche les processus des utilisateurs.
u Affiche le nom des utilisateurs et l’heure de début du processus.
x Affiche les processus détachés d’un terminal, donc les démons.
-e Affiche tous les processus.
-f Affiche de nombreuses informations sur les processus, dont le PPID,
c’est-à-dire le PID du processus père.
-u utilisateur Affiche les processus de l’utilisateur « utilisateur ».
s Affiche les signaux gérés par le processus.
v Affiche des informations sur l’utilisation de la mémoire virtuelle.
-H Montre la hiérarchie des processus.

# ps aux | head
USER PID %CPU %MEM SIZE RSS TTY STAT START TIME COMMAND
bin 142 0.0 0.5 752 320 ? S 17:18 0:00 portmap
daemon 176 0.0 0.6 784 404 ? S 17:18 0:00 /usr/sbin/atd
jf 246 0.0 1.2 1248 820 3 S 17:18 0:00 -bash
jf 616 0.0 1.0 1200 648 3 S 17:48 0:00 sh
usr/X11R6/bin/sta
...
# ps -ef | tail –5
root 414 1 0 11:40 tty6 00:00:00 /sbin/mingetty tty6
root 416 1 0 11:40 ? 00:00:00 update (bdflush)
root 419 409 0 11:50 tty1 00:00:00 –bash
root 480 419 0 12:04 tty1 00:00:00 ps –ef
root 481 419 0 12:04 tty1 00:00:00 tail -5

pstree
La commande pstree affiche l’arbre des processus. L’arbre est construit d’après la
filiation des processus.
$ pstree
init-+-atd
|-2*[bash]
|-bash---startx---xinit-+-X
| `-sh-+-twm
| |-xclock
| `-xterm---bash---bash---ksh-+-pstree
| `-xterm---bash---xedit
|-crond
|-gpm
...

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 14-5
Module 14 : La gestion des performances

top
La commande top est un logiciel libre qui affiche en permanence des informations
générales sur les processus et les ressources. Par défaut les processus les plus
gourmands en temps de calcul sont placés en tête.
Syntaxe
top [ d delai]
où délai exprime la durée en secondes entre deux rafraîchissements d’écran.
Une fois la commande top démarrée, l’utilisateur dispose de commandes interactives
qu’il peut exécuter en saisissant une lettre pour indiquer la commande à exécuter.
Le tableau qui suit mentionne quelques-unes de ces commandes :
Commande Description
espace Rafraîchît immédiatement l’écran.
h Affiche une aide en ligne.
k Tue le processus dont on saisit ensuite le PID.
i N’affiche pas les zombies.
q Termine top.
M Affiche les processus en fonction de l’usage de la mémoire et pas de
celui du CPU.

Exemple d’écran produit par la commande top :


HJH1m 12:11pm up 31 min, 1 user, load average: 0.00, 0.00, 0.00K
26 processes: 25 sleeping, 1 running, 0 zombie, 0 stoppedK
CPU states: 0.2% user, 0.3% system, 0.0% nice, 99.3% idleK
Mem: 63200K av, 22580K used, 40620K free, 10196K shrd, 1048K buffK
Swap: 36284K av, 0K used, 36284K free 17164K
cachedK
0;10mK
7m PID USER PRI NI SIZE RSS SHARE STAT LIB %CPU %MEM TIME
COMMANDK0;10m
490 root 10 0 984 984 820 R 0 0.9 1.5 0:00 topK
1 root 0 0 476 476 408 S 0 0.0 0.7 0:04 initK
2 root 0 0 0 0 0 SW 0 0.0 0.0 0:00 kflushdK
3 root 0 0 0 0 0 SW 0 0.0 0.0 0:00 kpiodK
4 root 0 0 0 0 0 SW 0 0.0 0.0 0:00 kswapdK
5 root -20 -20 0 0 0 SW< 0 0.0 0.0 0:00 mdrecoverydK
229 root 0 0 592 592 492 S 0 0.0 0.9 0:00 syslogdK
240 root 0 0 708 708 388 S 0 0.0 1.1 0:00 klogdK
254 daemon 0 0 472 472 400 S 0 0.0 0.7 0:00 atdK
268 root 3 0 592 592 504 S 0 0.0 0.9 0:00 crondK
282 root 0 0 556 556 472 S 0 0.0 0.8 0:00 inetdK
296 root 0 0 404 404 352 S 0 0.0 0.6 0:00 lpdK
302 root 0 0 540 540 456 S 0 0.0 0.8 0:00 lpdK
311 lp 0 0 784 784 644 S 0 0.0 1.2 0:00 filterK
343 lp 0 0 744 744 628 S 0 0.0 1.1 0:00 asc-to-printK
348 lp 0 0 328 328 272 S 0 0.0 0.5 0:00 catK
360 root 0 0 424 424 364 S 0 0.0 0.6 0:00 gpmK
375 xfs 0 0 968 968 624 S 0 0.0 1.5 0:00 fsKJ6;1H25;1H

14-6 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 14 : La gestion des performances

w
La commande w affiche les processus des utilisateurs connectés.
$ w
5:59pm up 41 min, 5 users, load average: 0.02, 0.03, 0.00
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root tty1 5:18pm 10:38 0.06s 0.06s -bash
root tty2 5:18pm 20:45 0.10s 0.10s -bash
jf tty3 5:35pm 10:31 0.63s 0.03s sh
/usr/X11R6/bin/star
jf ttyp0 :0.0 5:49pm 0.00s 0.18s 0.01s w
jf ttyp1 :0.0 5:57pm 2:15 0.11s 0.02s bash

time
La commande time affiche le temps CPU consommé par un processus :
• Le temps réel écoulé entre sa création et sa mort.
• Le temps consommé pour exécuter des instructions en mode « user », les
instructions du processus, les calculs par exemple.
• Le temps consommé pour exécuter des instructions en mode « kernel », les
primitives du noyau.
La commande time de Linux affiche d’autres informations sur l’utilisation de la
mémoire.
$ time cal 12 1999
December 1999
Su Mo Tu We Th Fr Sa
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
0.01user 0.02system 0:00.03elapsed 90%CPU
(0avgtext+0avgdata 0maxresident)k
0inputs+0outputs (83major+17minor)pagefaults 0swaps
La somme de « user » et de « system » est inférieure ou égale à « elapsed ».

netstat
La commande netstat affiche des informations sur l’utilisation du réseau. Cette
commande est développée dans les manuels qui traitent de TCP/IP. La commande
netstat possède de nombreuses options, parmi lesquelles :
-a Affiche l’état des sockets.
-i Affiche l’état des interfaces configurées sur le système.
-n Affiche les numéros de port, de réseau et les adresses.
-s Affiche les statistiques sur les protocoles.
-r Affiche les tables de routage.

sar
La commande sar produit des rapports sur l’utilisation des ressources du système.
Remarque
Les commandes sar et iostat sont disponibles dans le paquetage RedHat systat-3.2.4-
3.i386.rpm.

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 14-7
Module 14 : La gestion des performances

Surveiller le système avec la commande sar


Surveiller le système par vmstat

Surveillance
Surveillancedes
desressources
ressourcesavec
avecla
lacommande
commandesar
sar

„ Surveiller l’utilisation du processeur


„ Surveiller l’activité des processus
„ Surveiller l’utilisation de la mémoire vive
„ Surveiller l’utilisation des zones de swap
„ Surveiller les entrées/sorties en mode bloc
„ Surveiller les interruptions
„ Surveiller le réseau

TSOFT - Linux Administration Module 14 : La gestion des performances - 14.4

Introduction
La commande sar produit des rapports sur l’utilisation des ressources du système. Les
options de la commande permettent de préciser les ressources à surveiller. Il existe
deux stratégies de mise en œuvre de la commande :
1. Définir sa propre politique de surveillance en intégrant les demandes
d’exécution de la commande sar dans la «crontab » de root, en redirigeant les
résultats dans des journaux de bord.
2. Utiliser le service de surveillance des processus mis en œuvre dans les scripts
sa1 et sa2, activés eux aussi par une « crontab ».Le script sa1 exécute la commande
sadc qui collecte les informations et les écrit dans le fichier journalier, au format
binaire, /var/log/sa/sa<jj>, où <jj> désigne le jour du mois (sa12 pour le douzième
jour).
Le script sa2 exécute la commande sar pour produire quotidiennement les données
dans un fichier au format texte /var/log/sa/sar<jj>.
Exemple de table « cron »
#
# activity reports every 10 minutes everyday.
*/20 8-19 * * * /usr/lib/sa/sa1 600 6 &
#
# Activity reports every an hour on Saturday and Sunday.
0 * * * 0,6 /usr/lib/sa/sa1 &
#
# Daily summary prepared at 19:05.
5 19 * * * /usr/lib/sa/sa2 -A &

L’utilisation de sa2 n’est pas une obligation et la ligne qui le concerne peut être mise
en commentaire dans la table de root et remplacée par une ligne de commande sar
personnalisée pour quelques types de ressources particulières. Dans ce cas, la

14-8 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 14 : La gestion des performances

commande sar lit directement les données dans le fichier /var/log/sa/sa<jj> et produit
les résultats sur la sortie standard.
La commande sar se trouve dans le répertoire /usr/bin. La commande sadc, les deux
scripts sa1 et sa2 et un modèle de crontab se trouvent dans le répertoire /usr/lib/sa.
Les options de la commande sar sont nombreuses. La suite du chapitre en présente
certaines. Nous renvoyons l’administrateur au manuel de référence de la commande
sar pour comprendre, si besoin est, l’en-tête des colonnes produites par la commande.

Syntaxe
sar [-A] [ -s hh :mm :ss] [ -e hh :mm :ss ] [ -i intervalle] [-o fichier | -f fichier ] [t [n]]
-A est équivalent à –abBcdghmOpqrRSuvwy.
La valeur « n » désigne le nombre de rapports et « t » l’intervalle en secondes. Par
défaut, le nombre de rapports est illimité et la commande doit être interrompue par
« CTRL C ».
L’option –o fichier permet de stocker les données dans « fichier » dans un format
binaire, pour une lecture ultérieure avec la seconde forme et l’option –f fichier.
l’option –s heure permet de dire l’heure de début et –e heure l’heure de fin de
l’examen des performances.
L’option –i précise l’intervalle.
Les principales options de sar sont les suivantes :
Option Ressource surveillée
-A Option équivalente à –bBcrRuvwWy –I SUM –I PROC –n FULL –U ALL
-u Utilisation du CPU. L’option –u est appliquée par défaut.
-b Statistiques sur les entrées-sorties du disque.
-B Informations sur la pagination.
-c Nombre de processus créés par seconde.
-I arg Statistiques sur les interruptions (« IRQ »). L’option est de la forme
« -I N°IRQ | SUM | PROC | ALL | XALL ».
-n arg Informations sur l’activité du réseau. L’option est de la forme
« -n DEV – EDEV | SOCK | FULL ».
-r Statistiques d’utilisation de la mémoire et du swap.
-R Statistiques sur l’utilisation de la mémoire, mémoire partagée, mémoire
cache, buffers…
-v Etat des tables du noyau.
-W Etat du swapping.
-x arg Etat des processus. L’option est de la forme « -x N°PID | SELF | SUM |
ALL ».
-y Activité des terminaux.

Exemples
# sar 5 3 # Le processeur
Linux 2.2.16-22 (aurore11.goubet.fr) 23.03.2001
17:13:51 CPU %user %nice %system %idle
17:13:56 all 0,20 0,00 1,60 98,20

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 14-9
Module 14 : La gestion des performances

17:14:01 all 0,20 0,00 1,60 98,20


17:14:06 all 0,40 0,00 1,40 98,20
Moyenne: all 0,26 0,00 1,53 98,21
# sar –b 5 3 # Les entrées-sorties du disque
Linux 2.2.16-22 (aurore11.goubet.fr) 23.03.2001
17:16:10 tps rtps wtps bread/s bwrtn/s
17:16:15 22,20 0,00 22,20 0,00 177,60
17:16:20 77,40 0,00 77,40 0,00 619,20
17:16:25 0,40 0,00 0,40 0,00 3,20
Moyenne: 33,33 0,00 33,33 0,00 266,66
# sar –I 9 5 3 # l’IRQ 9
Linux 2.2.16-22 (aurore11.goubet.fr) 23.03.2001
17:19:27 INTR intr/s
17:19:32 9 0,00
17:19:37 9 2,40
17:19:42 9 0,40
Moyenne: 9 0,93
# sar –x 7919 5 3 # Le processus de PID 7919
Linux 2.2.16-22 (aurore11.goubet.fr) 23.03.2001
17:27:20 PID minflt/s majflt/s %user %system nswap/s CPU
17:27:25 7919 1,20 0,00 14,00 83,60 0,00 0
17:27:30 7919 0,20 0,00 8,80 89,40 0,00 0
17:27:35 7919 0,00 0,00 4,20 93,60 0,00 0
Moyenne: 7919 0,46 0,00 9,00 88,86 0,00
# sar –n SOCK 5 3 # Les sockets
Linux 2.2.16-22 (aurore11.goubet.fr) 23.03.2001
17:16:43 totsck tcpsck hi-tcpsck udpsck hi-udpsck rawsck hi-rawsck
17:16:48 65 13 13 25 25 2 2
17:16:53 65 13 13 25 25 2 2
17:16:58 65 13 13 25 25 2 2
Moyenne: 65 13 13 25 25 2 2

Références pour la commande sar


Le manuel : sar(8), sa1(8),sa2(8),sadc(8)

14-10 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 14 : La gestion des performances

Surveiller le système avec la commande


vmstat
Surveiller le système par vmstat

Surveillance
Surveillancedes
desressources
ressourcesavec
avecla
lacommande
commandevmstat
vmstat

„ Surveiller l’utilisation du processeur


„ Surveiller l’activité des processus
„ Surveiller l’utilisation de la mémoire vive
„ Surveiller l’utilisation des zones de swap
„ Surveiller les entrées/sorties en mode bloc
„ Surveiller les interruptions

TSOFT - Linux Administration Module 14 : La gestion des performances - 14.5

Introduction
La commande vmstat permet de surveiller les principales ressources du système.
La commande vmstat affiche les informations périodiquement sur l’écran. Lorsque
l’administrateur souhaite surveiller les ressources sur une longue période, et récupérer
les résultats dans un fichier qu’il analysera ultérieurement, il convient de faire
exécuter la commande par l’intermédiaire de la commande crontab.

Syntaxe
vmstat [-n] [ délai ] [ n]]
Dans sa forme la plus simple, la commande vmstat donne des informations moyennes
calculées depuis le démarrage du système.
# vmstat
L’argument « délai » exprime l’intervalle de temps en secondes entre chaque mesure.
L’argument « n » qui peut le suivre indique le nombre de mesures à effectuer. Par
défaut, il est infini.
L’option « -n » n’a de sens que dans le cas où le nombre de mesures est illimité. Sa
présence limite l’affichage des en-têtes de colonnes au démarrage de la commande.
Elles sont sinon affichées toutes les vingt-trois mesures, pour être toujours visibles à
l’écran.
Les champs affichés par la commande vmstat sont les suivants :
Champ Description
procs Les processus
r Nombre de processus en attente du processeur.

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 14-11
Module 14 : La gestion des performances

b Nombre de processus bloqués en attente d’entrée-sortie.

w Nombre de processus en attente du processeur, swappés sur


disque. Ce nombre doit être 0. Cela traduit sinon un manque
critique de mémoire.
memory La mémoire
swpd La quantité de mémoire virtuelle utilisée (en Ko).
free La quantité de mémoire vive libre (en Ko).
buff La quantité de mémoire utilisée comme tampon (en Ko).
swap Le swap
si La quantité de mémoire lue à partir du disque (en Ko/sec).
so La quantité de mémoire swappée vers le disque (en Ko/sec).
io Les lectures et les écritures de blocs
bi Le nombre de blocs lus par seconde.
bo Le nombre de blocs écrits par seconde.
system Informations sur les processus
in Nombre d’interruptions par seconde, y compris l’horloge.
cs Nombre de commutation de processus par seconde.
cpu Le processeur
us Pourcentage de temps CPU en mode utilisateur.
sy Pourcentage de temps CPU en mode noyau.
id Pourcentage de temps CPU non utilisé.

Exemples
$ vmstat 5 10
procs memory swap io system cpu
r b w swpd free buff cache si so bi bo in cs us sy id
0 0 0 424 52448 144 3852 1 3 4 1 117 42 4 0 96
1 0 0 424 52184 144 3936 0 0 27 0 159 125 3 1 96
1 0 0 424 48020 272 7612 0 0 730 1 203 283 53 5 41
2 0 0 424 43524 336 11864 0 0 837 4 217 365 45 9 46
2 0 0 424 39644 464 15756 0 0 717 2 229 351 25 11 64
0 1 0 424 35068 528 20188 0 0 847 7 242 398 22 11 68
0 1 0 424 31640 656 23552 0 0 579 8 214 331 20 16 64
1 0 0 424 28112 784 26740 0 0 579 7 211 348 25 10 65
1 0 0 424 25484 784 29396 6 0 533 10 177 216 50 3 47
0 0 0 424 22248 912 32576 0 0 592 4 227 411 37 14 49

14-12 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 14 : La gestion des performances

La comptabilité BSD
Panorama des commandes de surveillance du système

„ La comptabilité du CPU
z accton Active/désactive la comptabilité
z sa Affiche les résultats par catégories
z lastcomm Affiche les données comptables
„ La comptabilité des connexions
z login Enregistre les connexions
z ac Affiche les temps de connexions
z last Affiche les dernières connexions
„ La comptabilité des impressions
z pac Affiche les données comptables

TSOFT - Linux Administration Module 14 : La gestion des performances - 14.6

Introduction
Sur un système BSD, on peut enregistrer l’usage du CPU, les temps de connexion et
les impressions. L’exploitation de ces données permet de mesurer l’utilisation du
système, en particulier de connaître les utilisateurs qui consomment le plus de
ressources. A l’époque de la création de ce système comptable, les données
enregistrées étaient utilisées pour émettre des factures.

La comptabilité des temps CPU


Le démon accton
Le démon accton est le responsable de l’enregistrement des données comptables liées
à l’usage du CPU. Ce démon doit être activé au démarrage du système par un fichier
RC. A la fin de l’exécution d’une commande, il enregistre l’UID, le temps CPU,
l’usage de la mémoire et les requêtes d’entrées/sorties. Ces données sont stockées dans
un fichier binaire dont le nom est donné en argument de la commande accton. Le
fichier comptable doit exister au préalable.
# touch /var/log/pacct # crée le fichier comptable
# accton /var/log/pacct # active le service
# accton # arrêt du service
La commande lastcomm
La commande lastcomm affiche le contenu du fichier comptable et l’utilisation des
ressources par commande.
# lastcomm
aumix-minimal root ?? 0.01 secs Fri Oct 12 22:19
grep root ?? 0.01 secs Fri Oct 12 22:19
halt root ?? 0.00 secs Fri Oct 12 22:19
killall5 S root ?? 0.01 secs Fri Oct 12 22:19

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 14-13
Module 14 : La gestion des performances

sleep root ?? 0.00 secs Fri Oct 12 22:18


su jf ?? 0.05 secs Fri Oct 12 21:37
minilogd F root ?? 0.00 secs Fri Oct 12 22:18
La commande sa
La commande sa est très utile, car elle fournit des totalisations par catégories. Elle
possède beaucoup d’options.
Totalisation par commande (par défaut)
# sa
1349 7407.48re 0.72cp 0avio 363k
51 2613.83re 0.07cp 0avio 368k ***other*
2 214.90re 0.06cp 0avio 303k in.telnetd
54 0.06re 0.06cp 0avio 577k ps
16 0.07re 0.06cp 0avio 333k lastcomm
13 0.08re 0.05cp 0avio 535k troff
3 0.04re 0.04cp 0avio 288k locate
63 10.92re 0.04cp 0avio 336k man
80 0.41re 0.04cp 0avio 341k ls
29 11.94re 0.03cp 0avio 332k more
127 5.15re 0.03cp 0avio 363k gunzip
9 1564.42re 0.03cp 0avio 1659k httpd*

Totalisation par utilisateur


# sa -m
1349 7407.48re 0.72cp 0avio 363k
root 1274 4195.23re 0.69cp 0avio 354k
xfs 1 173.74re 0.01cp 0avio 890k
jf 59 428.77re 0.01cp 0avio 354k
nobody 13 2261.42re 0.00cp 0avio 1209k
bin 1 174.34re 0.00cp 0avio 303k
named 1 173.99re 0.00cp 0avio 628k

La comptabilité des connexions


Le programme login enregistre chaque connexion dans un fichier binaire, le fichier
wtmp. La commande last affiche en clair les connexions. La commande ac affiche
différentes totalisations.
Exemples :
Les totaux de connexion
# ac
total 21.00
Les totaux par utilisateur
# ac -p
jf 9.39
bebe 5.76
root 5.85
total 21.01
Les totaux par jour
# ac -d
Sep 3 total 0.02

14-14 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 14 : La gestion des performances

Oct 12 total 3.57


Today total 17.42
Les dernières connexions
# last
bebe tty3 Sat Oct 13 11:36 still logged in
jf pts/0 pikachu Sat Oct 13 11:33 still logged in
root tty1 Sat Oct 13 11:32 still logged in
reboot system boot 2.2.14-5.0 Sat Oct 13 11:19 (06:06)
jf pts/1 bulbizarre Fri Oct 12 21:37 - down (00:41)
jf pts/0 bulbizarre Fri Oct 12 19:25 - down (02:52)
reboot system boot 2.2.14-5.0 Fri Oct 12 19:24 (02:54)
root tty1 Mon Sep 3 21:43 - down (00:01)
reboot system boot 2.2.14-5.0 Mon Sep 3 21:41 (00:02)

La comptabilité des impressions


Le démon lpd active les impressions. On peut lui demander d’enregistrer des données
comptables liées aux impressions. Pour ce faire, il faut renseigner le champ « af », et
lui affecter le nom du fichier comptable. La commande pac affiche les totaux par
utilisateur.

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 14-15
Module 14 : La gestion des performances

Atelier 14 : La gestion des performances


Atelier 12 : La gestion des performances

Objectif :
„ Savoir contrôler l’utilisation du CPU
et de la mémoire, surveiller et
paramétrer la pagination (« paging ») et
dimensionner l’espace d’échange
(« swapping »).
„ Paramétrer les entrées/sorties.

Durée : 15 minutes.

TSOFT - Linux Administration Module 14 : La gestion des performances - 14.5

Exercice n°1
On mesure l’activité du CPU, de la mémoire et des entrées/sorties blocs, avec la
commande vmstat. On réalise dix mesures à cinq secondes d’intervalle.

Exercice n°2
On relance la commande exécutée dans l’exercice n°1, mais après avoir exécuté les
commandes suivantes (qui réalisent beaucoup d’entrées/sorties) :
$ find / -type f -print -exec grep -i UNIX {} \ ; | wc -l &
$ find / -type f -print -exec grep -i UNIX {} \ ; | wc -l &
$ find / -type f -print -exec grep -i UNIX {} \ ; | wc -l &

Exercice n°3
On relance la commande exécutée dans l’exercice n°1, mais après avoir exécuté les
commandes suivantes (qui utilisent beaucoup de CPU) :
$ cat > calcul
BEGIN {
var = 2.5
while (1) {
var *= 3
var /= 3
}
}
CTRL-D

14-16 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 14 : La gestion des performances

$ awk -fcalcul /dev/null &


$ awk -fcalcul /dev/null &
$ awk -fcalcul /dev/null &

Exercice n°4
On relance la commande exécutée dans l’exercice n°1, mais après avoir exécuté les
commandes suivantes (qui utilisent beaucoup de mémoire) :
$ cat > memoire
BEGIN {
for(i=0; i<100000000 ; i++)
tb1[i] = i ;
}
CTRL-D
$ awk -fmemoire /dev/null &
$ awk -fmemoire /dev/null &
$ awk -fmemoire /dev/null &

Exercice n°5
On relance la commande exécutée dans l’exercice n°1, mais après avoir lancé les
commandes des exercices n°2, 3 et 4.
Remarque : il est plus simple d’utiliser un script pour lancer toutes ces commandes.

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 14-17
Module 15 : Le réseau

• TCP/IP
• Les commandes ping,
ifconfig,…
• Les services
(/etc/services)
• Commandes remote
• NFS, NIS
• Samba

15Module 15 : Le réseau
Objectifs
Après l’étude de ce chapitre, le lecteur sait les éléments fondamentaux de
l’administration de systèmes Linux dans un environnement TCP/IP. A défaut de
maîtriser la totalité du domaine, il est autonome pour réaliser les actions essentielles.

Contenu
TCP/IP, panorama des protocoles
Ajouter un système dans un réseau IP
Les services réseau
Les commandes remote
NFS (présentation), les RPC
NIS, NIS+
ftpd, le transfert de fichiers
sendmail ou le e-mail
DHCP
Apache, le serveur Web
Samba
named, le serveur DNS

Références
HOWTO : Net-HOWTO, NET3-4-HOWTO, Networking-overview HOWTO,
Config-HOWTO
Livres : Linux Network Administrator’s Guide
Linux Network Servers
Internet : http://www.linuxenrezo.org
http://www.linuxenrezo.com

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 15-1
Module 15 : Le réseau

TCP/IP, panorama des protocoles


TCP/IP, panorama des protocoles

NFS,
NFS, FTP,
FTP,Telnet,
Telnet,e-mail,
e-mail,Web,...
Web,... Processus
DNS,...
DNS,...

API Socket

UDP
UDP TCP
TCP
Pilotes
IP
IP ICMP, ARP

Pilotes
Ethernet,
Ethernet,Token
TokenRing+llc,
Ring+llc,RS232+slip/ppp,...
RS232+slip/ppp,... +
Cartes

TSOFT - Linux Administration Module 15 : Le réseau - 15.2

Le réseau TCP/IP trouve ses origines dans les travaux de recherche du « DARPA »
(« Defense Advanced Research Project Agency ») qui débutent en 1970 et débouchent
sur ARPANET.
Le « DARPA » finança l’université de Berkeley qui intégra les protocoles de base de
TCP/IP au système UNIX BSD 4.
TCP/IP se popularisa alors car il intégra des protocoles applicatifs et les primitives
qu’on appelle les « sockets ». Les « sockets » sont une interface générique de
programmation d’échanges de données entre les machines d’un réseau.
L’IAB (« Internet Activities Board ») est l’organisme qui supervise l’ensemble des
protocoles de TCP/IP.
Il supervise deux organisations :
• L’IRTF (« Internet Research Task Force ») qui est responsable des
développements de protocoles.
• L’IETF (« Internet Engineering Task Force ») qui est responsable du réseau
Internet.
L’attribution des adresses réseau est l’affaire du NIC (« Network Information
Center »), dont le correspondant français est l’INRIA.
L’ensemble des protocoles de TCP/IP sont décrits dans des documents que l’on
appelle des « RFC » (« Request For Comments »).
La couche supérieure est celle des applicatifs qui, selon les cas, utilisent la couche de
transport UDP ou TCP.
NFS (« Network File System ») est un protocole de partage de fichiers à distance (cf.
NFS).
DNS (« Domain Name System ») est un service qui associe un nom d’hôte à une
adresse IP.

15-2 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 15 : Le réseau

FTP (« File Transfer Protocol ») est un protocole de transfert de fichiers.


telnet est un protocole applicatif qui émule un terminal de type texte.
e-mail couvre la messagerie électronique.
Web désigne l’application majeure du réseau Internet. Elle permet la gestion de
données multimédias en hypertexte.

Les protocoles présentés sont ceux de la version IP.V4. L’évolution vers la version
IP.V6 qui permettra d’adresser plus de stations pour un plus grand nombre de réseaux
est rendue inéluctable par l’évolution du réseau mondial Internet. La compatibilité
avec la version 4 est assurée.

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 15-3
Module 15 : Le réseau

Ajouter un système dans un réseau IP


Ajouter un système dans un réseau IP

„ Ajouter une carte réseau


„ Ajouter les pilotes (carte, TCP/IP)
„ Configurer IP
z L’adresse IP et Netmask associés à la carte ou DHCP
z Le routage (route par défaut, autres routes, routage dynamique)
„ Configurer un service de noms
z Le fichier /etc/hosts
z Le service client-serveur DNS
(nom, domaine, adresse(s) IP de serveur(s) DNS)
„ Les commandes de diagnostic (ping …)

TSOFT - Linux Administration Module 15 : Le réseau - 15.3

Le principe
La mise en réseau d’un ordinateur dans un réseau IP obéit, pour une première partie,
aux règles d’installation d’un périphérique dans le système Linux.
Il est ensuite nécessaire de paramétrer l’interface réseau nouvellement installée.
Pour cela, plusieurs opérations sont nécessaires :
• Définir l’adresse IP de l’ordinateur hôte, ainsi que le « netmask » associé.
L’adresse IP est une adresse définie sur 32 bits et qui se représente par quatre
nombres séparés par le symbole « . » : n1.n2.n3.n4.

L’adresse IP de 32 bits est constituée de deux parties qui définissent


respectivement l’adresse réseau et l’adresse de l’hôte dans le réseau.

Il existe quatre classes de réseaux : A, B, C et D.


Les trois premières sont effectives au niveau qui nous intéresse :
1) La classe « A » des grands réseaux contient au plus 127 réseaux d’au plus
16 777 214 hôtes. Elle est reconnaissable par la valeur « n1 » de l’adresse IP
comprise entre 1 et 126.
2) La classe « B » des réseaux intermédiaires contient au plus 16 382 réseaux
d’au plus 65 534 hôtes. Elle est reconnaissable par la valeur « n1 » de
l’adresse IP comprise entre 128 et 191.
3) La classe « C » des petits réseaux contient au plus 2 097 150 réseaux d’au
plus 254 hôtes. Elle est reconnaissable par la valeur « n1 » de l’adresse IP
comprise entre 192 et 223.
Pour faciliter la localisation d’un hôte dans le réseau par les routeurs, une partie de
l’adresse de l’hôte peut servir à désigner un sous-réseau. Le « netmask » définit le
masque binaire qui permet de séparer immédiatement l’adresse du réseau et du

15-4 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 15 : Le réseau

sous-réseau de l’adresse de l’hôte dans l’adresse IP globale. Il existe des


« netmask » prédéfinis pour les trois classes de réseaux :
Classe A 255.0.0.0
Classe B 255.255.0.0
Classe C 255.255.255.0
Remarque
Pour communiquer directement, des hôtes doivent appartenir à un même réseau ou
sous-réseau.

Le service « DHCP » (« Dynamic Host Control Protocol ») est une alternative à


l’attribution d’une adresse statique IP. Ce service est bâti sur le modèle client-
serveur. Le serveur attribue une adresse IP et d’autres attributs au client quand il se
branche sur le réseau.
• Configuration du service des noms
Il est préférable de configurer ensuite le service des noms. Cela consiste à associer
un nom d’hôte à une adresse IP pour faciliter l’identification de l’hôte.
Il existe là aussi une approche statique. Elle consiste à mémoriser les associations
de nom et d’adresse d’hôte dans le fichier /etc/hosts. Le service « DNS » permet
de réaliser une association dynamique. Le client, qui connaît le nom de l’hôte,
demande à un serveur de lui communiquer son adresse IP. C’est la solution
retenue dans l’architecture hiérarchique de noms utilisée dans le réseau mondial
Internet (nom.org, nom.com, nom.pays). Le paramétrage de « DNS » nécessite de
fixer le nom d’hôte et le nom de domaine ainsi que l’adresse IP d’un serveur
« DNS ».
• Tester l’accessibilité de l’hôte avec la commande ping. En effet, avant d’essayer
les protocoles applicatifs telnet ou ftp, il convient de s’assurer que l’hôte parvient
à communiquer avec des hôtes distants du même réseau.

La configuration pour un réseau TCP/IP d’un système Linux


La configuration pour un réseau TCP/IP d’un poste Linux est réalisée par la
commande d’administration du réseau linuxconf, qui met à jour les fichiers de
démarrage, notamment /etc/rc.d/rc2.d/S10network. La commande linuxconf, qui
procède par menu, existe en mode texte, aussi bien qu’en mode graphique. Les
commandes d’administration du réseau sont accessibles dans l’arborescence
[Configuration] [réseau].
• Configuration de base
Le choix initial du service « DHCP » ou de l’affectation d’une adresse IP et du
« netmask » est atteint par les commandes [Tâches clientes][Configuration de
base de la machine]. Ce menu permet également de fixer le nom du système.
• La configuration du routage
Le choix de la passerelle par défaut est réalisé par la commande [Routage et
passerelle][Par défaut]
• La configuration du service des noms
- Le choix du (des) service(s) de noms supportés (le fichier /etc/hosts et les
services NIS et DNS) et l’ordre de recherche sont réalisés par la commande
[Tâches clientes] [Chemin de recherche pour le nom de machine].
- Le choix du nom de la machine est réalisé dans la configuration de base.
- L’utilisation de DNS, le domaine par défaut et la liste des serveurs DNS sont
réalisés par la commande [Résolution des noms (DNS)].

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 15-5
Module 15 : Le réseau

Les commandes de diagnostic


• Connaître la configuration IP, l’usage de DHCP, l’adresse IP, le « netmask », pour
chaque carte réseau.
# ifconfig
eth0 Link encap:Ethernet HWaddr 00:10:4B:2A:06:97
inet addr:192.0.0.100 Bcast:192.0.0.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:173 errors:0 dropped:0 overruns:0 frame:0
TX packets:105 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:100
Interrupt:11 Base address:0xfc80
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
UP LOOPBACK RUNNING MTU:3924 Metric:1
RX packets:48 errors:0 dropped:0 overruns:0 frame:0
TX packets:48 errors:0 dro
• Connaître la configuration DNS.
# hostname # affiche le nom de l’hôte
Venus
# uname –n # la même chose
# more /etc/resolv.conf
search mars
nameserver 192.0.0.1
• Visualiser l’ordre de recherche des services de noms.
# more /etc/nsswitch.conf
• Afficher les tables de routage.
# netstat – nr
La destination 0.0.0.0 indique la présence d’une route, par défaut, pour sortir du
réseau.
• Afficher des statistiques réseaux.
# netstat –i
• Visualiser les tables ARP qui donnent la correspondance entre les adresses IP et
les adresses des cartes.
# arp –a
win98.pluton (192.0.0.101) at 00:60:08:2C:CB:4A [ether] on eth0
• Tester le serveur DNS.
# nslookup venus
• Tester l’accessibilité d’une machine grâce à la commande ping.

# ping localhost # pour tester l’installation locale, en boucle.


# ping mars # pour tester l’hôte lui-même.
# ping venus # pour tester l’hôte distant venus.

# ping 192.3.8.7 # pour tester l’accessibilité sans utiliser DNS.

15-6 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 15 : Le réseau

Les services réseaux


Les services réseaux
/etc/services /etc/inetd.conf

Client Serveurs

ftp
ftp inetd
inetd in.ftpd
in.ftpd In.talkd
In.talkd
3245 21 517
Socket associée
au port 3245

TCP/IP
TCP/IP TCP/IP
TCP/IP
Dialogue réseau

TSOFT - Linux Administration Module 15 : Le réseau - 15.4

Les services réseaux fonctionnent selon le modèle client-serveur.

Le service inetd
Le démon principal du réseau, inetd, est configuré via les fichiers /etc/services et
/etc/inetd.conf.

Dans le fichier /etc/services, un service est associé à un numéro de port. Les requêtes
destinées à un serveur sont identifiées par le numéro de port. Le fichier associe un
nom à un numéro de port.
Le fichier /etc/inetd.conf
Dans le fichier /etc/inetd.conf, une application serveur est associée à un nom de port. Il
y est précisé l’identité (« UID ») sous laquelle elle sera exécutée. Le paramètre
« nowait » indique qu’il y aura un serveur par client, c’est le cas de in.telnetd, et le
paramètre « wait », qu’il y aura un seul serveur pour l’ensemble des clients. C’est le
cas de in.talkd, le serveur qui permet le dialogue avec la commande talk.
Le tableau qui suit mentionne quelques ports associés à des services définis dans
/etc/services :
Port Service
21 ftp
23 telnet
53 domain (DNS)
80 http

Quand un client émet une demande de connexion, FTP par exemple, la requête est
émise via une socket attachée à un port local d’un numéro supérieur à 1023, alloué
dynamiquement pour la session. La requête de connexion, reçue, sur le serveur distant,

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 15-7
Module 15 : Le réseau

par le démon inetd, contient le numéro du port du service demandé, ici 21. Le démon
inetd exécute alors un démon serveur in.ftpd dédié à cette connexion et dont la durée
de vie est celle de la session FTP.
Une application serveur, comme httpd (le serveur Web Apache), n’est normalement
pas exécutée par inetd, mais directement via les scripts de démarrage rc.
Extrait du fichier /etc/inetd.conf
# These are standard services.
#
ftp stream tcp nowait root /usr/sbin/tcpd in.ftpd -l –a
telnet stream tcp nowait root /usr/sbin/tcpd in.telnetd
#
Remarques
La modification du fichier /etc/inetd.conf consiste le plus souvent à insérer ou
supprimer le caractère # au début d’une ligne pour activer ou désactiver un service.

Après avoir modifié le fichier /etc/inetd.conf, il faut envoyer le signal 1 (SIGHUP) au


démon inetd, afin qu’il prenne en compte les modifications.

Exemple :
# vi /etc/inetd.conf
# ps -e | grep inetd
590 ? 00:00:00 inetd
# kill -1 590 # Ou kill -HUP 590
Extrait du fichier /etc/services
# Updated from RFC 1700, ``Assigned Numbers'' (October 1994). Not all ports
# are included, only the more common ones.
tcpmux 1/tcp # TCP port service multiplexer
echo 7/tcp
echo 7/udp
discard 9/tcp sink null
discard 9/udp sink null
systat 11/tcp users
daytime 13/tcp
daytime 13/udp
netstat 15/tcp
qotd 17/tcp quote
msp 18/tcp # message send protocol
msp 18/udp # message send protocol
chargen 19/tcp ttytst source
chargen 19/udp ttytst source
ftp-data 20/tcp
ftp 21/tcp
fsp 21/udp fspd
ssh 22/tcp # SSH Remote Login Protocol
sh 22/udp # SSH Remote Login Protocol
telnet 23/tcp
La commande netstat permet de visualiser les connexions actives, les adresses IP et
les numéros de port (cf. Module 14 : La gestion des performances).

15-8 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 15 : Le réseau

Le « wrapper » tcpd
Un « wrapper » offre une couche de protection. Il contrôle l’accès à des services
réseaux grâce à des fichiers contenant des listes de contrôle d’accès (« ACL »).
Lors de l’installation de Linux, la plupart des services réseaux activés à travers le
fichier inetd.conf, le sont via tcpd.
Extrait de inetd.conf :
ftp stream tcp nowait root /usr/sbin/tcpd in.ftpd –l –a
Chaque fois qu’une requête est adressée au service FTP, le démon principal du réseau,
inetd, active tcpd plutôt que in.ftpd directement.
tcpd met à jour un journal de bord (« log ») et vérifie que le client est autorisé à
utiliser le service. Dans l’affirmative, tcpd exécute le serveur demandé, in.ftpd dans
l’exemple.
Les listes de contrôle d’accès sont conservées dans les fichiers :
/etc/hosts.allow et
/etc/hosts.deny
Le format de ces fichiers est décrit dans le manuel hosts_access(5). Si les fichiers
n’existent pas ou sont vides, il n’y a pas de contrôle d’accès.
Dans le cas contraire, l’administrateur du système Linux utilise le fichier hosts.allow
ou hosts.deny pour indiquer les clients qui sont autorisés ou interdits de service.
Le contrôle d’accès est global, pour l’ensemble des services, ou peut être décidé
service par service, pour chaque ordinateur hôte ou pour un domaine.
La structure d’une ligne de l’un des deux fichiers ACL est :
liste_de_démon : liste_de_client [ : commande ]
Les listes sont composées des identificateurs de démons ou de clients, séparés par des
virgules ou des espaces.
Les noms des hôtes ou des clients peuvent être des mots clés pour désigner un
ensemble prédéfini.
Extrait du fichier /etc/hosts.allow :
in.ftpd : LOCAL, .societe.com
Tous les clients dont le nom ne comporte pas de point (LOCAL) et les clients du
domaine societe.com ont le droit d’utiliser le service FTP de l’hôte.

xinetd
Le logiciel xinetd est destiné à remplacer inetd. Il apporte de nouvelles possibilités de
configuration et un paramétrage plus fin des informations enregistrées dans les
journaux de bord. Il est toujours possible de continuer d’utiliser inetd. Il faut choisir
d’exécuter l’un ou l’autre, au démarrage, via les scripts inetd ou xinetd du répertoire
/etc/rc.d/init.d (cf. Module 7 : L’arrêt et le démarrage).
Le programme xinetd est configuré par le fichier /etc/xinetd.conf, dont voici un
exemple :
# xinetd.conf
defaults
{
instances = 60
log_type = SYSLOG authpriv

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 15-9
Module 15 : Le réseau

log_on_succes = HOST PID


log_on_failure = HOST RECORD
}
includedir /etc/xinetd.d
Ce fichier ne contient pas directement la description des services, mais précise le
répertoire, ici /etc/xinetd.d, qui les contient. Dans ce répertoire, chaque service est
décrit par un fichier. Voici l’exemple d’un de ces fichiers :
# imap
service imap
{ socket_type = stream
wait = no
user = root
server = /usr/sbin/imapd
log_on_success += DURATION USERID
log_on_failure += DURATION USERID
disable = yes
}

Dans le fichier associé à un service, on retrouve les informations présentes dans une
ligne du fichier /etc/inetd.conf, mais sous une forme différente.
Voici les principaux paramètres :
id Identifie le service.
socket_type Indique la nature de la socket : stream pour une application TCP,
dgram pour une application UDP.
protocol Indique le protocole : tcp ou udp.
port Indique le numéro de port. A défaut, c’est le numéro associé
au nom du service dans le fichier /etc/services.
wait Si ce paramètre a la valeur no, xinetd active un serveur par client.
S’il a la valeur yes, xinetd n’active qu’un seul serveur pour
l’ensemble des clients.
user Indique le compte sous lequel s’exécute l’application serveur.
server Indique le chemin d’accès de l’application serveur.
server_args Précise les arguments transmis au serveur.
disable Si ce paramètre a la valeur yes, le service est désactivé.
Remarque
Le programme itox (ou inetd2xinetd) permet de convertir un fichier /etc/inetd.conf en
son équivalent au format xinetd. Le résultat de la conversion est envoyé sur la sortie
standard et doit donc être redirigé.
Références
Les fichiers du répertoire /etc/xinetd.d fournissent les exemples clés pour utiliser
correctement ce service.
Le manuel : xinetd(8), xinetd.conf(5) et xinetd.log(5).

15-10 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 15 : Le réseau

Les commandes remote


Les commandes «remotes»

„ Les commandes
z rcp Copie de fichiers distants
z rsh Exécution à distance de commandes
z rlogin Connexion à distance
z rwho Liste des utilisateurs connectés au réseau
„ Les fichiers
z /etc/hosts.equiv Les systèmes équivalents

TSOFT - Linux Administration Module 15 : Le réseau - 15.5

Les commandes remote, d’origine BSD, sont destinées à faire exécuter une action sur
une machine distante, via une seule ligne de commande, sans avoir à activer un service
spécifique tel que telnet ou ftp. Les commandes remote peuvent éviter de
s’authentifier explicitement lors de leur exécution.
Ces commandes sont pratiques à mettre en œuvre au cours d’une session ou dans un
script.
Elles sont a priori spécifiques des systèmes UNIX, même si certaines implémentations
ont été développées pour d’autres systèmes d’exploitation.
Pour l’ensemble des commandes remote et les exemples associés, nous supposons que
l’utilisateur s’appelle pierre, qu’il est connecté sur la machine venus et que la machine
distante est mars.

rcp
La commande rcp réalise des copies de fichiers entre ordinateurs. C’est une
alternative à la commande ftp.
Copie sur mars
venus $ rcp fichier mars:fichier.copie
Copie de fichier depuis mars
venus $ rcp mars:fichier .
Remarque
L’option « –r » de la commande cp est valable dans rcp.

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 15-11
Module 15 : Le réseau

rlogin
La commande rlogin permet de se connecter à une machine distante. C’est une
alternative à telnet. Le service rlogin nécessite le démon serveur in.rlogind qui écoute
sur le port tcp 513.
venus $ rlogin mars
mars $ comande
mars $ exit
venus $

rsh
La commande rsh permet d’exécuter une commande sur une machine distante. Le
service shell nécessite le démon serveur in.rshd qui écoute sur le port 514.
venus $ rsh mars rm fichier

rwho
La commande rwho donne la liste des utilisateurs connectés au réseau.

Equivalence de machines
Pour que les commandes remote s’exécutent sans que l’utilisateur ait à fournir un
mot de passe, il faut que la machine distante, dans notre cas venus, déclare l’utilisateur
pierre de la machine mars équivalent à l’utilisateur pierre de la machine venus. Le
fichier /etc/hosts.equiv permet de définir les équivalences entre utilisateurs.
Le fichier /etc/hosts.equiv n’autorise pas les accès « root » qui nécessite le fichier
/root/.rhosts, d’un format identique, si /root est le répertoire de connexion de
l’utilisateur.
Ce fichier contient des lignes de commentaire ou de définition d’équivalences. La
syntaxe d’une équivalence est :
Hôte
Exemple
mars Tous les utilisateurs qui ont un compte de même
venus nom sur mars et venus sont équivalents.

Remarques
Les commandes remote n’offrent aucune sécurité, sauf si le système « kerberos » est
installé. Dans ce cas, et sauf utilisation explicite de l’option « –K », les commandes
remote utilisent le système d’authentification kerberos. Grâce à l’utilisation de
l’option « –x », les échanges sont cryptés.
A défaut du système Kerberos qui est lourd et complexe, on peut utiliser les
commandes du service SSH, décrites dans le module « La sécurité ».

Distribution de fichiers, la commande rdist.


La commande rdist permet de maintenir des copies identiques d’un fichier ou d’une
arborescence sur plusieurs systèmes. La commande rdist utilise par défaut la
commande rsh et la logique d’authentification des commandes remote.

15-12 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 15 : Le réseau

Quand la commande rdist est utilisée sans option, elle exécute les actions définies
dans le fichier distfile du répertoire courant. Elle utilise la commande rsh. Voici
quelques options :
-f fic Spécifie le nom du fichier de commande, par défaut distfile ou Distfile.
-n Affiche les commandes sans les exécuter.
-P cmd Indique le protocole utilisé pour exécuter les commandes à distance, par
défaut rsh. Pour utiliser ssh, il faut en donner le chemin d’accès, par
exemple : rdist –P /usr/local/bin/ssh.
-D Indique le mode debug.
-l options Paramètre la mise à jour du journal de bord local. Les options sont de la
forme facilité=type:… Les types indiquent le niveau des messages :
change, info, notice, noerror, ferror, warning, debug, all.
Exemple : -l stdout=all:syslog=change,notice:file=/tmp/rdist.log=all.
-L options Paramètre la mise à jour du journal de bord distant.
Le fichier distfile
Le fichier distfile contient les opérations que la commande rdist doit exécuter.
Le début du fichier peut définir des variables, référencées ultérieurement par
$nom_de_la_variable. Le fichier permet de réaliser des mises à jour très sophistiquées
(cf. rdist(1)). Cette commande est couramment utilisée pour avoir des fichiers
identiques sur plusieurs machines :
( fichier … ) -> [utilisateur@]ordinateur …
install ;
Exemple
Alice possède des fichiers sur l’ordinateur venus, elle veut les mettre à jour sur
l’ordinateur mars. Son accès à mars est autorisé par le fichier /etc/hosts.equiv ou par le
fichier ~alice/.rhosts.
venus$ cal > un_fic
venus$ mkdir rep
venus$ cp /etc/passwd /etc/group rep
venus$ cat distfile
HOSTS = ( mars )
FILES = ( /home/alice/rep /home/alice/un_fic )
${FILES} -> ${HOSTS}
install ;
venus$ rdist
mars: updating host mars
mars: /home/alice/rep: installing
mars: /home/alice/rep: mkdir
mars: /home/alice/rep/passwd: installing
mars: /home/alice/rep/group: installing
mars: /home/alice/un_fic: installing
mars: updating of mars finished
venus$ echo "++++++++++" >> un_fic
venus$ rdist
mars: updating host mars
mars: /home/alice/un_fic: updating
mars: updating of mars finished

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 15-13
Module 15 : Le réseau

NFS (présentation), les RPC


NFS, RPC

/ /

usr home home usr

venus
venus mars
mars
RPC

venus# mount mars:/home /home


venus$ cd /home

TSOFT - Linux Administration Module 15 : Le réseau - 15.6

Les RPC (« Remote Procedure Call »)


Les RPC constituent une API, à l’origine développée par la société SUN, maintenant
mise dans le domaine public, pour l’écriture d’applications en mode client-serveur.
Les RPC constituent une couche de plus haut niveau que les sockets, sur lesquelles
elles s’appuient. Le principe consiste à faire exécuter une procédure distante avec
échange de données et renvoi de résultats. C’est l’approche procédurale classique,
mais exécutée sur des machines distantes.
Les données échangées par le client et le serveur sont représentées dans un format
indépendant des applications, le format « XDR » (« eXternal Data Representation »).
Les sociétés qui développent des logiciels doivent réaliser un adaptateur pour
convertir les données du format interne au format « XDR ».
Les procédures qui participent à un même service sont regroupées dans un programme
« RPC ». Procédures et programme sont identifiés par un nombre entier. Un
programme « RPC » possède aussi un numéro de version. Il faut que le programme
« RPC » utilisé par un serveur soit d’une version supérieure ou égale à celle du
programme du client. L’appel d’une procédure, chose par ailleurs transparente à
l’administrateur, consiste à transmettre le numéro du programme, la version, le
numéro de la procédure et les paramètres au format « XDR ». Le fichier /etc/rpc
établit une correspondance entre numéro de programme RPC et nom symbolique de
l’application. Ainsi, l’application NFS porte le numéro de programme 100003.
Les RPC fonctionnent sur TCP/IP. Mais il faut faire le lien entre le numéro de
programme et celui du port udp ou tcp associé. Le démon portmap joue ce rôle.
Lorsque un serveur RPC démarre, il s’enregistre sur le « portmapper » local qui
mémorise le port udp ou tcp et le numéro de programme. Quand un client veut
communiquer avec un serveur RPC, il demande d’abord au « portmapper » distant le
port de l’application en lui fournissant le numéro de programme en paramètre. Le
« portmapper » est à l’écoute des ports 111 udp et tcp.

15-14 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 15 : Le réseau

La commande rpcinfo permet principalement de dialoguer avec un « portmapper » et


de visualiser ses tables. Elle permet de connaître les services RPC actifs sur une
machine.
# rpcinfo –p
program no_version protocole no_port
100000 2 tcp 111 portmapper
100000 2 udp 111 portmapper
...
100011 2 tcp 807 rquotad
...
100005 3 tcp 1026 mountd
...
100003 3 udp 2049 nfs
...
# cat /etc/rpc
#ident "@(#)rpc 1.11 95/07/14 SMI" /* SVr4.0 1.2 */
#
portmapper 100000 portmap sunrpc rpcbind
rstatd 100001 rstat rup perfmeter rstat_svc
nfs 100003 nfsprog
ypserv 100004 ypprog
mountd 100005 mount showmount
ypbind 100007
...

Configuration d’un serveur NFS


NFS est un service qui permet le partage de fichiers à distance. Nous renvoyons
l’administrateur à un manuel traitant de TCP/IP et de NFS pour connaître toutes les
subtilités du service. Les explications qui suivent permettent cependant de mettre en
œuvre des partages.
Le serveur doit dire quels sont les répertoires qu’il partage et les clients autorisés à
monter les arbres partagés.
1. Les démons
Pour activer un serveur NFS, il faut exécuter plusieurs démons au démarrage du
système. Quand on installe NFS serveur, les scripts de démarrage des démons sont
associés au niveau 3 de fonctionnement du processus init.
portmap Le démon portmap permet d’adresser un service RPC.
rpc.mountd Le démon rpc.mountd réalise le montage demandé par un
client.
rpc.nfsd Le démon nfsd exécute les requêtes NFS.

2. Le fichier /etc/exports
Le fichier /etc/exports indique les arborescences du serveur qui peuvent montées à
distance et par quel client. Son format est le suivant :
Répertoire client(droits)…
/export/games venus(rw) saturne(rw)
/doc (ro)

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 15-15
Module 15 : Le réseau

L’arborescence /export/games est accessible par les clients venus et saturne en lecture
et en écriture. L’arborescence /doc est accessible à tout le monde, mais en lecture
seulement.
Pour prévenir les démons mountd et nfsd de la modification du fichier /etc/exports, il
faut arrêter et redémarrer les services.
# /etc/rc.d/init.d/nfs stop
# /etc/rc.d/init.d/nfs start

Configuration d’un client nfs


Le montage sur le client d’un répertoire distant du serveur se fait grâce à la commande
mount. Un répertoire partagé est vu, sur le client, comme un système de fichiers de
type nfs. Son montage peut être automatisé dans le fichier /etc/fstab. La syntaxe
diffère simplement dans l’indication du disque à monter qui est remplacé par le nom
du serveur et du répertoire à monter sous la forme : serveur:répertoire.
Exemples de montage
Tous les paramètres du montage sont fournies à la commande mount.
venus # mount –t nfs –o rsize=1024,wsize=1024 mars:/export/games /games
On ajoute une ligne au fichier /etc/fstab, qui contient les systèmes de fichiers à monter
au démarrage du système Linux.
mars:/export/games /games nfs rsize=1024,wsize=1024 0 0
et on exécute la commande # mount /games pour réaliser immédiatement le montage
sans devoir arrêter et redémarrer le système.
Remarque
Les options « rsize » et « wsize » précisent les tailles des blocs lus et écrits par NFS.
Les valeurs par défaut sont de 4096 et 8192 octets. Elles peuvent être inadéquates pour
certaines cartes réseaux. Nous invitons le lecteur à consulter le manuel de la
commande mount pour connaître les autres options de NFS.

Tester le service nfs


Plusieurs commandes permettent de tester efficacement le service nfs :
rpcinfo Afficher les services RPC offerts par le serveur.
showmount Afficher les clients NFS d’un serveur ou les ressources exportées
d’un serveur.
nfsstat Afficher des statistiques concernant les RPC et NFS.
Remarque
Le fichier /var/log/messages reçoit les messages provenant des serveurs nfs et mountd.

Syntaxe et options essentielles de ces commandes


Résumé de la syntaxe de la commande rpcinfo :
# rpcinfo
Afficher la liste des services RPC Version 2 d’un serveur. Un serveur NFS doit
supporter les services mountd et nfs. Linux supporte essentiellement la Version 2 des
applications RPC en mode UDP. A défaut de nommer le serveur, la commande liste
les services RPC locaux.
# rpcinfo -p venus

15-16 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 15 : Le réseau

Liste des serveurs supportant une application RPC Version 2 particulière. La liste est
obtenue grâce à un « broadcast » UDP. On peut utiliser le nom de l’application ou son
numéro (cf. Le fichier /etc/rpc).
# rpcinfo -b nfs 2
# rpcinfo -b 100003 2
Liste des clients NFS locaux.
# showmount
Liste des clients d’un serveur NFS distant.
# showmount venus
Liste des ressources d’un serveur NFS distant, montées par des clients .
# showmount -d venus
Liste des ressources montées et des clients d’un serveur NFS.
# showmount -a venus
Liste des ressources exportées par un serveur NFS.
# showmount -e venus

Références du service NFS


Le manuel : rpc.nfsd(8), rpc.mountd(8), nfs(5), exports(5), nfsstat(8), showmount(8).
Le HOWTO « NFS-HOWTO ».
Le livre Managing NFS and NIS.

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 15-17
Module 15 : Le réseau

NIS
NIS

Domaine
DomaineNIS
NIS

Serveur NIS Mise à jour automatique


esclave

«MAPS»

Serveur NIS
maître

Client NIS

TSOFT - Linux Administration Module 15 : Le réseau - 15.7

Introduction
NIS (« Network Information Service ») est un service réseau qui permet
l’administration centralisée de bases de données de configuration. Grâce à NIS, on
peut gérer, entre autres, les comptes des utilisateurs et des groupes d’utilisateurs de
plusieurs systèmes UNIX à partir d’un seul poste.
Les bases de données gérées par NIS s’appellent des « NIS maps ». Si on installe NIS,
les maps sont utilisées en complément des fichiers /etc/passwd et /etc/group. Outre les
fichiers d’administration, n’importe quel fichier structuré en champs peut être géré par
NIS. Les fichiers d’administration liés au réseau (/etc/hosts, /etc/services, ...) sont
avantageusement gérés à travers des maps. NIS offre donc une alternative à DNS.
NIS est un service réseau fonctionnant en client-serveur organisé en domaines. Un
client NIS demande à un serveur NIS un champ d’une base de données en fournissant
une clé, par exemple le nom d’un utilisateur, pour obtenir son mot de passe codé. Un
serveur du domaine lui répond.
Les maps sont distribuées sur les différents serveurs d’un domaine NIS. Il n’y a qu’un
seul serveur maître par domaine, il est le garant de l’unicité des informations. Les
autres serveurs, appelés serveurs esclaves, ne contiennent qu’une copie des données.
Les applications NIS reposent sur des bibliothèques RPC, et en conséquence peuvent
être utilisées en mode sécurisé. Dans ce mode, les transactions réseaux sont cryptées
et authentifiées.
L’utilisation de NIS est quasi indispensable si l’on gère un parc important de systèmes
UNIX utilisant NFS. L’authentification sur laquelle repose NFS est basée sur les UID
et GID. Si l’on veut qu’un utilisateur possède les mêmes droits sur un ensemble de
systèmes UNIX et Linux, il doit être créé avec les mêmes UID et GID sur chacune des
machines. NIS résout le problème en ne créant l’utilisateur qu’une seule fois sur le
serveur maître, les autres systèmes appartenant au même domaine accèdent à ce
compte unique.

15-18 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 15 : Le réseau

NIS a été créé par la société Sun sous le nom, à l’origine, de « Yellow Pages ». De
même que pour ses produits RPC et NFS, Sun a mis dans le domaine public la
description des protocoles sur lesquels repose NIS et licencie à faible prix sa
technologie. Le service NIS est disponible sur tous les systèmes Linux. NIS permet
donc d’administrer de manière centralisée un parc hétérogène de systèmes Linux.

Les maps
L’arborescence d’un serveur NIS est située dans le répertoire /var/yp et les maps dans
le répertoire /var/yp/nom_domaine, où nom_domaine désigne le nom du domaine NIS,
défini par l’administrateur. Les maps sont construites à partir de fichiers
d’administration de Linux. Le format d’une map, appelé DBM, est un format binaire,
implémenté à l’origine dans le système UNIX BSD. Les maps sont des tables indexées
sur une clé (nom, UID, adresse IP…). Cette organisation interne permet une recherche
de type « hachage », plus rapide qu’une recherche séquentielle dans un fichier texte.
Un fichier ASCII peut engendrer plusieurs fichiers, selon le nombre de clés de
recherche. Le tableau qui suit indique quelques noms de maps.
Fichier ASCII maps NIS Clé de recherche
/etc/passwd passwd.byname Le nom d’utilisateur
passwd.byuid L’UID de l’utilisateur
/etc/group group.byname Le nom du groupe
group.bygid Le GID du groupe
/etc/hosts hosts.byname Le nom d’hôte
hosts.byaddr L’adresse IP de l’hôte
Une map contient aussi des clés d’identification propres. Ces clés sont
automatiquement valorisées lors de la création d’une map :
Clé Valeur
YP_MASTER_NAME Le nom d’hôte du serveur maître
YP_INPUT_NAME Le chemin et le nom du fichier texte qui a produit la map
YP_OUTPUT_NAME Le chemin et le nom du fichier map lui-même
YP_LAST_MODIFIED La date et l’heure de dernière modification de la map
Les maps du serveur maître et des serveurs esclaves sont créées en même temps que
les serveurs, par la commande ypinit. La commande make permet de reconstruire une
(des) map(s) du serveur maître (cf. Configuration du serveur maître) et les
commandes yppush et ypxfr de recopier une map du serveur maître vers un serveur
esclave (cf. Configuration d’un serveur esclave).
Exemples
# cd /var/yp
# make # reconstruit toutes les maps dont l’image texte est plus récente
# make passwd # reconstruit, si nécessaire, la map passwd

Configuration d’un client NIS


La configuraion de base d’un client NIS est élémentaire. Il faut avoir installé les
paquetages yp-tools et ypbind. La commande rpm permet de vérifier leur présence et,
à défaut, de les installer (cf. Module 13 : Les paquetages).

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 15-19
Module 15 : Le réseau

Définition du nom de domaine NIS


Il faut définir le nom du domaine NIS auquel le client appartient. La commande
domainame permet de définir ce nom. La commande domainname doit être exécutée
à chaque démarrage du système (cf. Module 7 : L’arrêt et le démarrage).
# domainname univers # Crée le domaine NIS de nom univers
# domainname # Affiche le nom de domaine
univers
Démarrage du client NIS
La configuration de base d’un client NIS est simple à réaliser. C’est la commande
ypbind qui démarre ou arrête le client NIS. Pour démarrer le client, il faut exécuter la
commande suivante :
#/etc/rc.d/init.d/ypbind start # Démarrage du client
Pour l’arrêter, on exécute symétriquement :
#/etc/rc.d/init.d/ypbind stop # Arrêt du client
Ces commandes peuvent être automatisées au démarrage et à l’arrêt du système (cf
Module 7 : L’arrêt et le démarrage).
Si nous supposons que les comptes utilisateurs (/etc/passwd), les groupes (/etc/group)
et les hôtes (/etc/hosts) sont gérés en NIS, la connexion d’un utilisateur dont le compte
ne figure pas dans le fichier /etc/passwd entraînera une demande du client à l’un des
serveurs du domaine, en vue de l’authentifier.
L’ordre de recherche des informations
Il est possible qu’une information soit définie localement et dans une map du serveur.
C’est alors le fichier /etc/nsswitch.conf qui fixe l’ordre de recherche. Il est
principalement utilisé pour la résolution d’un nom d’hôte. Dans sa version initiale,
l’ordre de recherche est : le fichier /etc/hosts, puis le service NIS et enfin le service
DNS.
Extrait du fichier /etc/nsswitch.conf :
passwd: files nisplus nis
shadow: files nisplus nis
group: files nisplus nis
hosts: files nisplus nis dns

Configuration du serveur maître


Les paquetages du service NIS
Pour créer un serveur NIS, il est nécessaire d’installer les paquetages suivants
yp-tools, ypserv et ypbind, pour qu’il puisse être aussi client. La commande rpm
permet de vérifier leur présence et, à défaut, de les installer (cf. Module 13 : Les
paquetages).
Définition du nom de domaine NIS
Il faut définir un nom de domaine NIS. Un domaine NIS est distinct d’un domaine
DNS, même si les deux domaines rassemblent les mêmes hôtes. La commande
domainame permet de définir ce nom. La commande domainname doit être exécutée
à chaque démarrage du système (cf. Module 7 : L’arrêt et le démarrage).
# domainname univers # Crée le domaine NIS de nom univers
# domainname # Affiche le nom de domaine univers

15-20 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 15 : Le réseau

Création des maps NIS


Pour réaliser cette opération, il faut se placer dans le répertoire /var/yp, racine du
service NIS. On édite le fichier Makefile pour modifier des options et indiquer les
fichiers ASCII qui doivent être gérés en NIS. On lance ensuite la commande make qui
exécute le fichier /var/yp/Makefile.
Les principales options modifiables sont :
NOPUSH=true Les maps du serveur maître ne sont pas propagées vers les
serveurs esclaves à l’issue de la création des maps.
MINUID=500 Les utilisateurs gérés en NIS sont ceux dont l’UID est supérieur
ou égal à 500.
MINGID=500 Les groupes gérés en NIS sont ceux dont le GID est supérieur ou
égal à 500.
MERGE_PASSWD=true
Les mots de passe NIS sont dans la map passwd. Il n’y a pas de
création de map shadow. Si l’option a la valeur false, les mots de
passe NIS sont stockés dans la map shadow.
MERGE_GROUP=true La même chose, mais pour les groupes.
Il faut définir les fichiers à gérer en NIS. Le choix de ces fichiers se fait en modifiant
la cible du fichier Makefile.
all: passwd group hosts rpc services netid protocols netgrp mail \
# shadow publickey networks ethers bootparams printcap \
# amd.home auto.master auto.home passwd.adjunct
Il faut, dans ces lignes, insérer le caractère « # » juste après le dernier fichier que vous
voulez retenir, au besoin en regroupant en début de liste ceux qui vous intéressent.
Remarque
Il faut faire attention à ne pas effacer le caractère de continuation de ligne « \ ».
# cd /var/yp # Obligatoire pour exécuter la commande make
# vi Makefile
Dans l’exemple qui suit, on ne veut gérer, en NIS, que les utilisateurs, les groupes et
les noms d’hôtes.
all: passwd group hosts # rpc services netid protocols netgrp mail \
# shadow publickey # networks ethers bootparams printcap \
# amd.home auto.master auto.home passwd.adjunct
Le fichier Makefile ayant été modifié, il reste à exécuter la commande ypinit, avec
l’option « -m » pour créer les maps initiales du serveur maître. La commande vous
demande la liste des serveurs esclaves. Il sera toutefois possible d’en ajouter d’autres
ultérieurement (cf. Configuration d’un serveur esclave).
Démarrage du serveur NIS
Il reste à démarrer le serveur NIS. Pour cela, il faut exécuter la commande suivante :
#/etc/rc.d/init.d/ypserv start # Démarrage du serveur
Pour l’arrêter, on exécute symétriquement :
#/etc/rc.d/init.d/ypserv stop # Arrêt du serveur
Ces commandes peuvent être automatisées au démarrage et à l’arrêt du système (cf
Module 7 : L’arrêt et le démarrage).

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 15-21
Module 15 : Le réseau

Exemple de création d’un serveur maître


Le domaine NIS s’appelle univers. Le serveur maître s’appelle saturne. On désigne
venus comme serveur esclave, dès la création de saturne.
# /usr/lib/yp/ypinit –m
At this point, we have to construct a list of the hosts which will run NIS
servers. saturne.planete is in the list of NIS server hosts. Please continue to add
the names for the other hosts, one per line. When you are done with the
list, type a <control D>.
next host to add: saturne.planete
next host to add: venus.planete
next host to add:
The current list of NIS servers looks like this:
saturne.planete
venus.planete
Is this correct? [y/n: y] y
We need some minutes to build the databases...
Building /var/yp/univers/ypservers...
Running /var/yp/Makefile...
gmake[1]: Entering directory `/var/yp/univers'
Updating passwd.byname...
Updating passwd.byuid...
Updating group.byname...
Updating group.bygid...
Updating hosts.byname...
Updating hosts.byaddr...
gmake[1]: Leaving directory `/var/yp/univers'
[root@saturne yp]#
Visualisation des maps créées.
Les maps sont créées dans le répertoire /var/yp/univers.
# ls /var/yp/univers
group.bygid group.byname hosts.byaddr hosts.byname passwd.byname
passwd.byuid ypservers
Démarrage du serveur NIS.
# /etc/rc.d/init.d/ypserv start # Lance le serveur NIS
Starting YP server services: [ OK ]
Tests du service
Vérifier la présence du serveur.
# ps -e |grep ypserv
875 ? 00:00:00 ypserv
Démarrer le client sur le serveur.
# /etc/rc.d/init.d/ypbind start
Binding to the NIS domain... [ OK ]
Listening for an NIS domain server: saturne.planete
# /etc/rc.d/init.d/ypbind start
Binding to the NIS domain... [ OK ]
Listening for an NIS domain server: saturne.planete

15-22 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 15 : Le réseau

Visualiser une map, ici passwd (cf. Les commandes NIS).


# ypcat passwd
nis1::5000:5000::/home/nisuser/nis1:/bin/bash
aurore9:$1$FTNodwNF$D0E21MjjNtzpwYeIi9Aea/:501:45::/home/aurore9:/bi
n/falsepierre::502:502::/home/pierre:/bin/bash
nis2::5001:5001::/home/nisuser/nis2:/bin/bash
gilles::504:504::/home/gilles:/bin/bash

Configuration d’un serveur esclave


Opérations à effectuer sur le serveur maître
Il faut que l’hôte destiné à devenir un serveur esclave soit renseigné dans la map
ypservers du serveur maître. Sur le serveur maître, il faut se placer dans le répertoire
racine de NIS, /var/yp. On procède alors à la modification, par vi, du fichier texte
ypservers, qui contient la liste des serveurs du domaine. On exécute pour terminer la
commande make ypservers qui fabrique la map ypservers.
Opérations à effectuer sur le serveur esclave
Comme dans le cas du serveur maître, il convient de s’assurer de la présence des
paquetages serveurs et clients. Sur le serveur esclave, on exécute la commande
domainname pour renseigner le nom du domaine NIS et, pour terminer, la commande
ypinit –s Nom_du_maître, qui crée, par recopie, les maps du serveur esclave.
Pour démarrer le service manuellement ou automatiquement, reportez-vous au
paragraphe Configuration du serveur maître.
Exemple d’ajout d’un serveur esclave
On veut configurer l’hôte venus comme serveur esclave.
Définition du nom du domaine.
# domainname univers
Génération des maps, par recopie depuis le serveur.
# /usr/lib/ypinit –s saturne.planete
We will need a few minutes to copy the data from saturne.planete.
Transferring hosts.byaddr...
Trying ypxfrd ... not running
Transferring hosts.byname...
Trying ypxfrd ... not running
Transferring group.bygid...
Trying ypxfrd ... not running

Transferring passwd.byuid...
Trying ypxfrd ... not running
venus.planete's NIS data base has been set up.
If there were warnings, please figure out what went wrong, and fix it.
At this point, make sure that /etc/passwd and /etc/group have
been edited so that when the NIS is activated, the data bases you
have just created will be used, instead of the /etc ASCII files.
#

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 15-23
Module 15 : Le réseau

Remarque
Le message « Trying ypxfrd ... not running » n’indique pas une erreur d’exécution,
mais que le démon rpc.ypxfrd, dont la fonction est d’accélérer le transfert de maps
volumineuses, n’est pas activé sur le serveur maître. Les maps ont quand même été
transférées.

Vérification des maps obtenues auprès du serveur maître.


# ls /var/yp/univers
group.bygid hosts.byaddr passwd.byname ypservers
group.byname hosts.byname passwd.byuid
Démarrage du serveur NIS.
# /etc/rc.d/init.d/ypserv start # Lance le serveur NIS
Starting YP server services: [ OK ]

La mise à jour des maps des serveurs esclaves


L’administrateur d’un serveur d’un domaine NIS doit porter une attention particulière
à la mise à jour des maps des serveurs esclaves.
Pour cela, il dispose de deux procédés symétriques :
• Propager les maps du serveur maître vers les serveurs esclaves, grâce à la
commande yppush.
• Demander à partir de l’esclave, le transfert des maps du maître avec la commande
ypxfr. Elle copie une map du serveur maître sur le serveur esclave, par exemple à
la suite d’un arrêt prolongé du serveur esclave. Cette tâche peut même être
automatisée, via cron (cf. Module 7 : Les processus). Il existe d’ailleurs trois
scripts du répertoire /usr/lib/yp prévus à cet effet : ypxfr_1perday, ypxfr_1perhour
et ypxfr_2perday. C’est généralement cette solution qui est mise en œuvre.
Exemples
venus demande à saturne, le maître, le transfert de la map passwd.bynme.
Sur le serveur saturne
# rpc.ypxfrd
# ps -e |grep rpc

979 ? 00:00:00 rpc.ypxfrd
Sur l’esclave venus
# ypxfr -f passwd.byname # L’option «-f» force le transfert du map
Trying ypxfrd ... success
# ypxfr passwd.byname
ypxfr: Master's version not newer

Saturne transfère les maps passwd et group sur venus, l’esclave


# yppush -h venus.planete passwd.byname

# yppush -h venus.planete group.byname

15-24 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 15 : Le réseau

Supprimer NIS sur un client


Pour retirer un client NIS, il faut mettre à jour les fichiers de configuration locaux qui
ne contenaient pas les données uniquement définies dans les maps du serveur. Pour
cela, on peut utiliser la commande ypcat pour extraire les informations concernant le
client et les ajouter à ses fichiers de configuration. Il faudra peut-être également
rapatrier certaines ressources, comme les répertoires de connexion, si le partage NFS
n’est plus utilisé. Il suffit, ensuite, de ne plus démarrer le démon ypbind.

La sécurité d’accès
Le contrôle d’accès des clients
Le fichier /var/yp/securenets définit les clients autorisés à se connecter à un serveur.
Ce fichier contient des paires d’informations netmask/réseau. L’adresse IP d’un client
doit correspondre à au moins l’une des deux informations.
Exemple de fichiers securenets
# securenets This file defines the access rights to your NIS server for NIS clients.
# Always allow access for localhost
255.0.0.0 127.0.0.0
# This line gives access to everybody. PLEASE ADJUST!
0.0.0.0 0.0.0.0
La sécurité d’accès aux maps du serveur
Le fichier /etc/ypserv.conf configure l’accès aux maps du serveur pour ypserv et
rpc.ypxfrd.
Dans sa version initiale, tous les clients sont autorisés.
Le fichier contient des lignes de définition d’options de la forme :
option: [yes|no]
et des lignes de définition de règles de la forme :
hôte:map:security:mangle[:filed]
La principale option est :
dns yes|no Si dns est à yes, le serveur interroge le serveur dns, si la map hosts ne
permet pas de résoudre le nom d’hôte.
Les composants d’une règle sont :
hôte L’adresse IP d’un hôte, le caractère « * » est autorisé pour tous.
map Le nom de la map, le caractère « * » est autorisé pour tous.
security Une valeur parmi les quatre possibilités : none, port, deny et des.
none Pas de règle de sécurité.
port L’accès n’est autorisé qu’au port inférieur à 1024.
Si « mangle » vaut yes, l’accès est autorisé, mais le mot de passe
est remplacé par « x ».
deny L’accès est interdit.
des Une authentification des est nécessaire.
Extrait du fichier /etc/ypserv.conf.
dns: no
# Host : Map : Security : Passwd_mangle

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 15-25
Module 15 : Le réseau

# under MSDOG everbody is root and can access ports < 1024 !!!
* : shadow.byname : port : yes
* : passwd.adjunct.byname : port : yes

Les commandes NIS


Commande Description
nisdomainname(1), Ces commandes affichent ou positionnent le domaine NIS.
ypdomainname(1),
domainname(1)
ypinit(1) Crée le serveur maître et les serveurs esclaves.
ypwich(1) Affiche le nom du serveur NIS ou la liste des maps.
yppasswd Change le mot de passe, via les maps NIS. Cette commande
nécessite que le démon yppasswdd soit lancé sur le serveur.
yppoll(1) Affiche la version et le serveur maître d’une map.
ypmatch(1) Affiche les valeurs des clés d’une map NIS.
ypcat(1) Affiche une map NIS.
ypbind(8) Recherche un serveur NIS. La commande procède
généralement par diffusion pour trouver un serveur NIS. Il est
possible de prédéfinir une liste de serveurs dans le fichier
/etc/yp.conf. Il est consulté avant que ne soit réalisée la
diffusion.
ypset(8) Associe le démon ypbind à un serveur NIS particulier. Cette
commande est principalement utilisée quand le serveur est sur
un réseau physique différent et qu’il ne peut pas être atteint par
diffusion.
yppush(8) Recopie une map du serveur maître sur un serveur esclave.
ypxfr(8) Recopie les maps NIS du serveur maître vers le serveur esclave
qui exécute ypxfr. Cette commande nécessite que le démon
rpc.ypxfrd soit lancé sur le serveur maître.

Exemple de commandes NIS


Connaître le nom du serveur.
# ypwhich
venus.planete
Afficher les alias et le nom de maps associées, le contenu du fichier
/var/yp/nicknames.
# ypwich –x
Use "ethers" for map "ethers.byname"
Use "aliases" for map "mail.aliases"
Use "services" for map "services.byname"
Use "protocols" for map "protocols.bynumber"
Use "hosts" for map "hosts.byname"
Use "networks" for map "networks.byaddr"
Use "group" for map "group.byname"
Use "passwd" for map "passwd.byname"
#

15-26 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 15 : Le réseau

Connaître le propriétaire d’une map, toutes par défaut.


# ypwhich –m

hosts.byname saturne.planete
group.bygid saturne.planete
group.byname saturne.planete

Connaître la version d’une map et son serveur.
# yppoll passwd.byname
Domain univers is supported.
Map passwd.byname has order number 972252311. [Sun Oct 22 21:05:11 2000]
The master server is saturne.planete.
Visualiser une map sous sa forme texte d’origine.
# ypcat passwd

pierre:/TCd9tWICwcNQ:505:505::/home/pierre:/bin/bash
cathy:LGFyMc6PyOmvw:504:501::/home/cathy:/bin/bash

Visualiser une map et la valeur de la clé.
# ypcat -k passwd.byname
...
pierre pierre:/TCd9tWICwcNQ:505:505::/home/pierre:/bin/bash
cathy cathy:LGFyMc6PyOmvw:504:501::/home/cathy:/bin/bash
...
Afficher l’entrée d’une map pour une clé donnée.
# ypmatch cathy passwd
cathy:LGFyMc6PyOmvw:504:501::/home/cathy:/bin/bash

Utilisation de NIS pour la gestion des comptes utilisateurs


Premier exemple
Celine ne possède aucun compte sur les hôtes du domaine. Nous allons lui créer un
compte NIS sur le serveur maître saturne.planete, mais son répertoire de connexion
sera sur l’hôte mars.planete.
Opérations sur le serveur maître saturne.planete.
# useradd -M celine # L’option «-M» interdit la création du répertoire de
connexion de celine sur le serveur saturne.
# passwd celine
Changing password for user celine
New UNIX password:
BAD PASSWORD: it is based on a dictionary word
retype new UNIX password:
passwd: all authentication tokens updated successfully
A présent, les fichiers /etc/passwd et /etc/shadow ont été modifiés. On peut lancer la
commande make, qui va alors mettre à jour les maps correspondantes.
# cd /var/yp
# make
gmake[1]: Entering directory `/var/yp/univers'

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 15-27
Module 15 : Le réseau

Updating passwd.byname...
Updating passwd.byuid...
Updating group.byname...
Updating group.bygid...
gmake[1]: Leaving directory `/var/yp/univers'
On vérifie maintenant si celine est bien dans la map passwd.byname.
# ypmatch celine passwd
celine:8zwxmlHcJwjFo:508:508::/home/celine:/bin/bash
Opérations sur l’hôte mars.planete.
La dernière opération consiste à lui créer un répertoire de connexion, ainsi que les
fichiers de paramétrage de sa session (.profile, .kshrc, etc.) sur le serveur mars.
# mkdir /home/celine
# cp -r /etc/skel/* /home/celine
# chown -R celine /home/celine
Test de la connexion de celine.
mars login: celine
Password:
Last login: Thu Jun 22 21:46:11 on tty3
$
$ id
uid=504(celine) gid=501(xgrp) groups=501(xgrp)
$
Deuxième exemple
Pierre possède déjà un compte sur l’hôte mars.planete, et l’on souhaite que ce dernier
soit géré en NIS. Il s’agit du transfert d’un compte local en compte NIS. Il suffit alors
de lui créer un compte NIS sur le serveur maître saturne.planete, et de supprimer sur
mars.planete son compte local, sans supprimer son répertoire de connexion ni ses
fichiers.
Opérations sur le serveur maître saturne.planete.
# useradd -M –u 2000 pierre # L’option «-M» interdit la création du répertoire
de connexion de pierre sur le serveur saturne. On conserve l’UID actuel de
pierre.
# passwd pierre
Changing password for user pierre
New UNIX password:
BAD PASSWORD: it is based on a dictionary word
Retype new UNIX password:
passwd: all authentication tokens updated successfully
# cd /var/yp
# make
gmake[1]: Entering directory `/var/yp/univers'
Updating passwd.byname...
Updating passwd.byuid...
Updating group.byname...
Updating group.bygid...
gmake[1]: Leaving directory `/var/yp/univers'
Opération sur l’hôte mars.planete.

15-28 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 15 : Le réseau

Il suffit de supprimer le compte de pierre sans supprimer son répertoire de connexion


ni ses fichiers.
# userdel pierre # L’absence de l’option « -r » préserve tous les fichiers
de pierre
Troisième exemple
On décide de faire du serveur NIS saturne un serveur NFS (cf. Chapitre NFS) et de
centraliser sur saturne les comptes et les répertoires de connexion des utilisateurs.
Leur répertoire de connexion sera sous /home/nisuser. Un utilisateur du domaine peut
alors se connecter de manière banalisée à partir de n’importe quel client. Pour que le
montage NFS ne soit pas permanent, on utilise le service d’automontage autofs (cf.
Module 4 : Les systèmes de fichiers). Les fichiers nécessaires à l’automontage sont
transformés en maps NIS.
Le serveur saturne
Le service NFS est démarré.
# ps -e |grep nfsd
567 ? 00:00:00 nfsd
568 ? 00:00:00 nfsd
# ps -e |grep mountd
557 ? 00:00:00 rpc.mountd
Le répertoire /home/nisuser est exporté.
# exportfs
/home/nisuser <world>
Les maps pour l’automontage sont définies.
Extrait de Makefile :
all: passwd group hosts rpc services auto.master auto.home\
# netid protocols netgrp mail \
Les maps pour l’automontage ont été fabriquées en exécutant la commande make.
Les fichiers texte initiaux sont /etc/auto.master et /etc/auto.home.
# ypcat auto.master # La clé n’est pas visualisée
auto.home --timeout 60
# ypcat –k auto.master # La clé est visualisée
/home/nisuser auto.home --timeout 60
# ypcat auto.home # définit deux comptes : nis1 et nis2
-fstype=nfs,rw,nosuid aurore11:/home/nisuser/nis1
-fstype=nfs,rw,nosuid aurore11:/home/nisuser/nis2
Le client mars (ou un autre).
Il faut démarrer le service d’automontage autofs.
# /etc/rc.d/init.d/autofs start
Le répertoire /etc ne doit pas comporter de table pour l’automontage. La requête en est
faite au serveur qui possède les maps.
Il n’y a plus qu’à se connecter sous le nom d’un utilisateur nis, ici nis1 ou nis2.
Red Hat Linux release 7.2 (Enigma)
Kernel 2.4.7-10 on an i686
login: nis1
[nis1@mars nis1]$

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 15-29
Module 15 : Le réseau

in.ftpd, le transfert de fichiers


In.Les types d ’installation

Le
Letransfert
transfertde
defichiers
fichiers
put
ftp ftpd
get

Réseau
TCP/IP

client serveur

TSOFT - Linux Administration Module 15 : Le réseau - 15.8

FTP est un service TCP/IP qui permet le transfert de fichiers. Il fonctionne en client-
serveur et le démon ftpd joue le rôle de serveur de fichiers. C’est un paquetage
standard de Linux. Le démon ftpd est démarré par le démon principal du réseau inetd.

Le démon in.ftpd
in.ftpd est la commande serveur dont les principales options sont :
-l Les sessions de transfert de fichiers sont enregistrées via le service syslog.
-d Des informations supplémentaires (« debugging ») sont envoyées à syslog.
-a Le fichier de configuration du service FTP ftpaccess est utilisé. Il ne l’est pas
sinon.

Les fichiers de configuration du service ftp


/etc/ftpusers Ce fichier donne une liste d’utilisateurs qui sont
interdits de ftp.
FTPLIB/ftpaccess Le fichier qui configure l’accès au service.

Le ftp anonyme
A l’ouverture d’une session ftp, le client doit normalement fournir un nom et un mot
de passe. Ces données d’authentification doivent correspondre à un compte
d’utilisateur défini dans le fichier /etc/passwd. Pour permettre à des utilisateurs
d’établir une session ftp sur un serveur où ils ne possèdent pas de compte, on crée un
utilisateur ftp. Le client fournit alors comme information d’authentification le nom
anonymous et comme mot de passe son e-mail, pierre@societe.com.
nom : anonymous
mot de passe : pierre@societe.com
Pour garantir la sécurité, le démon in.ftpd exécute la commande chroot sur le
répertoire de connexion de l’utilisateur ftp (~ftp). La commande chroot fait du

15-30 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 15 : Le réseau

répertoire associé, ici ~ftp, la racine de l’arbre que voit l’utilisateur connecté. Le reste
de l’arbre lui est caché.
Il faut créer un mini-système Linux sous le répertoire ~ftp, sans lequel rien ne serait
possible.
Les fichiers qui sont accessibles par les clients doivent se trouver dans l’arborescence
~ftp/pub.
1. Création du répertoire /home/ftp
# mkdir /home/ftp
# chmod 555 /home/ftp
2. Création des répertoires bin, lib, etc et pub
# cd ~ftp
# mkdir bin lib etc pub
# chmod 111 bin lib etc
# chmod 555 pub # On attribue les droits 777 si l’on autorise la commande put.
3. Copie du fichier d’administration /etc/group et /etc/passwd
# cd etc
# cp /etc/passwd /etc/group .
Remarque
On peut expurger ces fichiers pour n’y laisser que les comptes existant dans
l’arborescence /home/ftp.
4. Copie de la commande ls et de ses bibliothèques
# cd ~ftp/bin
# cp /bin/ls .
# cp /lib/libc.so.6 /lib/ld-linux.so.2 .

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 15-31
Module 15 : Le réseau

Le courrier électronique
Le e-mail

UA MTA

smtp
MIME smtp

UA MTA

POP ou
IMAP

TSOFT - Linux Administration Module 15 : Le réseau - 15.9

Le service de courrier électronique, e-mail, permet aux utilisateurs qui possèdent une
boîte aux lettres d’envoyer ou de recevoir du courrier. La boîte aux lettres est
identifiée par son adresse e-mail.

Les adresses e-mail


Les adresses e-mail ont le format suivant :
nom_utilisateur[@ adresse_DNS]
L’adresse DNS est l’adresse d’un domaine ou d’un hôte (cf. DNS). Si l’adresse n’est
pas complètement qualifiée (sans l’« @ »), elle correspond à un compte local.
Exemples d’adresses e-mail :
pierre
cathy@venus.societe.com
Pierre.Dupont@societe.com
billy@Microsoft.COM
president@whitehouse.GOV
ministre@culture.fr
Remarque
Dans les adresses e-mail, la casse n’est pas significative.

Les composants d’un système de messagerie


On compte trois composants dans un système de messagerie. Leur rôle reproduit celui
en vigueur dans un service postal. Ils sont :
• Le composant UA (« User Agent »), dont le rôle est de poster le courrier, de le
lire, en un mot, de gérer le courrier.
• Le composant MTA (« Message Transfer Agent »), dont le rôle est de transférer le
courrier d’une machine à l’autre.

15-32 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 15 : Le réseau

• Le composant DA (« Deliver Agent »), dont le rôle est de stocker dans une boîte
aux lettres un courrier venant d’un MTA.

Les logiciels sous Linux


Les principaux logiciels qui assurent les fonctions d’un système de messagerie sont :
• UA : mail, mailx, elm, kmail (sous KDE) ...
• DA : procmail.
• MTA : sendmail, postfix, smail, qmail. Le logiciel sendmail est le serveur de
messagerie le plus puissant et le plus utilisé sur les systèmes Unix. Il est décrit
dans le chapitre suivant.
On rencontre de nombreux autres logiciels. Citons, en particulier :
• fetchmail, décrit en fin de ce chapitre, permet de rapatrier du courrier sur un
serveur.
• majordomo est un logiciel qui permet la gestion de listes de diffusion.
Citons également quelques logiciels UA pour Windows ou Macintosh :
• Outlook, Eudora, Pegasus Mail, Netscape Messenger, ...

Les protocoles
SMTP
Le protocole SMTP (« Simple Mail Transfer Protocol ») permet le transfert de
messages entre un UA et un MTA ou entre MTA, dans un réseau, Internet ou intranet,
TCP/IP.
ESMTP
Le protocole « Extended SMTP » est une modernisation du protocole SMTP. La
représentation des données utilise 8 bits au lieu de 7 bits dans SMTP. Cela simplifie la
manipulation des caractères accentués et des données binaires.
POP, IMAP
Les protocoles POP (« Post Office Protocol ») et IMAP (« Interactive Mail Access
Protocol ») permettent l’accès à une boîte aux lettres distante, souvent localisée chez
un fournisseur d’accès Internet (« Internet Provider »). Ces protocoles sont
nécessaires aux utilisateurs d’UA comme Outlook ou kmail, qui fonctionnent sur des
postes de travail qui ne possèdent pas de serveurs de messagerie (MTA) ou dont le
serveur de messagerie (MTA) n’est pas en service en permanence.
MIME
Le protocole MIME (« Multipurpose Internet Mail Extension ») permet de spécifier le
format d’une partie d’un courrier. Ce protocole est utilisé pour envoyer des documents
attachés, des fichiers, au texte du message.

Exemples d’utilisation de la messagerie


Utilisation de systèmes Linux ou Unix indépendants
Les systèmes Unix ou Linux possèdent, en standard, le MTA sendmail et l’UA mail.
Ces logiciels permettent d’échanger du courrier entre utilisateurs sans configuration
particulière. La seule contrainte est que les comptes utilisateurs existent.
Envoi d’un e-mail à un utilisateur local (on termine par CTRL D) :
venus$ mail pierre

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 15-33
Module 15 : Le réseau

Envoi d’un e-mail à un utilisateur distant :


venus$ mail cathy@mars
Consultation de sa boîte aux lettres :
venus$ mail
Faire suivre son courrier :
venus$ cat .forward
paul@mars
Création d’un serveur de messagerie pour postes clients Windows
Un système Linux peut jouer, à peu de frais, le rôle d’un serveur de messagerie pour
des utilisateurs travaillant sous Windows ou tout poste de travail, y compris Linux, qui
n’est pas en fonction en permanence.
1. Création des comptes
La première étape est de créer, sur le serveur, des comptes utilisateurs, un par
utilisateur de système Windows. Il faut aussi leur attribuer un mot de passe. Les
options de la commande useradd limitent les utilisateurs à la seule utilisation du
service courrier et pas à telnet,ftp…
# useradd -s /bin/false –g popusers pierre
# passwd pierre
# useradd -s /bin/false –g popusers cathy
# passwd cathy
2. Activation du serveur sendmail
Le logiciel sendmail, via procmail, va stocker le courrier reçu dans les boîtes aux
lettres des utilisateurs, par exemple /var/spool/mail/pierre pour l’utilisateur pierre.
sendmail est normalement activé au boot. Si ce n’est pas le cas, il faut exécuter le
script /etc/rc.d/init.d/sendmail au boot (cf. Module 7 : L’arrêt et le démarrage).
3. Activation du serveur POP
C’est le serveur POP qui va permettre aux utilisateurs Windows de récupérer leur
courrier. Ce service n’est pas actif par défaut. Pour l’activer, il faut installer, si cela
n’est pas déjà le cas, le paquetage imap. Il faut ensuite modifier le fichier
/etc/inetd.conf. La modification consiste à retirer le dièse qui commente la ligne
d’activation du serveur POP3 (« POP version 3 »). Pour terminer, on signale la
modification au démon inetd. Il faut, si besoin, installer les paquetages pop ou imap,
selon la distribution.
# grep pop /etc/inetd.conf
#pop-2 stream tcp nowait root /usr/sbin/tcpd ipop2d
#pop-3 stream tcp nowait root /usr/sbin/tcpd ipop3d
# vi /etc/inetd.conf # on retire le dièse devant pop3
# ps –e | grep inetd
532 ? 00:00:00 inetd
# kill -1 532 # on demande à inetd de relire son fichier de configuration
4. Configuration des UA
Sur chaque poste Windows, il faut configurer le logiciel UA. On doit renseigner les
points suivants :
L’adresse du serveur SMTP.
Le choix du protocole pour rapatrier le courrier : POP ou IMAP.

15-34 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 15 : Le réseau

L’adresse du serveur POP ou IMAP.


Le nom et le mot de passe de l’utilisateur associé au compte POP ou IMAP.
L’adresse e-mail de l’utilisateur.
Le nom réel de l’utilisateur.
Eudora :
La configuration d’Eudora est réalisée dans le menu [Tools][Options]. On configure
ensuite, dans la boîte de dialogue « Getting Started », le « pop account », par exemple
cathy@venus. Dans la boîte de dialogue « Hosts », on saisit l’adresse du serveur de
messagerie dans le champ « SMTP », par exemple venus.
Kmail :
Le logiciel kmail est un UA disponible en standard sous Linux.
Pour l’envoi de message, on indique si on utilise le serveur local de messagerie
(sendmail) ou un serveur distant. Dans ce dernier cas il faut préciser l’adresse et le
port, normalement 25, du serveur SMTP auquel on enverra son courrier.
Pour la réception du courrier, on a le choix entre utiliser la boîte aux lettres locale ou
utiliser une connexion POP3. Dans ce dernier cas il faut préciser l’adresse et le port,
normalement 110, du serveur POP à partir duquel on récupère son courrier.
5. Test de la messagerie
Outre le test de l’envoi et de la réception de messages, on peut réaliser les tests
suivants :
Test de connexion sur le serveur avec les comptes que l’on a créés.
# su bin
$ su - pierre
password :
Tester si sendmail est actif.
# ps –e | grep sendmail # vérifie si sendmail est actif
# netstat -an | grep 25 # vérifie si le port SMTP (25) est actif
tcp 0 0 0.0.0.0:25 0.0.0.0:* LISTEN
Tester si le serveur POP3 est actif.
# netstat -an | grep 110 # 110 est le port d’écoute de POP3
tcp 0 0 0.0.0.0:110 0.0.0.0:* LISTEN

L’un des tests les plus probants consiste à jouer le rôle d’un UA, en utilisant les
protocoles SMTP et POP, via telnet. Il faut bien connaître ces protocoles. Le
paragraphe suivant décrit le protocole SMTP et, en fin de chapitre, le lecteur trouvera,
en référence, les RFC qui décrivent POP3 et IMAP.

Le protocole SMTP
Le protocole SMTP (« Simple Mail Transfer Protocol ») est le protocole réseau
d’échange de messages entre MTA, dans le contexte d’un réseau Internet ou intranet
TCP/IP.
Le format des messages est très simple :
• Un en-tête, qui comporte notamment les adresses :
adresse e-mail source
adresse e-mail destination

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 15-35
Module 15 : Le réseau

• Le corps du message ASCII. Le corps est séparé de l’en-tête par une ligne
blanche.
Le tableau qui suit présente quelques requêtes SMTP :
HELO présenter le client au serveur.
MAIL donner l’adresse de l’émetteur.
RCPT donner l’adresse du destinataire.
DATA donner le message en ASCII 7 bits.
VRFY vérifier si un compte existe, exemple : VRFY <pierre>.
EXPN connaître les membres d’une liste de diffusion, exemple : EXPN <users>.
QUIT terminer le dialogue.
Exemple d’une session SMTP :
$ telnet venus 25
Trying 192.0.0.110 ...
Connected to saturne
Escape character is ‘^]’
220 venus SMTP
HELO saturne
250 saturne
MAIL From:pierre@venus
250 OK
RCPT To:louis@saturne
250 OK
DATA
354 Start mail imput; end with <CRLF>.<CRLF>
coucou
.
250 OK
QUIT
221 venus Terminating
Connection closed by Foreign host
$

Le logiciel fetchmail
Le logiciel fetchmail permet la récupération de courrier via POP ou IMAP. Il peut être
configuré en tant que démon pour une récupération périodique et automatique du
courrier. fetchmail transfère le courrier récupéré sur le port 25 (SMTP) de la machine
locale, ce qui en permet un traitement normal par sendmail.
Le logiciel fetchmail est tout à fait adapté au rapatriement du courrier d’un serveur de
messagerie d’un réseau local, à partir d’un serveur distant, par exemple au delà d’un
firewall.
Exemple d’utilisation :
Le fichier de configuration ~/.fetchmailrc :
poll mars protocol pop3
user "alice" password "alice", is "alice" here
user "sandrine" password "sandrine", is "beatrice" here;
Démarrage de fetchmail, en mode démon, avec récupération du courrier toutes les
900 secondes :

15-36 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 15 : Le réseau

# fetchmail -d 900

Références de la messagerie
Les RFC : 821, 822, 1425 (SMTP), 1651 (ESMTP), 1081, 1082 (POP3), 1176
(IMAP), 1521, 1522 (MIME).
HOWTO :
Mail-HOWTO,
Mail-User-HOWTO,
Mail-Administratoir-HOWTO
man : mail(1), fetchmail(1)
L’aide en ligne de kmail.

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 15-37
Module 15 : Le réseau

sendmail
sendmailLes types d ’installation

smtp
sendmail sendmail
/etc/sendmail.cfg

« provider »
/var/spool/mqueue de mail

Pierre@venus
/var/spool/mail/pierre

TSOFT - Linux Administration Module 15 : Le réseau - 15.10

Le logiciel sendmail est un agent de transport (un MTA : «Message Transfer Agent»).
Ce programme est incroyablement complexe, pour supporter la complexité du
transport du courrier. Il a été écrit par Eric Allman à l’époque où il était étudiant à
l’université de Berkeley.

Les fichiers utilisés par sendmail


Le fichier /etc/sendmail.cf est le fichier de configuration principal :
• Il définit l’environnement de sendmail.
• Il précise les règles de réécriture des adresses e-mail.
• Il indique le routage du courrier entre les UA et les DA.
• Il précise le nom des autres fichiers de configuration.
Le fichier /etc/sendmail.cw contient la liste des hôtes pour lesquels le serveur local
gère les comptes de messagerie (cf. La directive Fw).
Le fichier /etc/mail/relay-domains contient la liste des hôtes dont on accepte de
retransmettre le courrier (cf. La directive FR-o).
Le fichier /etc/aliases (cf. La directive O AliasFile) permet de :
• Définir des surnoms pour les utilisateurs.
• De faire suivre le courrier vers d’autres ordinateurs.
• De créer des listes de diffusion (« Mailing List »).
Le répertoire /var/spool/mqueue/ contient les fichiers en attente de traitement.
Le répertoire /var/spool/mail/ contient les fichiers représentant les boîtes aux lettres
des utilisateurs. Chaque boîte aux lettres porte le nom de l’utilisateur Linux.
Le fichier /var/log/maillog sert de journal de bord (log) au service.

15-38 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 15 : Le réseau

Les options de la commande sendmail


-f addr Fixer l’adresse du site émetteur.
-r addr Fixer l’adresse du site émetteur.
-h cnt Abandonner l’émission d’un message après cnt essais infructueux.
-F nom Spécifier le nom complet de l’utilisateur.
-n Ne pas utiliser les alias.
-t Envoyer le message aux destinataires spécifiés par les champs To:, Cc: et
Bcc:.
-bp Afficher la file d’attente (queue).
-bm Distribuer le courrier.
-ba Fonctionner dans le mode Arpanet.
-bs Utiliser SMTP en entrée (implique l’option « –ba »).
-bd Fonctionner en mode démon.
-bt Fonctionner en mode test, montrer l’interprétation des adresses.
-bv Vérifier les adresses sans accepter et distribuer de courrier.
-bi Initialiser les fichiers binaires qui définissent les alias, identique à
newaliases.
-bp Afficher la file d’attente.
-q Traiter la file d’attente.
-qtime Traiter la file d’attente, mais à time interval.
-Cfichier Indiquer le nom du fichier de configuration, par défaut /etc/sendmail.cf.
-dlevel Spécifier le niveau de débogage.
-oxvalue Fixer l’option « x » à la valeur value.
-i Ignorer les points dans les messages en entrée.
-v Positionner le mode verbeux.

Le fichier de configuration /etc/sendmail.cf


Les principaux types de commandes :
Dxvalue Fixer la valeur de x à value.
Ccword1[ word2] ... Créer une classe c composée des mots word1 word2 ...
Fcfile Charger la classe c à partir du fichier file.
Oovalue Fixer l’option « o » à value.
Tuser1[ user2 ...] Fixer la liste des utilisateurs autorisés à réécrire leurs
adresses.
Exemple
DDsociete.com Définit la macro D
$D Référence la macro D

Les principales entrées :


Dw Définition du site local.

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 15-39
Module 15 : Le réseau

Cw Définition des autres noms du site local.


Fw Définition de Cw à partir d’un fichier, normalement /etc/sendmail.cw.
Dj Définition du domaine local. On doit fixer cette valeur si le système ne peut
déterminer son nom de domaine.
DS Adresse de l’hôte auquel on envoie le courrier non local que l’on ne peut
transmettre. C’est le cas d’un site UUCP qui n’accède pas au DNS.
DR,DH
L’hôte qui sert de site central, ou de relais, auquel on transmet le courrier local. Si
sa valeur est à blanc, le courrier local est distribué en local.
CL Liste des utilisateurs dont le courrier est délivré localement.
DM Nom de l’hôte qui va masquer le nom du site local dans les adresses sources. Ce
champ est utilisé si on précise les directives DR et DH.
CE Liste des utilisateurs dont l’adresse source ne sera pas masquée.
O AliasFile=/etc/aliases Nom du fichier de définition des alias.
O MaxMessageSize=1000000 Taille maximum (en octets) d’un
courrier.
O LogLevel=9 Le niveau de débogage.
O QueueDirectory=/var/spool/mqueue Répertoire des files d’attente de courrier.

Exécution de sendmail
Exécution de sendmail comme démon
La commande sendmail est normalement exécutée au démarrage du système. Si ce
n’est pas le cas, il faut activer le script /etc/rc.d/init.d/sendmail au boot (cf. Module 7 :
L’arrêt et le démarrage).
# mini-script d’activation de sendmail
if [ -f /usr/sbin/sendmail ]; then
(cd /var/spool/mqueue; rm -f *)
/usr/sbin/sendmail -bd -q1h
echo -n ’ sendmail’ >/dev/console
fi
On peut démarrer et arrêter manuellement sendmail :
# cd /etc/rc.d/init.d
# ./sendmail start # lance sendmail
# ./sendmail stop # arrête sendmail
Lancement dissocié des rôles de sendmail
L’option « –bd » précise à sendmail de se mettre à l’écoute du port 25 et ainsi d’être
prêt à récupérer du courrier rentrant. L’option « –q1h » demande à sendmail de traiter
la file d’attente de courrier toutes les heures afin de retransmettre le courrier ou de le
délivrer en local. Il est possible de dissocier ces deux rôles.
# sendmail -bd
# sendmail -q1h

La commande sendmail –q ne traite la file qu’une fois. On peut donc la lancer par un
crontab.

15-40 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 15 : Le réseau

Les commandes de tests.


Afficher la version, les options de compilation, la configuration DNS :
# sendmail -d0.1 -bt < /dev/null
Tester la réécriture des adresses.
# sendmail -bt
>0 paul@venus.societe.com
Afficher la file d’attente.
# sendmail -bp
Se connecter au serveur via telnet sur le port 25 (cf. Le chapitre e-mail).

Les alias
Le fichier /etc/aliases va permettre de :
• Définir des surnoms pour les utilisateurs.
• Faire suivre le courrier vers d’autres ordinateurs.
• Créer des listes de diffusion (« Mailing List »).
Exemple de fichier /etc/aliases
# Surnom d’utilisateur
postmaster: root
paul.dupont : paul
# Faire suivre le courrier
pierre:
\pierre@venus
# Remarque : l’anti-slash empêche la réinterprétation du nom.
# Exemple de listes de diffusion
comptables: cathy, jeanne, alice, pierre
developpeurs: pierre,
jean,
thomas@saturne
toutlemonde: comptables, developpeurs, root
Mise à jour des alias
Le logiciel sendmail n’utilise pas directement le fichier /etc/aliases, mais des fichiers
binaires. Pour mettre à jour les alias, on utilise la commande newaliases ou l’option
« -bi » de sendmail.

Exemples d’utilisation de sendmail


Premier exemple : un site central (Hub) et des sites périphériques
Dans le chapitre précédent, il apparaît que des sites équivalents ne nécessitaient pas de
paramétrage particulier. Dans le cas présent, on veut centraliser le courrier sur un site
que l’on va nommer « soleil ». Les autres sites vont relayer leur courrier sur le site
« soleil ».
Configuration du site central « soleil ».
Le fichier de configuration /etc/sendmail.cf n’a pas besoin d’être modifié.

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 15-41
Module 15 : Le réseau

# cat sendmail.cf

Fw/etc/sendmail.cw
DR
DH
DM

Le fichier /etc/sendmail.cw doit préciser la liste des sites périphériques.
# cat sendmail.cw
venus.societe.com
mars.societe.com
Configuration d’un site périphérique, par exemple venus.
Le fichier de configuration /etc/sendmail.cf doit adresser le site central :
# cat sendmail.cf

DRsoleil.societe.com
DHsoleil.societe.com
DMsoleil.societe.com

Deuxième exemple : les adresses e-mail sont des adresses de
domaines
Si l’on veut des adresses e-mail qui ne comportent que l’adresse du domaine, comme
par exemple « pierre@societe.com », on peut procéder comme suit :
Il faut configurer le serveur DNS du domaine pour qu’il permette aux différents
systèmes d’adresser le site central :
@ IN MX 10 soleil.societe.com.
Il faut aussi configurer le DNS du site central :
# cat /etc/resolv.conf
domain societe.com
nameserver 192.168.218.11
Dans le fichier /etc/sendmail.cf, le domaine doit être éventuellement précisé :
# cat sendmail.cf

Dj$m

Références pour sendmail


En ligne : /usr/doc/, qui contient notamment un important fichier README.
Le fichier /usr/lib/sendmail.hf contient le protocole SMTP, connu de sendmail, et qui
peut être affiché par un client via la commande HELP.
Le manuel : sendmail(8), newaliases(1), procmail(1), aliases(5).
Internet : le site officiel de sendmail : http://www.sendmail.org.
HOWTO : Mail-Administrator-HOWTO.
Livres : Sendmail par B. Costales et E. Allman.

15-42 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 15 : Le réseau

DHCP
DHCP

Mon adresse Réponse :


IP ? 192.0.0.1

Pilote Serveur
IP DHCP

Réseau
TCP/IP

TSOFT - Linux Administration Module 15 : Le réseau - 15.11

Le principe
Le protocole DHCP (« Dynamic Host Configuration Protocol ») permet à une station,
lors de son démarrage, d’obtenir dynamiquement des informations de configuration,
en particulier son adresse IP, à partir d’un serveur DHCP.
Au démarrage, la station émet un message de diffusion (« DHCP DISCOVER ») de
demande d’adresse IP. La totalité des serveurs DHCP qui reçoivent cette demande
proposent leur offre (« DHCP OFFER »).
La station choisit le premier qui a répondu, mais toujours par un message de diffusion
(« DHCP REQUEST ») pour que les autres serveurs sachent qu’ils n’ont pas été
retenus. Le serveur qui a été choisi répond par un message de diffusion (« DHCP
ACK »), la station n’ayant pas encore d’adresse.
Un serveur a trois manières d’allouer une adresse :
L’allocation manuelle – l’administrateur associe une adresse IP à une adresse MAC.
L’allocation automatique – le serveur fournit l’adresse à partir d’un ensemble
d’adresses réservées à cet effet.
L’allocation dynamique – le serveur fournit l’adresse à partir d’un ensemble
d’adresses réservées à cet effet, mais la possession de l’adresse est limitée dans le
temps.
Outre l’adresse, DHCP permet d’obtenir d’autres informations, telles le netmask, des
tables de routage, la configuration DNS et même des informations propriétaires du
système d’exploitation comme, par exemple, l’adresse d’un serveur Wins dans le cas
des applications NetBios.

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 15-43
Module 15 : Le réseau

La configuration d’un serveur DHCP


Si l’on installe le paquetage « dhcp-*.rpm » de Linux, le démon dhcpd est exécuté au
démarrage du système Linux. Il permet de fournir une adresse IP et, éventuellement,
d’autres informations, au client.
Le démon dhcp gère plusieurs fichiers :
dhcpd.conf C’est le fichier de configuration du démon dhcp. Pour chaque
sous-réseau, il précise les adresses disponibles, la durée du bail
et les options de dhcp.
dhcp.leases Ce fichier contient les baux en cours.
dhcp.leases~ Ce fichier contient les baux précédents.

Le manuel nous fournit des détails supplémentaires. Nous renvoyons le lecteur aux
chapitres suivants :
dhcpd(8) Le démon dhcp.
dhcpd.conf(5) Le format du fichier dhcpd.conf.
dhcp-options(5) Les options possibles de dhcp.
dhcprelay(8) Le relais dhcp
Le fichier /var/state/dhcp/dhcpd.leases doit exister. Si besoin, il faut le créer en
exécutant la commande :
# touch /var/state/dhcp/dhcpd.leases

Exemple de fichier dhcpd.conf


Exemple de fichier /etc/dhcpd.conf :
subnet 239.252.197.0 netmask 255.255.255.0 {
range 239.252.197.10 239.252.197.250;
default-lease-time 600
max-lease-time 7200;
option subnet-mask 255.255.255.0;
option broadcast-address 239.252.197.255;
option routers 239.252.297.1;
option domain-name-servers 239.252.197.2, 239.252.197.3;
option domain-name "societe.com";
}
host venus {
hardware ethernet 08:00:2b:4c:59:23;
fixed adress 239.152.197.9;
filename "/ftpboot/venus.boot" ;
option domain-name-servers 192.5.5.1;
option domain-name "vensus.com";
}

15-44 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 15 : Le réseau

Apache
Apache

Navigateur CGI
HTTP, MIME
Client httpd
web

Pages web
Réseau
TCP/IP

httpd.conf

TSOFT - Linux Administration Module 15 : Le réseau - 15.12

Introduction à Apache
Apache est le serveur Web le plus performant et le plus utilisé sur Internet. C’est un
logiciel libre, donc gratuit (licence GNU). Il est fourni, en standard, dans toutes les
distributions Linux.
Nous rappelons qu’un navigateur (« Browser »), comme « Internet Explorer (IE) »
de Microsoft ou « Netscape Communicator » de Netscape, visualise des pages Web.
Une page Web contient des données multimédias (texte, son, vidéo) en hypertexte. Un
simple clic renvoie à une autre page Web.

Architecture réseau
Un serveur Apache, caractérisé par le démon httpd, communique avec un client (IE ou
Communicator) grâce au protocole HTTP (« Hyper Text Transfer Protocol »). Le
protocole HTTP est un protocole standard de la famille des protocoles TCP/IP. HTTP
utilise le protocole MIME pour décrire le format des fichiers échangés : texte, html,
image (GIF, JPEG, …).

Démarrage et arrêt du serveur


Le serveur Apache est normalement exécuté au démarrage du système, via le script
/etc/rc.d/rc3.d/S85httpd. Ce script, qui exécute la commande httpd, peut être lancé
manuellement pour démarrer ou arrêter le serveur.
# cd /etc/rc.d/init.d
# ./httpd start # active le serveur
# ./httpd stop # arrêt du serveur

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 15-45
Module 15 : Le réseau

Installation, désinstallation
Le logiciel Apache est normalement installé quand Linux est installé en tant que
serveur. Il est possible de le désinstaller pour installer une version plus récente (cf.
Module 13 : Les paquetages).
# rpm -qa | grep apache # vérifie si Apache est installé
# rpm -e apache-1.3.6-7 # désinstalle Apache
# cd /mnt/cdrom/RedHat/RPMS
# rpm -ivh apache-*.rpm # installe les paquetages d’Aapache

Arborescence du serveur
L’arborescence du serveur Apache comporte essentiellement deux branches. La
première contient les fichiers d’administration du serveur et la deuxième, les données
gérées par le serveur.
L’arborescence d’administration du serveur
Dans la configuration, cette arborescence est référencée sous le nom de ServerRoot.
Par défaut, c’est le répertoire /etc/httpd. Ses principaux composants sont les
répertoires et les fichiers suivants :
conf Le répertoire qui contient les fichiers de configuration.
conf/httpd.conf Le principal fichier de configuration, souvent même le
seul. Selon sa configuration, les deux fichiers suivants ne
sont pas pris en compte.
conf/srm.conf Le fichier de configuration du traitement des requêtes.
Il indique l’emplacement des documents et des scripts
CGI.
conf/access.conf Le fichier qui définit le contrôle d’accès.
logs C’est le répertoire qui contient les fichiers journaux de bord (logs). C’est
en fait un lien sur /var/log/httpd.
logs/access_log Le fichier qui enregistre les requêtes des clients.
logs/error_log Le fichier qui mémorise les erreurs.
modules Le répertoire qui contient les bibliothèques partagées utilisées par le
serveur. Ce répertoire est en fait un lien sur /usr/lib/apache.
php3.ini Le fichier de configuration du module PHP.

Remarque
Le fichier /var/log/messages, via le service Syslog, enregistre également l’activité du
serveur.
L’arborescence des données
Elle contient les données du serveur. Le répertoire /home/httpd est sa valeur par
défaut.
html Le répertoire qui contient les pages Web. Cette arborescence est
référencée sous le nom de DocumentRoot.
html/index.html La page d’accueil du site.
cgi-bin Le répertoire qui contient les scripts CGI.

15-46 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 15 : Le réseau

icons Le répertoire qui contient les icônes.

Exemple de création d’un site


La configuration par défaut est tout à fait satisfaisante. Il suffit de supprimer, déplacer
ou archiver les pages Web présentes par défaut et de les remplacer par les pages qui
constituent le site que vous voulez créer.
# cd /home/httpd/html
# mv index.html apache.html
# vi index.html # on crée une page Web
# cat index.html
<HTML>
<HEAD>
<TITLE>Essai</TITLE>
</HEAD>
<BODY>
Ceci est ma première page Web sous Apache
</BODY>
</HTML>
# ps –ef | grep httpd # teste la présence du serveur
root 617 1 0 10:47 ? 00:00:01 httpd
nobody 628 617 0 10:47 ? 00:00:00 httpd
nobody 629 617 0 10:47 ? 00:00:00 httpd
nobody 630 617 0 10:47 ? 00:00:00 httpd
nobody 631 617 0 10:47 ? 00:00:00 httpd

# lynx http://localhost # test de l’accessibilité de la page d’accueil
# lynx http://localhost/index.html # test identique, on spécifie explicitement la page
d’accueil

Remarques
Le logiciel Lynx est un navigateur fonctionnant en mode texte. Il n’est pas dans le
même paquetage qu’Apache.

Le serveur Apache se présente, par défaut, sous forme d’un ensemble de démons
httpd pour assurer de meilleures performances.

La mauvaise définition du nom réseau du serveur est la cause principale de


l’empêchement du démarrage du serveur Apache. Il est possible de forcer ce nom avec
la directive « ServerName » du fichier httpd.conf. Il suffit d’enlever le commentaire
associé et de mettre en argument le nom que l’on a choisi pour le serveur.

La commande httpd
La commande httpd est l’unique application qui compose le serveur Apache. Il est
possible de l’activer à partir du script /etc/rc.d/init.d/httpd ou directement en lui
passant éventuellement des paramètres.
Les principales options
-h Affiche un résumé des options et de la syntaxe.
-d Spécifie le répertoire racine de l’administration.
-f Spécifie le nom du fichier de configuration en remplacement de
/etc/httpd/conf/httpd.conf.

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 15-47
Module 15 : Le réseau

-v Affiche la version du logiciel Apache.


-l Liste les modules compilés.
-X Exécute une seule image de httpd.
-t Vérifie la syntaxe du fichier de configuration.
-T Identique, mais sans la vérification de la racine de la documentation.
-V Affiche les paramètres courants.
Exemples
# httpd # active le serveur, utilise le répertoire /usr/local/apache
# httpd –d /home/www
# httpd –f /home/www/conf/httpd.conf

La configuration du serveur
La configuration du serveur est principalement réalisée par le fichier conf/httpd.conf.
Les principales directives de ce fichier sont :
ServerType Spécifie le mode de lancement du serveur : « Standalone » ou
« inetd ». Le mode inetd est peu utilisé. Dans ce cas, le serveur
Apache est activé par l’application inetd.
ServerName Fixe le nom réseau du serveur.
ServerAdmin Indique l’adresse e-mail du responsable du site.
ServerRoot Spécifie le répertoire racine de l’administration du serveur, celle
qui contient les sous-répertoires conf et logs. Cette directive est
nécessaire si on lance le serveur avec l’option « –f ».
User L’utilisateur auquel appartiennent les processus httpd.
Group Le groupe auquel appartiennent les processus httpd.
Port Le port réseau auquel s’associe Apache, par défaut 80.
Listen Spécifie un couple « hôte:port ». Contrairement à la directive
précédente, il peut y avoir plusieurs directives Listen. Cela
permet à Apache de répondre à des requêtes adressées à plusieurs
noms de machines, en fait à plusieurs adresses IP, sur des ports
particuliers. Cette directive est généralement associée à l’usage
des serveurs virtuels (« Virtual Hosts ») décrits plus loin.
Remarque
Par défaut, Apache écoute sur toutes les interfaces et donc sur plusieurs adresses IP,
Listen permet de restreindre l’écoute à certaines interfaces.
AccessConfig Le fichier qui contient les directives concernant la sécurité
d’accès, conf/access.conf par défaut. Si l’on désire centraliser la
configuration dans httpd.conf, on spécifie le fichier /dev/null.
ResourceConfig Le fichier de ressources. Il contient notamment l’emplacement
des documents et des scripts CGI. Si l’on désire centraliser la
configuration dans httpd.conf, on spécifie le fichier /dev/null.
DocumentRoot Le répertoire qui contient les pages Web.
ScriptAlias Spécifie l’emplacement des scripts CGI (cf. Les CGI).

15-48 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 15 : Le réseau

UserDir Indique le nom du répertoire associé au chemin URL


~nom_de_l_utilisateur. Cette directive a normalement pour
valeur « public_htlm ». Ainsi, l’URL http://localhost/~pierre est
associé au répertoire /home/pierre/public_html. Cette directive
permet à chaque utilisateur d’avoir ses pages Web personnelles.
TypesConfig Spécifie le nom du fichier qui contient les types MIME supportés
et les extensions associées, par défaut /etc/mime.types.
DefaultType Spécifie le type MIME utilisé dans le cas où le serveur ne
découvre pas le bon type. La configuration par défaut est
normalement la valeur text/plain.
DirectoryIndex Spécifie les noms des fichiers d’index d’un répertoire,
normalement index.html.
Les principales directives de type bloc
Certaines directives définissent un bloc qui limite la portée des directives qu’il
contient. Mentionnons principalement :
VirtualHost Définir des sites virtuels (cf. Les sites virtuels).
Directory Spécifier la configuration d’un ou plusieurs répertoires
(cf. Répertoires).

Deuxième exemple de site avec une configuration minimum


Le site présenté, bien que peu réaliste, a l’avantage d’être très simple et de permettre
de réaliser des tests de configuration sans être noyé dans l’ensemble des directives.
# mkdir /home/www
# cd /home/www
# mkdir conf htdocs logs
# chmod 777 conf htdocs logs
# vi conf/httpd.conf
# cat conf/httpd.conf
# -- un mini fichier de config
ServerType standalone
Port 8000
User nobody
Group nobody
ServerRoot /home/www
DocumentRoot /home/www/htdocs
AccessConfig /dev/null
ResourceConfig /dev/null
# cd htdocs
# vi index.html # on crée une page Web
# cat index.html
<HTML>
<HEAD>
<TITLE>Essai</TITLE>
</HEAD>
<BODY>
Ceci est ma première page Web sous Apache

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 15-49
Module 15 : Le réseau

</BODY>
</HTML>
# vi page.html
# cat page.html
<HTML>
<HEAD><TITLE>Page</TITLE>
</HEAD>
<BODY>
BONJOUR
<IMG SRC="apache_pb.gif">
<P> ... Le Web !
<A HREF="index.html">cliquer ici</A>
</BODY>
</HTML>
# cp /home/httpd/icons/apache_pb.gif .
# httpd –f /home/www/conf/httpd.conf # on lance le serveur
# netstat -a | grep 8000 # Vérifie si le serveur est à l’écoute du port 8000
# lynx http://localhost:8000/index.html # la page est vue comme une page texte
Remarque
Ce site fonctionne très bien avec le navigateur IE, qui reconnaît le type des documents
transmis sans utiliser obligatoirement MIME. Inversement, les navigateurs Netscape et
Lynx ont besoin des types MIME, transmis par le serveur. Pour un fonctionnement
correct, il faut utiliser les bibliothèques dynamiques référencées dans le fichier
httpd.conf d’origine.

Les sites virtuels


Un même serveur Apache est capable de gérer plusieurs sites Web. Dans la
configuration, on parle de site virtuel (« virtual host »). Chaque site possède sa
configuration propre en plus de la configuration globale du serveur.
On distingue les différents sites virtuels par le couple « adresse IP/ Port ». A partir de
la version 1.1 de HTTP, supportée par les versions récentes d’IE et Netscape, on peut
même distinguer les sites simplement par leur nom. Les requêtes HTTP 1.1
contiennent, en effet, le nom du site du serveur. Le service de nom utilisé, a priori
DNS, doit bien sûr associer les différents noms du serveur à l’adresse IP de
l’ordinateur abritant le serveur Apache.
Exemples
1. Deux sites qui sont associés à deux adresses IP

Port 80
<VirtualHost 172.16.0.1>
DocumentRoot /www/site1
ServerName www.site1.fr
</VirtualHost>
<VirtualHost 172.16.0.2>
DocumentRoot /www/site2
ServerName www.site2.fr
</VirtualHost>

15-50 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 15 : Le réseau

2. Deux sites qui diffèrent par leur numéro de port



Port 80
Listen 172.16.0.1:80
Listen 172.16.0.1:8000

<VirtualHost 172.16.0.1:80>
DocumentRoot /www/site1
ServerName www.site1.fr
</VirtualHost>
<VirtualHost 172.16.0.1:8000>
DocumentRoot /www/site2
ServerName www.site2.fr
</VirtualHost>
3. Deux sites qui diffèrent seulement par leur nom
Port 80
NameVirtualHost 172.16.0.1
<VirtualHost 172.16.0.1>
DocumentRoot /www/site1
ServerName www.site1.fr
</VirtualHost>
<VirtualHost 172.16.0.1>
DocumentRoot /www/site2
ServerName www.site2.fr
</VirtualHost>
Les directives de configuration d’un site virtuel
Les directives suivantes peuvent être présentes dans une balise VirtualHost :
DocumentRoot, ServerName, ServerAdmin, ServerAlias, ScriptAlias, ErrorLog,
TransferLog.

Les applications CGI


Une page Web peut être conçue dynamiquement par une application activée par le
serveur lors de l’accès à cette page. Une telle application est appelée communément
CGI (« Common Gateways Interface »). Ce terme désigne, en fait, les conventions
d’échange entre le serveur et l’application.
Une application CGI peut être écrite dans n’importe quel langage, y compris le shell.
C’est aujourd’hui le langage Perl qui est le plus utilisé.
La configuration par défaut d’Apache permet normalement d’utiliser les CGI.
Les directives de httpd.conf ayant trait aux CGI
Options Cette directive spécifie des options du site ou d’un site virtuel. Par défaut,
la directive a la valeur « all ». Cela signifie que toutes les options sont
acceptées, y compris l’option « +ExecCGI », qui autorise l’utilisation des
CGI. Inversement, l’option « -ExecCGI » désactive les CGI.
ScriptAlias Cette directive spécifie l’emplacement des CGI sur le serveur. Elle
donne également le chemin des CGI au niveau des URL.

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 15-51
Module 15 : Le réseau

Exemple complet utilisant les CGI


# grep ScriptAlias /etc/httpd/conf/httpd.conf
ScriptAlias /cgi-bin /home/httpd/cgi-bin
Cette directive, présente par défaut, indique que les scripts CGI sont stockés dans le
répertoire /home/httpd/cgi-bin. Une requête Web doit inclure /cgi-bin dans le chemin
d’un CGI.
# cd /home/httpd/cgi-bin
# vi essai.pl
# cat essai.pl
# !/usr/bin/perl
# essai.pl
print "Content-Type: text/plain\r\n\r\n" ;
print "Date et heure : <P>\n" ;
print "<H1>", scalar( localtime(time)), "</H1>" ;
# chmod +rx essai .pl
# lynx "http://localhost/cgi-bin/essai.pl"

Les pages PHP


Le module PHP d’Apache (mod_php) permet d’intégrer dans des pages Web des
scripts écrits dans le langage PHP, créé par Rasmus Lerdorf en 1994. Les scripts PHP
sont interprétés par le serveur et non par le navigateur, cas des scripts écrits en
javascript. Le principal avantage de PHP par rapport à Perl/CGI est que le langage
PHP est spécialisé pour le Web, notamment pour l’accès aux bases de données. PHP
est plus simple que le langage Perl, mais aussi moins puissant.
Les pages Web qui incluent des scripts PHP doivent avoir l’extension « .php3 » ou
« .phtml ».
Exemple d’une page Web incluant un programme PHP
# cat php.php3
<HTML>
<HEAD><TITLE>titre</TITLE>
</HEAD>
<BODY>
<p> B O N J O U R
<p>
<?php
// exemple de script PHP
echo "PHP est <b>tres</b>bien";
setlocale("LC_TIME","fr_FR");
$date = strftime("%A %d %B");
echo "<p>voici la date: $date</p>";
?>
<p> S A L U T
</BODY>
</HTML>

Les pages ASP


Les pages ASP (« Active Server Pages ») sont un peu similaires aux pages PHP, en
cela qu’elles sont incluses dans les pages Web, mais s’exécutent sur le serveur. La

15-52 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 15 : Le réseau

grande différence est que le langage PHP est ouvert et qu’ASP est une technologie
propriétaire de Microsoft.
Il existe plusieurs solutions, sous Linux, pour traduire ou interpréter des pages ASP,
mais elles sont partielles du fait de la nature propriétaire d’ASP.
Le module Perl Apache::ASP disponible sous licence GPL
(http://www.nodeworks.com/asp).
Le traducteur ASP2PHP qui traduit du ASP en PHP (http://asp2php.naken/cc).

Réaliser un proxy
Apache, ou un de ses sites virtuels, peut jouer le rôle de proxy. Ceci permet aux
navigateurs qui ont désigné votre serveur comme proxy, de se servir de lui comme
intermédiaire pour accéder aux sites distants. Cette approche a deux intérêts
indépendants et complémentaires à la fois :
Un serveur proxy installé sur un pare-feu (cf. Le chapitre Pare-feu) autorise l’accès
aux sites extérieurs.
Le proxy peut être configuré pour conserver en mémoire et sur disque les différentes
pages auxquelles les clients ont accédé. Le serveur joue ainsi un rôle de « cache », ce
qui améliore les performances d’accès dès qu’un client accède à une des pages déjà
présentes dans ce cache.
Exemple de configuration d’un serveur Apache utilisé comme
proxy
Seules sont indiquées les lignes dont on a enlevé le symbole « # » qui les commentait.
On modifie éventuellement le numéro de port, 80 par défaut. Il faut aussi dans la
directive proxy spécifier le nom du domaine autorisé (Allow). La directive proxy n’est
pas obligatoire.
# cat httpd.conf

Port 8080

# Proxy Server directives. Uncomment the following lines to
# enable the proxy server:
#
<IfModule mod_proxy.c>
ProxyRequests On
#
<Directory proxy:*>
Order deny,allow
Deny from all
Allow from .mon_domaine
</Directory>
## To enable the cache as well, edit and uncomment the following lines:
# (no cacheing without CacheRoot)
#
CacheRoot "/var/cache/httpd"
CacheSize 5
CacheGcInterval 4
CacheMaxExpire 24
CacheLastModifiedFactor 0.1
CacheDefaultExpire 1
#NoCache a_domain.com another_domain.edu joes.garage_sale.com

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 15-53
Module 15 : Le réseau

</IfModule>

Configuration d’un navigateur
Exemple de configuration d’Internet Explorer :
Choisir [Outils][Options Internet][Connexions][Paramètres LAN].
On coche ensuite « Utiliser un serveur proxy » et grâce au bouton « Avancé », on
rentre l’adresse et le port du proxy, ici le port 8080.

Les performances
Plusieurs directives permettent d’ajuster les paramètres système du serveur Apache :
MaxClients Spécifie le nombre maximum de clients gérés
simultanément. Les clients en surnombre sont dans
l’attente qu’un des processus fils se libère.
MaxRequestPerChild Spécifie le nombre maximum de requêtes traitées par un
processus fils avant qu’il ne meure. Si la valeur de cette
directive est 0, les processus fils ne meurent jamais.
StartServers Nombre de processus httpd fils lancés au démarrage.
MaxSpareServers Nombre maximum de serveurs inoccupés que l’on
conserve, par défaut 10.
MinSpareServers Nombre minimum de serveurs inoccupés que l’on
conserve, par défaut 1. Quand le dernier processus fils
devient occupé, le serveur maître lance un nouveau fils.

Les répertoires et leur sécurité d’accès


La directive Directory permet de paramétrer un répertoire. Il est possible, notamment,
de restreindre l’accès à un répertoire d’un site Apache à un nombre limité de postes
clients ou même d’utilisateurs.
Les principales directives incluses dans Directory sont :
Option Spécifie des options associées au répertoire. Chaque option peut
être précédée d’un « + » ou d’un « - » pour l’activer ou la
désactiver. Les principales valeurs sont :
None Aucune option.
All Toutes les options.
Indexes On autorise le client à visualiser le contenu du
répertoire si le fichier index.html n’existe pas.
FollowSymLinks On autorise le client à suivre les liens symboliques.
AccessFileName C’est le nom du fichier de configuration de la sécurité d’accès.
Par défaut c’est « .htpaccess ». Chaque répertoire peut contenir
un fichier portant ce nom et qui configure son accès.
AllowOverride Cette directive indique au serveur les options qui peuvent être
invalidées par un fichier .htpaccess. Les valeurs les plus
importantes sont « All » et « None » qui respectivement
autorisent l’utilisation ou non de .htpaccess.
AuthType Spécifie le protocole d’identification d’un utilisateur. Le
protocole « Basic », qui est le seul actuellement réellement
supporté, transmet les mots de passe en clair.

15-54 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 15 : Le réseau

AuthGroupFile Spécifie le nom du fichier qui contient la définition de groupe


d’utilisateurs. Exemple de fichier :
groupa : pierre paul
groupb : cathy louis
AuthUserFile Spécifie le nom du fichier qui contient les noms et les mots de
passe d’utilisateurs. Ce fichier est créé et mis à jour par la
commande htpasswd.
Require Spécifie une liste de contrôle d’accès au répertoire. On donne en
argument une liste de noms d’utilisateurs précédés du mot clé
« user » ou une liste de groupes précédés du mot clé « group ».
Le terme « valid-user » indique que l’on accepte tout utilisateur
authentifié. Les utilisateurs mentionnés dans la liste de contrôle
doivent être inscrits dans la base définie par la directive
AuthUserFile. Ils doivent également fournir un mot de passe (cf.
L’exemple).
Les directives Order, Allow et Deny autorisent ou interdisent les accès :
order allow, deny Les accès permis priment sur ceux interdits.
allow from all Tous les sites clients sont autorisés.
deny from all Tous les sites clients sont interdits.
allow from 172.16 Les accès provenant du réseau 172.16 sont autorisés.
deny from soc.fr Les accès provenant de clients du domaine soc.fr sont interdits.
Exemples
La configuration du répertoire racine précise le paramétrage par défaut :
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
La configuration de la racine des documents :
<Directory /home/httpd/html>
Options Indexes Includes FollowSymLinks
AllowOverride None
Order allow, deny
Allow from all
</Directory>
On configure l’accès du répertoire /home/httpd/html/paul de telle sorte qu’il ne soit
accessible qu’aux utilisateurs pierre et cathy qui devront, en outre, fournir un mot de
passe pour accéder aux pages de ce répertoire.
# more /etc/httpd/conf/httpd.conf

<Directory /home/httpd/html/paul>
AuthType Basic
AuthName ProjetZ
AuthUserFile /etc/httpd/conf/users
<Limit GET POST>
require valid-user
</Limit>
</Directory>

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 15-55
Module 15 : Le réseau

Remarque
Un fichier .htpaccess contient la même information qu’une directive Directory excepté
la balise elle-même qui n’est pas présente. Pour pouvoir utiliser un fichier .htpaccess,
il faut que la directive « AllowOveride » du répertoire (ou par défaut des répertoires
de plus haut niveau) le permette, par exemple en ayant la valeur « All ».
# htpasswd -c /etc/httpd/conf/users pierre
New password:
Re-type new password:
Adding password for user pierre
Cette commande, avec l’option « –c », crée le fichier de mot de passe
/etc/httpd/conf/users et y ajoute une ligne pour l’utilisateur pierre. Le mot de passe y
est conservé crypté.
Création du mot de passe de cathy.
# htpasswd /etc/httpd/conf/users cathy
# lynx ’http://localhost/jf/page.html’
La requête à une page d’un répertoire protégé déclenche la saisie d’un couple nom/mot
de passe au niveau du navigateur.

Les modules
La conception du logiciel Apache est modulaire. Il est tout à fait possible d’ajouter des
modules, grâce à une API créée par les concepteurs d’Apache. Les sources étant
disponibles, il est possible d’inclure les modules additionnels, dès la compilation, afin
d’avoir un logiciel plus performant. La distribution RedHat utilise, par défaut,
l’édition de liens dynamiques (cf. Module 6 : Les processus). Les modules httpd_core
et mod_so sont les seuls présents dans l’exécutable. Les autres sont chargés à la
demande en suivant les directives du fichier de configuration.
Les directives associées aux modules sont : LoadModule, AddModule,
ClearModuleList.
Remarques
C’est le module mod_so qui permet le chargement des autres modules
dynamiquement.
La liste des modules présents dans le fichier de configuration ne peut être altérée que
par un expert qui connaît bien les sources du logiciel.

Les procédures de tests et les fichiers logs


Il est important de valider le fonctionnement du serveur et d’examiner les fichiers
« logs », riches en informations.
Exemples de tests de bon fonctionnement du serveur
# ps –ef | grep httpd # les processus Apache sont-ils présents ?
# netstat –a | grep 80 # le port 80 est-il actif ?
# lynx ’http://localhost’ # accès à la page d’accueil via le navigateur Lynx
# telnet localhost 80 # on utilise telnet comme client universel
GET /index.html HTTP/1.0
Remarque
La saisie de la requête HTTP précédente (suivie de deux retours chariot) doit
permettre de visualiser le source de la page d’accueil.
Les directives associées au log sont :

15-56 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 15 : Le réseau

TransferLog
CustomLog Spécifie le nom et le format du fichier log qui enregistre les
requêtes des clients. Le fichier est normalement
/var/log/httpd/access_log et le format « custom ».
ErrorLog Spécifie le nom du fichier log qui enregistre les erreurs,
normalement /var/log/httpd/error_log.
HostnameLookup Précise si Apache réalise un « reverse-DNS », c’est-à-dire une
recherche du nom du client pour la mise à jour des logs. Par
défaut, la valeur est « off ».
LogLevel Indique le niveau de log, par défaut « warm »
(cf. Module 12 : Le noyau - syslogd).
Extraits des fichiers de logs
# tail /var/log/httpd/access_log
192.168.218.1 - - [10/Dec/2000:22:54:25 +0100] "GET /~jf/toto.txt HTTP/1.1" 200 19
192.168.218.1 - - [10/Dec/2000:23:30:39 +0100] "GET /manual/mod/index.html
HTTP/1.1" 304 -
192.168.218.1 - - [10/Dec/2000:23:34:00 +0100] "GET /manual/mod/mod_so.html
HTTP/1.1" 200 5976
# tail /var/log/httpd/error_log
[Sun Dec 10 22:22:38 2000] [notice] caught SIGTERM, shutting down
[Sun Dec 10 22:22:44 2000] [notice] Apache/1.3.12 (Unix) (Red Hat/Linux) PHP/3.
0.15 mod_perl/1.21 configured -- resuming normal operations
[Sun Dec 10 23:28:36 2000] [crit] (98)Adresse déjà utilisée: make_sock: could not
bind to port 80
Connaître l’état du serveur
On peut connaître l’état du serveur grâce à l’URL http://serveur/server-status.
Il faut, pour que cela fonctionne, enlever les commentaires associés à la directive
<Location /server-status>…</Location>. Pour obtenir le maximum de
renseignements, on enlève également le commentaire devant la directive
« ExtendedStatus On ».

Références pour Apache


Le manuel : httpd(8), htpasswd(1).
Le fichier de configuration, abondamment commenté : /etc/httpd/conf/httpd.conf.
La documentation HTML en ligne, accessible par un navigateur à partir du site web
géré par défaut par le serveur Apache : http://localhost/manual/index.html.
Le HOWTO : www-HOWTO.
Le site Internet de référence : http://www.apache.org.
Le livre Apache, The Definitive Guide (cf. Bibliographie).

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 15-57
Module 15 : Le réseau

Samba
SAMBA

# smb.conf
[global]
workgroup = WORKGROUP
security = share
null passwords = yes

[jeux]
comment = jeux en freeware
path = /usr/games/windows
public = yes
read only = yes
browsable = yes

TSOFT - Linux Administration Module 15 : Le réseau - 15.13

Samba est un logiciel libre, sous licence GNU, qui transforme Linux en un véritable
serveur de fichiers et d’imprimantes LAN MANAGER (Windows 3.x, 9x et NT). Il
concurrence Windows sur son propre terrain.

Architecture réseau
Samba utilise le protocole SMB (« Server Message Block ») de Microsoft, pour
accéder aux ressources.
SMB utilise le protocole Netbios RFC pour gérer les noms des ressources et l’échange
de données.
Netbios RFC correspond à la version de Netbios pour TCP/IP.
Le protocole Browser, qui repose sur SMB, permet de connaître la liste des serveurs
disponibles et les ressources d’un serveur. Le « Master Browser » est l’ordinateur qui
centralise les ressources.

Nom réseau et accès à une ressource


Une ressource réseau LAN MANAGER, une imprimante ou un répertoire partagé, est
accessible dans le réseau grâce à son nom de partage (« sharename »). Le nom de
partage « \\mars\jeux » désigne la ressource partagée jeux de l’ordinateur mars.
Le nom de la ressource partagée doit être connu du client pour qu’il l’utilise. Il lui
associe alors une lettre de lecteur (Lettre:) local qu’il utilisera ensuite pour la
désigner :
C:\> NET USE U: \\mars\jeux
C:\>U:
U:\>

15-58 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 15 : Le réseau

Les composants du logiciel


Nous mentionnons, dans le tableau qui suit, les principaux composants du logiciel
Samba. Nous renvoyons l’utilisateur aux manuels des commandes et des fichiers pour
approfondir la connaissance du paquetage.
smbd Le démon qui fournit les services de partage de fichier set
d’imprimantes SMB.
nmbd Le démon qui fournit le service Netbios et le service Browser. Il
peut également servir de serveur wins. Les deux démons, smbd et
nmbd, doivent être exécutés au démarrage de Linux.
smbclient Il permet à Linux d’accéder à des ressources d’un serveur SMB.
testparm Ce programme permet de tester la configuration d’un serveur.
testprns Ce programme permet de tester les imprimantes.
smbstatus Affiche les connexions en cours.
nmblookup Ce programme permet d’accéder au service de noms Netbios et de
connaître le « Master Browser ».
smbpasswd Il permet de changer les mots de passe sur un serveur LAN
MANAGER.
Le démon smbd
smbd [ -D ] [ -a ] [ -d niveau_de_debug ] [ -l fichier_log ]
[ -p numéro_de_port ] [ -O options_socket ]
[ -s fichier_de_configuration ]
-D smbd est lancé comme démon détaché.
-a Le fichier log est initialisé à chaque démarrage, il est en mode append par
défaut.
-d n Définit le niveau de rapport fait dans le fichier log. Une valeur de 0
à 10. 0 est utilisée par défaut et seules les erreurs critiques sont rapportées.
-l fic Précise les noms des fichiers logs. Les noms sont log.debug, log.in et
log.out.
-p N° Indique le numéro de port. La valeur par défaut est 139.
-O soc Indique les options « sockets » (cf. smb.conf(5)).
-s fic Indique le fichier de configuration.
Le démon nmbd
nmbd [ -D ] [ -H netbios hosts file ] [ -d debuglevel ] [ -l log basename ]
[ -n netbios name ] [ -p port number ] [-s configuration file ]
Le démon nmbd est un serveur qui sait répondre aux demandes de noms Netbios des
clients. Si le nom de l’hôte où il s’exécute est spécifié, à moins que l’option « -n » ait
été précisée, il renvoie son adresse IP.
nmbd peut aussi être utilisé comme serveur WINS.
La commande smbstatus
smbstatus [ -b ] [ -d ] [ -p ] [ -s configuration file ]
La commande smbstatus affiche les connexions Samba actives.
-b Rapport succinct
-d Rapport détaillé
-p Liste de tous les processus Samba

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 15-59
Module 15 : Le réseau

Lancement et arrêt du service


Le démarrage et l’arrêt du service peut être réalisé grâce aux scripts /etc/rc.d/smb. On
exécute alors les commandes :
# cd /etc/rc.d/init.d
# ./smb start # Démarrage du service
# ./smb stop # Arrêt du service
Les mêmes opérations peuvent être réalisées par le script d’administration
/usr/sbin/samba :
# samba start # Démarrage du service
# samba stop # Arrêt du service

La configuration
La configuration de Samba est réalisée à travers le fichier smb.conf, normalement situé
sous /etc.
Ce fichier comporte des sections. Chaque section est identifiée par un nom entre
crochets et définit une ressource partagée, par exemple [jeux]. Il existe trois sections
spéciales prédéfinies, [global], [homes] et [printers]. Les sections [homes] et [printers]
font des répertoires de connexion des utilisateurs et des imprimantes du système des
ressources partagées.
On doit spécifier le groupe de travail ou le domaine grâce au champ workgroup :
workgroup= WORKGROUP
Par ailleurs, la configuration par défaut de ces trois sections est généralement
satisfaisante. Si l’on désire ajouter des sections, on édite le fichier smb.conf et on y
ajoute une section comme dans l’exemple du transparent.
[ section ]
argument = valeur ...
Remarques
Le nom Netbios du serveur est, par défaut, son nom réseau (uname –n). On peut
forcer sa valeur grâce à la directive « netbios name= ».
Si l’on veut que Samba joue le rôle de serveur Wins, on utilise la directive
« wins support=yes ».
Le début d’une section marque la fin de la précédente. Il n’y a pas de différence entre
les minuscules et les majuscules.
Le paramétrage par défaut de la section [printers] qui configure l’impression, est
généralement correct et permet l’accès aux imprimantes définies dans le fichier
/etc/printcap.

La configuration d’une ressource disque


Le transparent du début de chapitre donne un exemple type de paramétrage d’une
ressource disque. Le fichier smb.conf fournit un grand nombre d’exemples. Il est très
simple de s’en inspirer. Voici les principaux paramètres utilisés :
comment = commentaire
Le commentaire qui apparaît lorsque l’on affiche les ressources dans le voisinage
réseau ou par la commande net view \\le_serveur de Windows.
path = chemin

15-60 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 15 : Le réseau

Le chemin d’accès à la ressource. Le chemin peut utiliser des variables Samba,


comme %m (l’ordinateur client), %u (le nom de l’utilisateur).
browseable = yes | no
Si ce paramètre a la valeur « no », la ressource n’est pas visible dans la liste des
ressources du voisinage réseau ou quand on utilise la commande
net view \\le_serveur de Windows.
valid users = Liste d’utilisateurs
Liste d’utilisateurs ou de groupes ayant accès à la ressource. Les groupes sont
précédés d’une arobase (@).
invalid users = Liste d’utilisateurs
Liste d’utilisateurs ou de groupes n’ayant pas accès à la ressource.
public = yes | no (« guest ok » est synonyme de « public=yes »)
Si « public=yes », n’importe quel utilisateur (un invité) est autorisé à accéder à la
ressource. L’accès se fera sous le compte défini par le paramètre « guest account= »
(cf. Paragraphe sécurité).
only guest (ou guest only = yes)
Seul un accès en tant qu’invité est autorisé pour accéder à la ressource.
read only = yes | no
writeable = yes | no
Si « read only = yes » ou « writeable = no », la ressource est accessible en lecture
seulement. Si « read only = no » ou « writeable = yes », la ressource est accessible en
lecture et en écriture.
create mask = 0744
Cette option a la même signification que la commande Unix umask.

La sécurité
Sécurité au niveau des utilisateurs ou des ressources
Pour limiter le partage d’une ressource, SMB offre le choix entre deux techniques,
exclusives l’une de l’autre :
• USER-LEVEL
Chaque utilisateur a des droits propres à chaque ressource qu’il peut utiliser. Une
ACL (« Access Control List ») est associée à chaque ressource, qui indique les
utilisateurs et les groupes qui ont accès à la ressource. Cette stratégie implique que
tous les utilisateurs aient un compte sur le serveur.
Dans le cas de Linux, les comptes SMB correspondent logiquement à des comptes
Unix définies dans /etc/passwd. C’est pourquoi un utilisateur qui se connecte sous
Windows doit posséder le compte correspondant sous Linux.
• SHARE-LEVEL
Les mêmes droits s’appliquent à tous les utilisateurs. Il suffit de connaître le mot
de passe associé à la ressource, si elle en possède un.
Dans tous les cas, pour pouvoir accéder à des ressources réseaux, un utilisateur
Windows doit se connecter en utilisant un nom et un mot de passe. Ces informations
sont ensuite transmises lors de l’accès aux ressources.

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 15-61
Module 15 : Le réseau

Le chiffrement des mots de passe


Par défaut, Windows 95 et les premières versions de Windows NT ne chiffraient pas
les mots de passe lors des transferts réseaux. Windows 98 et Windows NT pack 3 et
supérieur chiffrent les mots de passe. La configuration par défaut de /etc/smb.conf
n’implique pas de chiffrement et n’est donc utilisable, en l’état, qu’avec Windows 95.
Dans le cas où les mots de passe sont transmis en clair, ils peuvent résider dans le
fichier /etc/passwd. Si l’on choisit le chiffrement des mots de passe, il faut les
mémoriser dans un fichier, par exemple /etc/smbpasswd. Le fichier smb.conf indique
son chemin. Le fichier conserve les mots de passe cryptés, au format LAN
MANAGER et au format Windows NT.
Il faut également créer et modifier les mots de passe SMB. Cette opération est réalisée
par la commande smbpasswd.
Ajouter un compte au fichier, qui sera créé au besoin.
# smbpasswd -a alice
New SMB password:
Retype new SMB password:
Password changed for user alice.
Remarque
Le script mksmbpasswd.sh permet de créer un compte SMB à partir du fichier
/etc/passwd. L’exemple qui suit illustre la création du compte de pierre.
# grep pierre /etc/passwd | mksmbpasswd.sh >> /etc/smbpasswd
Modifier un compte existant.
# smbpasswd catherine
Mettre un mot de passe vide, si cela est autorisé (cf. La section suivante).
# smbpasswd -n thomas
L’utilisateur peut modifier son propre mot de passe.
$ smbpasswd
Remarque
Il est possible, en modifiant les registres du système Windows, d’autoriser la
transmission des mots de passe en clair. Par exemple sur un système Windows 98 :
HKEY_LOCAL_MACHINE\System\Current\ControlSet\Services\VxD\VNESETUP\
Edit->New-Dword « New Value#1 ».

Les paramètres de la sécurité (section [global])


Les paramètres généraux qui gèrent la sécurité apparaissent dans la section globale :
security = user | share | server | domain
C’est le paramètre le plus important. Il indique si l’on choisit l’accès en User-level
(user), ou en share-level (share). Si l’on choisit User-level, l’authentification peut être
réalisée par un autre serveur (server). Le choix « domain » est équivalent en première
approximation au choix « user » (cf. La documentation pour complément).
passwd server = serveur d’authentification
Ce paramètre contient l’adresse du serveur d’authentification si l’on a choisi la valeur
« server » pour le paramètre « security= ». Ce serveur est soit un autre serveur Samba,
avec le paramètre security = user, soit un serveur NT primaire de domaine (PDC).
encrypt passwords = yes | no

15-62 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 15 : Le réseau

smb passwd file = /etc/smbpasswd


C’est le chemin d’accès au fichier des mots de passe SMB, si l’on choisit de crypter
les mots de passe (« encrypt passwords = yes »).
null passwords = yes | no
Si ce paramètre est égal à « yes », un utilisateur peut avoir un mot de passe vide.
guest account = un_compte_unix
Indique le compte Unix associé à l’accès d’une ressource publique. Par défaut c’est le
compte « nobody ».
map to guest = never | bad user | bad password
Ce paramètre précise ce que fait le serveur Samba si l’utilisateur donne un nom ou un
mot de passe erroné. La valeur par défaut « never » implique que le serveur refuse la
connexion en cas d’erreur. Si le paramètre a la valeur « bad user », l’utilisateur est
connecté sous le compte associé au compte guest dans le cas où le nom d’utilisateur
n’existe pas. La valeur « bad password » aboutit au même résultat dans le cas où le
compte existe mais que le mot de passe est incorrect.
Exemples
Accès en share-level à un répertoire pub accessible à tout le monde.
# more /etc/smb.conf
[global]
workgroup = WORKGROUP

security = share
null passwords = yes

[pub]
comment = répertoire accessible à tout le monde
path = /home/pub
public = yes
readonly = no
# mkdir /home/pub ; chmod 777 /home/pub # on crée le répertoire
Accès en user-level, sans chiffrement (la configuration par défaut).
La section prédéfinie [homes] permet l’accès pour chaque utilisateur à un répertoire
privé. La section [staff] décrit un répertoire accessible en écriture au groupe staff et à
l’utilisateur paul.
# more /etc/smb.conf
[global]
workgroup = WORKGROUP

security = user
[homes]
comment = Home Directories
browseable = no
writable = yes
[staff]
path = /home/staff
public = yes
writeable = yes
write list = @staff, paul

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 15-63
Module 15 : Le réseau

# mkdir /home/staff
# useradd paul
# passwd paul
# chown paul /home/staff
# chgrp staff /home/staff
# chmod 775 /home/staff
Accès en user-level, avec chiffrement.
La section [rpierre] décrit un répertoire accessible uniquement à pierre.
# more /etc/smb.conf
[global]
workgroup = WORKGROUP

security = user
encrypt passwords = yes
smb passwd file = /etc/smbpasswd

[rpierre]
path = /usr/pierre
valid users = pierre
public = no
writeable = yes
create mask = 0700
# mkdir /usr/pierre
# useradd pierre
# smbpasswd –a pierre
# chown pierre /usr/pierre
# chmod 700 /usr/pierre

Samba comme serveur primaire de domaine NT


Les postes de travail Windows peuvent faire partie d’un domaine Windows NT. La
gestion centralisée des comptes sur un poste appelé Serveur primaire de domaine
(« primary domain controler »), le PDC, en représente le principal avantage. Si on
utilise cette notion de domaine, les connexions sont validées directement ou
indirectement par le PDC.
Samba peut jouer le rôle de serveur primaire de domaine Windows NT. Le
paramétrage associé est plus ou moins complexe selon les objectifs. Nous renvoyons
le lecteur aux éléments donnés en référence pour une étude complète. Ce qui suit est
un petit exemple commenté.
Sur le serveur
# more /etc/smb.conf
[global]
# --- on doit donner le nom du domaine que l’on crée
workgroup = DOMAIN
# --- la sécurité doit être de type user-level
security = user
# --- les mots de passe doivent être chiffrés
encrypt passwords = yes
smb passwd file = /etc/smbpasswd
# --- Samba effectue les accès au domaine
domain logons = yes

15-64 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 15 : Le réseau

# --- Samba doit jouer le rôle de « Master Browser »


os level = 34
local master = yes
preferred master = yes
domain master = yes
[netlogon]
# --- Cette ressource doit être accessible à tous les utilisateurs
comment = service de connexion au domaine
path = /export/samba/logon
public = no
writeable = no
browsable = no
# mkdir /export/samba/logon
# chmod 770 /export/samba/logon
Sur un poste Windows 95/98
Si l’on veut qu’un poste Windows 95/98 utilise le serveur Samba pour se connecter au
domaine, on doit changer la configuration comme suit :
Dans la fenêtre de configuration réseau, obtenue en cliquant avec le bouton droit sur
l’icône « Voisinage réseau », on active l’onglet « Configuration ». Dans la liste des
composants réseaux, on choisit la ligne « Client pour les réseaux Microsoft ». On
clique sur le bouton « Propriétés », une boîte de dialogue apparaît. On coche la case
« Ouvrir la session sur un domaine Windows NT » et l’on rentre ensuite le nom du
domaine. Après avoir cliqué sur « OK », on redémarre la machine.
Avec l’éditeur de registre, on se positionne sur la rubrique
HKEY_LOCAL_MACHINE\System\Current\ControlSet\Services\VxD
\VNETSETUP\. En utilisant le menu [Edit][New][Dword], on crée l’entrée
EnablePlainTextPassword avec la valeur 1.
Sur un poste Windows NT appartenant au domaine
Pour qu’un ordinateur fonctionnant sous Windows NT fasse partie d’un domaine, il
faut d’abord créer, sur le PDC, un utilisateur spécial qui est le nom de l’ordinateur
suivi du caractère « $ ».
Si Linux est utilisé comme PDC, il faut créer un compte Linux pour chaque client NT,
dans la base /etc/passwd, par exemple pour la machine venus :
venus$:*:680:100:La machine venus:/dev/null:/dev/null
On crée ensuite le mot de passe via smbpasswd :
# smbpasswd -a –m venus # ne pas mettre le « $ » !

Tests et accès aux ressources


Les tests d’accès aux ressources du serveur peuvent être menés à partir d’un poste
Windows, d’un poste Linux ou du serveur lui-même.
Poste Windows
Pour afficher les serveurs disponibles, on clique sur l’icône « Voisinage réseau » ou
on lance la commande net view. Au moins un poste doit être configuré en « master
browser ».
Pour afficher les ressources d’un serveur, on clique sur le serveur dans la fenêtre
« Voisinage réseau » ou on lance la commande net view \\nom_du_serveur.

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 15-65
Module 15 : Le réseau

Pour accéder à une ressource, on clique sur la ressource dans la fenêtre « Voisinage
réseau » ou on lance des commandes :
c:\> net use H: \\le_serveur\la_ressource
c:\> H: on se déplace dans le répertoire distant
Poste Linux
Sur un poste Linux, on peut utiliser les commandes fournies dans le paquetage Samba,
principalement smbclient qui émule un client SMB. En mode interactif cette
commande ressemble à la commande ftp de transfert de fichiers, mais elle dialogue
avec un serveur SMB. L’utilisation de cette commande est un bon moyen de tester une
configuration Samba mais aussi d’accéder en tant que client à un serveur Windows.
Tester si le format de smb.conf est correct
$ testparm
Afficher les ordinateurs actifs d’un workgroup ou d’un domaine
$ nmblookup WORKGROUP
Afficher les ressources d’un serveur, la commande demande un mot de passe,
éventuellement vide
$ smbclient -L le_serveur
Password :
L’opération est identique, mais on demande à ne pas entrer le mot de passe. Le
serveur est local
$ smbclient -L localhost -N
On accède à une ressource de type disque (utilisation proche de ftp)
$ smbclient //serveur/ressource mot_de passe -U utilisateur
smb> help

On accède à une ressource de type imprimante
$ smbclient //serveur/imprimante -P
smb> print fichier
smb> quit

Logs
En plus de l’utilisation des commandes smbclient ou testparm, un moyen de
dépannage de Samba est constitué par la lecture de ses journaux de bord.
Plusieurs paramètres de la section [global] permettent de paramétrer ses journaux.
log file = /var/log/samba/log.%m
Ce paramètre indique le nom du fichier log de Samba. En utilisant la variable %m,
Samba va constituer un fichier log par machine cliente.
max log size = 5000
Ce paramètre fixe la taille maximum du fichier log en kilo-octets. Si le maximum est
atteint, Samba renomme le fichier avec l’extension .o.

15-66 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 15 : Le réseau

debug level = 3
Spécifie le niveau de détails des informations écrites dans les journaux. Le paramètre
peut prendre les valeurs de 0 à 10, par défaut 0, la valeur 3 est la plus utile dans un
objectif de dépannage.
syslog = 1
Indique quels sont les messages envoyés au service syslog.
0 Uniquement les erreurs (error)
1 Les avertissements (warning)
2 Remarque (notice)
3 Informations (info)
syslog only = yes | no
Si ce paramètre est égal à « yes », Samba n’utilise pas ses propres journaux, mais
uniquement le service syslog.

Références
HOWTO : SMB-HOWTO.
Le fichier /etc/smb.conf. Ce fichier est le fichier de configuration de Samba, il est
abondamment commenté, et contient de nombreux exemples de configuration mis en
commentaire.
Le manuel : samba(7), smb.conf(5), smbclient(1), smbpasswd(1), smbd(8),
swat(8) (le logiciel swat permet l’administration d’un serveur Samba à
partir d’un navigateur, tel Netscape).
Le répertoire /usr/doc/samba-*/. Ce répertoire contient une grande masse
d’informations et de nombreux exemples. Tout ce qui est nécessaire à l’utilisation de
Samba s’y trouve.
Les livres : (cf. La bibliographie).
Internet : le site officiel de Samba, http://www.samba.org.

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 15-67
Module 15 : Le réseau

Serveur DNS (named)


Sserveur DNS (named)

„ Mode de fonctionnement de named


« Primary master »
« Secondary master »
« Caching only »
„ Les fichiers de configuration de named
/etc/named.conf Fichier de configuration générale
named.root Les serveurs du domaine racine
named.local Description de la boucle locale
named.hosts La description d’un domaine
named.rev Les adresses IP à partir des noms

TSOFT - Linux Administration Module 15 : Le réseau - 15.14

Introduction
Rappelons que le service DNS (« Domain Name Service ») permet à un hôte qui
connaît le nom d’un autre hôte du réseau, mais pas son adresse IP, de l’obtenir en
s’adressant à un serveur DNS.
Dans le système Linux, le démon named joue le rôle de serveur DNS. Il peut être
configuré de trois manières différentes :
• « caching-only » : un serveur DNS tampon n’a pas autorité pour répondre à une
requête, mais il peut, par contre, retransmettre la demande à un autre serveur si la
requête est récursive, et répondre ensuite au client. Le serveur mémorise, en
mémoire tampon, les réponses pour faire face à de nouvelles requêtes identiques.
• « primary master » : un serveur DNS maître principal est la source des
informations associées à un domaine DNS. Il a autorité pour répondre à une
requête.
• « secondary master » : un serveur DNS maître secondaire contient une copie des
informations mises à jour au niveau du serveur maître principal. Il a également
autorité pour répondre à une requête.
La configuration du démon named est faite dans les fichiers suivants :
named.conf : ce fichier indique les fonctions de named et les noms des fichiers de
configuration. Les noms utilisés dans la suite sont donnés à titre d’exemple.
named.ca : ce fichier contient les adresses IP des serveurs du domaine racine
(« root » ou « . »). On peut utiliser le fichier fourni dans le paquetage.
named.local : ce fichier permet de résoudre l’adresse de boucle locale (« localhost »).
named.hosts : ce fichier, qualifié de « zone file », contient les noms DNS et les
adresses IP correspondantes des hôtes d’un domaine.

15-68 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 15 : Le réseau

named.rev : ce fichier, également qualifié de « zone file », contient les données


inverses du précédent et permet de connaître le nom d’une machine à partir de son
adresse IP.
Un serveur DNS principal doit posséder tous ces fichiers. Un serveur DNS secondaire
ou un serveur DNS tampon peuvent ne disposer que des fichiers named.root et
named.local en plus du fichier /etc/named.conf.

Le fichier /etc/named.conf
Les commentaires commencent par // ou # ou bien sont de type C (/* …*/).
La structure du fichier est la suivante : une suite de sections terminées par « ; ».
Chaque section est introduite par un en-tête suivi d’un bloc délimité par des accolades.
Le bloc contient une suite d’énoncés terminés par « ; ».
Une section « zone » décrit un domaine DNS.
L’énoncé type précise le rôle du serveur :
type master ; # serveur maître
type slave ; # serveur secondaire
type hint ; # serveur cache
L’énoncé « file » précise le nom du fichier qui contient la description du domaine.
Voici un exemple d’une section décrivant un domaine pour laquelle le serveur joue le
rôle de serveur principal :
zone "societe.com"{
type master;
file "societe.com";
};
Voici un autre exemple, mais pour un serveur secondaire :
zone "societe2.com"{
type slave;
file "societe2.com";
masters {
192.0.0.4 ; # adresse IP du serveur primaire
}
};
La première section est généralement la section « options », qui décrit des
caractéristiques communes à l’ensemble des sections, par exemple le répertoire qui
contient les fichiers de configuration. Exemple :
options {
directory "/var/named";
};
Remarque
Le nom et le format du fichier de configuration de named ont changé à partir de la
version 8 du paquetage bind. L’ancien fichier s’appelait named.boot. Le script Perl
/usr/doc/bind-*/named-bootconf/Grot/named-bootconf.pl permet la conversion de
l’ancien format au nouveau.

Format d’un enregistrement de ressources DNS


Les fichiers named.ca, named.rev, … contiennent des enregistrements de ressources
DNS. Nous rappelons que les noms exacts des fichiers d’enregistrement de ressources
sont spécifiés dans le fichier named.conf. La structure des ressources DNS est la
suivante :

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 15-69
Module 15 : Le réseau

[nom] [durée-de-vie] classe type donnée


• nom : c’est le nom d'un objet, par exemple un nom DNS. Si le nom est absent,
l’enregistrement référence l’objet précédent.
• durée-de-vie : c’est la durée de vie en secondes de l’objet dans le tampon
(« cache »). En son absence, elle est égale à la valeur du champ minimum de
l’enregistrement SOA.
• classe : la classe indique le réseau de transport utilisé. Les réseaux TCP/IP sont
définis par la classe IN " (Internet).
• type : c’est le type d’enregistrement. Les principaux types sont :
SOA (« Start Of Authority ») Débute un enregistrement général d’un fichier de
zone.
NS (« Name Server ») Identifie un serveur de nom.
A (« Address ») Permet la conversion d’un nom DNS en adresse
IP.
PTR (« Pointer ») Permet la conversion d’une adresse IP en nom
DNS.
MX (« Mail eXchange » ) Identifie un serveur de messagerie.
CNAME (« Canonical Name ») Donne un alias à une machine.
HINFO (« Host Information ») Décrit l’architecture matérielle et le système
d’exploitation d’un hôte.
WKS (« Well Known Services ») Décrit les services disponibles.
• donnée : c’est la donnée de l’enregistrement, par exemple l’adresse IP pour un
enregistrement de type A.

L’enregistrement SOA
Syntaxe
@ ttl IN SOA nom_du_serveur_principal e-mail de 1 administrateur (
numéro_de_série
rafraîchissement
nouvel_essai
expire
minimum )
IN NS nom_d_un_serveur_maître

Description
Un enregistrement SOA indique les serveurs maîtres d’un domaine et les paramètres
généraux de l’ensemble des enregistrements. Le numéro de série doit être incrémenté
à chaque modification. Le paramètre rafraîchissement, exprimé en secondes, indique
à un serveur secondaire le temps au bout duquel il vérifie si le numéro de série a été
modifié. Si c’est le cas, le fichier de zone est téléchargé de nouveau.
Le paramètre nouvel_essai, exprimé en secondes, indique à un serveur secondaire le
temps au bout duquel il vérifie de nouveau le numéro de série, en cas d’échec.
Le paramètre expire, exprimé en secondes, indique la durée de vie des données.
Le paramètre minimum, exprimé en secondes, indique le temps minimum durant
lequel les données sont conservées dans la mémoire tampon (cache).

15-70 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 15 : Le réseau

Remarques
• Dans l’adresse e-mail de l’administrateur, le caractère « @ » est remplacé par le
caractère « . ».
• Le caractère « ; » indique le début d’un commentaire.

Exemples de fichiers de configuration


# cat /etc/named.conf
options {
directory "/var/named";
};
zone "." {
type hint;
file "named.ca";
};
zone "societe.com"{
type master;
file "societe.com";
};
zone "0.0.127.in-addr.arpa"{
type master;
file "named.local";
};
zone "0.0.192.in-addr.arpa"{
type master;
file "societe.com.rev";
};
# cat /var/named/societe.com
@ 86400 IN SOA annuaire.societe.com. pierre.societe.com. (
1997022700 ; serial
28800 ; refresh
14400 ; retry
3600000 ; expire
86400 ; default_ttl
)
@ IN NS annuaire.societe.com.
IN NS bottin.societe.com.
localhost IN A 127.0.0.1
venus IN A 192.0.0.1
saturne IN A 192.0.0.2
annuaire IN A 192.0.0.3
bottin IN A 192.0.0.4
www IN CNAME venus.societe.com.
ftp IN CNAME saturne.societe.com.
societe.com. IN MX 10 venus.societe.com.
IN MX 20 saturne.societe.com.
saturne IN HINFO i586/133 NT4
venus IN HINFO i586/400 linux
# cat /var/named/societe.com.rev
@ 86400 IN SOA annuaire.societe.com. pierre.societe.com. (
1997022700 ; serial
28800 ; refresh

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 15-71
Module 15 : Le réseau

14400 ; retry
3600000 ; expire
86400 ; default_ttl
)
@ IN NS annuaire.societe.com.
IN NS bootin.societe.com.
1 IN PTR venus.societe.com.
2 IN PTR saturne.societe.com.
3 IN PTR annuaire.societe.com.
4 IN PTR bottin.societe.com.
# cat /var/named/named.local
@ 86400 IN SOA localhost. root.localhost. (
1997022700 ; serial
28800 ; refresh
14400 ; retry
3600000 ; expire
86400 ; default_ttl
)
@ IN NS localhost.
1 IN PTR localhost.

# tail /var/named/named.ca
; temporarily housed at ISI (IANA)
;
. 3600000 NS L.ROOT-SERVERS.NET.
L.ROOT-SERVERS.NET. 3600000 A 198.32.64.12
;
; housed in Japan, operated by WIDE
;
. 3600000 NS M.ROOT-SERVERS.NET.
M.ROOT-SERVERS.NET. 3600000 A 202.12.27.33
; End of File

nslookup
La commande nslookup est l’outil adéquat pour mettre au point une configuration
DNS et obtenir des informations provenant de n’importe quel serveur DNS.
L’exemple qui suit illustre quelques possibilités de la commande nslookup.
Aide en ligne.
> help
Traduit un nom DNS en adresse IP.
> www.societe.com
Idem, mais on utilise un nom appartenant au domaine courant.
> www
Change de serveur de nom.
> server name.bidon.com
Change le domaine par défaut.
> set domain=societe.com
Visualise la liste des serveurs de nom d’un domaine.

15-72 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 15 : Le réseau

> set type=NS


> societe.com
Visualise la liste des serveurs de messagerie d’un domaine.
> set type=MX
> societe.com
Spécifie le type de données recherchées, traduit une adresse IP en nom.
> set type=PTR
> 192.0.0.3
Récupère la description d’une zone et visualise les résultats.
> ls societe.com > fic
> view fic
Met fin à une session.
> exit
Remarques
• La commande nslookup ne fonctionne pas si le « reverse-DNS » n’a pas été
configuré.
• Au lancement de nslookup, on peut préciser l’adresse d’un serveur DNS :
# nslookup - serveur.
Si on ne le fait pas, nslookup adressera ses requêtes au serveur configuré dans le
fichier /etc/resolv.conf.

Le démon named
Le démon named doit être activé sur un serveur.
Syntaxe
named [-d niveau_debogage] [-p port] [-(b|c) fichier_de_configuration]
[-f –q –r ] [ -u utilisateur] [-g groupe] [-t repertoire][-w repertoire]
[fichier_de_configuration]
Le fichier de configuration est indiqué par le dernier argument ou est introduit par les
options « –b » ou « –c », par défaut c’est le fichier /etc/named.conf.
-d niv Active le débogage en précisant le niveau.
-p port Indique le port réseau d’écoute.
-f Le démon s’exécute en avant-plan.
-q Trace les requêtes.
-r Supprime la récursion.
-u util Le compte utilisateur sous lequel le serveur s’exécute.
-g gr Le compte groupe sous lequel le serveur s’exécute.
-t rep Le répertoire utilisé pour effectuer un « chroot ».
-w rep Le répertoire de travail (par défaut le répertoire courant).

Les signaux
Le démon réagit à la réception de certains signaux. L’envoi de signaux est
particulièrement utile pour la mise au point. Le tableau qui suit en donne la liste.
SIGHUP Le serveur relie sa base de données.

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 15-73
Module 15 : Le réseau

SIGINT Le serveur écrit sa base de données dans un fichier (named_dump.db).


SIGILL Le serveur écrit des statistiques dans un fichier (named.stats).
SIGTERM Met fin proprement au serveur.
SIGUSR1 Active le débogage (s’il est déjà activé, incrémente le niveau).
SIGUSR2 Désactive le débogage.
Les fichiers
/etc/named.conf Le fichier de configuration principal.
/var/named/named.run Contient les informations de débogage.
/var/named/named_dump.db La base de données du serveur.
/var/named/named.stats Statistiques du serveur.

Références pour DNS


HOWTO : DNS-HOWTO
Livre : DNS and Bind par Liu chez O’Reilly
Internet : http://www.isc.org

15-74 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 15 : Le réseau

Atelier 15 : Le réseau
Atelier 13 : Le réseau

Objectifs :
„ Savoir configurer un poste pour
l’ajouter à un réseau TCP/IP
„ Savoir ajouter un logiciel réseau

Durée : 30 minutes.

TSOFT - Linux Administration Module 15 : Le réseau - 15.15

Exercice n°1
Quel est le nom réseau de votre système ?

Exercice n°2
Quels sont les adresses IP, le netmask et les passerelles connus de votre système ?

Exercice n°3
Est-ce qu’il y a une application serveur FTP active sur votre système ?

Exercice n°4
Est-ce qu’une application serveur FTP est active sur le système distant ?

Exercice n°5
Est-ce que l’application « inetd » est active sur votre système ? Quels sont les ports
TCP (notés symboliquement) gérés par elle ?

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 15-75
Module 15 : Le réseau

Exercice n°6
Changez les adresses IP et les netmasks de votre système et du système distant (qui
doivent être sur le même réseau physique et non connectés à Internet), en utilisant les
valeurs suivantes :
- Votre système : Adresse IP : 133.45.11.12, Netmask : 255.255.0.0
- Le système distant : Adresse IP : 133.45.44.45, Netmask : 255.255.0.0
Testez la connexion par un ping, et remettez ensuite les anciennes valeurs.

Exercice n°7
Faites en sorte que votre système puisse utiliser les commandes remote en local, par
exemple :
$ rcp localhost:/etc/group ~/group.old

Exercice n°8
Testez la présence du système distant avec la commande ping. La commande est
programmée pour s’arrêter au bout de vingt secondes, les résultats sont mémorisés
dans un fichier.

15-76 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 16 : X-Window

• X-Window
• Les clients X : xterm,
xclock…
• La commande
Xconfigurator
• Le DISPLAY
• Le démon XDM
• Le bureau KDE, gnome

16odule 16 : X-Window
Objectifs
Après l’étude de ce chapitre, le lecteur sait configurer X-Window pour travailler en
mode graphique avec le système Linux.

Contenu
Présentation de X-Window
Les principaux clients
La configuration du service
Le serveur X
Le service de connexion xdm
Le bureau KDE
Le bureau gnome

Références
HOWTO : Xfree86-HOWTO, Xwindow-user-HOWTO, Framebuffer-HOWTO
Le manuel : xdm(1), startx(1), et l’aide en mode graphique
Fichier : XF86Config
Livre : X-Window Administrator’s Guide
Internet : http://www.x11.org
http://www.kde.org
http://www.gnome.org

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 16-1
Module 16 : X-Window

Le système X-Window
Le système X-Window

xterm
Serveur X xclock
Protocole X
twm

clients X

Réseau
TCP/IP
Terminal x

Hôte
Linux

TSOFT - Linux Administration Module 16 : X-Window - 16.2

X-Window est un système graphique ouvert et qui fonctionne en client-serveur.


X-Window a été développé au MIT (« Massachusetts Institute of Technology »), dans
le cadre d’un projet baptisé ATHENA (1984), avec le concours de la société DEC
(« Digital Equipment Corporation »).
La version initiale est due à Robert Scheifler et Ron Newman du MIT et à Jim Gettys
de DEC.
Le protocole X et l’API X11 sont définis par le consortium X. Ils sont publics. Les
sources de X11, les sources d’un serveur X standard et les sources des applications
clientes de base constituent la distribution X du MIT, disponible librement
(« freeware »). Elle est incluse dans les distributions de Linux et de tous les systèmes
UNIX.

Le modèle client-serveur
Le système X est composé d’un serveur X et de clients X qui dialoguent selon le
protocole X.
L’application serveur X s’exécute sur l’un des écrans virtuels de Linux utilisé en mode
graphique, un terminal X ou un PC fonctionnant avec un logiciel d’émulation de
terminal X.
Elle gère le matériel :
• L’écran graphique
• Le clavier
• La souris
Les clients X sont des applications graphiques qui s’affichent dans des fenêtres gérées
par le serveur X. Il peut s’agir d’un éditeur de texte, d’un logiciel de dessin, de jeux…
Dans le cas des terminaux virtuels de Linux en mode graphique, il s’agit de clients
locaux qui s’exécutent sur le même ordinateur que le serveur.

16-2 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 16 : X-Window

Comme le protocole X est un protocole réseau supporté par TCP/IP, les clients
peuvent être répartis sur plusieurs ordinateurs.

Les composants d’un système X


• Le serveur X
Il est composé du matériel (écran, clavier, souris) et de l’application serveur X. Si le
serveur est dédié, on dit qu’il s’agit d’un terminal X. Si l’application serveur est une
application qui s’exécute sur un système UNIX, on dit qu’il s’agit d’une station
graphique. Enfin, si l’application serveur s’exécute sur un autre système que UNIX,
tel Windows, on dit qu’il s’agit d’un émulateur X, comme c’est le cas du logiciel
Reflection X pour Windows.
• Les clients X
Ce sont les applications graphiques.
• Un gestionnaire de fenêtres
X Window ne permet pas à l’utilisateur de contrôler directement la position et la taille
des fenêtres. Il définit les objets graphiques mais pas les outils de contrôle, les boutons
de réduction et d’agrandissement, la forme des ascenseurs et du curseur de la souris…
Ce rôle est dévolu à un gestionnaire de fenêtres (« Window Manager »). C’est un
client X comme les autres, qui dialogue avec le serveur selon un protocole particulier,
ICCCM (« Inter Client Communication Convention Manual »). Linux est livré avec
deux gestionnaires de fenêtres, twm, le gestionnaire standard du MIT, et fvwm qui
présente un « look » de type Windows. X-Window supporte de nombreux
gestionnaires de fenêtres, parmi lesquels l’utilisateur choisit celui qu’il associe à sa
session graphique. Dans une session, on ne peut utiliser qu’un seul gestionnaire.
• xterm
xterm est un client X qui émule un terminal de type texte. Un shell est
automatiquement associé au terminal, quand débute son exécution. C’est le moyen
pour les utilisateurs qui travaillent en mode graphique de passer des commandes (cp,
ls…).
• Un bureau (« Desktop »)
Un bureau est un ensemble cohérent de clients X. Il comprend un gestionnaire de
fenêtres, mais aussi un ensemble de clients pour gérer la station ou le serveur Linux.
Un bureau comporte systématiquement un gestionnaire de fichiers et les outils pour
configurer le bureau, en premier lieu les polices de caractères et les couleurs, sans
avoir besoin de modifier, à la main, les fichiers de configuration.
Le bureau permet d’accéder aux clients sans avoir à en connaître le nom. L’accès aux
clients est réalisé par le biais d’icônes ou de menus déroulants.
La richesse des outils dépend des bureaux. L’administration du système Linux est
simplifiée par l’emploi d’un bureau, qui la rend plus conviviale.
Le choix du bureau est un élément important pour l’utilisateur. De l’adaptation à la
navigation propre à un bureau vont dépendre la rapidité et l’efficacité de l’utilisateur.
Changer de bureau nécessite une période de prise en main, plus ou moins longue,
selon la quantité d’outils et leur organisation hiérarchique.
Linux supporte plusieurs bureaux :
• CDE (« Common Desktop Environment »)
C’est le bureau standard du monde UNIX. Il est aujourd’hui malheureusement
payant sous Linux. Il offre aux utilisateurs une interface de travail commune à

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 16-3
Module 16 : X-Window

l’ensemble des systèmes UNIX propriétaires. C’est un gain de temps appréciable


quand on travaille dans un environnement multi-plateforme.
• KDE (« K Desktop Environment »)
C’est un environnement ouvert, disponible gratuitement sous Linux. Il s’inspire de
CDE.
• Gnome (« GNU Network Object Model Environment »)
C’est également un environnement ouvert, basé sur la programmation objet. C’est
un projet du GNU. Il est disponible gratuitement sous Linux. Il en est d’ailleurs le
bureau par défaut.

16-4 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 16 : X-Window

La configuration du serveur X
La configuration du serveur X

TSOFT - Linux Administration Module 16 : X-Window - 16.3

Le serveur X des distributions de Linux se nomme XFree86. Il est entièrement


conforme aux spécifications définies par le MIT. Le programme Xconfigurator permet
la configuration de ce serveur. La configuration du serveur est mémorisée dans le
fichier /etc/X11/XF86Config.

Déroulement de Xconfigurator

1. Xconfigurator essaye de reconnaître la carte vidéo qui équipe votre PC. Si le


programme n’y parvient pas, il affiche la liste des cartes vidéo qu’il connaît. Si
votre carte n’y figure pas, vous pouvez choisir « custom » (carte non listée).

2. Xconfigurator affiche ensuite les types de serveur, monochrome, VGA, SVGA…


Si votre carte n’a pas été détectée, le choix VGA16 s’impose pour pouvoir utliser
X-Window sans problème, même si la qualité de l’image n’est pas à la hauteur de
vos espérances et de la qualité de votre carte vidéo.

3. Xconfigurator affiche la liste des moniteurs qu’il connaît. Encore une fois, si
votre moniteur n’apparaît pas dans la liste, vous pouvez choisir « personnel ». Il
vous faudra alors préciser les fréquences de synchronisation horizontale et
verticale de votre moniteur (cf. La documentation du moniteur).

Remarque
Dans l’ignorance des fréquences de balayage, choisissez les plus basses parmi
celles proposées par Xconfigurator.

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 16-5
Module 16 : X-Window

4. Xconfigurator s’enquiert de la quantité de mémoire vive de la carte vidéo.

5. Xconfigurator propose le réglage du circuit d’horloge de la carte vidéo. Il est


recommandé de choisir « pas de configuration de circuit d’horloge ».

6. Xconfigurator demande le mode vidéo à utiliser. Le mode correspond à la


résolution et au nombre de couleurs supportées par la carte.

7. Xconfigurator propose un test pour terminer.

16-6 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 16 : X-Window

Démarrage d’une session X, d’un client X


Démarrage d'une session X, d'un client X

#!/bin/sh
#~/.xinitrc, ~/.xsession ou ~/.Xclients
xsetroot -solid cyan
xrdb -y merge ~/.Xresources

# On lance les clients en tâche d’arrière-plan


xterm -g 70x35+10+10 &
xclock -g -0-0 &
# On lance le gestionnaire en avant-plan
twm

TSOFT - Linux Administration Module 16 : X-Window - 16.4

Démarrage d’une session


Une session X peut être démarrée de plusieurs manières :
• En local, à partir des commandes xinit ou startx.
• A partir d’un terminal X, grâce au service de connexion xdm. Le démon affiche
une fenêtre de connexion où l’utilisateur doit fournir son nom et son mot de passe
pour se connecter. Le démon xdm peut aussi être utilisé pour ouvrir une session
locale.
• En activant un client X, par exemple la fenêtre terminal xterm, à partir d’une
session Linux ordinaire ou de la commande rsh. Le serveur X doit avoir été activé
au préalable.

Démarrage d’une session locale


La commande xinit active le serveur X local et exécute ensuite le script
$HOME/.xinitrc. Si ce fichier n’existe pas, la commande xinit exécute alors un client
xterm.
Le script startx exécute également la commande xinit. Si le fichier $HOME/.xinitrc
n’existe pas, il exécute alors le script /usr/lib/X11/xinitrc. Ce fichier peut d’ailleurs
servir de modèle aux utilisateurs qui veulent créer leur propre fichier .xinitrc.
Le script xinitrc essaie d’exécuter $HOME/.Xclients. En cas d’échec, il exécute le
script /etc/X11/xinit/Xclients. Le script $HOME/.Xclients est aussi exécuté par le
démon xdm. Cela permet de n’avoir qu’un seul fichier de démarrage. Il doit être
exécutable.

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 16-7
Module 16 : X-Window

Démarrage personnalisé
On active les clients en tâche d’arrière-plan et on termine le script en exécutant le
gestionnaire de fenêtres (twm, fvwm, fvwm2…) en tâche d’avant-plan ou via la
commande exec.
Démarrage d’un bureau
On démarre l’exécution du bureau que l’on a choisi :
• KDE
exec startkde
• GNOME
exec gnome-session

Le DISPLAY
Le « DISPLAY » désigne l’adresse du serveur X. Cette information doit
impérativement être connue par les applications clientes X. A défaut, elles seraient
incapables d’identifier le serveur X avec lequel elles dialoguent pendant leur
exécution. Si un client X ne connaît pas le « DISPLAY », l’exécution du client échoue
dès le démarrage de son exécution.
La désignation du « DISPLAY » a la forme suivante :
[hôte]:terminal.[écran]
L’hôte désigne le nom ou l’adresse IP du serveur X, par défaut le client et le
serveur s’exécutent sur la même machine. Terminal désigne le numéro du
terminal si le serveur supporte plusieurs terminaux, c’est très souvent 0 et écran,
le numéro de l’écran si le terminal possède plusieurs écrans, par défaut 0 s’il n’y
a qu’un écran.
Exemples
:0 Le système local.
Saturne:0 Le premier terminal X associé au système Saturne.
Saturne:0.0 Saturne est un hôte ou un terminal X.
Saturne:1.0 Le deuxième terminal de la station Saturne. Saturne
est un hôte Linux ou UNIX pour supporter
plusieurs terminaux X.
Saturne:0.1 Le deuxième écran du premier terminal X. Cette
situation est assez rare.

Le DISPLAY est indiqué au client X grâce à la variable d’environnement DISPLAY


ou par l’option « –display » des commandes clientes. La variable DISPLAY est
automatiquement mise à jour par xinit et xdm.

Démarrage d’une session via xdm


Le démon xdm permet d’ouvrir une session à partir d’un terminal X. Il affiche une
fenêtre de connexion sur le terminal dans laquelle l’utilisateur est invité à saisir son
nom et un mot de passe. Quand l’authentification de l’utilisateur est réussie, xdm
active une session graphique que l’utilisateur peut paramétrer dans le fichier
$HOME/.xsession, fichier dont la forme est identique à celle de $HOME/.xinitrc.
Si le terminal X supporte le protocole XDMCP, il affiche la liste des serveurs Linux
ou UNIX accessibles par xdm. L’utilisateur sélectionne alors le serveur sur lequel il
souhaite établir une session de travail.

16-8 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 16 : X-Window

Dans le système Linux, le démon xdm est la commande /usr/X11R6/bin/xdm. Elle


est exécutée par un fichier script RC (cf. Module 7 : L’arrêt et le démarrage).
En fonction du paramétrage défini dans les fichiers Xaccess et Xservers, le démon
xdm peut répondre aux requêtes des terminaux X et afficher la fenêtre de connexion
sur l’ensemble des terminaux X qui l’ont demandé. xdm peut également contrôler les
terminaux X du système local.

Les fichiers de configuration de xdm


Les fichiers de configuration sont dans le répertoire /usr/X11R6/lib/X11/xdm ou
/etc/X11/xdm.
Fichier Contenu
xdm-config Il indique le répertoire des autres fichiers de configuration.
Xservers La liste des serveurs à gérer.
Xsession Le script de connexion par défaut. Ce script n’est pas exécuté
si le script $HOME/.xsession existe. Il doit être exécutable.
Xstartup Le script exécuté avant la session. Il s’exécute avec les droits
de root.
Xreset Le script exécuté après une session.
Xresources Le fichier des ressources de xdm.
xdm-errors Le fichier historique (log) des messages d’erreurs.
Xaccess Gère les réponses aux requêtes XDMCP.

Exemple de fichier Xservers


:0 local /usr/X11R6/bin/X
venus:0 foreign
mars:0 foreign
Débogage
Les fichiers xdm-errors et $HOME/.xsession-errors contiennent les messages
d’erreurs et peuvent être consultés pour déterminer et analyser les erreurs de
connexion. Au moment de la connexion, après avoir renseigné le nom d’utilisateur et
le mot de passe, l’utilisateur peut, en cas de problème, appuyer sur la touche fonction
« F1 » pour démarrer un simple client xterm.

Transformer sa LinuxBox en terminal X


Il est possible de transformer son système Linux en terminal X. Le mode graphique ne
doit pas être activé directement, en passant, par exemple, par le niveau 5 d’init. On a le
choix entre plusieurs modes de fonctionnement :
• On désigne le serveur de connexion, qui doit accepter les requêtes XDMCP,
lorsque l’on active le serveur X :
# X -query venus
• On accepte le premier serveur de connexion qui répond à un message de diffusion
XDMCP :
# X -broadcast
• On active une fenêtre d’invite XDMCP qui liste les serveurs de connexion.
L’utilisateur peut choisir ainsi son serveur.
# X -indirect venus

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 16-9
Module 16 : X-Window

Remarques
Les serveurs de connexions doivent être correctement configurés en XDMCP (cf. le
fichier Xaccess de ces serveurs).
Il est possible d’indiquer en paramètre de l’option « –indirect » le nom du système
local qui apparaît alors dans la liste des serveurs disponibles. Le système local ne doit
pas activer directement la session X. Le serveur local doit être mit en commentaire
dans le fichier Xservers :
# :0 local /usr/X11R6/bin/X
De plus, le fichier Xaccess doit être correctement configuré pour accepter les
demandes XDCMP (cf. paragraphe précédent). Le fichier Xaccess définit les
autorisations d’accès XDMCP. La ressource DisplayManager.requestPort du fichier
xdm-config indique si les accès sont acceptés par le serveur X sur le port UDP 177.
Dans le cas où le serveur de connexion fonctionne avec le bureau GNOME, il faut,
dans le fichier /etc/X11/gdm/gdm.conf, positionner l’option Enable de la section
xdmcp à un pour que le service de connexion du client soit celui de gnome plutôt que
xdm.
[ xdmcp ]
Enable = 1
• On active le serveur X sans aucun client, mais on autorise les accès distants :
# X -ac

Remarques
Un système Unix ou Linux peut activer directement des clients pour ce serveur X en
précisant ses coordonnées (cf. le paragraphe « Démarrage d’un client X »), par
exemple :
$ xterm -display saturne:0
Un système UNIX ou Linux peut également activer directement une connexion
graphique via le fichier Xservers :
saturne :0 foreign
Références
Le manuel xdm(8)
Le XDMCP HOWTO
Le livre « X Window System Administrator’s Guide »

Choix du système de connexion graphique (« Display


Manager »)
Dans Linux, outre le service de connexion graphique standard, il existe d’autres
services de connexion graphique. Ce mode de connexion est établi dès la connexion. Il
est associé au niveau 5 d’init, dans le fichier /etc/inittab (cf. Module 7 : L’arrêt et le
démarrrage).
Le logiciel de connexion qui est activé, dans /etc/inittab, est /etc/X11/prefdm. C’est un
script qui détermine le choix du logiciel de connexion selon le contenu du fichier
/etc/sysconfig/desktop. Ce fichier contient le nom, du logiciel de connexion, GNOME,
KDE ou le texte Anotherlevel pour choisir xdm. il est important de respecter la casse.
Si ce fichier n’existe pas, le script recherche en premier le bureau GNOME et, à
défaut, KDE.

16-10 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 16 : X-Window

Démarrage d’un client X


1. A partir du terminal X, via une fenêtre xterm
On lance le client en arrière-plan. Grâce à la variable DISPLAY, on indique que le
client doit s’exécuter sur le même terminal que celui où s’exécute xterm.
$ xclock &
2. A partir d’une session Linux, en mode texte
A partir d’une session locale ou distante, via telnet, on peut exécuter un client X sur un
terminal X que l’on a identifié au préalable dans la variable DISPLAY.
$ export DISPLAY=saturne:0.0
$ xterm & # xterm s’exécute sur saturne
ou
$ xterm –display saturne:0.0
3. Grâce à la commande rsh
La commande « remote » rsh permet d’exécuter une commande sur une machine
distante. Cette commande est souvent connue des terminaux X ou des émulateurs X.
Le terminal X saturne demande à exécuter un client xterm sur jupiter.
$ rsh jupiter xterm –display saturne:0.0&

La sécurité
Un terminal X peut refuser l’accès à des clients distants en paramétrant, pour le
premier terminal, le fichier /etc/X0.host ou pendant une session avec la commande
xhost.
$ xhost + # autorise tous les clients de n’importe quel hôte du
réseau
$xhost +mars # autorise les clients de mars

Les options de la ligne de commande d’un client


Il existe de nombreuses options qui, sauf exception, sont supportées par tous les
clients standards de X. Le tableau qui suit résume les principales options.
Option Description
-bg couleur Définit la couleur de fond.
-fg couleur Définit la couleur du premier plan.
-bd épaisseur Définit l’épaisseur du bord.
-g géométrie Définit la taille et la position du cadre du client. La forme en
est –g largeurxhauteur[+|-]abscisse[+|-]ordonnée.
-font (-fn) fonte Définit la police.
-name nom Définit le nom de l’instance du client.
-title titre Définit le titre affiché de la fenêtre.
-rv Inverse les couleurs de fond et de premier plan.
-iconic L’application est démarrée sous forme d’icône.
-display terminal Définit le terminal X.
-xrm Permet de paramétrer une ressource. La syntaxe est celle
utilisée dans le fichier des ressources.

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 16-11
Module 16 : X-Window

Exemples
$ xclock –fg grey –bg yellow &
$ xterm –g 75x25+10+10 &
$ xterm –xrm 'xterm*ttyModes : erase ^H' &
Remarque
Le fichier /usr/X11R6/lib/X11.rgb.txt donne le nom de toutes les couleurs disponibles
et leur décomposition en rouge, vert et bleu (« RVB »).

16-12 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 16 : X-Window

Panorama des clients X (« MIT »)


Panorama des clients X (« MIT »)

„ xterm émulation d’un terminal de type texte


„ xedit éditeur de texte
„ xclock horloge
„ xrdb gestion des ressources du serveur
„ xhost contrôle l’accès du serveur
„ xsetroot paramètre la fenêtre racine
„ twm un gestionnaire de fenêtres

TSOFT - Linux Administration Module 16 : X-Window - 16.5

Les clients X de la distribution standard du MIT (« Massachusetts Institute of


Technology ») sont nombreux. Dans les pages qui suivent, nous les avons répertoriés
par catégorie. Nous renvoyons le lecteur au manuel de référence pour avoir plus
d’informations et étudier les options spécifiques qui pourraient exister. Le client xterm
est décrit plus complètement dans le chapitre qui suit.

Accessoires de bureau
xterm Un émulateur de terminal texte.
xclock, oclock Des horloges.
xcalc Une calculatrice.
xbiff Un client qui notifie l’arrivée de courrier.
xmh Le client qui gère le courrier.
xload Le client qui mesure la charge du système.
xmag Une loupe.
xman Le client qui affiche la documentation.
xedit Un éditeur de texte pleine page et plein écran.
xkill Un client qui met fin à une application cliente.
xrefresh Un client qui rafraîchit l’écran, en partie ou en totalité.
xclipboard Le presse-papier.
xcutsel Le client qui copie la sélection en cours.
xconsole Le client qui affiche les messages destinés à la console maîtresse
(/dev/console).

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 16-13
Module 16 : X-Window

Sécurité
xhost Contrôle l’accès des clients au serveur X.
xauth Contrôle l’accès des utilisateurs au service X.

Outils graphiques
xwd Stocke l’image d’une fenêtre dans un fichier.
xwud Affiche un fichier produit par xwd.
bitmap Un éditeur de fichier « bitmap ».
atobm, bmtoa Outils de conversion de fichiers « bitmap » en ascii et
réciproquement.

Paramétrage du clavier, de l’écran et de la souris


xset Définit de nombreux paramètres pour la souris, le son, les
polices, l’écran et le clavier.
xmodmap Ce client permet de modifier l’affectation des touches du clavier
et des boutons de la souris.
xsetroot Ce client paramètre la fenêtre racine.

Gestion des ressources


xrdb Ce client modifie les ressources stockées sur le serveur.
appres Ce client liste les ressources d’un client.

Gestion des polices


xlsfonts Liste les polices disponibles.
xfd Affiche une police de caractères.
xfontsel Permet de visualiser et de sélectionner une police.
xset Définit le chemin d’accès aux fichiers des polices.
xprop Affiche les propriétés des polices utilisées.

Informations
xlsclients Affiche la liste des clients d’un serveur X.
xdpyinfo Affiche les caractéristiques d’un serveur X.
xwininfo Affiche les caractéristiques d’une fenêtre.
xlsatoms Affiche les « atomes » définis sur le serveur.
xev Affiche la trace des événements.

16-14 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 16 : X-Window

Divers
xeyes Des yeux qui s’affichent sur l’écran.
ico Une animation en 3D.
xlogo Affiche le logo X.

Gestionnaire de fenêtres
twm Le gestionnaire standard de X.

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 16-15
Module 16 : X-Window

xterm
xterm

„ Les options de la ligne de commande

$ xterm -g 75x20+10+10 &


$ xterm -sb -ls &
„ Les menus popup
CTRL-bouton1 menu principal
CTRL-bouton2 menu options VT
CTRL-bouton3 menu polices
„ Copier/Coller
glisser (bouton1) sélection et copie
bouton2 coller

TSOFT - Linux Administration Module 16 : X-Window - 16.6

xterm est un émulateur de terminal. Les fichiers de démarrage des sessions X activent
fréquemment un premier client xterm pour que l’utilisateur puisse exécuter des
commandes, de la même manière que si l’on travaille dans une session locale ou
telnet, en mode texte.
Les séquences de contrôle d’un terminal xterm sont proches de celles d’un terminal
vt100 de la société Digital Equipment. Le client xterm peut également émuler un
terminal graphique de la société Tektronics.
Le paramétrage de xterm peut être effectué grâce aux fichiers de ressources ou par les
options de la ligne de commande ou, encore, par les menus « popup ». xterm permet
de réaliser du copier/coller.
Le tableau qui suit indique les options de la ligne de commande :
Option Description
-t Le mode est Tectronics et non vt.
-132 Le terminal a 132 colonnes, 80 par défaut.
-g géométrie Définit la géométrie. Contrairement aux autres clients X, la
largeur exprime le nombre de colonnes et la hauteur le nombre
de lignes.
-sb Demande l’affichage d’un ascenseur vertical.
-sl # Demande la mémorisation de « # » lignes qui pourront être
visibles grâce à l’ascenseur. La valeur par défaut est de 64.
-e cmd La commande cmd est exécutée dans la fenêtre du client xterm.
-ls Le shell qui est exécuté est un shell de connexion. Le fichier
.profile ou .login est exécuté.

16-16 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 16 : X-Window

Le copier/coller (via le presse-papier de X)


Le système X-Window a été conçu pour utiliser une souris à trois boutons, gauche,
milieu et droite. Si votre ordinateur ne possède qu’une souris à deux boutons, vous
pouvez demander, au cours de l’installation de Linux, à émuler une souris à trois
boutons.
1. Sélection de la zone et copie
• On fait glisser la souris sur la zone à copier en maintenant le bouton de gauche
enfoncé.
• On clique sur le bouton de gauche en début de zone et sur le bouton de droite en
fin de zone.
• On double-clique sur le mot courant.
• On triple-clique pour sélectionner la ligne courante.
2. Coller
• On appuie sur le bouton du milieu. Dans le cas d’une souris à deux boutons, on
appuie simultanément sur les deux boutons.

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 16-17
Module 16 : X-Window

twm
fwm

TSOFT - Linux Administration Module 16 : X-Window - 16.7

Le gestionnaire de fenêtres twm (« Tab Window Manager ») est le gestionnaire


standard de la distribution X-Window du MIT.
Le gestionnaire twm possède les avantages suivants :
• Il est standard, donc disponible sur Linux, mais aussi sur tous les systèmes UNIX.
• Il est peu gourmand en ressources système, ce qui est intéressant pour un serveur.
• Il est simple d’utilisation.
C’est principalement cette dernière caractéristique qui incite à le présenter. Il
représente une bonne introduction à la présentation de gestionnaires de fenêtres plus
complexes, tel que fvwm.

Utilisation de twm
Chaque fenêtre créée est dotée d’une barre de titre horizontale. En plus du titre, la
barre contient deux boutons, le bouton de gauche qui permet d’iconifier la fenêtre et le
bouton de droite qui permet de modifier la taille de la fenêtre.
Pour déplacer la fenêtre, il suffit de faire glisser la barre de titre.
Quand le pointeur de la souris est dans la barre de titre, il faut cliquer sur le bouton
gauche de la souris pour faire passer la fenêtre en avant-plan et sur le bouton du milieu
pour la faire passer en arrière-plan.
Quand le pointeur de la souris est dans la fenêtre racine, un clic sur le bouton gauche
de la souris fait apparaître le menu de la fenêtre racine.
Le « focus », qui indique la fenêtre qui a le contrôle à un instant donné, appartient à
celle dans lequel se trouve le pointeur de la souris. L’option « focus » du menu racine
permet de donner explicitement le « focus » à une fenêtre.

16-18 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 16 : X-Window

La configuration de twm
La couleur, l’aspect des fenêtres et le menu racine de twm sont paramétrables. Cela se
réalise dans un fichier de configuration. Le fichier /etc/X11/twm/system.twmrc est
utilisé par défaut, si l’utilisateur n’a pas défini de fichier $HOME/.twmrc.
Une autre possibilité consiste à indiquer le fichier de configuration, sur la ligne de
commande, au moment de l’exécution de twm.
$ twm –f fichier_confi &
Exemple de fichier de configuration
# $HOME/.twmrc
# couleurs
Color
{
TitleBackground "red"
BorderColor "green"
IconBackground "blue"
MenuBackground "yellow"
MenuForeground "blue"
}
# menu racine
Button1=:root:f-menu "Special"
# menu "Special"
menu "Special"
{
"Racine" f.title
"Fermer" f.iconify
"Ouvrir" f.iconify
"Tuer" f.destroy
"" f.nop
"Terminal" f.exec "/usr/X11R6/bin/xterm &"
"Exit" f.quit
}

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 16-19
Module 16 : X-Window

Les ressources
Les ressources

$ cat > ~/.Xresources


! ~/.Xresources ou ~/.Xdefaults

Xterm*scrollBar: False
terminal*scrollBar: True
xterm*background: green
*eightBitInput: True
CTRL-D
$ xrdb -merge ~/.Xresources
$ xterm -name terminal &

TSOFT - Linux Administration Module 16 : X-Window - 16.8

Les ressources sont des données qui servent à paramétrer les clients X. Une ressource
peut définir un emplacement, une couleur, une chaîne de caractères, une police, une
image…
La définition des ressources est dans un fichier texte.

Syntaxe d’un fichier de ressources


Il existe plusieurs syntaxes pour définir une ressource.
1. Syntaxe complète
application.chemin_d’accès_à_l’objet.attribut: valeur
Pour signifier qu’un client xterm a un ascenseur, on dit :
xterm.VT100.scrollBar: True
2. Syntaxe floue
Le caractère « * » agit comme un joker et permet de définir, en une seule ligne, une
ressource valide pour plusieurs objets.
Pour dire que tous les ascenseurs des objets qui sont la propriété d’un xterm doivent
être actifs, on écrit :
xterm*scrollBar: True
Pour dire que tous les clients doivent être munis d’un ascenseur, on écrit :
*scrollBar: True
3. Instances et classes d’application
Pour dire que tous les objets images d’un client particulier – on dit aussi instance pour
désigner l’objet et classe pour désigner le type du client – ont une caractéristique
commune, on met l’initiale du client en majuscule, en plus du X.
On obtient ainsi :

16-20 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 16 : X-Window

XTerm*scrollBar: True
Il est possible de nommer une instance en particulier, via l’option « -name » et de
définir un paramétrage qui lui soit propre :
terminal*scrollBar: True
Comme le nom d’instance est par défaut, le nom de la classe en minuscule, on peut
paramétrer toutes les instances qui n’ont pas de nom :
xterm*scrollBar: True

Chargement de la base de ressources


Pour illustrer la prise en compte d’une base de données de ressources, nous utilisons
l’application xclock, dont le nom de classe est XClock.
Les fichiers qui sont utilisés pour définir les ressources des objets de type XClock sont
successivement :
1. Le fichier /usr/lib/X11/app-defaults/XClock.
2. Le fichier $HOME/XClock, s’il existe.
3. Le fichier dont le nom est mémorisé dans la variable d’environnement
ENVIRONMENT, sinon le fichier $HOME/.Xdefaults-$(uname –n).
Rappelons que le shell remplace $(uname –n) par le résultat. On obtient ici le
nom d’hôte $HOME/.Xdefaults-venus.
4. Si la propriété RESOURCE_MANAGER est définie sur le serveur X, résultat de
l’exécution de la commande xrdb, les ressources qui sont stockées sur le serveur
lui-même, sont lues, sinon le fichier $HOME/.Xdefaults.
5. Les options de la ligne de commande qui déclenche l’exécution du client sont
prises en compte.

La commande xrdb
La commande xrdb mémorise des ressources directement sur le serveur X. Elles sont
accessibles à tous les clients du serveur. Nous mentionnons à la suite quelques
utilisations courantes de la commande xrdb.
• Fusion des ressources courantes avec celles définies dans un fichier, ici
$HOME/.Xresources :
$ xrdb –merge $HOME/.Xresources
• Initialisation des ressources du serveur avec un fichier, ici $HOME/.Xresources :
$ xrdb –load $HOME/.Xresources
• Suppression des ressources d’un serveur :
$ xrdb –remove
• Visualisation des ressources courantes :
$ xrdb –query

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 16-21
Module 16 : X-Window

KDE
KDE

TSOFT - Linux Administration Module 16 : X-Window - 16.9

KDE (« K Desktop Environment » ) est un bureau (« Desktop ») sous licence GPL,


livré en standard dans la distribution RedHat de Linux, entre autres. Le site officiel de
KDE est accessible via l’URL http://www.kde.org.

Utilisation
Le bureau KDE s’inspire de CDE, le bureau standard de UNIX, et de Windows 95. La
lettre K du panneau situé en bas de l'écran (appelé également tableau de bord), permet
d’accéder au menu principal, l’équivalent du menu Démarrer de Windows 95. Le
panneau, comme sous CDE, en plus de la date et de l’heure, contient les principales
applications (gestionnaires de fichiers, terminal,aide, ...) ainsi que l’accès à quatre
écrans virtuels. L’utilisateur répartit les différentes applications qu’il exécute dans ces
écrans virtuels, huit au maximum. Deux petits boutons sont présents dans le panneau,
l’un pour clore la session et l’autre pour verrouiller l’écran.
La barre des tâches, normalement en haut de l’écran, liste les applications actives et
permet de basculer de l’une à l’autre comme sous Windows.
Chaque fenêtre contient une barre de titre qui permet de déplacer la fenêtre. Trois
boutons, comme sous Windows, permettent d’iconifier, de maximaliser et de fermer la
fenêtre. En plus du bouton Icône, en haut à gauche, il y a une petite punaise qui fixe la
fenêtre. Elle est désormais visible de tous les bureaux virtuels. Le menu Icône dispose
de la commande Vers le bureau, qui autorise à changer l’écran virtuel où réside
l’application.
Sur le bureau, des icônes représentent des applications, des données ou des répertoires.
Si l’on clique dessus, on active l’application qui lui est associée ou le gestionnaire de
fichiers dans le cas d’une icône répertoire.
La commande kwmcom, qui travaille en mode texte, permet de dialoguer avec KDE.
On peut réorganiser les fenêtres, passer d’un écran virtuel à un autre, fermer une
fenêtre, mettre fin à l’environnement, ...).

16-22 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 16 : X-Window

Les principales applications KDE


Le cœur de KDE est constitué de :
kwm Le gestionnaire de fenêtres de KDE.
kpanel Le panneau KDE et barre des tâches.
kfm Le gestionnaire de fichiers de type navigateur Web.
Menu principal
kfind Recherche des fichiers.
kcontrol Centre de contrôle de KDE.
kdehelp Le système d’aide de KDE (au format html).
Applications
kedit Editeur de texte très simple.
Utilitaires
klpq Gère les files d’attente d’impression.
kclock Horloge.
kcalc Calculatrice.
khexdit Editeur de fichiers binaires.
kdat Ce logiciel permet la sauvegarde sur cartouche.
klocate Recherche des fichiers contenant des expressions.
karm Analyse votre utilisation du temps.
kfloppy Formate des disquettes.
kjots Bloc-notes.
kless Visualise un fichier texte.
kjettol Permet le paramétrage d’imprimantes HP.
klyx Interface au système LaTex.
kwatch Permet le suivi de plusieurs fichiers log.
kworldwatch Visualise les fuseaux horaires.
kmenuedit Edite les entrées du menu K (et de ses sous-menus).
kvt Terminal.
kzip Un outil de compression, variante de gzip qui supporte aussi *.tar
et *.tar.gz.
Système
kappfinder Recherche les applications non-KDE et les rend accessibles par
un menu.
ktop Affiche la liste des processus et la charge.
kwmpager Gère le bureau virtuel.
kfontmanager Gère les polices.
ksysv Gestion des niveaux d’init.
kuser Gestion des utilisateurs et des groupes.

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 16-23
Module 16 : X-Window

Multimédia
kmid Karaoké.
kmidi Lecteur de fichiers MIDI (*.mid).
kscd Recherche des informations associées à un CD audio.
kmedia Lecteur de fichiers audio (*.mid, *.mod, *.wav).

Graphiques
kview Visualiseur d’images.
kdvi Affiche les fichiers LaTex *.dvi.
kfax Visualise des fax (format G3, G3-D2 ou G4).
ksendfax Envoie des fax.
ksnapshot Réalise des captures d’écran.
kpaint Logiciel de dessin.
kghostview Visualise des fichiers postscript.

Internet
krn Lecteur de news.
kmail Agent de messagerie, gère MIME et PGP.
kget Permet le suivi des téléchargements.
kppp Permet la configuration des liaisons PPP.
kwebtree Analyse une arborescence de pages Web.

Réseau
ktelnet Client telnet.
knu Une variante des commandes ping, traceroute, finger et
hostname.

Jeux
De nombreux jeux sont disponibles : Astéroïdes, balone, Mahjong, Othello, Same, …

Configuration d’une session X pour l’utilisation de KDE


Pour configurer une session graphique X, il suffit que l’utilisateur crée le script
.Xclients (qui doit être exécutable) et qu’il se termine par la commande :
exec startkde
L’utilisateur peut également recopier le script startkde sous le nom .Xclients.

Configuration de KDE
La configuration de KDE peut être effectuée par les menus Tableau de bord et
Configuration du menu principal K ou par le l’application centre de contrôle de KDE,
kcontrol.

16-24 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 16 : X-Window

kcontrol
Le centre de contrôle KDE est proche du panneau de configuration de Windows ; il
donne l’accès à la configuration des éléments suivants :
• Applications
• Bureau (arrière-plan, couleurs, économiseur d’écran, langue, ...).
• Périphériques d’entrée (souris, clavier).
• Réseau.
• Information (mémoire, processeur).
• Sons.
• Fenêtres.

Ajouter une application au panneau


On choisit la commande [K]->[Panneau]->[Ajouter une application].
Modifier le menu K et ses sous menus
On choisit la commande [K]->[Utilitaire]->[Editeur de menus].
Ajouter une icône de raccourci sur le bureau
On clique sur le bureau dans un endroit vierge avec le bouton droit de la souris, et on
choisit [Nouveau]->[Programme].

Les fichiers de configuration de KDE.


Ils sont stockés dans l’arborescence ~/.kde.
Chaque programme peut posséder un fichier de configuration propre, se terminant par
« rc ».

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 16-25
Module 16 : X-Window

gnome
gnome

TSOFT - Linux Administration Module 16 : X-Window - 16.10

GNOME (« GNU Network Object Model Environment » ) est le bureau par défaut de
la distribution Linux RedHat. C’est un logiciel libre développé dans le cadre du projet
GNU. Le site officiel de GNOME est http://www.gnome.org. GNOME est plus récent
que KDE et en conséquence moins complet. En revanche, il intègre les dernières
technologies. L’architecture CORBA, bien connue dans le monde de l’objet, est la
base d’interopérabilité logiciel. Contrairement à KDE, GNOME n’est pas associé à un
gestionnaire de fenêtres prédéfini, il peut en utiliser plusieurs.

Utilisation
Comme KDE, GNOME dispose d’un panneau situé en bas de l’écran qui permet
d’accéder aux principales fonctionnalités. Il possède des icônes qui permettent de
déclencher des applications et un menu général représenté par le logo de GNOME :
une trace de pas.
Les principales applications GNOME
gmc Le logiciel de gestion de fichier qui reprend les fonctionnalités de
Midnight Commander qui était en mode texte.
Gedit Editeur de texte.
Emacs L’éditeur de texte emacs.
GHex Editeur en hexadécimal de texte binaire.
Calendar Calendrier et agenda.
gnomecard Carnet d’adresses.
Gnumeric Un tableur.
Gimp Le célèbre logiciel de retouche d’images et de création graphique.
gftp Un client graphique FTP.
GnoRPM Une interface graphique au gestionnaire de package RPM.

16-26 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 16 : X-Window

Remarque
GNOME dispose également d’applications multimédias, Internet et des jeux.
Globalement il offre un panel d’outils presque aussi complet que KDE.

Configuration d’une session X pour l’utilisation de GNOME


Il suffit que l’utilisateur crée le script .Xclients (qui doit être exécutable) et qui se
termine par la commande :
exec gnome-session
L’utilisateur peut également recopier le script gnome-session sous le nom .Xclients.
Les fichiers du répertoire /etc/X11/gdm permettent de configurer le bureau GNOME,
en particulier le fichier gdm.conf.

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 16-27
Module 16 : X-Window

fvwm2
fvwm2

TSOFT - Linux Administration Module 16 : X-Window - 16.11

fvwm2 est un gestionnaire de fenêtres qui dérive de twm, simple d’emploi, et qui
fournit un bureau virtuel. L’encadrement des fenêtres ressemble à celui de Motif, le
standard Unix. Dans le cas où l’on n’utilise pas de bureau, fvwm2 correspond à
l’environnement graphique par défaut de Linux.
fvwm2 ajoute une décoration aux fenêtres qui comprend un bord et une barre de titre
avec des boutons. Le bord permet d’agrandir ou de réduire la fenêtre. La barre de titre
permet de déplacer la fenêtre. Les deux boutons de droite provoquent respectivement
l’iconification et l’agrandissement maximum de la fenêtre. Le bouton de droite et le
bouton système permettent de fermer la fenêtre et de faire apparaître un menu.
Si l’on clique dans la fenêtre racine, on fait apparaître le menu racine. Ce menu
déclenche des applications, il sert également à mettre fin à la session.
fvwm2 fournit plusieurs écrans qui forment un seul grand bureau virtuel. On peut
passer d’un écran à l’autre, soit en cliquant sur la zone correspondante dans le panneau
du bas soit simplement en approchant le curseur d’un des bords de la fenêtre racine.
fvwm2 recherche d’abord le fichier ~/.fvwm2rc. S’il ne le trouve pas, il recherche
ensuite le fichier /etc/X11/fvwm2/system.fvw2rc. Ce fichier, notamment, définit la
taille du bureau virtuel, les styles et le menu racine.

16-28 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 16 : X-Window

Atelier 16 : X-Window
Atelier 16 : X-Window

Objectifs :
„ Savoir configurer un poste pour
utiliser les outils graphiques

Durée : 30 minutes.

TSOFT - Linux Administration Module 16 : X-Window - 16.12

Exercice n°1
Quel est le fichier de configuration de votre serveur X ?

Exercice n°2
Configurez le compte d’un utilisateur pour twm :
1. Créez un nouvel utilisateur
2. Créez le fichier $HOME/.Xclients en vous inspirant du fichier $HOME/.xinitrc
décrit dans le chapitre « Démarrage d’une session X »
3. Après vous être connecté sous le nom de ce nouvel utilisateur, exécutez la
commande startx
4. Si le nouvel utilisateur souhaite utiliser KDE, que doit-il faire ?

Exercice n°3
A partir d’une fenêtre xterm :
1. Exécutez un éditeur de texte (xedit, kedit…)
2. Affichez la valeur de la variable DISPLAY
3. Exécutez à nouveau le client « éditeur de texte » en utilisant l’option « -display »
du client

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 16-29
Module 16 : X-Window

Exercice n°4
Exécutez le client xclock avec une couleur de fond déterminée :
Spécifiez la couleur de fond pour toutes les horloges de tous les utilisateurs.
Spécifiez la couleur de fond pour toutes les horloges d’un utilisateur.
Exécutez l’horloge en imposant la couleur rouge.

Exercice n°5
Comment l’administrateur peut-il imposer kdm comme service de connexion ?

16-30 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 17 : La sécurité

• Mot de passe, le
« password aging »
• Règles de sécurité
• Les droits d’endossement
• Audit
• « proxy »
• « firewall »

17Module 17 : La sécurité
Objectifs
Après l’étude de ce module, le lecteur connaît les principales règles de sécurité qu’il
doit appliquer en tant qu’administrateur et enseigner aux utilisateurs. Il est capable de
procéder à un audit simplifié de son système.

Contenu
La sécurité informatique
La sécurité de connexion
Le paquetage shadow et PAM
La sécurité pour les utilisateurs
Les droits d’endossement et la sécurité
Les logiciels libres d’audit sur Internet

Références
HOWTO : security-HOWTO
Le manuel : pam(8), ssh(1), login(1), shadow(5)
Les livres : Practical UNIX & Internet Security
Maximum Linux Security
Internet : http://info.cert.org

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 17-1
Module 17 : La sécurité

La sécurité informatique
La sécurité informatique

„ Les objectifs
z La sécurité de connexion
z L’intégrité des données
z La confidentialité des données

„ Les moyens
z L’authentification (mot de passe, ...)
z Le chiffrement
z La sécurité physique
z La prévention, l’information
z Les droits
z Les sommes de contrôle (« checksum »), les sauvegardes
z La surveillance et l’audit du système
z Les gardes-barrières (« firewalls »)

„ Les niveaux de sécurité (C2, ...)

TSOFT - Linux Administration Module 17 : La sécurité - 17.2

Les objectifs principaux de la sécurité informatique concernent :


• La sécurité de connexion.
Il s’agit de contrôler que les utilisateurs qui se connectent sont bien autorisés à le
faire et leur interdire l’accès au système sinon.
• L’intégrité des données.
Il s’agit de faire en sorte que les fichiers et les bases de données ne soient pas
corrompus et de maintenir la cohérence entre les données.
• La confidentialité des données.
L’accès aux données en consultation et en modification doit être limité aux seuls
utilisateurs autorisés.
Les moyens dont disposent les personnes concernées par la sécurité (administrateur du
système, administrateur du réseau et des bases de données) sont principalement :
• L’authentification des utilisateurs par un mot de passe.
• Le cryptage des données.
• La sécurité physique en contrôlant l’accès des personnes physiques aux salles
informatiques, en utilisant des circuits inviolables matériellement.
• L’information sur les risques pénaux encourus en cas d’infraction. Un
« braquage » informatique est un délit, pas un jeu.
• Le contrôle fréquent des droits d’accès aux fichiers et aux bases de données.
• Le contrôle des « checksum » des fichiers pour s’assurer de leur intégrité.
• La sauvegarde régulière des données.
• L’audit des principaux événements du système.
• L’installation de gardes-barrières ou pare-feu (« firewall ») qui contrôlent les
accès au système informatique depuis l’extérieur et limitent l’accès à des services

17-2 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 17 : La sécurité

externes par des utilisateurs non avertis ou qui n’en ont pas besoin pour, par
exemple, limiter le risque de rapatriement de virus.
Le niveau de sécurité atteint par le système UNIX est le niveau de sécurité C2. Le
niveau C2 est une référence définie et exigée de l’administration américaine et le
système doit procurer :
• Une authentification des utilisateurs.
• La protection des ressources, en particulier des fichiers.
• La protection de la mémoire.
• La possibilité de procéder à l’audit du système.

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 17-3
Module 17 : La sécurité

La cryptologie
La cryptologie

RSA RSA
Texte en Texte en
clair clair

Clé publique Clé privée


de Cathy de Pierre

Pierre Cathy

TSOFT - Linux Administration Module 17 : La sécurité - 17.3

Définition de la cryptologie
La cryptologie comprend un ensemble de techniques qui permettent d’assurer la
confidentialité des données et l’authentification de correspondants.
La base de la cryptologie est constituée d’algorithmes de chiffrement, appelé
également méthode cryptographique. Ces algorithmes permettent de rendre
incompréhensible un message pour toutes les personnes autres que son destinataire.
Les algorithmes de chiffrement sont de deux types :
• Symétriques, à clé secrète.
• Asymétriques, à clé publique.
Les algorithmes de chiffrement ne sont en fait qu’un élément d’un système assurant la
confidentialité et l’authentification. C’est la notion de protocole qui constitue
l’élément central d’une solution utilisant la cryptologie. Un protocole cryptographique
a pour objectif la confidentialité, l’authentification, la signature…, et utilise pour ce
faire un ou plusieurs algorithmes. De plus, il règle tous les problèmes de sécurité
associés à l’échange des clés.

Algorithme à clé secrète


Le message en clair est chiffré (crypté) en utilisant une méthode cryptographique
(algorithme) avant d’être transmis au correspondant. Le chiffrement (cryptage) est
réalisé par un logiciel ou par du matériel. L’algorithme n’a pas besoin d’être secret,
mais par contre la clé de chiffrement ne doit être connue que des deux correspondants.
Exemple : la méthode de Jules César
Cette méthode, utilisée par les écoliers, n’offre aucune sécurité, mais permet d’illustrer
le fonctionnement d’une méthode cryptographique.

17-4 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 17 : La sécurité

Un message en clair, par exemple BONJOUR, est chiffré lettre par lettre. Chaque
lettre est décalée dans l’ordre alphabétique d’un nombre de lettres convenu d’avance.
Ce nombre constitue la clé secrète qui ne doit être connue que des correspondants. En
prenant trois comme décalage, le message en clair BONJOUR devient le
cryptogramme ERQMRXU. Le cryptogramme peut circuler sur le réseau, sans danger,
car une personne qui intercepte le message ne peut le déchiffrer, ne possédant pas la
clé.

Panorama des méthodes à clés privées


Le DES (« Data Encryption Standard ») qui utilise une clé de 56 bits. C’est un
standard ANSI.
Le triple DES qui utilise une clé de 111 bits. Cette méthode a l’avantage d’utiliser
l’algorithme DES (trois fois). Par conséquent, les programmes qui utilisaient le DES
n’ont pas besoin de grandes modifications.
RC2 et RC4 sont des algorithmes propriétaires de RSA Data Security, Inc. ( RSADSI).
Leur clé peut varier de 1 à 1024 bits. Les implémentations que l’on trouve en France,
notamment dans Windows NT, utilisent des clés de 40 bits en raison des lois
américaines sur l’exportation des méthodes cryptographiques.
IDEA (« International Data Encryption Algorithm ») créé par J.L. Massey et Xuejia
Lai. Cette méthode utilise des clés de 128 bits.
BlowFish créé par Bruce Schneier. Cet algorithme, libre de droit et très performant,
utilise des clés de 64 bits.

Algorithme à clé publique


L’algorithme utilise deux clés, une clé publique et une clé secrète. Ces deux clés sont
générées ensemble par un logiciel et elles dépendent mathématiquement l’une de
l’autre. Comme son nom l’indique, la clé publique peut être publiée sans risque, mais
la clé secrète doit être conservée jalousement secrète par son propriétaire. La clé
publique sert habituellement à crypter un message et la clé secrète à le décrypter, mais
l’inverse est possible.
Exemple : la méthode RSA
La méthode à clé publique la plus utilisée est le RSA, du nom de ses inventeurs,
Rivest, Shamir et Adleman. La société RSA Data Security (RSADSI) en détenait les
brevets, qui ont expiré en l’an 2000.
Cathy veut protéger la confidentialité des messages de ses prétendants. Elle génère un
couple de clés. Elle distribue sa clé publique à tous ses admirateurs et conserve sa clé
secrète. Si Pierre veut envoyer un message chiffré à Cathy, il utilise l’algorithme RSA
avec la clé publique de Cathy. Le message chiffré ne peut être lu que par Cathy, grâce
à sa clé secrète.
Remarque
Du fait de la lenteur des algorithmes à clés publiques, ils ne sont utilisés que pour
chiffrer des messages très courts, par exemple des clés secrètes utilisées par les
algorithmes symétriques.
La cryptographie à clé publique offre plusieurs avantages :
• Elle diminue le nombre de clés nécessaires à la communication entre un nombre
important de personnes.
• Elle permet la signature d’un document numérique.
• Elle permet l’authentification mutuelle de deux correspondants.

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 17-5
Module 17 : La sécurité

Diminution du nombre de clés


Si quatre personnes veulent communiquer avec des méthodes à clés secrètes, il faut six
clés secrètes pour permettre toutes les combinaisons de dialogue secret. Il en faut
seulement quatre avec RSA. Avec les méthodes à clés secrètes, le nombre de clés
devient exponentiel au fur et à mesure que le nombre de personnes augmente.
La signature numérique
Pierre crée un document, un contrat par exemple, et il calcule une empreinte (via les
algorithmes MD5 ou SHA) à partir de ce document. Il utilise ensuite sa clé privée pour
chiffrer cette donnée et il associe le résultat au document. Chacun peut recalculer la
somme de contrôle du document et vérifier avec la clé publique de Pierre que le
document est authentique et que Pierre en est l’auteur.
L’authentification mutuelle
Pierre veut envoyer un message à Cathy, mais il désire que le message reste secret et
que seule Cathy puisse le lire et que Cathy soit sûre de son origine.
1. Pierre chiffre son message avec sa clé secrète.
2. Pierre surchiffre le résultat avec la clé publique de Cathy.
3. Pierre transmet le message à Cathy.
4. Cathy utilise sa clé privée pour déchiffrer le message.
5. Cathy utilise ensuite la clé publique de Pierre pour déchiffrer le résultat précédent.
Elle obtient le message en clair qui ne peut provenir que de Pierre et elle seule a
pu le déchiffrer.
La notion de certificat
Un certificat est un document qui comprend essentiellement une clé publique et des
renseignements sur le propriétaire de cette clé , le tout signé avec les clés privées
d’organismes reconnus (des autorités). Un certificat permet de dialoguer de manière
sûre (chiffrée) avec la société qu’il décrit. Si l’on possède d’autres certificats décrivant
les signataires, on a l’assurance de l’identité du propriétaire de la clé. X509 est le
format de certificat normalisé par l’ISO. Le logiciel Netscape communicator contient
plusieurs certificats, dont celui de la société Verisign.

Panarama des méthodes à clés publiques


• Diffie-Hellman.
• RSA (« Ronald Rivest, Adi Shamir et Leonard Adleman »).
• DSA (« Digital Signature Algorithm ») est un standard américain du NIST
(« National Institute of Standards and Technologies »).

Panorama des protocoles cryptographiques


• Kerberos : ce protocole, créé par le MIT, intervient au niveau applicatif, soit par
l’utilisation d’applications « Kerberorisées », soit par l’utilisation de RPC-DCE
qui utilise le système Kerberos. Kerberos implique l’usage d’un serveur Kerberos
qui conserve les clés privées des différents protagonistes. Kerberos est le système
privilégié de Windows 2000.
• RPC-Secure : les RPC-Secure est un protocole de Sun qui intervient au niveau des
RPC et sécurise ainsi toute application RPC.

17-6 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 17 : La sécurité

• SSL : ce protocole intervient au niveau des sockets et peut ainsi sécuriser toutes
les applications TCP/IP. SSL est le protocole actuellement le plus utilisé pour
sécuriser les échanges Web sur Internet.
• C-SET : ce protocole de niveau applicatif permet de sécuriser les paiements sur
Internet. Il devrait se généraliser dans les prochaines années.
• PEM et PGP sont utilisés pour transmettre du courrier électronique crypté et
authentifié.
• Secure Shell (SSH) remplace les commandes remote d’Unix, mais avec cryptage
des données et authentification des partenaires.

La sécurité d’un protocole


La sécurité d’un protocole dépend de :
• L’algorithme utilisé : certaines méthodes peuvent être « cassées » par des
mathématiciens.
• La longueur de la clé : plus la clé est longue, plus la méthode peut résister à
l’attaque brutale qui consiste en l’essai de toutes les clés possibles. Dans le cas de
la méthode Jules César, la clé a une longueur de 5 bits. Les clés inférieures à 40
bits n’offrent aucune sécurité. Le DES (à 56 bits) a été cassé par la force brutale
de plusieurs milliers d’ordinateurs en 1999. Les clés de plus de 60 bits sont
considérées comme sûres. Dans le cas des méthodes à clés publiques, les clés d’au
moins 768 bits sont considérées sûres.
• Le protocole lui-même : certains protocoles possèdent des failles qui permettent
par exemple la réutilisation d’une clé au moment du changement de date.

Les fonctions de hachage (ou générateurs d’empreinte)


Les fonctions de hachage ont un rôle similaire à celui des calculs de « CRC ». Elles
permettent de créer l’empreinte numérique d’un message. Cette empreinte dépend
mathématiquement du message, et si l’on modifie un tant soit peu le message,
l’empreinte associée est complètement différente. En conséquence les fonctions de
hachage permettent de vérifier qu’un message (ou un fichier) n’a pas été altéré. MD5
et SHA sont les deux principaux algorithmes de hachage.

Linux et la cryptographie
PGP
PGP (« Pretty Good Privacy »), créé par Phil Zimmermann, est un logiciel qui permet
de chiffrer, signer et authentifier des fichiers ou des e-mails. Ce logiciel est disponible
dans tous les environnements y compris avec les sources, et bien sûr disponible sous
Linux (cf. http://www.pgp.com). Le GNU a créé une version libre de droits de PGP qui
s’appelle GPG (cf. http://www.gnupg.org).
SSH
SSH remplace les commandes remote en offrant en plus la confidentialité des
échanges. Le chapitre suivant le décrit plus en détails.
Kerberos
Kerberos nécessite des applications Kerberorisées et un poste utilisé comme serveur
Kerberos. Cette technique est bien plus complexe à mettre en œuvre que SSH. Les
principales distributions ne fournissent pas Kerberos en standard, mais comme ses
sources sont disponibles, il est possible de l’implémenter sous Linux.

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 17-7
Module 17 : La sécurité

SSL
SSL est disponible pour le logiciel Apache, notamment sous la forme du module
mod_ssl. Il permet ainsi de créer des sites Web utilisant le paiement électronique (cf.
http://www.apache-ssl.org, http://www.modssl.org).
CFS
Le système de fichiers CFS (« Cryptographic FS ») permet de conserver, chiffrée, une
arborescence de fichiers (cf. http://www.zedz.net/redhat).
CIPE
CIPE (« Cryptographic IP Encapsulation ») permet de construire un VPN (« Virtual
Private Network ») sur Internet. C’est-à-dire qu’il permet de mettre en place un canal
chiffré reliant deux pare-feu distants, appartenant à la même société.
md5sum
Cette commande permet de générer l’empreinte MD5 d’un fichier.
cryptdir
Cette commande permet de chiffrer les fichiers d’un répertoire.
Remarque
La plupart des produits présentés ne sont pas présents dans la distribution RedHat, du
fait de la législation américaine qui restreint l’exportation des méthodes
cryptographiques. Il est par contre possible de les télécharger à partir de sites
européens.

Références cryptographiques
• Le man : md5sum(1), cryptdir(1), pgp(1), gpg(1), ssh(1).
• Les sites Internet précités.
• Le HOWTO Secure-Programs-HOWTO.
• Les livres suivants :
Cryptologie appliquée de Bruce Schneier
PGP par Simson Garfinkel
Web Security & Commerce par Simson Garfinkel et Gene Spafford

17-8 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 17 : La sécurité

SSH
SSH

venus mars

„ L’équivalent de rlogin 
venus$ ssh mars
„ L’équivalent de rsh 
venus$ ssh mars ps –ef
„ L’équivalent de rcp 
venus$ scp mars:/etc/group /tmp

TSOFT - Linux Administration Module 17 : La sécurité - 17.4

Description du service SSH


Le terme SSH (Secure Shell) désigne un ensemble de commandes et de protocoles qui
remplacent les commandes remote (rlogin, rsh, rcp), en offrant, en plus, la
confidentialité des échanges et l’authentification des correspondants.
SSH a été créé par Tatu Ylonen. Il existe actuellement une version OpenSSH créée par
Aaron Campbell & all qui est libre de droit. OpenSSH supporte plusieurs algorithmes
symétriques pour le chiffrement, notamment le triple DES et BlowFish. En ce qui
concerne l’authentification, il supporte le RSA et le DSA.
Remarques
Les paquetages openssh, oppenssh-clients et openssh-server ne sont pas disponibles
dans la distribution RedHat du fait de la législation américaine qui restreint
l’exportation des méthodes cryptographiques. Ces paquetages peuvent être obtenus de
différents sites Internet européens et sont inclus dans la distribution Mandrake.
Il existe des implémentations de SSH pour les environnements Windows et
Macintosh.

Exemple d’utilisation sans configuration du service SSH


Sur le serveur
Sur le serveur il faut installer le paquetage openssh-serveur et ensuite activer
l’application sshd :
# cd /etc/rc.d/init.d
# ./sshd start

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 17-9
Module 17 : La sécurité

Remarque
L’installation du paquetage serveur crée un couple de clés publique/privée qui
identifie l’ordinateur serveur.

Sur le client
Sur le client, on utilise la commande ssh pour activer une connexion. Dans l’exemple,
on se connecte au compte de pierre sur le serveur mars à partir du poste venus,
l’utilisateur donne le mot de passe associé au compte de pierre.
venus$ ssh -l pierre mars
Warning : Permanently added ’mars.soc.fr, 192.168.218.10’ (RSA) to the list of
known hosts.
Pierre@mars.soc.fr’s password : XXXXXX
Last login : Fri Dec 22 12:51:23 2000 From 192.168.218.10
Bonjour
mars$
Lors de la connexion, le serveur envoie sa clé publique. Cette clé est utilisée pour
échanger une clé privée de session et tous les échanges suivants sont chiffrés,
notamment le mot de passe de l’utilisateur. Ce type de connexion offre une totale
sécurité y compris pour une connexion de root transitant sur Internet.
Remarques
On peut également spécifier le compte de connexion sous une forme email :
venus$ ssh pierre@mars

Si l’on n’indique pas le nom de connexion, on suit la même logique que la commande
rlogin. La connexion a lieu sous le compte homonyme du compte local. Si pierre est
connecté sur venus et désire se connecter sur mars sous le compte pierre, il saisit
simplement la commande suivante :
venus$ ssh mars

Le Warning affiché dans l’exemple n’est présent qu’à la première connexion. Il


précise que SSH enregistre la clé publique du serveur. SSH préviendra d’un éventuel
changement de clé ou d’adresse IP du dit serveur.

Les principaux composants de SSH


sshd Le logiciel serveur, actif sur le port TCP 22, qui ouvre une session à
partir d’une connexion d’un client ssh.
ssh Le logiciel client qui remplace rsh et rlogin.
scp Le logiciel client qui remplace rcp.
ssh-keygen Le logiciel qui permet de créer un couple de clés publique/privée.

La configuration du serveur sshd


La configuration du serveur sshd est réalisée par le fichier /etc/ssh/sshd_config. La
configuration par défaut est généralement satisfaisante. Voici quelques-unes des
principales directives :
Port
Le port d’écoute du serveur, par défaut 22.

17-10 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 17 : La sécurité

Protocol
La (les) version(s) du protocole SSH supportée(s) par le serveur. Les valeurs
possibles sont 1 et 2 et par défaut 1.
Ciphers
Liste les algorithmes à clés privées supportés par le protocole Version 2.
Par défaut : 3des-cbs,blowfish,arcfour,cast128-cbc.
AllowUsers
Ce mot clé est suivi d’une liste de noms d’utilisateurs, séparés par des
espaces. Cette directive restreint l’usage de ssh aux seuls utilisateurs mentionnés.
DenyUsers
Cette directive permet d’interdire l’usage de ssh à certains utilisateurs.
AllowGroups, DenyGroups
Ces directives suivent la même logique que les directives AllowUsers et
DenyUsers, mais s’appliquent à des groupes d’utilisateurs.
PermitEmptyPAsswords
Autorise ou non des mots de passe vides.
PermitRootLogin
Autorise ou non la connexion à distance de l’administrateur (root).
RhostsAuthentication
Spécifie le mode Rhosts comme mode d’authentification des clients. sshd se
comporte alors comme rshd et autorise les connexions en se basant sur les fichiers
/etc/hosts.equiv et ~/.rhosts. Ce mode d’authentification n’offre évidemment pas
plus de sécurité que rsh. Par défaut la directive est positionnée à no.
RSAAuthentication
Spécifie le mode RSA comme mode d’authentification des clients. Par défaut la
directive a la valeur yes.
RhostsRSSAAuthentication
Spécifie si l’authentification RSA est utilisée avec l’authentification Rhosts. Par
défaut la directive a la valeur no.
ServerKeyBits
Spécifie la taille des clés publiques. La valeur minimum est de 512 bits, la valeur
par défaut est de 768.
DSAAuthentication
Cette directive a pour valeur yes ou no. Elle indique si l’authentification DSA est
autorisée. Elle l’est par défaut.
PasswordAuthentication
Cette directive a pour valeur yes ou no. Elle indique si l’authentification par mot
de passe est autorisée.
UseLogin
Spécifie si le programme login est utilisé pour les sessions interactives. Par défaut
cette directive a la valeur no.
LogLevel

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 17-11
Module 17 : La sécurité

Indique le niveau de log du serveur. Les valeurs possibles sont : QUIET, FATAL,
ERROR, INFO, VERBOSE et DEBUG. INFO est le niveau par défaut.

Exemple SSH avec authentification du client en RSA


Première étape : le client génère un couple de clés publique/privée
L’utilisateur qui désire travailler à distance se crée un couple de clés asymétriques
grâce à la commande interactive ssh-keygen. Cette commande stocke par défaut les
clés générées dans les fichiers suivants :
$HOME/.ssh/identity La clé RSA privée
$HOME/.ssh/identity.pub La clé RSA publique
Remarque
Lors de la génération du couple de clés, ssh-keygen demande un mot de passe pour
chiffrer la clé privée de l’utilisateur. Si l’utilisateur met un mot de passe vide,
l’utilisation de ssh sera simplifiée, car elle ne nécessitera pas de mot de passe. Par
contre, seuls les droits Linux protégeront la clé privée de l’utilisateur. L’utilisateur
peut ultérieurement changer son mot de passe, y compris le supprimer, avec la
commande ssh-keygen –p.

Deuxième étape : le client transfère une copie de sa clé publique


sur le serveur
L’utilisateur crée sous le compte qu’il possède sur le serveur un répertoire
$HOME/.ssh et il y copie sa clé publique sous le nom « authorized_keys ».
Il est évident qu’il faut utiliser un moyen physique pour transporter la clé, une
disquette par exemple.
Troisième étape : le client se connecte
L’utilisateur peut alors se connecter sur le serveur. Le serveur envoie une information
codée avec la clé publique de l’utilisateur et le logiciel client ssh décode celle-ci grâce
à la clé privée de l’utilisateur. Il est donc authentifié. Comme précédemment le reste
de la session est crypté.
Exemples :
1) Pierre se connecte sur venus. Sa clé privée est protégée par un mot de passe :
venus$ ssh mars
Enter passphrase for RSA key ’pierre@venus.soc.fr’ : XXXXX
Last login : Fri Dec 22 12:58:33 2000 From 192.168.218.10
Bonjour
mars$
2) Pierre se connecte sur venus. Sa clé privée n’est pas protégée par un mot de passe :
venus$ ssh mars
Last login : Fri Dec 22 13:05:13 2000 From 192.168.218.10
Bonjour
mars$
3) Pierre exécute une commande à distance :
venus$ ssh mars date
4) Pierre copie un fichier présent sur l’ordinateur distant :

17-12 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 17 : La sécurité

venus$ scp mars:/etc/group /tmp

Références pour SSH


Le man : ssh(1), sshd(8), ssh-keygen(1), scp(1).
La documentation du paquetage : /usr/doc/openssh, notamment le fichier
README.Ylonen qui est une bonne introduction à SSH.
Les sites Internet : http://www.ssh.fi, http://www.openssh.org,
le site http://www.linux-mandrake.com/fr pour récupérer les
paquetages SSH., le site
http://www.openssh.orghttp://www.openssh.org/windows.html
pour récupérer les versions clientes pour Windows.

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 17-13
Module 17 : La sécurité

La sécurité de connexion
La sécurité de connexion
„ Les commandes
z login, su Réalisent la connexion
z passwd Modifie un mot de passe
z chpasswd Met à jour, en batch, les mots de passe
z who Liste les utilisateurs connectés
z last Liste les dernières connexions
„ Les fichiers
z /etc/passwd Définit les comptes des utilisateurs
z /etc/nologin Interdit la connexion
z /etc/securetty Les terminaux où root peut se connecter
z /var/log/secure Historique des connexions qui ont échoué

TSOFT - Linux Administration Module 17 : La sécurité - 17.5

La sécurité de connexion est assurée par des commandes et des fichiers de données.
Le transparent du chapitre présente les plus significatifs du système Linux. Les
commandes et les fichiers qui ne sont pas présentés dans ce chapitre, le sont dans la
suite du module, en particulier le paquetage « shadow » et le système PAM. La
connaissance de ces deux ensembles est, en effet, indispensable si l’on souhaite
sécuriser le système Linux.

Les commandes
login
La connexion d’un utilisateur se fait par le biais des commandes login et su.
Le fichier /etc/usertty permet de restreindre la connexion des utilisateurs à travers la
commande login.
su (cf. Module 6 : Les processus)
passwd (cf. Le paquetage shadow).
chpasswd
La commande chpasswd permet de modifier les mots de passe en mode batch. Le
fichier d’entrée, par défaut l’entrée standard, contient des couples :
«nom:mot-de_passe ».
# cat maj_passwd
pierre:mot_de_passe
cathy:mot_de_passe
# chpasswd <maj_passwd
who
La commande who affiche la liste des utilisateurs connectés.

17-14 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 17 : La sécurité

last
La commande last affiche les connexions mémorisées dans le fichier /var/log/wtmp.
On peut restreindre l’affichage aux connexions d’un utilisateur.
# last
jf tty3 Tue Jun 29 11:13 - 11:14 (00:00)
jf tty2 Tue Jun 29 10:41 still logged in
root tty1 Tue Jun 29 10:41 still logged in
reboot system boot Tue Jun 29 10:40
wtmp begins Tue Jun 29 10:40:46 1999

Les fichiers
/etc/passwd (cf. Module 2 : Les utilisateurs)
/etc/nologin
L’existence du fichier /etc/nologin interdit la connexion des utilisateurs.
L’administrateur root est le seul à pouvoir se connecter.
/etc/securetty
Le fichier /etc/securetty indique les terminaux où root peut se connecter. On met une
liaison tty par ligne du fichier, sans préciser l’en-tête /dev.
# more securetty
tty1
tty2
tty3
/var/log/secure
Historique des connexions qui ont échoué.
# more secure
Sep 23 16:29:53 linux7 login: ROOT LOGIN ON tty1
Sep 23 17:32:12 linux7 login: LOGIN ON tty2 BY jf
Sep 27 13:24:02 linux7 in.telnetd[634]: connect from 192.0.0.209
Sep 27 13:24:08 linux7 login: LOGIN ON 0 BY gilles FROM 192.0.0.209

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 17-15
Module 17 : La sécurité

Le paquetage shadow
Le paquetage shadow

„ Les fichiers
z /etc/shadow Contient les mots de passe et les
informations de « password aging »
z /etc/passwd Définit les comptes des utilisateurs
z /etc/login.defs Définit les paramètres généraux du
« password aging »
„ Les commandes
z pwconv Crée le fichier shadow
z pwunconv Détruit le fichier shadow
z chage Modifie le « password aging »
z passwd Modifie les mots de passe

TSOFT - Linux Administration Module 17 : La sécurité - 17.6

Le paquetage shadow
Le paquetage shadow apporte deux fonctionnalités intéressantes quant à la sécurité :
1. La dissimulation des mots de passe cryptés.
2. Une gestion efficace du « password aging », c’est-à-dire de la gestion de la durée
de vie des mots de passe.
Les mots de passe et les attributs liés à leur durée de vie sont stockés dans le fichier
/etc/shadow. Ce fichier n’est visible et, a fortiori modifiable, que par le seul
administrateur root.
La commande pwconv crée le fichier /etc/shadow. Il est aussitôt activé et utilisé pour
les connexions des utilisateurs. Pour revenir au mode traditionnel, sans le fichier
/etc/shadow, il suffit d’exécuter la commande inverse, pwunconv, qui remet les mots
de passe cryptés dans /etc/passwd et détruit /etc/shadow.
Le fichier /etc/passwd
Le fichier qui décrit les comptes des utilisateurs ne contient plus les mots de passe.
# cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:
daemon:x:2:2:daemon:/sbin:
Le fichier /etc/shadow
Une ligne du fichier contient le mot de passe et ses attributs pour un utilisateur. Les
champs sont séparés, comme dans /etc/passwd, par le symbole « : ».
Sa structure est la suivante :
Champ1:Champ2:Champ3:Champ4:Champ5:Champ6: Champ7:Champ8:Champ9

17-16 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 17 : La sécurité

Champ Signification
1 Nom de l’utilisateur.
2 Mot de passe crypté.
3 Nombre de jours écoulés entre le premier janvier 1970 et la dernière
modification du mot de passe.
4 Nombre minimum de jours requis entre deux modifications du mot de
passe.
5 Nombre maximum de jours au bout duquel une modification est
obligatoire. Si ce champ est inférieur à la valeur du champ précédent,
l’utilisateur ne peut pas modifier son mot de passe.
6 Nombre de jours avant lequel l’utilisateur doit être averti de l’expiration
prochaine du mot de passe.
7 Nombre de jours avant que le compte soit verrouillé, quand le mot de
passe est expiré.
8 Date d’expiration du mot de passe, exprimée en nombre de jours écoulés
depuis le premier janvier 1970.
9 Champ réservé.

# cat /etc/shadow
root:BpOj2f.G83VNc:10771:0:99999:7:::
bin:*:10771:0:99999:7:::
daemon:*:10771:0:99999:7:::
thomas:QzsIUyS3eGiY6:10771:0:30:7:::134525940

Le fichier /etc/login.defs
Le fichier /etc/login.defs contient les valeurs par défaut du « password aging ». Ces
valeurs sont utilisées lors de la création du fichier /etc/shadow par la commande
pwconv et à la création d’un compte utilisateur.
Ce fichier est abondamment commenté.
# more login.defs
# *REQUIRED*
# Directory where mailboxes reside, _or_ name of file, relative to the
# home directory. If you _do_ define both, MAIL_DIR takes precedence.
# QMAIL_DIR is for Qmail
#
#QMAIL_DIR Maildir
MAIL_DIR /var/spool/mail
#MAIL_FILE .mail
# Password aging controls:
#
# PASS_MAX_DAYS Maximum number of days a password may be
used.
# PASS_MIN_DAYS Minimum number of days allowed between
password
hanges.
# PASS_MIN_LEN Minimum acceptable password length.
# PASS_WARN_AGE Number of days warning given before a password
xpires.
#

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 17-17
Module 17 : La sécurité

PASS_MAX_DAYS 99999
PASS_MIN_DAYS 0
PASS_MIN_LEN 5
PASS_WARN_AGE 7

La commande chage
Cette commande est l’interface privilégiée pour configurer le fichier /etc/shadow.
C’est elle qui permet de visualiser, grâce à l’option « -l », ou de modifier le
« password aging » d’un utilisateur, c’est-à-dire de modifier les attributs qui traitent de
la pérennité du mot de passe :
Fixer la date d’expiration du mot de passe d’un utilisateur.
# chage –E aaaa/mm/jj Nom_utilisateur
Obliger un utilisateur à changer son mot de passe au bout de Nb_jours.
# chage –M Nb_jours Nom_utilisateur
Visualiser les attributs du mot de passe d’un utilisateur.
# chage –l Nom_utilisateur
Modifier les attributs de façon interactive. La commande demande la nouvelle valeur
de chaque attribut. La frappe immédiate de « Entrée », sans saisie de valeur laisse
l’attribut inchangé.
# chage Nom_utilisateur
Syntaxe
chage [-m mindays] [-M maxdays] [-d lastday] [-l inactive][-E expire_date]
[-W warndays] utilisateur
chage –l utilisateur
Exemple
# chage -l thomas
Minimum: 0
Maximum: 30
Warning: 7
Inactive: -1
Last Change: Jun 29, 1999
Password Expires: Jul 29, 1999
Password Inactive: Never
Account Expires: Never
# date '+%d/%m/%y'
11/06/99
# chage –E 06/10/99 # verrouille le compte, la date est antérieure à la date du
jour
# chage E 0 # déverrouille le compte

Si le fichier /etc/shadow n'existe pas, le créer avec la commande pwconv.


# pwconv
Afficher la date du jour (jj/mm/aaaa) pour la compréhension des exemples.
# date +%d%m/%Y
27/04/1999

17-18 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 17 : La sécurité

Fixer la date d’expiration du mot de passe de jean au 30 septembre 1999.


# chage -E 1999/09/30 jean
Forcer l’utilisateur jean à changer son mot de passe tous les trente jours.
# chage -M 30 jean
Modifier les informations précédentes de façon interactive.
# chage jean
Changing the aging information for jean
Enter the new value, or press return for the default
Minimum Password Age [0]:7
Maximum Password Age [30]:45
Last Password Change (MM/DD/YY) [04/27/99]:
Password Expiration Warning [7]:
Password Inactive [-1]:
Account Expiration Date (MM/DD/YY) [09/30/99]: 12/31/99

Visualiser les informations précédentes.


# chage -l jean
Minimum: 7
Maximum: 45
Warning: 7
Inactive: -1
Last Change: Apr 27, 1999
Password Expires: Jun 11, 1999
Password Inactive: Never
Account Expires: Dec 31, 1999

La commande passwd
Cette commande permet de modifier le mot de passe (cf. Module 2 : Les utilisateurs).
Le paquetage shadow contient également les commandes grpconv et grpunconv qui
permettent la gestion du fichier /etc/group. Il est rare que l’on ait à les mettre en
œuvre.

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 17-19
Module 17 : La sécurité

PAM
PAM

# cat /etc/pam.d/login
#%PAM-1.0
auth required /lib/security/pam_securetty.so
auth required /lib/security/pam_pwdb.so shadow nullok
auth required /lib/security/pam_nologin.so
account required /lib/security/pam_pwdb.so
password required /lib/security/pam_cracklib.so
password required /lib/security/pam_pwdb.so nullok
use_authtok md5 shadow
session required /lib/security/pam_pwdb.so
session optional /lib/security/pam_console.so

TSOFT - Linux Administration Module 17 : La sécurité - 17.7

L’authentification des utilisateurs qui se connectent à un système UNIX ou Linux


consiste à demander un nom d’utilisateur et le mot de passe qui lui est associé. Ce
contrôle est réalisé par les commandes login, rlogin, su ou le service de connexion
graphique xdm. Les mots de passe sont conservés dans le fichier /etc/passwd ou
/etc/shadow, et cryptés en DES.
Le service PAM (« Pluggable Authentication Module ») est une API, c’est-à-dire un
ensemble de primitives, disponible dans des bibliothèques dynamiques. Une
commande peut utiliser cette API pour construire un service d’authentification plus
élaboré. L’administrateur adapte et modifie les règles et les méthodes
d’authentification, sans avoir besoin de recompiler les commandes.
Les commandes utilisent ainsi, de manière transparente, des moyens cryptographiques
supérieurs au DES ou des authentifications basées sur des caractéristiques humaines
(iris, lobe de l’oreille…). PAM permet également de limiter, pour chaque utilisateur,
l’usage des ressources système.

Les composants de PAM


Le tableau qui suit donne les principaux composants de PAM :
Composant Description
/etc/pam.d/* Les fichiers de configuration de PAM, qui remplacent
l’ancien fichier /etc/pam.conf. Il existe un fichier par
service. On trouve ainsi login, su, rlogin…
Le fichier other définit les règles par défaut.
/lib/security/*.so Les bibliothèques dynamiques de PAM. Rappelons que
« .so » est l’extension standard pour ces bibliothèques dans
le monde UNIX et Linux.
/lib/libpam*.so Les bibliothèques des applications qui utilisent PAM.
/bin/*, … Les commandes login, su, … qui utilisent PAM.

17-20 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 17 : La sécurité

Les fichiers de configuration


Un fichier de configuration de PAM, situé dans /etc/pam.d. Il porte le nom du service
qu’il sécurise. Un fichier de configuration est de type texte. Chaque ligne du fichier
décrit un module. Les modules peuvent être compilés. Le fichier rlogin décrit ainsi au
moins deux méthodes d’authentification, le fichier /etc/rhosts.equiv et, en cas d’échec,
la demande du mot de passe de l’utilisateur.
Syntaxe d’une ligne
Type stratégie chemin ARGUMENTS
Le type définit la nature du module. On dispose des possibilités suivantes :
auth Le module qui réalise l’authentification.
account Le module qui vérifie si l’authentification est
autorisée, par exemple que la date d’expiration du
compte n’est pas dépassée.
password Identifie le module qui permet de changer les mots
de passe.
session Le module qui est activé quand l’utilisateur est
authentifié.
La stratégie d’authentification
requisite Le module doit réussir. A défaut PAM met fin à
l’authentification sans exécuter les autres modules.
sufficient Si le module réussit, l’authentification est validée et
les autres modules ne sont pas exécutés.
required L’exécution du module est obligatoire.
Chemin
C’est le chemin d’accès au fichier qui contient le module de PAM, par exemple
/lib/security/pam_pwdb.so.
Le tableau qui suit donne la liste de quelques modules :
pam_pwdb Remplace l’authentification traditionnelle de Linux.

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 17-21
Module 17 : La sécurité

• L’architecture « Dual-Homed Architecture » (machine multi-domiciliée) est la


plus simple. Le rempart relie les deux réseaux, mais il ne route pas les paquets. Il
abrite les proxys et les services réseaux. Comme le système n’est pas routeur, les
applications proxy sont les seuls intermédiaires possibles.
• L’architecture « Screening Router Architecture » est essentiellement construite
autour d’un routeur filtrant.
• L’architecture « Screened Subnet Architecture » est constituée d’un rempart relié à
deux routeurs filtrants, l’un protège le rempart de l’extérieur et l’autre sépare le
LAN du rempart. Une variante de ce modèle est constituée d’un pare-feu
comprenant trois cartes réseaux, la première est reliée à l’extérieur, la seconde est
reliée au LAN et la troisième aux remparts. C’est cette architecture qui est décrite
dans les HOWTO.

IP Masquerading
L’« IP Masquerading », traduction d’adresses IP, permet à un ensemble d’ordinateurs
d’être vu comme une seule machine. Cette technique peut être utilisée par un firewall
de type routeur filtrant. On peut remarquer qu’un routeur à base de proxy n’a pas
besoin de la traduction d’adresses, car les réseaux qu’il relie s’ignorent mutuellement.
Un des principaux intérêts de l’IP Masquerading est d’autoriser des réseaux privés à
utiliser Internet avec une seule adresse Internet.
Les adresses IP des réseaux privés
Les firewalls utilisant des proxys ou la traduction d’adresses peuvent masquer
complètement les détails d’un réseau privé. On pourrait imaginer, en conséquence, que
n’importe quelle adresse puisse être utilisée dans le réseau privé. Cela n’est pas
possible car il y a un problème, la mise à jour des tables de routage du firewall quand
ce dernier a besoin d’adresser un réseau qui possède la même adresse que le réseau
privé. La solution consiste à utiliser les adresses réservées à cet effet par les instances
d’Internet. Ces adresses ne sont attribuées à aucun réseau directement accessible sur
Internet.
Adresses de classe A : 10.0.0.0 à 10.255.255.255
Adresses de classe B : 172.16.0.0 à 172.31.255.255
Adresses de classe C : 192.168.0.0 à 192.168.255.255

Les principales solutions disponibles sous Linux


Routeur filtrant
On peut transformer un système Linux en routeur filtrant avec le paquetage Ipchains,
qui utilise des fonctionnalités internes au noyau. Ipchains fonctionne à partir des
noyaux 2.2. On utilisait, avant, ipfwadm (cf. Le chapitre ipchains). Le noyau 2.4
utilise une nouvelle technique de filtrage, compatible avec les outils ipfwadm et
ipchains.
Ordinateur multi-domicilié avec proxy
On configure Linux pour ne pas router les paquets, et on installe des applications
proxy. Dans le cas du Web, on peut utiliser Apache configuré en proxy ou encore
mieux, le logiciel Squid qui est spécifiquement un proxy avec cache.
SOCKS
Le logiciel client est relié au proxy de manière transparente. La technologie SOCKS
est composée d’un proxy SOCKS et d’une bibliothèque SOCKS qui remplace l’API
socket des clients.

17-28 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 17 : La sécurité

Netfilter
Le noyau 2.4 utilise une nouvelle technique de filtrage, Netfilter
(cf. www.netfilter.org), compatible avec les outils ipfwadm et ipchains.

Références
Howto :
Firewall-HOWTO qui concerne les pare-feu en général.
IPCHAINS-HOWTO : qui concerne l’utilisation d’ipchains.
Linux NET-3-HOWTO qui traite du réseau en général, il contient quelques
éléments sur les pare-feu.
IP-Masquerading HOWTO, très complet, il indique entre autres comment
compiler le noyau pour avoir le masquerading et les modules du noyau à charger
en fonction des options particulières voulues.
PPP-HOWTO, Ethernet-HOWTO
Livres : (cf. bibliographie).

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 17-29
Module 17 : La sécurité

Un pare-feu de type proxy avec SQUID


Un pare-feu de type proxy avec SQUID

# squid.conf
http_port 3128
cache_mem 16 MB
cache_dir /var/spool/squid 100 16 128
cache_access_log /var/log/squid/access.log
ftp_user squid@societe.com
acl lan src 192.168.218.0/255.255.255.0
http_access allow lan
cache_effective_user squid
cache_effective_group squid

TSOFT - Linux Administration Module 17 : La sécurité - 17.13

SQUID est un logiciel proxy pour les protocoles HTTP, Gopher et FTP. Il permet
facilement de construire un pare-feu de type multi-domicilié. En dehors de son
utilisation à des fins de sécurité, il peut être utilisé comme cache pour améliorer les
performances d’accès au Web.

Démarrage du proxy
Il est possible de démarrer automatiquement le proxy Squid (cf. Module 7 : L’arrêt et
le démarrage). Pour le démarrer ou l’arrêter manuellement, on exécute les opérations
suivantes :
# cd /etc/rc.d/init.d
# ./squid start # pour le démarrer

# ./squid stop # pour l’arrêter

Les composants du proxy


/usr/sbin/squid Le logiciel proxy Squid.
/us/lib/squid/ Le répertoire contenant différents outils, notamment le client
DNS dnsserver.
/etc/squid Le répertoire contenant les fichiers d’administration de Squid,
principalement squid.conf.
/var/log/squid/ Le répertoire contenant les journaux de bord de Squid :
access.log Mémorisation des demandes des clients
cache.log Enregistrement du comportement du cache
store.log Enregistrement des mouvements du cache
/var/spool/squid/ Le répertoire qui contient, dans la configuration par défaut, le
cache disque de Squid.

17-30 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 17 : La sécurité

Remarque
Les journaux de bord (logs) grossissent très vite. On doit les détruire ou les
réinitialiser périodiquement. Si on veut les détruire, il faut arrêter Squid. On peut les
réinitialiser sans arrêter l’exploitation avec la commande suivante :
# squid -k rotate

La configuration du proxy
C’est le fichier /etc/squid/squid.conf qui configure complètement le proxy. Ce fichier
est abondamment commenté. Tous les paramètres par défaut sont indiqués à titre
d’exemple, mis en commentaire.
Remarque
Le paramétrage du cache est un des éléments clés de la configuration. Plus le cache est
important, meilleures seront les performances. Il est conseillé d’avoir un serveur avec
au moins 512 Mo de mémoire vive et 10 Go de mémoire disque.

Les principales balises de configuration


httpd_port Le numéro de port du proxy, par défaut 3128. Il doit être spécifié dans la
configuration du navigateur.
icp_port Le numéro de port associé au protocole ICP. Ce protocole permet de
relier des proxys entre eux. On donne la valeur 0 pour le désactiver.
cache_mem Ce n’est pas directement la taille du cache de la mémoire vive, mais un
paramètre utilisé lors de sa réservation. Il est conseillé de lui donner
comme valeur un tiers de la taille mémoire. Par défaut, le paramètre a
pour valeur 8 Mo.
cache_dir Cette balise configure le cache disque. Le premier paramètre spécifie le
répertoire abritant le cache, le deuxième, la taille du cache. Les deux
derniers précisent le nombre de sous-répertoires dans les deux premiers
niveaux de l’arborescence. Il peut y avoir plusieurs balises de ce type, ce
qui permet de répartir le cache disque sur plusieurs FS, donc sur plusieurs
disques. Le répertoire du cache disque est par défaut /var/spool/squid et
sa taille, par défaut, de 100 Mo.
maximum_object_size
Un objet dont la taille est supérieure à cette limite n’est pas conservé dans
le cache. Par défaut, le paramètre a pour valeur 4 Mo.
ftp_user C’est le mot de passe associé aux connexions FTP anonymes. Il doit
correspondre à une adresse e-mail valide.
cache_access_log
C’est le fichier journal qui enregistre les accès des clients. Par défaut, sa
valeur est /var/log/squid/access.log. Pour le désactiver, on l’associe au
fichier /dev/null.
cache_log C’est le journal qui enregistre le comportement du cache. On peut le
désactiver en l’associant au fichier /dev/null.
cache_store_log
C’est le journal qui enregistre les mouvements du cache entre la
mémoire vive et le disque. Sauf cas particulier, on doit le désactiver, en
lui donnant la valeur « none ».

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 17-31
Module 17 : La sécurité

acl Cette balise permet de créer une ACL (« Access Control List »), une liste
de contrôle d’accès. Cette liste intervient dans les autorisations ou les
interdictions d’accès aux protocoles gérés par le proxy (cf. Le paramètre
suivant).
http_access Cette balise permet d’autoriser ou d’interdire l’accès Web aux ACL
données en paramètres.
cache_mgr L’adresse e-mail du responsable du proxy, par défaut webmaster.
cache_effective_user
Le compte utilisateur sous lequel s’exécute le proxy, par défaut Squid.
cache_effective_group
Le compte groupe sous lequel s’exécute le proxy.

Exemple complet d’un fichier de configuration


# squid.conf
http_port 3128
icp_port 0
cache_mem 2 MB
cache_dir ufs /var/spool/squid 30 16 128
maximum_object_size 4096 KB
cache_store_log none
cache_access_log /var/log/squid/access.log
ftp_user ftp@ma_societe.com
acl all src 0.0.0.0/0.0.0.0
acl manager proto cache_object
acl localhost src 127.0.0.1/255.255.255.255
acl lan src 192.168.218.0/255.255.255.0
acl SSL_ports port 443 563
acl Safe_ports port 80 21 443 563 70 210 1025-65535
acl Safe_ports port 280 # http-mgmt
acl Safe_ports port 488 # gss-http
acl Safe_ports port 591 # filemaker
acl manager proto cache_object
acl localhost src 127.0.0.1/255.255.255.255
acl lan src 192.168.218.0/255.255.255.0
acl SSL_ports port 443 563
acl Safe_ports port 80 21 443 563 70 210 1025-65535
acl Safe_ports port 280 # http-mgmt
acl Safe_ports port 488 # gss-http
acl Safe_ports port 591 # filemaker
acl Safe_ports port 777 # multiling http
acl CONNECT method CONNECT
http_access allow manager localhost
http_access deny manager
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access allow localhost
http_access allow lan
http_access deny all
icp_access allow all
miss_access allow all
cache_mgr webmaster

17-32 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 17 : La sécurité

cache_effective_user squid
cache_effective_group squid

Exemple complet de mise en œuvre


Architecture réseau
Supposons que l’on ait deux réseaux reliés par notre pare-feu :
• Le réseau extérieur est le réseau 173.17.0.0/16, on l’atteint par l’interface eth1
d’adresse 173.17.0.1.
• Le réseau intérieur est le réseau 192.168.218.0/24, il est relié au pare-feu par
l’interface eth0 d’adresse 192.168.218.11.

Remarque
Il n’est pas nécessaire de configurer le routage, aussi bien sur le réseau intérieur que
sur le réseau extérieur, car on utilise un pare-feu de type multi-domicilié, donc non
routeur, abritant des logiciels proxys.

Règles de sécurité
Les règles de sécurité sont :
• On autorise tous les accès du réseau intérieur en tant que client Web.
• Le reste est interdit.
Mise en œuvre
On désactive le routage sur le pare-feu.
# echo 0 > /proc/sys/net/ipv4/ip_forward
On configure SQUID sur le pare-feu et on l’active.
La configuration par défaut suffit. Une seule modification est nécessaire. Il faut
autoriser les accès des postes du réseau intérieur. Il est possible également d’utiliser le
fichier donné en exemple dans la section précédente.
# cd /etc/squid
# cp squid.conf squid.conf.old
# vi squid.conf

acl lan src 192.168.218.0/255.255.255.0

http_access allow lan

# cd /etc/rc.d/init.d
# ./squid start
Configuration des navigateurs du réseau intérieur
Dans notre cas on choisit 192.168.218.11 pour l'adresse du proxy et 3128 pour son
port.

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 17-33
Module 17 : La sécurité

• L’architecture « Dual-Homed Architecture » (machine multi-domiciliée) est la


plus simple. Le rempart relie les deux réseaux, mais il ne route pas les paquets. Il
abrite les proxys et les services réseaux. Comme le système n’est pas routeur, les
applications proxy sont les seuls intermédiaires possibles.
• L’architecture « Screening Router Architecture » est essentiellement construite
autour d’un routeur filtrant.
• L’architecture « Screened Subnet Architecture » est constituée d’un rempart relié à
deux routeurs filtrants, l’un protège le rempart de l’extérieur et l’autre sépare le
LAN du rempart. Une variante de ce modèle est constituée d’un pare-feu
comprenant trois cartes réseaux, la première est reliée à l’extérieur, la seconde est
reliée au LAN et la troisième aux remparts. C’est cette architecture qui est décrite
dans les HOWTO.

IP Masquerading
L’« IP Masquerading », traduction d’adresses IP, permet à un ensemble d’ordinateurs
d’être vu comme une seule machine. Cette technique peut être utilisée par un firewall
de type routeur filtrant. On peut remarquer qu’un routeur à base de proxy n’a pas
besoin de la traduction d’adresses, car les réseaux qu’il relie s’ignorent mutuellement.
Un des principaux intérêts de l’IP Masquerading est d’autoriser des réseaux privés à
utiliser Internet avec une seule adresse Internet.
Les adresses IP des réseaux privés
Les firewalls utilisant des proxys ou la traduction d’adresses peuvent masquer
complètement les détails d’un réseau privé. On pourrait imaginer, en conséquence, que
n’importe quelle adresse puisse être utilisée dans le réseau privé. Cela n’est pas
possible car il y a un problème, la mise à jour des tables de routage du firewall quand
ce dernier a besoin d’adresser un réseau qui possède la même adresse que le réseau
privé. La solution consiste à utiliser les adresses réservées à cet effet par les instances
d’Internet. Ces adresses ne sont attribuées à aucun réseau directement accessible sur
Internet.
Adresses de classe A : 10.0.0.0 à 10.255.255.255
Adresses de classe B : 172.16.0.0 à 172.31.255.255
Adresses de classe C : 192.168.0.0 à 192.168.255.255

Les principales solutions disponibles sous Linux


Routeur filtrant
On peut transformer un système Linux en routeur filtrant avec le paquetage Ipchains,
qui utilise des fonctionnalités internes au noyau. Ipchains fonctionne à partir des
noyaux 2.2. On utilisait, avant, ipfwadm (cf. Le chapitre ipchains). Le noyau 2.4
utilise une nouvelle technique de filtrage, compatible avec les outils ipfwadm et
ipchains.
Ordinateur multi-domicilié avec proxy
On configure Linux pour ne pas router les paquets, et on installe des applications
proxy. Dans le cas du Web, on peut utiliser Apache configuré en proxy ou encore
mieux, le logiciel Squid qui est spécifiquement un proxy avec cache.
SOCKS
Le logiciel client est relié au proxy de manière transparente. La technologie SOCKS
est composée d’un proxy SOCKS et d’une bibliothèque SOCKS qui remplace l’API
socket des clients.

17-28 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 17 : La sécurité

Netfilter
Le noyau 2.4 utilise une nouvelle technique de filtrage, Netfilter
(cf. www.netfilter.org), compatible avec les outils ipfwadm et ipchains.

Références
Howto :
Firewall-HOWTO qui concerne les pare-feu en général.
IPCHAINS-HOWTO : qui concerne l’utilisation d’ipchains.
Linux NET-3-HOWTO qui traite du réseau en général, il contient quelques
éléments sur les pare-feu.
IP-Masquerading HOWTO, très complet, il indique entre autres comment
compiler le noyau pour avoir le masquerading et les modules du noyau à charger
en fonction des options particulières voulues.
PPP-HOWTO, Ethernet-HOWTO
Livres : (cf. bibliographie).

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 17-29
Module 17 : La sécurité

Un pare-feu de type proxy avec SQUID


Un pare-feu de type proxy avec SQUID

# squid.conf
http_port 3128
cache_mem 16 MB
cache_dir /var/spool/squid 100 16 128
cache_access_log /var/log/squid/access.log
ftp_user squid@societe.com
acl lan src 192.168.218.0/255.255.255.0
http_access allow lan
cache_effective_user squid
cache_effective_group squid

TSOFT - Linux Administration Module 17 : La sécurité - 17.13

SQUID est un logiciel proxy pour les protocoles HTTP, Gopher et FTP. Il permet
facilement de construire un pare-feu de type multi-domicilié. En dehors de son
utilisation à des fins de sécurité, il peut être utilisé comme cache pour améliorer les
performances d’accès au Web.

Démarrage du proxy
Il est possible de démarrer automatiquement le proxy Squid (cf. Module 7 : L’arrêt et
le démarrage). Pour le démarrer ou l’arrêter manuellement, on exécute les opérations
suivantes :
# cd /etc/rc.d/init.d
# ./squid start # pour le démarrer

# ./squid stop # pour l’arrêter

Les composants du proxy


/usr/sbin/squid Le logiciel proxy Squid.
/us/lib/squid/ Le répertoire contenant différents outils, notamment le client
DNS dnsserver.
/etc/squid Le répertoire contenant les fichiers d’administration de Squid,
principalement squid.conf.
/var/log/squid/ Le répertoire contenant les journaux de bord de Squid :
access.log Mémorisation des demandes des clients
cache.log Enregistrement du comportement du cache
store.log Enregistrement des mouvements du cache
/var/spool/squid/ Le répertoire qui contient, dans la configuration par défaut, le
cache disque de Squid.

17-30 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 17 : La sécurité

Remarque
Les journaux de bord (logs) grossissent très vite. On doit les détruire ou les
réinitialiser périodiquement. Si on veut les détruire, il faut arrêter Squid. On peut les
réinitialiser sans arrêter l’exploitation avec la commande suivante :
# squid -k rotate

La configuration du proxy
C’est le fichier /etc/squid/squid.conf qui configure complètement le proxy. Ce fichier
est abondamment commenté. Tous les paramètres par défaut sont indiqués à titre
d’exemple, mis en commentaire.
Remarque
Le paramétrage du cache est un des éléments clés de la configuration. Plus le cache est
important, meilleures seront les performances. Il est conseillé d’avoir un serveur avec
au moins 512 Mo de mémoire vive et 10 Go de mémoire disque.

Les principales balises de configuration


httpd_port Le numéro de port du proxy, par défaut 3128. Il doit être spécifié dans la
configuration du navigateur.
icp_port Le numéro de port associé au protocole ICP. Ce protocole permet de
relier des proxys entre eux. On donne la valeur 0 pour le désactiver.
cache_mem Ce n’est pas directement la taille du cache de la mémoire vive, mais un
paramètre utilisé lors de sa réservation. Il est conseillé de lui donner
comme valeur un tiers de la taille mémoire. Par défaut, le paramètre a
pour valeur 8 Mo.
cache_dir Cette balise configure le cache disque. Le premier paramètre spécifie le
répertoire abritant le cache, le deuxième, la taille du cache. Les deux
derniers précisent le nombre de sous-répertoires dans les deux premiers
niveaux de l’arborescence. Il peut y avoir plusieurs balises de ce type, ce
qui permet de répartir le cache disque sur plusieurs FS, donc sur plusieurs
disques. Le répertoire du cache disque est par défaut /var/spool/squid et
sa taille, par défaut, de 100 Mo.
maximum_object_size
Un objet dont la taille est supérieure à cette limite n’est pas conservé dans
le cache. Par défaut, le paramètre a pour valeur 4 Mo.
ftp_user C’est le mot de passe associé aux connexions FTP anonymes. Il doit
correspondre à une adresse e-mail valide.
cache_access_log
C’est le fichier journal qui enregistre les accès des clients. Par défaut, sa
valeur est /var/log/squid/access.log. Pour le désactiver, on l’associe au
fichier /dev/null.
cache_log C’est le journal qui enregistre le comportement du cache. On peut le
désactiver en l’associant au fichier /dev/null.
cache_store_log
C’est le journal qui enregistre les mouvements du cache entre la
mémoire vive et le disque. Sauf cas particulier, on doit le désactiver, en
lui donnant la valeur « none ».

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 17-31
Module 17 : La sécurité

acl Cette balise permet de créer une ACL (« Access Control List »), une liste
de contrôle d’accès. Cette liste intervient dans les autorisations ou les
interdictions d’accès aux protocoles gérés par le proxy (cf. Le paramètre
suivant).
http_access Cette balise permet d’autoriser ou d’interdire l’accès Web aux ACL
données en paramètres.
cache_mgr L’adresse e-mail du responsable du proxy, par défaut webmaster.
cache_effective_user
Le compte utilisateur sous lequel s’exécute le proxy, par défaut Squid.
cache_effective_group
Le compte groupe sous lequel s’exécute le proxy.

Exemple complet d’un fichier de configuration


# squid.conf
http_port 3128
icp_port 0
cache_mem 2 MB
cache_dir ufs /var/spool/squid 30 16 128
maximum_object_size 4096 KB
cache_store_log none
cache_access_log /var/log/squid/access.log
ftp_user ftp@ma_societe.com
acl all src 0.0.0.0/0.0.0.0
acl manager proto cache_object
acl localhost src 127.0.0.1/255.255.255.255
acl lan src 192.168.218.0/255.255.255.0
acl SSL_ports port 443 563
acl Safe_ports port 80 21 443 563 70 210 1025-65535
acl Safe_ports port 280 # http-mgmt
acl Safe_ports port 488 # gss-http
acl Safe_ports port 591 # filemaker
acl manager proto cache_object
acl localhost src 127.0.0.1/255.255.255.255
acl lan src 192.168.218.0/255.255.255.0
acl SSL_ports port 443 563
acl Safe_ports port 80 21 443 563 70 210 1025-65535
acl Safe_ports port 280 # http-mgmt
acl Safe_ports port 488 # gss-http
acl Safe_ports port 591 # filemaker
acl Safe_ports port 777 # multiling http
acl CONNECT method CONNECT
http_access allow manager localhost
http_access deny manager
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access allow localhost
http_access allow lan
http_access deny all
icp_access allow all
miss_access allow all
cache_mgr webmaster

17-32 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 17 : La sécurité

cache_effective_user squid
cache_effective_group squid

Exemple complet de mise en œuvre


Architecture réseau
Supposons que l’on ait deux réseaux reliés par notre pare-feu :
• Le réseau extérieur est le réseau 173.17.0.0/16, on l’atteint par l’interface eth1
d’adresse 173.17.0.1.
• Le réseau intérieur est le réseau 192.168.218.0/24, il est relié au pare-feu par
l’interface eth0 d’adresse 192.168.218.11.

Remarque
Il n’est pas nécessaire de configurer le routage, aussi bien sur le réseau intérieur que
sur le réseau extérieur, car on utilise un pare-feu de type multi-domicilié, donc non
routeur, abritant des logiciels proxys.

Règles de sécurité
Les règles de sécurité sont :
• On autorise tous les accès du réseau intérieur en tant que client Web.
• Le reste est interdit.
Mise en œuvre
On désactive le routage sur le pare-feu.
# echo 0 > /proc/sys/net/ipv4/ip_forward
On configure SQUID sur le pare-feu et on l’active.
La configuration par défaut suffit. Une seule modification est nécessaire. Il faut
autoriser les accès des postes du réseau intérieur. Il est possible également d’utiliser le
fichier donné en exemple dans la section précédente.
# cd /etc/squid
# cp squid.conf squid.conf.old
# vi squid.conf

acl lan src 192.168.218.0/255.255.255.0

http_access allow lan

# cd /etc/rc.d/init.d
# ./squid start
Configuration des navigateurs du réseau intérieur
Dans notre cas on choisit 192.168.218.11 pour l'adresse du proxy et 3128 pour son
port.

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 17-33
Module 17 : La sécurité

Configurer Internet Explorer :


[Outils][Options Internet][connexions][Paramètres LAN]
Ensuite, on coche « Utiliser un serveur proxy » et grâce au bouton « Avancé », on
rentre l’adresse et le port du proxy.
Configurer Netscape :
[Edition][Préférences] Catégorie Avancée [Proxy]. Dans la boîte de dialogue, on
choisit le bouton radio « Configuration manuelle du proxy », et on appuie ensuite sur
le bouton « Avancé ». On saisit alors l’adresse et le port du proxy.
Configurer Lynx :
On peut modifier le fichier de configuration de Lynx (cf. lynx(1)) ou positionner des
variables d’environnement :
$ export http_proxy='http://adresse_du_proxy:numero_de_port'
$ export ftp_proxy='http://adresse_du_proxy:numero_de_port'

Un exemple d’accès
Sur le poste 192.168.218.1 appartenant au réseau intérieur, on accède à la page
d’accueil du serveur 173.17.0.2 faisant partie du réseau extérieur.
Extrait du log du serveur 173.17.0.2 :
173.17.0.1 - - [02/Dec/2000:13:53:24 +0100] "GET / HTTP/1.0" 304 -
173.17.0.1 - - [02/Dec/2000:13:53:24 +0100] "GET /poweredby.gif HTTP/1.0" 304 -
173.17.0.1 - - [02/Dec/2000:13:53:24 +0100] "GET /icons/apache_pb.gif HTTP/1.0"
304 –
Extrait du log de SQUID :
975762311.099 75 192.168.218.1 TCP_MISS/304 206 GET http://173.17.0.2/ -
DIR
ECT/173.17.0.2 -
975762311.188 26 192.168.218.1 TCP_MISS/304 206 GET
ttp://173.17.0.2/powere
dby.gif - DIRECT/173.17.0.2 -
975762311.210 109 192.168.218.1 TCP_MISS/304 206 GET
ttp://173.17.0.2/icons/
apache_pb.gif - DIRECT/173.17.0.2 –

Références pour SQID


Le fichier de configuration /etc/squid/squid.conf.
Le répertoire /usr/doc contient les éléments suivants :
Les FAQ au format HTML.
Le fichier QUICKSTART qui explique comment activer le proxy et les
paramètres les plus importants du fichier de configuration.
Le site de Squid : http://squid.nlanr.net/

17-34 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 17 : La sécurité

Construire un pare-feu avec IPCHAINS


Construire un pare-feu avec IPCHAINS

„ ipchains -A input -i eth1 -s 173.17.0.0/16 -j REJECT


-A chaîne Ajout d’une règle à une chaîne : input, forward, output.
-i interface La règle concerne des paquets associés à une
interface réseau.
-s x.y.z.w/n La règle concerne des paquets provenant du réseau x.y.z.w et dont
le masque de sous-réseau s'exprime sur n bits.
-d x.y.z.w/n Identique à l’option précédente, mais pour leréseau de
destination.
-y Ne concerne que les paquets de connexion.
-p protocole Ne concerne que les paquets appartenant au protocole indiqué.
-j politique Précise ce que l’on fait si la règle s’applique : ACCEPT, DENY,
REJECT, MASQ.

TSOFT - Linux Administration Module 17 : La sécurité - 17.11

Ipchains est un paquetage constitué, essentiellement, de la commande ipchains. Cette


commande permet de construire un pare-feu de type routeur filtrant, selon les règles
définies par la commande ipchains. Le noyau, à partir de la version 2.2, laisse passer
ou rejette les paquets IP qui transitent par le pare-feu. Ipchains permet, en outre,
d’utiliser le masquerading.
Remarques
Si le noyau accepte les paramètres d’ipchains, il possède le fichier
/proc/sys/net/ipv4/ip_fwchains. S’il possède également le fichier
/proc/sys/net/ipv4/ip_masq_debug, il supporte le masquerading. Dans le cas contraire,
il faut recompiler le noyau.
Avec un noyau 2.4, il faut éventuellement charger le module ipchains : (insmod
ipchains).

Le concept de chaîne
Une chaîne est constituée d’une suite de règles, créées par l’option « –A ». Pour
chaque règle, on indique la politique à suivre, via l’option « –j », laisser passer le
paquet ou l’abandonner. Si la règle ne s’applique pas au paquet, on passe à la règle
suivante de la chaîne. Enfin, si aucune règle de la chaîne ne s’applique, la politique de
la chaîne, définie par l’option « -P », s’applique au paquet.
Les chaînes prédéfinies et le parcours d’un paquet
• Un paquet entrant passe d’abord par la chaîne « input chain ».
• Si le paquet n’est pas rejeté, il passe ensuite dans le module de routage.
• A la sortie du module de routage, il passe par la chaîne « forward chain ».
• Si le paquet n’est pas rejeté, il passe par la chaîne « output chain ».
• Si le paquet n’est pas rejeté, il ressort !
Il existe des cas particuliers :

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 17-35
Module 17 : La sécurité

• Un paquet provenant ou destiné au pare-feu ne passe pas par la chaîne


« forward ».
• Un paquet provenant du pare-feu et qui est destiné à un autre ordinateur ne passe
pas par la chaîne « input ».
• Un paquet entrant, à destination du pare-feu, ne passe pas par la chaîne « output ».
• Un paquet subissant le démasquerading ne passe pas par la chaîne « forward ».
Les chaînes utilisateurs
Les seules chaînes utilisées sont les chaînes prédéfinies. On peut, cependant, créer des
chaînes utilisateurs qui sont appelées à travers les règles des chaînes prédéfinies.
Les politiques
Les politiques spécifient ce que l’on fait d’un paquet :
ACCEPT On laisse passer le paquet.
DENY Le paquet est abandonné.
REJECT Le paquet est abandonné, mais un paquet icmp est renvoyé à la source.
RETURN La politique finale de la règle s’applique sans exploiter les règles
suivantes.
REDIRECT Cette politique n’est valide que pour une chaîne « input » ou une chaîne
utilisateur, à condition que le noyau ait été compilé avec l’option
CONFIG_IP_TRANSPARENT_PROXY. Elle permet d’envoyer le
paquet sur une socket locale, ce qui autorise le traitement du paquet par
une application locale.
MASQ Cette politique n’est valide que pour une chaîne « forward ». Le
masquerading prend effet, et l’adresse du pare-feu est utilisée comme
adresse source. Dans les réponses, le démasquerading a lieu
automatiquement et la chaîne « forward » n’est pas utilisée.

La syntaxe de la commande ipchains


Les options qui suivent indiquent une action. On ne peut en préciser qu’une seule par
commande.
-A Ajouter une règle à une chaîne.
-D Supprimer une règle d’une chaîne.
-C Vérifier le comportement d’une chaîne.
-R Remplacer une règle d’une chaîne.
-F Supprimer toutes les règles d’une chaîne.
-I Insérer une règle dans une chaîne.
-N Créer une chaîne utilisateur.
-X Supprimer une chaîne utilisateur.
-L Afficher les règles d’une chaîne et les compteurs.
-P Fixer la politique d’une chaîne.
-Z Réinitialiser les compteurs.
-M Fixer les opérations de masquerading avec l’option « –S » ou afficher les
connexions utilisant le masquerading avec l’option « –L ».

17-36 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 17 : La sécurité

-S Permet de fixer les timeout, en secondes, des opérations de masquerading. On


donne trois paramètres : « tcp tcpfin udp » qui sont respectivement, le timeout des
sessions TCP, le timeout des sessions après la réception d’un paquet FIN et le
timeout associé aux paquets UDP.
Remarque
Si l’on ne précise pas la chaîne, l’action s’applique à l’ensemble des chaînes.

Options utilisées en paramètres d’une action


-p Indiquer le protocole, par exemple tcp, udp, … En fait, un des protocoles
mentionné dans /etc/protocols. La valeur 0 ou « all » signifie n’importe quel
protocole. Le symbole « ! » devant le protocole inverse le test.
-s Indiquer une adresse source.
-s [!] adresse[/masque] [!] [port[:port]]
-d Indiquer une adresse destination.
-d [!] adresse[/masque] [!] [port[:port]]
--port-destination [!] [port[:port]] Spécifier séparément les ports.
-i [!] interface Indiquer une interface réseau (eth0, …).
--icmp-type type Définit le type ICMP auquel la règle s’applique.
[!]-f La règle ne s’applique qu’aux fragments suivants.
-j but Préciser ce que l’on fait si la règle s’applique, soit une
politique, soit une chaîne utilisateur. Si cette option est absente,
la règle n’a pas d’effet, si ce n’est sur les compteurs.
Les autres options
-h Aide en ligne.
-b La règle est bidirectionnelle : la règle s’applique aux paquets IP dans les
deux directions.
-v Mode verbeux.
-n Mode numérique.
-y ou
--sync La règle ne s’applique qu’aux paquets d’initialisation (SYN).
-l Renseigner le journal de bord (log).
Il existe d’autres options, « -o », « -m », « -t » et « -x », pour lesquelles nous
renvoyons le lecteur à la documentation.

Exemples d’utilisation de la commande ipchains


Afficher l’ensemble des chaînes.
# ipchains –L
# ipchains –L -v # donne un peu plus d’informations
Ajouter une règle qui rejette les paquets entrants provenant du réseau 173.17.0.0/16 et
qui passent par l’interface eth1.
# ipchains –A input –i eth1 –s 173.17.0.0/16 –j REJECT
Ajouter une règle qui accepte les paquets entrants destinés au serveur de messagerie
(port 25) qui possède l’adresse 173.17.5.3.

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 17-37
Module 17 : La sécurité

# ipchains –A input –d 173.17.5.3 25 -j ACCEPT

Ajouter une règle qui rejette les paquets entrants de connexion destinés au réseau
173.17.0.0/16.
# ipchains –A input –d 173.17.0.0/16 --syn –j REJECT
Supprimer la possibilité de faire un « ping localhost » au niveau du pare-feu.
# ipchains –A input –s 127.0.0.1 –p icmp –j DENY
# ping 127.0.0.1

…100%packet loss
Supprimer la première règle de la chaîne « input ».
# ipchains –D input 1
Supprimer l’ensemble de toutes les règles (remettre la configuration de départ).
# ipchains -X
# ipchains -F
# ipchains –P input ACCEPT
# ipchains –P output ACCEPT
# ipchains –P forward ACCEPT
Activer le masquerading sur la première liaison modem.
# ipchains –P forward DENY
# ipchains –A forward –i ppp0 –j MASQ
Rejeter tous les paquets entrants.
# ipchains –A input –s 0/0 –j DENY # ou ipchains –A input –j DENY
Vérifier si un paquet passe, en fonction des règles courantes. Dans le cas présent, le
paquet de connexion au serveur 192.168.1.2 sur le port 80, et provenant du client
192.168.1.6 sur le port 5685, le paquet arrivant d’abord sur la chaîne « input » et
provenant de l’interface eth0. En résumé, une demande de connexion à un serveur
Web.
# ipchains –C input –p tcp –y –i eth0 –s 192.168.1.6 5685 –d 192.168.1.2 80
packet accepted.

Un exemple complet, sans masquerading


Architecture réseau
Il existe deux réseaux reliés par notre pare-feu :
• Le réseau extérieur est le réseau 173.17.0.0/16. On l’atteint par l’interface eth1
d’adresse 173.17.0.1.
• Le réseau intérieur est le réseau 192.168.218.0/24. Il est relié au pare-feu par
l’interface eth0 d’adresse 192.168.218.11.
Règles de sécurité
On définit les règles de sécurité suivantes :
• Tous les accès du réseau intérieur en tant que client Web sont autorisés.
• Les demandes de connexion de l’extérieur sont refusées, sauf celles destinées au
serveur 192.168.218.1 et seulement pour le service Web.

17-38 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 17 : La sécurité

• Dans un premier temps, les messages ICMP sont autorisés à des fins de tests
(ping). Ils seront ultérieurement limités.
• Dans un premier temps, la connexion au pare-feu, via telnet, est autorisée à partir
du serveur Web interne.
• Le reste est interdit.
Paramétrage d’un poste du réseau intérieur
Sur un système Linux, il suffit de choisir le pare-feu comme routeur :
# route add default gw 192.168.218.11
Paramétrage d’un poste du réseau extérieur
Sur un système Linux, on ajoute le réseau intérieur dans les tables de routage :
# route add –net 192.168.218.0 netmask 255.255.255.0 gw 173.17.0.1
Paramétrage du pare-feu
# /sbin/ipchains -P input DENY
# /sbin/ipchains -A input -p tcp -s 192.168.218.1 \
> -d 192.168.218.11 23 -j ACCEPT
# /sbin/ipchains -A input -p icmp -j ACCEPT
# /sbin/ipchains -A input -p tcp \
> -s 173.17.0.0/16 -d 192.168.218.1 80 --syn -j ACCEPT
# /sbin/ipchains -A input -p tcp \
> -s 173.17.0.0/16 -d 192.168.218.0/24 80 --syn -j DENY
# /sbin/ipchains -A input -p tcp -s 0.0.0.0/0 80 -b -j ACCEPT
# echo 1 > /proc/sys/net/ipv4/ip_forward # active le routage
# ipchains -L –n
Chain input (policy DENY):
target prot opt source destination ports
ACCEPT tcp ------ 192.168.218.1 192.168.218.11 * -> 23
ACCEPT icmp ------ 0.0.0.0/0 0.0.0.0/0 * -> *
ACCEPT tcp -y---- 173.17.0.0/16 192.168.218.1 * -> 80
DENY tcp -y---- 173.17.0.0/16 192.168.218.0/24 * -> 80
ACCEPT tcp ------ 0.0.0.0/0 0.0.0.0/0 80 -> *
ACCEPT tcp ------ 0.0.0.0/0 0.0.0.0/0 * -> 80
Chain forward (policy ACCEPT):
Chain output (policy ACCEPT):

Un exemple complet, avec masquerading


Nous conservons la même architecture réseau que dans l’exemple précédent. Les
règles de sécurité sont simples : le réseau intérieur est complètement occulté grâce au
masquerading et les postes de ce réseau peuvent accéder aux services du réseau
extérieur, comme par exemple le Web.
Paramétrage d’un poste du réseau intérieur
Sur un système Linux, il suffit de choisir le pare-feu comme routeur:
# route add default gw 192.168.218.11

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 17-39
Module 17 : La sécurité

Paramétrage d’un poste du réseau extérieur


Il n’y a rien à faire, car pour un poste du réseau extérieur, les postes du réseau
intérieur n’existent pas, seul le pare-feu est visible.
Paramétrage du pare-feu
# /sbin/ipchains –M –S 7200 10 160
# /sbin/ipchains -P forward DENY
# /sbin/ipchains -A forward -i eth0 -s 192.168.218.0/24 -j MASQ
# echo 1 > /proc/sys/net/ipv4/ip_forward # active le routage
# /sbin/ipchains -L -M –n
IP masquerading entries
prot expire source destination ports
TCP 00:07.35 192.168.218.1 173.17.0.2 1031 (61004) -> 80
TCP 00:07.35 192.168.218.1 173.17.0.2 1030 (61003) -> 80
# /sbin/ipchains -L –n
Chain input (policy ACCEPT):
Chain forward (policy DENY):
target prot opt source destination ports
MASQ all ------ 192.168.218.0/24 0.0.0.0/0 n/a
Chain output (policy ACCEPT):

Remarque
On peut mettre en évidence le masquerading, en regardant le log
/etc/httpd/logs/access_log d’un serveur Web Apache, qui se trouve, par exemple, sur
le réseau extérieur 173.17.0.2 et qui est atteint à partir d’un navigateur installé sur un
poste du réseau intérieur, 192.168.218.1 par exemple. Dans le log, c’est l’adresse du
pare-feu (173.17.0.1) qui apparaît et non le véritable client (192.168.218.1).

Références pour ipchains


Howto :
Firewall-HOWTO qui concerne les pare-feu en général, il contient quelques exemples
d’utilisation d’ipchains.
IPCHAINS-HOWTO : c’est le HOWTO principal, il comporte de nombreux exemples
complets.
Linux NET-3-HOWTO qui traite du réseau en général, il contient quelques éléments
sur les pare-feu.
IP-Masquerading HOWTO, très complet, il indique entre autres comment compiler le
noyau pour avoir le masquerading et les modules du noyau à charger en fonction des
options particulières voulues.
Le répertoire /usr/doc/ipchains-*/ qui contient le IPCHAINS-HOWTO.
Le manuel : ipchains(8), ipfw(4).

17-40 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 17 : La sécurité

Atelier 17 : La sécurité
Atelier 14 : La sécurité

Objectif :
„ Savoir gérer la sécurité de connexion

Durée : 15 minutes.

TSOFT - Linux Administration Module 17 : La sécurité - 17.14

Exercice n°1
Quel est le mot de passe, sous forme cryptée, de l’utilisateur pierre ?

Exercice n°2
Forcez l’utilisateur pierre à changer son mot de passe tous les quinze jours. Faites en
sorte qu’il soit prévenu trois jours avant.

Exercice n°3
Recherchez les fichiers exécutables par tout le monde, qui possèdent des droits
d’endossement.

Exercice n°4
Listez les dernières connexions.

Exercice n°5
Quelles sont les règles de sécurité utilisées par la commande rlogin ?

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 17-41
Module 17 : La sécurité

Exercice N°6

Effectuez les opérations nécessaires pour permettre à root de se connecter à distance


en utilisant telnet. Voici un indice : in.telnetd utilise par défaut login pour authentifier
les utilisateurs.

17-42 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 18 : Bases de données

• Base de données
• Tables
• Langage SQL
• MySQL
• PostgreSQL

18Module 18 : Bases de
données
Objectifs
Après l’étude de ce module, le lecteur connaît l’existence de deux logiciels libres de
gestion de base de données pour UNIX et Linux. Les exemples lui permettent une
première mise en œuvre.

Contenu

MySQL,
PostgreSQL

Références
HOWTO : Oracle8-HOWTO
Livres : MySQL and mSQL
POSTGRESQL : Introduction and concepts
Oracle 8i sous Linux
Internet : http://www.mysql.com
http://www.postgresql.org

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 18-1
Module 18 : Bases de données

MySQL
MySQL

„ SGBD gratuit.
„ Permet un accès SQL à une base données en client/serveur en
réseau.
„ Fonctionne sur l'ensemble des systèmes Unix et sur Windows.
„ Conçu en Multi-Thread, il est très rapide.
„ Accessible à partir des langages C, Perl, Java (via JDBC),
Python, …
„ Utilisé principalement pour les applications Web.

TSOFT - Linux Administration Module 18 : Base de données - 18.2

MySQL est un SGBD, c’est-à-dire un gestionnaire de base de données. Il permet un


accès SQL à une base de données en client-serveur. Ce logiciel est gratuit. Ses sources
sont disponibles. MySQL fonctionne sous Linux, mais il a été porté également sur
Windows et OS/2.

Caractéristiques de MySQL
Le serveur MySQL a été conçu en multi-thread. Il est très simple et, par conséquent,
très rapide. Son intérêt majeur est son utilisation dans des applications Web, par
exemple, une application Perl/CGI. Cette application est activée par un serveur
Apache sous Linux qui, grâce à l’interface DBI, permet l’ accès à une base
MySQL.Perl, Apache, Linux et MySQL sont tous gratuits et performants. MySQL
fonctionne sur plus de 500 000 serveurs, et la société TcX, qui est à l'origine de
MySQL, gère grâce à ce SGBD, plus de 40 bases comprenant 10 000 tables et
totalisant plus de 100 Go de données.
On peut accéder à une base MySQL avec des applications en langage C, en Perl, en
PHP, en Java (via JDBC) ou Python, ...
Par rapport aux autres bases de données, comme Oracle ou Informix, MySQL apporte
les restrictions suivantes :
• pas de transactions.
• pas de « Triggers » (réflexes).
• pas de procédures stockées.
• pas de sous-sélections.
• pas d’approche objet.
Dans le monde des bases de données libres sous Unix, MySQL est une alternative aux
logiciels mSQL et PostgreSQL.

18-2 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 18 : Bases de données

Histoire de MySQL
En 1994, Michael Widenius, de la société suédoise TcX, adapte mSQL pour accéder
aux fichiers ISAM de la base maison UNIREG. mSQL avait été créé par David
Hughes à l'université Bond en Australie. Il s'était inspiré de la base Postgres (qui
succédait à Ingres), mais avec une interface SQL. A l'époque Postgres ne connaissait
pas SQL. En 1995, TcX met MySQL 1.0 à disposition sur Internet.
Structure
Il y a un répertoire par base de données : /var/lib/mysql/<la_base>/
Pour chaque table, il y a trois fichiers :
la_table.ISD Le fichier de données
la_table.ISM Le fichier qui contient les clés
la_table.frm Le fichier qui contient la structure de la table

Administration
Installation de MySQL
Il convient d’installer les paquetages de MySQL :
# rpm –ivh MySQL-3*.rpm # installe le serveur
# rpm –ivh MySQL-client*.rpm # installe le client
Remarque
Les paquetages de MySQL ne sont pas livrés avec la distribution RedHat, il faut se
les procurer sur Internet. Le célèbre site http://rufus.w3.org les contient.

Démarrage de MySQL
Le démarrage de MySQL s’effectue très simplement :
# safe_mysqld &
Remarques
Il existe aussi le script mysql.server qui peut être lancé par les scripts de démarrage.Un
journal de bord (log) est créé si on utilise ‘'option --log. Le log est présent dans le
fichier /var/lib/mysql/le_serveur.log. A chaque lancement, il ajoute un numéro
d’historique.
On peut également démarrer la base en mode débogage avec l’option « --debug ».
Il est possible de démarrer et d’arrêter un serveur MySQL grâce au script
/etc/rc.d/init.d/mysql en donnant en argument le mot start ou le mot stop.
Arrêt
Il existe une commande d’arrêt de MySQL, la commande mysqladmin.
# mysqladmin shutdown -u root -p
L’option « -u root » n’est pas nécessaire si on est déjà connecté en tant que root.
L’option « -p » provoque la demande du mot de passe.
On peut également fournir le mot de passe en argument avec l’option
« --password=mot_de_passe ». Ceci est peu recommandé, souvenons-nous de la
commande ps –ef.

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 18-3
Module 18 : Bases de données

Changer le mot de passe de root


La modification du mot de passe de root se fait de la manière suivante :
#mysqladmin –u root password nouveau_mot_de_passe
Création et destruction d’une base
# mysqladmin –p create BIBLIO #crée la base BIBLIO
# mysqladmin –p drop BIBLIO # détruit la base BIBLIO
Affichage d’informations
# mysqladmin –p status
# mysqladmin –p version
# mysqladmin –p processlist # liste les threads actifs
# mysqlamdin –p ping # vérifie si le serveur répond
Recharger les tables d'accès (cf. La sécurité d’accès)
# mysqladmin –p reload
Sauvegarde, importation et exportation de données
La sauvegarde peut s’effectuer avec les outils traditionnels de Linux (tar, ...). On
sauvegarde les fichiers qui composent une base.
On peut également utiliser l’outil mysqldump, qui permet de transférer le contenu
d’une table dans un fichier sous forme de requêtes SQL (opération d’exportation ou de
sauvegarde).
# mysqldump --password=mot_de_passe la_base > result
# mysql --password=mot_de_passe la_base < result
L’outil mysqlimport permet de remplir une table à partir d’un fichier.
# mysqlimport --password=mot_de_passe la_base la_table
# mysqlimport --fields-terminated-by=, --fields-enclosed-by=\" PRIME mois
# cat mois
"albert", 333
"louis", 550
Remarque
Le serveur mysqld peut être lancé avec les options « --log-udate ». Un log des
modifications est alors créé sous forme de requêtes SQL.

Gestion des fichiers ISAM


Les tables sont stockées sous forme de fichiers ISAM (« Indexed Sequential Access
Method »). La commande isamchk permet de les manipuler.
# isamchk –d table # donne des informations sur la table table
# isamchk –a table # analyse et redistribue les clés (« rebalance » le B-Tree)
# isamchk –r table # compresse le fichier (supprime les enregistrements détruits)
# isamchk table # répare une table

18-4 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 18 : Bases de données

La sécurité
Les comptes utilisateurs et les droits d’accès aux bases sont mémorisés dans les tables
de la base mysql.
user Définit les utilisateurs.
db Définit les accès aux tables.
host Définit les hôtes qui peuvent accéder aux bases.
tables_priv, columns_priv
Définit les accès. Cette table est mise à jour par les ordres sql GRANT et
REVOKE.
Remarque
Il existe également la table func qui n'a pas de rapport avec la sécurité.
La logique de contrôle d’accès est la suivante :
1) A la connexion, MySQL se sert de la table user pour vérifier si l’utilisateur est
autorisé à partir de l’hôte client utilisé. Un mot de passe est éventuellement nécessaire.
1-1) MySQL recherche d’abord l’hôte dans la table user, en privilégiant les
noms qui n’ont pas de jocker « % ». Un champ Host vide est traité comme
contenant « % ».
1-2) Si MySQL a trouvé un hôte qui correspond, il recherche l’utilisateur,
toujours dans la base user, en privilégiant les noms d’utilisateurs qui n’ont pas
de jocker « % ». Un champ User vide, ou le nom « nobody », est traité comme
« % ».
2) Une fois connecté, MySQL vérifie les accès en se basant sur les tables user, db,
host, tables_priv et columns_priv.
Si la table user donne l’autorisation, l’accès est immédiatement donné. Sinon, MySQL
recherche les autorisations dans les autres tables en respectant l’ordre suivant :
1 – db
2 – tables_priv
3 – columns_priv
Ajout d’un utilisateur qui possède un mot de passe vide
La valeur « % » dans le champ Host, signifie que l’utilisateur peut se connecter à
partir d’un poste quelconque. S’il se connecte à partir du poste local (localhost), il
devra utiliser l’option « -h hote », et comme hôte, le nom réseau du site et non
localhost, qui correspond à la valeur par défaut.
mysql> use mysql ;
mysql> insert into user (Host, User, Password) values (’%’, ’pierre’,’’) ;
Changement du mot de passe d’un utilisateur
mysql> use mysql ;
mysql> update user set Password = password(’mot_de_passe’) where user=’pierre’;
Mise à jour de l’instance en mémoire
Cette action est nécessaire si l’on doit modifier les tables de la base mysql.
# mysqladmin reload --password=mot_de_passe

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 18-5
Module 18 : Bases de données

Modifier les droits d’un utilisateur


L’exemple qui suit donne à pierre les droits de gestion des tables de la base BIBLIO.
# mysql> grant all on BIBLIO.* to pierre ;

Exemples d’utilisation de MySQL


L’administrateur se connecte
MySQL passe, en paramètre, le nom de l’utilisateur Unix courant. Si l’on désire se
connecter sous un autre nom, on utilise l’option « -u user ». Le nom du DBA est root,
l’administrateur Linux est donc, par défaut, l’administrateur des bases de données.
# mysql --password=mot_de_passe
Welcome to the MySQL monitor. Commnands end with ; or \g.
Your MySQL connection id is 4 to server version: 3.22.32
Type ’help’ for help.
mysql> connect BIBLIO
Connection id: 8
Current database : BIBLIO
mysql> exit
Bye
Mettre à jour une base de données en mode automatique
# cat creat.sql
connect BIBLIO;
CREATE TABLE pers ( nom CHAR(10) NOT NULL, age INT);
INSERT INTO pers values (’louis ’, 25 );
INSERT INTO pers values (’cathy ’, 18 );
INSERT INTO pers values (’pierre ’, 35 );
CREATE UNIQUE INDEX pers_pkey ON pers ( nom );
exit
# mysql --password=mot_de_passe < creat.sql
Se connecter à partir d’un poste client
$ mysql -u pierre -h venus # on indique l’utilisateur et le serveur MySQL
Quelques ordres SQL
Liste des bases de données.
show databases ;
Liste des tables d’une base.
show tables [ from la_base ] ;
Liste des champs d’une table.
show columns from la_table ;
Afficher le contenu d’une table.
select * from la_table ;

Références pour MySQL


Le man : mysql(1), mysqladmin(1), mysqldump(1), …
Le répertoire /usr/doc/MySQL-*/ contient une information complète.
Le site Internet officiel de MySQL: http://www.mysql.com.
Le livre MySQL & mSQL.

18-6 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 18 : Bases de données

PostgreSQL
PostgreSQL

„ SGBD en client/serveur sous licence GPL


„ Disponible sur les systèmes Unix
„ Successeur d’Ingres
„ Intègre le SQL et l’approche objet
„ SGBD très complet (transactions, Triggers, …)
„ Livré en standard sous RedHat

TSOFT - Linux Administration Module 18 : Base de données - 18.3

PostgreSQL est un SGBD en client-serveur, sous licence GPL, disponible sur


l’ensemble des plates-formes Unix. Il découle des recherches effectuées sur les
SGBD, qui ont abouti à Ingres. PostgreSQL est en fait Post-Ingres, mais avec le
support de SQL, cela n’était pas le cas d’Ingres. PostgreSQL est, sous certains
aspects, très en avance. Il intègre notamment l’approche objet (SGBDROO).
PostgreSQL est très complet :
• Il supporte le transactionnel.
• Il supporte les procédures stockées.
• Il permet à l’utilisateur de définir ses types et ses fonctions.
• Il permet de poser des verrous.
• Il permet les select imbriqués.

Panorama des commandes


createdb Créer une base.
createuser Créer un utilisateur.
destroydb Détruire une base.
destroyuser Détruire un utilisateur.
initdb Terminer l’installation de PostgreSQL.
initlocation Créer un deuxième endroit de stockage de base.
pg-dump Extraire une base dans un script.
pg-dumpall Extraire toutes les bases dans un script.
postgres Activer Postgres en mode simple utilisateur.

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 18-7
Module 18 : Bases de données

postgresql-dump Permettre une mise à jour d’une base lors d’un changement de
version.
postmaster Le serveur multi-utilisateur (« multi-user backend »).
psql Le client interactif.
VACCUM Analyser ou nettoyer une base, à faire périodiquement.

Administration
Installation
PostgreSQL est livré en standard dans les distributions RedHat. Les deux principaux
paquetages sont :
• postgresql-server-*.rpm Contient le serveur (postmaster).
• postgresql-*.rpm Contient les bibliothèques et le client.
Deux autres paquetages sont très intéressants :
• postgresql-odbc-*.rpm Apporte le support ODBC.
• postgresql-perl-*.rpm Permet d’utiliser Perl pour l’accès au SGBD.
Arrêt et démarrage
L’arrêt et le démarrage sont classiques :
# cd /etc/rc.d/init.d
# ./postgresql start # démarre la base
# ./postgresql stop # arrête la base
Remarques
La première fois que l’on lance PostgreSQL, il crée la base système et une base
d’exemple vide « template1 ».
Si l’on veut vérifier que le serveur est actif, on lance la commande suivante :
# ps –ef | grep postmaster

Création d’une base de données


# su postgres # (cf. paragraphe sécurité)
bash$ createdb essai
Une base de données est stockée dans le répertoire /var/lib/psql/base/la_base/
Sauvegarde et restauration
# su postgres
bash$ pg_dump essai > fic # sauvegarde la base essai
bash$ cat fic | psql essai # restaure la base essai
Nettoyage d’une base
$ psql -c 'VACUUM' essai
VACUUM

18-8 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 18 : Bases de données

La sécurité
L’installation de PostgreSQL crée l’utilisateur postgres, l’administrateur (DBA). Cet
utilisateur à la fois Linux et PostgreSQL, permet la gestion des bases et des
utilisateurs postgresql.
Les comptes utilisateurs et leur mot de passe (initialisé à vide) sont stockés dans la
table système « pg_user ».
Création d’un utilisateur
# su postgres
bash$ createuser pierre
Enter user's postgres ID -> 100
Is user "pierre" allowed to create databases (y/n) y
Is user "pierre" a superuser? (y/n) n
createuser: pierre was successfully added
bash$
Modifier le mot de passe d’un utilisateur
# su postgres
bash$ psql template1

template1=> update pg_user set passwd = 'ibm3090' where usename='cathy';
UPDATE 0
Modification des droits d’un utilisateur, via l’ordre SQL grant
Dans l’exemple qui suit, on donne tous les droits à pierre sur la table pers, créée plus
loin dans le paragraphe Utilisation.
# su postgres
bash$ psql essai

essai=> grant all on pers to pierre ;
CHANGE
essai=> \z
Database = essai
+----------+--------------------------+
| Relation | Grant/Revoke Permissions |
+----------+--------------------------+
| pers | {"=","pierre=arwR"} |
+----------+--------------------------+
essai=>
Gérer les accès distants
Le fichier /var/lib/pgsql/pg_hba.conf permet de gérer les accès distants. Par défaut, il
n’y a que les accès locaux qui sont autorisés. Si l’on désire accepter toutes les
connexions, on retire le commentaire devant la ligne suivante :
host all 0.0.0.0 0.0.0.0 trust
Utilisation, la commande psql
La commande psql correspond à un client postgresql. Elle permet d’utiliser une base
de données. On se connecte par défaut sous le compte homonyme du compte Unix
sous lequel on est connecté. Si l’on veut se connecter sous un autre compte, on utilise
l’option « –u ».

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 18-9
Module 18 : Bases de données

Quelques options :
-c requête Permettre d’activer une requête fournie en argument.
-f fichier Indiquer un fichier contenant des requêtes.
-o fichier Indiquer un fichier de sorties.
-h hôte Permettre de donner l’adresse du serveur.
-p port Spécifier le port du serveur, par défaut 5432 (TCP).
-H Provoquer une sortie au format HTML.
-l Afficher la liste des bases de données.
-u Provoquer la demande du nom et du mot de passe de l’utilisateur.
Quelques commandes :
\dS Afficher la liste des tables système.
\dt Afficher la liste des tables de la base courante (non système).
\d Afficher la liste de toutes les tables, y compris les tables système.
\d table Afficher les champs d’une table.
\l Afficher la liste des bases de données.
\z Afficher les autorisations.
\!cmd Exécuter une commande via un shell.
\df Afficher les fonctions.
\connect base [user]
Se connecter à une autre base.
\q Quitter.

Exemples
Afficher les bases existantes.
$ psql -l
$ psql -h localhost -p 5432 -l # idem
Se connecter à une base.
$ psql essai
$ psql # idem, si on est l’utilisateur essai
$ psql template1 –u # se connecter sous un autre compte.
Username: cathy
Password:
$ psql -h venus template1 # accès distant
Afficher la liste des tables d’une base.
$ psql -c ’\dt’ essai
Récupérer dans un fichier le résultat d’une requête.
$ psql -c 'select * from pers' -o result essai
Récupérer dans un fichier le résultat d’une requête, mais au format HTML.
$ psql -c 'select * from pers' -o -H result.html essai

18-10 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Module 18 : Bases de données

Une session complete.


bash$ psql essai
Welcome to the POSTGRESQL interactive sql monitor:
Please read the file COPYRIGHT for copyright terms of POSTGRESQL
[PostgreSQL 6.5.3 on i686-pc-linux-gnu, compiled by gcc egcs-2.91.66]
type \? for help on slash commands
type \q to quit
type \g or terminate with semicolon to execute query
You are currently connected to the database: essai
essai=> CREATE TABLE pers ( nom CHAR(10) primary key, age INT);
NOTICE: CREATE TABLE/PRIMARY KEY will create implicit index 'pers_pkey'
or table 'pers'
CREATE
essai=> INSERT INTO pers values ('louis ', 25 );
INSERT 18605 1
essai=> INSERT INTO pers values ('cathy ', 18 );
INSERT 18606 1
essai=> INSERT INTO pers values ('pierre ', 35 );
INSERT 18607 1
essai=> select * from pers;
nom |age
----------+---
louis | 25
cathy | 18
pierre | 35
(3 rows)
essai=> \q
bash$

Références pour PostgreSQL


Le manuel : psql(1), postgresql-dump(8), postmaster(1), pgaccess(1), pg-dump(1),
vacuum(1), pg_hba.conf(5), …
Le fichier /var/lib/psql/pg_hba.conf qui permet les accès distants, et qui est
abondamment commenté.
Le répertoire /usr/doc/postgresql-*/ contient une documentation très complète.
Notamment le sous-répertoire ./tutorial/, qui contient un cours d’initiation en HTML.
Les sous-répertoires ./user et ./admin contiennent respectivement un guide de
l’utilisateur et un guide de l’administrateur, tous les deux en HTML.
Le site officiel : http://www.postgresql.org.

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 18-11
Module 18 : Bases de données

Atelier 18 : Bases de données


Atelier 14 : La sécurité

Objectif :
„ Avoir une première approche des
outils libres de gestion de bases de
données.

Durée : 30 minutes.

TSOFT - Linux Administration Module 18 : Base de données - 18.4

Exercice n°1
Reproduisez les exemples d’utilisation de MySQL pour vous familiariser avec l’outil.

Exercice n°2
Reproduisez les exemples d’utilisation de PostgreSQL pour vous familiariser avec
l’outil.

18-12 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Annexes

A. Annexes

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 A-1
Annexe A : Les commandes POSIX 2

Annexe A : Les commandes POSIX 2


awk - Langage qui traite du texte.
awk [-Fx] [-v affec] program fichier ...
awk [-Fx] [-v affec] -f prg fichier ...

-Fx Spécifie le séparateur de champs.


-v affec Permet d’affecter des variables, variable=valeur.
program Le programme AWK en argument, généralement quoté.
-f prg Le programme AWK stocké dans le fichier prg.

basename - Extrait le nom d’un fichier à partir d’un chemin.


basename chemin [suffixe]

suffixe Le suffixe sera retiré du nom du fichier.

bc - Calculatrice.
bc [-l] [fichier ...]

-l Inclut la bibliothèque mathématique.


fichier Fichier qui contient des fonctions.

cat - Concatène et affiche le contenu de fichiers texte.


cat [-u] [fichier ...]

-u Les caractères sont affichés sans attendre (pas de tampons).

cd - Change de répertoire.
cd [chemin]

chgrp - Change le groupe d’un fichier.


chgrp [-R] groupe fichier ...

-R Agit sur une arborescence de fichiers (action récursive).

chmod - Change les droits d’un fichier.


chmod [-R] mode fichier ...

-R Agit sur une arborescence de fichiers (action récursive).


mode Indique la modification des droits.

chown - Change le propriétaire d’un fichier.


chmod [-R] util[:groupe] fichier ...

-R Agit sur une arborescence de fichiers (action récursive).


util Le propriétaire du fichier.
groupe Le groupe du fichier.

chksum - Calcule un total de contrôle.


chksum [fichier ...]

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 A-3
Annexe A : Les commandes POSIX 2

cmp - Compare deux fichiers octet par octet.


cmp [-l | -s] fichier1 fichier2

-l Affiche toutes les différences rencontrées.


-s Mode silencieux, affecte seulement le code retour.

comm - Compare deux fichiers ligne à ligne.


comm [-123] fichier1 fichier2

-1 Supprime la colonne 1 (lignes trouvées seulement dans fichier1).


-2 Supprime la colonne 2 (lignes trouvées seulement dans fichier2).
-3 Supprime la colonne 3 (lignes communes aux deux fichiers).

command - Exécute une commande.


command [-p] cmd [arg ...]

-p Utilise la valeur par défaut de la variable PATH, pour rechercher une commande
standard.
cmd Le nom du fichier qui contient la commande à exécuter, surchage éventuellement le nom
d’une commande interne ou d’une fonction.

cp - Copie de fichier.
cp [-fip] fichier1 fichier2
cp [-R | -r] [-fip] fichier ... rep

-f Force la destruction du fichier cible si ce dernier est protégé en écriture.


-i Demande confirmation de l’éventuel remplacement d’un fichier.
-p Conserve les droits, le propriétaire, le groupe, la date de dernière modification et de
dernier accès.
-R Copie d’une arborescence de fichiers.
-r Idem.

cut - Sélectionne des caractères ou des champs.


cut -b liste [-n] [fichier ...]
cut -c liste [fichier ...]
cut -f liste [-d del [-s] [fichier ...]

-b liste La liste qui suit contient les octets sélectionnés.


-n N’affiche pas les octets spécifiés (avec l’option -b).
-c liste La liste qui suit contient les caractères sélectionnés.
-f liste La liste qui suit contient les champs sélectionnés.
-d del Spécifie le délimiteur de champs.
-s Supprime les lignes qui ne possèdent pas le séparateur de champs.

date - Affiche la date et l’heure.


date [-u] [+format]

-u N’utilise pas la variable TZ, et renvoie donc l’heure universelle au lieu de l’heure
locale.
+format Spécifie un format d’affichage. Ex : +"%H".

A-4 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Annexe A : Les commandes POSIX 2

dd - Sauvegarde physique de périphérique à périphérique.


dd [opérande ...]

opérande Opérande de la forme nom=valeur, ex : bs=100k.


Liste des opérandes supportés : if, of, ibs, obs, bs, cbs, skip, seek, count, conv.
Liste des valeurs de l’opérande conv : block, unblock, lcase, ucase, swab, noerror,
notrunc, sync.

diff - Compare deux fichiers.


diff [-c | -e | -Cn ] [-br] fichier1 fichier2

-c Affiche trois lignes du contexte pour chaque différence.


-Cn Affiche « n » lignes du contexte pour chaque différence.
-e Produit un fichier de commande pour ed.
-b Ignore les espaces supplémentaires.
-r Exécute la commande récursivement sur les répertoires de même nom, fichier1et fichier2.

dirname - Renvoie le répertoire d’un chemin.


dirname chemin

echo - Affiche un message à l’écran.


echo [chaîne ...]

ed - Edite un texte.
ed [-p ch] [-s] [fichier]

-p ch Fixe la chaîne d’invite à la valeur ch.


-s Supprime l’affichage du nombre d’octets lors de l’utilisation des commandes d’écriture.

env - Affiche l’environnement, exécute une commande avec un environnement spécifique.


env [-i] [nom=valeur ...] [cmd [arg ...]]

-i Utilise l’environnement spécifié pour exécuter la commande cmd au lieu d’utiliser


l’environnement hérité.

expr - Calcule des expressions.


expr opérande ...

Liste des symboles utilisés : (, ), |, &, = , >, >=, <, <=, !=, +, -, *, /, %, :.

false - Renvoie la valeur fausse.


false

find - Recherche de fichiers dans une arborescence.


find chemin ... [ opérande ... ]

-name fichier Vrai si le fichier a le nom indiqué.


-perm droits Vrai si les droits correspondent.
-type x Vrai si le type (b,c,d,f) correspond.
-links n Vrai si le fichier a exactement n liens.
-user nom Vrai si le nom de l’utilisateur correspond.
-group nom Vrai si le nom du groupe correspond.
-size n Vrai si le fichier a une taille de n blocs.
-atime n Vrai si le dernier accès remonte à n jours.
-mtime n Vrai si la dernière modification remonte à n jours.

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 A-5
Annexe A : Les commandes POSIX 2

-ctime n Vrai si la date de création remonte à n jours.


-nouser Vrai si le compte utilisateur du fichier n’existe pas.
-nogroup Vrai si le groupe du fichier n’existe pas.
-depth Cherche d’abord dans les sous-répertoires.
-newer f Vrai si le fichier a été modifié plus récemment que le fichier f.
-prune Explore les répertoires, la recherche n’est pas arborescente.
-xdev Arrête l’exploration quand on change de périphérique.
-print Affiche le nom du fichier.
-exec cmd {} \; Exécute la commande cmd.
-ok cmd {} \; Exécute la commande cmd avec demande de confirmation.

fold - Affiche les lignes d’un fichier avec une limite de la longueur de ligne.
fold [-bs] [ -w larg ] [ fichier ...]

-w larg Fixe la largueur maximale d’une ligne à larg caractères, par défaut 80.
-b L’unité de larg est en octet (« byte »).
-s Si la coupure a lieu au niveau d’un blanc, les blancs suivants sont ignorés.

getconf - Renvoie les valeurs de configuration.


getconf var
getconf var chemin

var Variable système dont on veut obtenir la valeur.


chemin La valeur de la variable dépend du répertoire ; on le spécifie en conséquence.

getopts - Utilitaire d’analyse des options d’une commande.


getopts options cmd [arg ...]

grep - Recherche de chaînes dans un fichier.


grep [-E|-F] [-c|-l|-q] [-insvx] [[-e] list | [-f fic]] ... [fichier ...]

-E Utilise les expressions régulières étendues (anciennement celles de egrep).


-F Utilise des chaînes de recherche au lieu d’expressions régulières.
-c Compte le nombre de lignes qui correspondent.
-l Affiche le nom des fichiers qui contiennent la chaîne.
-q N’affiche rien, retourne le code 0 si des lignes ont été sélectionnées.
-i Ignore les différences majuscules, minuscules.
-n Affiche les numéros et les lignes qui correspondent.
-s Supprime les messages d’erreur associés aux fichiers non accessibles.
-v Affiche toutes les lignes qui ne correspondent pas.
-x Affiche toutes les lignes qui correspondent exactement.
-e list Utilise une liste d’expressions régulières.
-f fic Utilise les expressions régulières stockées dans le fichier fic.

head - Affiche le début d’un fichier.


head [-n nb] [fichier ...]

-n nb Affiche les n premières lignes, par défaut n est égal à 10.

A-6 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Annexe A : Les commandes POSIX 2

id - Donne l’identité d’un utilisateur.


id [util]
id -G [-n] [util]
id -g [-nr] [util]
id -u [-nr] [util]

-G Affiche tous les groupes de l’utilisateur util.


-g Affiche seulement le groupe effectif.
-n Affiche les noms de groupes au lieu des valeurs numériques.
-r Affiche l’UID réel, au lieu de l’UID effectif de l’utilisateur.
-u Affiche seulement l’UID effectif.

join - Opérateur de jointure de base de données.


join [-a nb | -v nb] [-e ch] [-o liste] [-t car] [-1 ch] [-2 ch] fichier1 fichiers

-a nb Produit une ligne pour chaque ligne non appariée du fichier numéro nb.
-v nb Produit seulement une sortie pour les lignes non appariées du fichier numéro 1.
-e ch Remplace une sortie vide par la chaîne ch.
-o liste Spécifie les champs présents en sortie.
-t car Spécifie le délimiteur de champ.
-1 ch Spécifie le champ de jointure du fichier 1.
-2 ch Spécifie le champ de jointure du fichier 2.

kill - Supprime un processus ou lui envoie un signal.


kill -s sig pid ...
kill -l [code]

-s sig Spécifie le nom sig du signal envoyé.


-l Liste les signaux supportés par l’implémentation.
pid Numéro du processus recevant le signal.
code Valeur numérique d’un signal, la commande renvoie le nom du signal.

ln - Crée un lien.
ln [-f] fichier1 fichier2
ln [-f] fichier ... chemin

-f Force la destruction de la cible, si elle existe.

locale - Affiche les paramètres POSIX locaux.


locale [-a | -m]
locale [-ck] nom ...

-a Affiche la liste de tous les paramètres.


-m Ecrit les noms des « charmaps » disponibles.
-c Affiche les paramètres des catégories spécifiées.
-k Affiche les valeurs des paramètres spécifiés.

localedef - Définit un environnement de paramètres POSIX local.


localdef [-c][-f fic] [-i fic] nom

-c Force la création du résultat.


-f fic Spécifie le fichier contenant le codage des caractères.
-i fic Spécifie le fichier contenant les paramètres.

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 A-7
Annexe A : Les commandes POSIX 2

logger - Enregistre un message dans le journal des événements.


logger chaîne ...

logname - Affiche le nom de l’utilisateur.


logname

lp - Imprime un fichier.
lp [-c] [-d dest] [-n nb] [fichier ...]

-c Fait une copie du fichier avant de le mettre dans la file d’attente d’impression.
-d dest Envoie l’impression sur dest.
-n nb Impression en nb copies.

ls - Liste les caractéristiques des fichiers.


ls [-CFRacdilqrtu1] [fichier ...]

-C Affiche les noms sur plusieurs colonnes.


-F Affiche un « / » après chaque répertoire, un « * » après chaque fichier exécutable et
un « | » après chaque tube nommé.
-R Affiche le contenu des arborescences dont on a donné les chemins.
-a Affiche toutes les entrées.
-c Affiche (-l) les dates de création ou trie (-t) par date de création.
-d Affiche les attributs des répertoires, non leur contenu.
-i Affiche les numéros d’inode.
-l Affiche les principaux attributs, dont les droits.
-q Affiche les caractères non imprimables sous forme de « ? ».
-r Inverse l’ordre du tri.
-t Entrées triées, par défaut selon la date de dernière modification.
-u Affiche (-l) les dates de dernier accès ou trie (-t) par date de dernier accès.
-1 (1=un) Provoque une sortie par ligne.

mailx - Envoie un courrier électronique à un utilisateur.


mailx [-s sujet] adresse ...

-s sujet Précise le sujet du message.

mkdir - Crée un répertoire.


mkdir [-p] [-m mode] chemin ...

-p Crée éventuellement les répertoires intermédiaires.


-m mode Fixe les droits des répertoires créés.

mkfifo - Crée un tube nommé.


mkfifo [-m mode] fichier ...

-m mode Fixe les droits des tubes nommés créés.

mv - Déplace un lien.
mv [-fi] fichier1 fichier2
mv [-fi] fichier ... chemin

-f Force la destruction du fichier cible si ce dernier est protégé en écriture.


-i Demande confirmation de l’éventuel remplacement d’un fichier.

nohup - Empêche la mort d’un processus à la déconnexion.

A-8 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Annexe A : Les commandes POSIX 2

nohup cmd [arg ...]


od - Affiche le contenu d’un fichier en octal, en hexadécimal.
od [-v] [-A form] [-j saut] [-N nb] [-t form] [fichier ...]

-v Affiche toutes les données, y compris les données dupliquées.


A form Spécifie le format des adresses (d,o,x).
-j saut Saute « saut » octets en entrée.
-N nb Traite seulement nb octets.
-t form Spécifie le format des données, notamment l’utilisation de l’octal, de l’hexadécimal, ...
(a,c,d,f,o,u,x).

paste - Fusionne des fichiers par ligne.


paste [-s] [-d liste] fichier ...

-s Utilise le caractère tab au lieu du séparateur de ligne, comme délimiteur des éléments à
fusionner.
-d liste Utilise les caractères de la liste, au lieu du séparateur de ligne, comme délimiteur des
éléments à fusionner.

pathchk - Vérifie un chemin, en termes d’accessibilité et de portabilité.


pathchk [-p] chemin ...

-p Effectue des tests de portabilité plus approfondis.

pax - Sauvegarde un fichier.


(1) pax -w [-dituvX] [-b bs] [-a [-f ar]] [-o opt] ... [-s sub][-x form] ... [fichier ...]
(2) pax [-cdnv] [-f ar] [-s sub] [modèle ...]
(3) pax -r [-cdiknuv] [-f ar] [-o opt] [-p ch] ... [-s sub]... [modèle ...]
(4) pax -r -w [-diklntuvX] [-p ch] ... [-s sub] ... [fichier ...] chemin

(1) Sauvegarde.
(2) Liste le contenu de l’archive.
(3) Restauration.
(4) Copie d’arborescence.
-d Les répertoires sont sauvegardés ou restaurés.
-i Permet de renommer interactivement les fichiers.
-u Restauration inconditionnelle (-r), sauvegarde inconditionnelle (-w -a).
-v («verbose») Une ligne est affichée pour chaque fichier sauvé/restauré.
-X L’exploration arborescente s’arrête lorsque l’on change de périphérique.
-b bs Spécifie la taille des blocs.
-a Ajout des fichiers en fin d’archive.
-f ar Le fichier ar est le support d’archive, par défaut, l’entrées ou la sortie standard.
-o opt Permet de spécifier des options non standard.
-s sub Modifie le nom des fichiers en se basant sur la chaîne sub.
-x form Spécifie le format de l’archive : cpio ou ustar, par défaut ustar.
-c Prend en compte tous les fichiers, exceptés ceux spécifiés par les modèles.
-n Ne prend en compte que le premier fichier correspondant au modèle.
-k Empêche la restauration d’effacer des fichiers.
-p ch Spécifie grâce à la chaîne ch, les caractéristiques conservées ou non des fichiers restaurés.
-l Des liens sont créés si possible.

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 A-9
Annexe A : Les commandes POSIX 2

pr - Produit une sortie formatée.


pr [+page] [-col] [-adFmrt] [-e[car][gap]][-h entete] [-i[car][gap]][-l lig][-n[car][larg]] [-o decal]
[-s[car]][-w larg] [fichier ...]

+page Numéro de la première page.


-col Nombre de colonnes.
-a Avec l’option précédente, modifie l’ordre de remplissage des colonnes.
-d Sortie avec espacement double.
-F Utilise des « Form Feed » au lieu de « New Line » pour sauter des pages.
-m Produit une sortie multi-colonne, avec une colonne par fichier.
-r Ne produit pas de messages d’erreur si les fichiers ne sont pas accessibles.
-t Supprime l’en-tête.
-e[car][gap] Transforme les tabulations en une suite d’espaces. Les tabulations sont par défaut
toutes les huit colonnes, gap remplace la valeur par défaut. Le caractère car
précise le caractère de tabulation.
-h entête Spécifie le message d’en-tête.
-i[car][gap] Option inverse de l’option « e », remplace une suite d’espaces par des tabulations.
-l lig Spécifie le nombre de lignes par page, par défaut soixante-six.
-n[car][larg] Les lignes sont numérotées, la numérotation occupe larg caractères et est séparée
du texte par une tabulation ou par le caractère car.
-o decal Chaque ligne est précédée de « decal » espaces, par défaut decal vaut 0.
-s car Spécifie le caractère car comme séparateur de colonnes.
-w larg Spécifie la largeur de la sortie dans le cas de l’utilisation du multi-colonne.

printf - Ecrit une sortie formatée.


printf format [arg ...]

pwd - Affiche le répertoire courant.


pwd

read - Lit une ligne sur l’entrée standard.


read [-r] var ...

-r Le caractère \ ne joue pas son rôle d’échappement.


var Le nom d’une variable du shell, existante ou non.

rm - Détruit un fichier.
rm [-fiRr] fichier ...

-f Force la destruction des fichiers.


-i Demande confirmation de la destruction de chaque fichier.
-R Destruction récursive des fichiers et des répertoires.
-r Idem.

rmdir - Supprime un répertoire vide.


rmdir [-p] chemin ...

-p Supprime toutes les composantes du chemin.

A-10 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Annexe A : Les commandes POSIX 2

sed - Editeur en mode flot.


sed [-n] script [fichier ...]
sed [-n] [-e script] ... [-f prg] ... [fichier ...]

-n Supprime la sortie par défaut : normalement chaque ligne non modifiée est
recopiée sur la sortie standard.
script Une instruction sed.
-e script Une instruction sed.
-f prg Le fichier prg contient une suite d’instructions sed.

sh - Exécute un shell interactif ou un script.


sh [-aCefinuvx] [script [ arg ...]]
sh -c [-aCefinuvx] [cmd [ arg ...]]
sh -s [-aCefinuvx] [ arg ...]

-a,-C,-e,-f,-i,-n,-u,-v,-x Voir la description de la sous-commande set de la commande sh.


script Le script exécuté par le shell.
-c Le shell exécute la commande cmd.
-s Lit les commandes à partir de l’entrée standard.

sleep - Temporisation.
sleep secondes

sort - Tri, fusion de fichiers.


sort [-m][-o fic][-bdfinru][-t car][-k clef] ... [fichier ...]
sort -c [-bdfinru][-t car][-k clef] ... [fichier]

-m On réalise la fusion des fichiers.


-o fic Le résultat du tri est dans le fichier fic.
-b Ignore les blancs pour déterminer le début et la fin d’une clef de tri.
-f On ignore la différence majuscules et minuscules.
-i Ignore les caractères non imprimables.
-n Tri numérique et non lexicographique.
-r Tri inverse.
-u Ne produit qu’une ligne pour un ensemble de lignes identiques.
-t car Le caractère car est le séparateur de champs.
-k clef Le critère de tri : début[type][,fin[type]].
Le critère de tri commence au champ « début » (les champs sont numérotés à partir de 1).
Le reste de la ligne après le champ « fin » n’est plus utilisé comme critère de tri.
« type » correspond à une des options b, d, f, i ou n.
-c Ne fait que vérifier si les fichiers sont déjà triés, ne produit pas de sortie, simplement
renvoie un code retour.

stty - Configure le terminal.


stty [-a | -g]
stty opérande ...

-a Affiche toutes les caractéristiques du terminal.


-g Affiche les caractéristiques dans le format utilisé pour modifier ces caractéristiques.

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 A-11
Annexe A : Les commandes POSIX 2

tail - Affiche la fin d’un fichier.


tail [-f] [-c nb] [-n nb] [fichier]

-f Reste en lecture après la fin du fichier.


-n nb Indique le point de départ de la copie, exprimé en caractères.
+nb Par rapport au début du fichier.
-nb Par rapport à la fin du fichier (par défaut).
-c nb Idem, mais exprimé en octets.

tee - Duplique la sortie standard.


tee [-ai] [fichier ...]

-a Ajout de la sortie à la fin des fichiers, au lieu de les écraser.


-i Ignore le signal SIGINT.

test - Evalue une expression.


test [exp]
« [ » [exp] « ] »

-b Fichier Fichier spécial par blocs.


-c Fichier Fichier spécial par caractères.
-d Fichier C’est un répertoire.
-e Fichier Vrai si Fichier existe.
-f Fichier Fichier ordinaire.
-g Fichier Bit setgid est activé.
-n Chaîne La longueur de la chaîne est différente de zéro.
-p Fichier C’est un fichier spécial, FIFO ou un tube.
-r Fichier Accessible en lecture.
-s Fichier La taille est supérieure à zéro.
-t [fd] fd est un descripteur associé à un terminal.
-u Fichier Le bit setuid est activé.
-w Fichier Accessible en écriture.
-x Fichier Fichier exécutable.
-z Chaîne La longueur de Chaîne est égale à zéro.

Chaîne Vrai si Chaîne n’est pas la chaîne nulle.


Ch1 = Ch2 Vrai si Ch1 correspond à Ch2.
Ch1 != Ch2 Vrai si Ch1 ne correspond pas à Ch2.

E1 -eq E2 E1 est égale à E2 (numériquement parlant).


E1 -ne E2 E1 est différente de E2.
E1 -lt E2 E1 est inférieure à E2.
E1 -gt E2 E1 est supérieure à E2.
E1 -le E2 E1 est inférieure ou égale à E2.
E1 -ge E2 E1 est supérieure ou égale à E2.

(E) Vrai si E est vraie.


!E Vrai si E est fausse.
E1 -a E2 Vrai si E1 et E2 sont vraies.
E1 -o E2 Vrai si E1 ou E2 est vraie.

A-12 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Annexe A : Les commandes POSIX 2

touch - Crée un fichier vide ou met à jour la date de modification d’un fichier.
touch [-acm] [-r fic | -t tmp] fichier ...

-a Modifie la date de dernier accès du fichier.


-c Ne crée pas le fichier s’il n’existe pas.
-m Modifie la date de dernière modification du fichier.
-r fic Utilise les dates du fichier fic pour les options « -a » et « -m ».
-t tmp Spécifie la date tmp pour les options « -a » et « -m ».

tr - Modifie les caractères d’un fichier.


tr [-cs] chaîne1 chaîne2
tr -s [-c] chaîne1
tr -d [-c] chaîne1
tr -ds [-c] chaîne1 chaîne2

-c Tous les caractères qui ne se trouvent pas dans la première chaîne sont remplacés par le
dernier caractère de la deuxième chaîne.
-s Remplace la répétition d’un caractère par un seul.
-d Détruit tous les caractères qui se trouvent dans la chaîne 1.

true - Retourne la valeur vrai.


true

tty - Affiche le terminal courant.


tty

umask - Positionne ou affiche les droits par défaut.


umask [-S] [masque]

-S Utilise un format symbolique pour afficher les droits par défaut.

uname - Affiche le nom et les caractéristiques du système.


uname [-amnrsv]

-a Affiche toutes les caractéristiques du système.


-m Affiche le type de matériel.
-n Affiche le nom réseau du système.
-r Affiche la « Release » du système d’exploitation.
-s Affiche le nom du système d’exploitation.
-v Affiche la version du système d’exploitation.

uniq - Elimine les doublons d’un fichier trié.


uniq [-c|-d|-u] [-f nb][-s nb] [fichier1 [fichier2]]

-c Affiche chaque ligne précédée du nombre d’occurrences.


-d Supprime les lignes qui ne sont pas répétées.
-u Supprime les lignes répétées.
-f nb Ignore les nb premiers champs lors des comparaisons.
-s nb Ignore les nb premiers caractères lors des comparaisons.
fichier1 Le fichier d’entrée, par défaut l’entrée standard.
fichier2 Le fichier de sortie, par défaut la sortie standard.

wait - Attend la fin des tâches d’arrière-plan.


wait [pid ...]

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 A-13
Annexe A : Les commandes POSIX 2

wc - Compte les lignes, les mots et les caractères d’un fichier.


wc [-clw] [fichier ...]

-l Affiche le nombre de lignes.


-w Affiche le nombre de mots.
-c Affiche le nombre de caractères.

xargs - Génère une commande et l’exécute.


xargs [-t] [-n nb [-x]] [-s taille] [cmd [arg ...]]

-t Active le mode trace.


-n nb Limite le nombre d’arguments de la commande générée.
-x Termine la commande si la valeur nb est atteinte.
-s taille Limite la longueur de la commande générée en termes d’octets.

A-14 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Annexe B : sh – Le shell POSIX

Annexe B : sh - Le shell POSIX


Fonction
sh - Appelle le shell standard (shell POSIX ).
Syntaxe
sh [-aCefinuvx] [script [ arg ...]]
sh -c [-aCefinuvx] [cmd [ arg ...]]
sh -s [-aCefinuvx] [ arg ...]

-a,-C,-e,-f,-n,-u,-v,-x
Voir la description de la commande interne set.
script Le script exécuté par le shell.
-c Le shell exécute la commande cmd.
-i Shell interactif.
-s Lit les commandes à partir de l’entrée standard.
La commande interne set
set [-aCefnuvx] [arg ...]
set [+aCefnuvx] [arg ...]
set -- [arg ...]

-a Les variables sont exportées.


-C Empêche la redirection > de détruire les fichiers.
-e Sort du shell si la commande se termine en erreur.
-f Désactive la substitution de nom de fichier.
-n Lit les commandes sans les exécuter.
-u Traite les paramètres non définis en tant qu’erreurs.
-v Mode verbose.
-x Trace les commandes.
-- Débute la liste d’arguments, même si le premier argument commence par « + »
ou « - ».

Remplacer le signe - par + désactive l’option.


Le groupement de commandes
! cmd Inverse le code retour.
cmd1 newline cmd2
cmd1 ; cmd2
cmd1 | cmd2
cmd &
cmd1 || cmd2
cmd1 && cmd2
(Liste)
{ Liste; }
Les structures de contrôle
if Liste ;then Liste [elif Liste ;then Liste] ... [;else Liste] ;fi
for Identificateur [in Mot ...] ;do Liste ;done
while Liste ;do Liste ;done
until Liste ;do Liste ;done
case Mot in [[ ( ] Forme [ | Forme] ... ) Liste ;;] ... esac

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 A-15
Annexe B : sh – Le shell POSIX

Les commentaires
# ....<New Line>
Les fonctions
Identificateur () {Liste ;}
Substitution de répertoires
~ Le répertoire de connexion.
~jean Le répertoire de connexion de jean.
Les caractères de protection (d’échappement)
\ Annule la signification du caractère suivant.
’...’ Annule tous les caractères.
"..." Annule tous les caractères, sauf `, \, et $.
Remplacement de noms de fichiers
* Correspond à une chaîne quelconque, même vide.
? Correspond à un caractère quelconque.
[[domaine]...] Un des caractères du domaine.
[![domaine]...] Aucun des caractères du domaine.
Substitution de commandes
`commande` ou $(commande)
Les redirections
[n]<mot Redirection de l’entrée standard.
[n]>mot Redirection de la sortie standard.
[n]>| mot Idem, mais ne tient pas compte de noclobber.
[n]>> mot Redirection de la sortie standard en ajout à mot.
[n]<> mot Mot devient l’entrée et la sortie standard.
[n]<<[-] ch L’entrée du shell est lue jusqu’à la ligne correspondant à ch. Si - est
ajouté à <<, les tabulations de début sont supprimées.
[n]<&m L’entrée standard est dupliquée dans le descripteur m.
[n]>&m La sortie standard est dupliquée dans le descripteur m.
[n]<&- L’entrée standard est fermée.
[n]>&- La sortie standard est fermée.

Dans toutes les redirections qui précèdent, n représente le descripteur du fichier


redirigé. Par défaut les redirections portent sur l’entrée ou la sortie standard. Mot
représente un fichier ou bien un descripteur dans le cas où mot est numérique.
Les expressions de variables
$nom La valeur de la variable.
${nom} Idem.
${nom[:]-mot} Mot si nulle ou non définie.
${nom[:]=mot} Affecte mot si nulle ou non définie.
${nom[:]?mot} Affiche mot et exit si non définie.
${nom[:]+mot} Mot si non nulle.
${#nom} La longueur de la variable.
${nom#modèle} Supprime le petit modèle à gauche.
${nom##modèle} Supprime le grand modèle à gauche.
${nom%modèle} Supprime le petit modèle à droite.
${nom%%modèle} Supprime le grand modèle à droite.

A-16 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Annexe B : sh – Le shell POSIX

Les variables internes du shell


$0 Nom du script.
$1-$9 Paramètres du shell (1 à 9).
$* Tous les paramètres.
$@ Idem (mais "$@" eq. à "$1" "$2"...).
$# Nombre de paramètres.
$- Options du shell.
$? Code retour de la dernière commande.
$$ PID du shell.
$! PID du dernier processus shell lancé en arrière-plan.
Les variables - les variables prédéfinies
HOME Le répertoire de connexion.
LANG Spécifie la langue, et donc spécifie les valeurs par défaut des
variables LC_...
LC_ALL Interagit avec les autres variables LC (cf. le manuel).
LC_COLLATE Interagit dans les comparaisons de chaînes (cf. le manuel).
LC_CTYPE Détermine l’interprétation d’une suite d’octets comme caractères.
LC_MESSAGES Indique la langue utilisée pour les messages.
IFS Séparateur de champs.
PATH Chemin de recherche des commandes.
Les expressions arithmétiques
$((expression))

Opérateurs unaires
- moins
! non
~ complément à un

Opérateurs binaires
* multiplication
/ division entière
% modulo
+ addition
- soustraction
<< décalage à gauche
>> décalage à droite
< inférieur à
<= inférieur ou égal à
> supérieur à
>= supérieur ou égal à
== égal à
!= différent
& et binaire
^ ou binaire exclusif
| ou binaire
&& et logique
|| ou logique
= affectation
op= exp = exp op exp
*= /= %= ~= <<= >>= &= ^= |=

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 A-17
Annexe B : sh – Le shell POSIX

Les commandes internes


: [Arg ...] Etend les arguments, retourne vrai.
. Fichier [Arg...] Le shell courant exécute le fichier.
break [n] Sort de n niveaux de boucle.
continue [n] Passe à l’itération suivante, n indique le nombre d’imbrications.
eval [Arg ...] Les arguments sont lus comme entrée du shell et ensuite
exécutés.
exec [Arg ...] La commande donnée en argument se substitue au shell.
exit [n] Provoque la sortie du shell avec l’état de sortie n.
export [Nom[=Valeur]] ...
export -p Les noms spécifiés sont exportés, l’option « -p » permet de lister
les variables exportées.
readonly [Nom[=Valeur]] ...
readonly –p Les noms sont marqués en lecture seule, l’option « -p » liste ces
variables.
return [n] Retour d’une fonction shell, avec le code n.
set (cf. début du chapitre)
shift [n] Décale les paramètres.
trap [[Commande] [Signal ...]]
Lit et exécute la commande spécifiée lorsque le shell reçoit le ou
les signaux spécifiés.
unset [-fv] Nom ...
-v Les variables spécifiées sont supprimées (par défaut).
-f Les fonctions sont supprimées.

A-18 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Annexe C : ksh – Le Korn shell

Annexe C : ksh – Le Korn shell

Fonction
ksh - Appelle le Korn shell.
Syntaxe
ksh [-i] [+|-aefhkntuvx] [-o Option][-c Chaîne | -s | Fichier [Paramètre]]
Options
-i Shell interactif.
-c cmd Exécute la commande cmd.
-p Permet aux IDs réel et effectif d’être différents.
-r Shell restreint.
-s Commandes lues à partir de l’entrée standard.

Pour les autres options, voir la commande set.


La commande interne set
-a Les variables sont exportées.
-e Sort du shell si la commande se termine en erreur.
-f Désactive la substitution de nom de fichier.
-h Mémorise les fonctions.
-k Met dans l’environnement chaque variable affectée.
-m Les travaux en arrière-plan sont exécutés dans un groupe de processus distincts.
-n Lit les commandes sans les exécuter.
-o (cf. paragraphe suivant).
-t Sort après l’exécution d’une commande.
-u Traite les paramètres non définis en tant qu’erreurs.
-v Mode verbose.
-x Trace les commandes.
- Désactive les options « -x » et « -v ».
-- Débute la liste d’arguments, même si le premier argument commence par « + »
ou « - ».

Remplacer le signe - par + désactive l’option.


La commande set -o
allexport Equivalent à -a.
errexit Equivalent à -e.
bgnice Faible priorité pour les travaux en arrière-plan.
emacs Utilise emacs pour l’édition des commandes.
gmacs Utilise gmacs pour l’édition des commandes.
ignoreeof Ignore la fin de fichier.
keyword Equivalent à -k.
markdirs Ajoute « / » à tous les noms de répertoires générés.
monitor Equivalent à -m.
noclobber Empêche la redirection > de détruire les fichiers.
noexec Equivalent à -n.
noglob Equivalent à -f.
nolog Ne pas sauvegarder les fonctions dans l’historique.
nounset Equivalent à -u.
privileged Equivalent à -p.

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 A-19
Annexe C : ksh – Le Korn shell

verbose Equivalent à -v.


trackall Equivalent à –h.
vi Active l’édition vi des commandes.
viraw Traite chaque caractère tel qu’il est entré.
xtrace Equivalent à –x.
Le groupement de commandes
cmd1 newline cmd2
cmd1 ; cmd2
cmd1 | cmd2
cmd &
cmd |&
cmd1 || cmd2
cmd1 && cmd2
(Liste)
{ Liste; }
Les structures de contrôle
if Liste ;then Liste [elif Liste ;then Liste] ... [;else Liste] ;fi
for Identificateur [in Mot ...] ;do Liste ;done
while Liste ;do Liste ;done
until Liste ;do Liste ;done
case Mot in [[ ( ] Forme [ | Forme] ... ) Liste ;;] ... esac
select Identificateur [in Mot ...] ;do Liste ;done
Les fonctions
function Identificateur {Liste ;}
Identificateur () {Liste ;}
Substitution de répertoires
~ Le répertoire de connexion.
~nom Idem mais de l’utilisateur nom.
~+ Répertoire précédent.
~+ Chemin absolu du répertoire courant.
Les caractères de protection (d’échappement)
\ Annule la signification du caractère suivant.
’...’ Annule tous les caractères.
"..." Annule tous les caractères, sauf `, \, et $.
Remplacement de noms de fichiers
* Correspond à une chaîne quelconque, même vide.
? Correspond à un caractère quelconque.
[[domaine]...] Un des caractères du domaine.
[![domaine]...] Aucun des caractères du domaine.
?(modèle[ |modèle]...) Correspond à n’importe quel modèle.
*(modèle[ |modèle]...) Correspond à zéro ou plusieurs occurrences.
+(modèle[ |modèle]...) Correspond à une ou plusieurs occurrences.
!(modèle[ |modèle]...) Correspond à aucun modèle.
@(modèle[ |modèle]...) Correspond exactement à un modèle.
Substitution de commandes
`commande` ou $(commande)

A-20 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Annexe C : ksh – Le Korn shell

Les redirections
<Fichier Redirection de l’entrée standard.
>Fichier Redirection de la sortie standard.
>| Fichier Idem, mais ne tient pas compte de noclobber.
>> Fichier Redirection de la sortie standard en ajout au fichier.
<> Fichier Le fichier devient l’entrée et la sortie standard.
<<[-] Mot L’entrée du shell est lue jusqu’à la ligne correspondant à Mot. Si - est
ajouté à <<, les tabulations de début sont supprimées.
<&n L’entrée standard est dupliquée dans le descripteur n.
>&n La sortie standard est dupliquée dans le descripteur n.
<&- L’entrée standard est fermée.
>&- La sortie standard est fermée.
<&p L’entrée du coprocessus est déplacée vers l’entrée standard.
>&p La sortie du coprocessus est déplacée vers la sortie standard.
n>&m Duplique le descripteur n dans m.
Les expressions de variables
$nom La valeur de la variable.
${nom} Idem.
${#nom[*]} Le nombre d’éléments du tableau.
${nom[*]} Tous les éléments du tableau.
${nom[0]} Le premier élément du tableau.
${nom[:]-mot} Mot si nulle ou non définie.
${nom[:]=mot} Affecte mot si nulle ou non définie.
${nom[:]?mot} Affiche mot et exit si non définie.
${nom[:]+mot} Mot si non nulle.
${nom#modèle} Supprime le petit modèle à gauche.
${nom##modèle} Supprime le grand modèle à gauche.
${nom%modèle} Supprime le petit modèle à droite.
${nom%%modèle} Supprime le grand modèle à droite.
Les variables internes du shell
$0 Nom du script.
$1-$9 Paramètres du shell (1 à 9).
$* Tous les paramètres.
$@ Idem (mais "$@" eq. à "$1" "$2"...).
$# Nombre de paramètres.
$- Options du shell.
$? Code retour de la dernière commande.
$$ PID du shell.
$! PID du dernier processus shell lancé en arrière-plan.
Les variables - les variables prédéfinies
ERRNO Code erreur du dernier appel système.
LINENO Ligne courante du script.
OLDPWD Répertoire précédent.
OPTARG (cf. getopts)
OPTIND (cf. getopts)
PPID PID du processus père.
PWD Répertoire courant.
RANDOM Nombre aléatoire.
REPLY Réponse à un select.
SECONDS Temps écoulé depuis le lancement du shell.
CDPATH Répertoires explorés par cd.

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 A-21
Annexe C : ksh – Le Korn shell

COLUMNS Largeur de l’écran.


EDITOR Editeur préféré.
ENV Le script d’initialisation.
FCEDIT Editeur d’édition de commandes.
FPATH Répertoires des fonctions.
IFS Séparateur de champs.
HISTFILE Le fichier historique.
HISTSIZE Taille du fichier historique.
HOME Le répertoire de connexion.
LINES Utilisé par select.
MAIL Fichier contenant le courrier.
MAILCHECK Fréquence de vérification du courrier.
MAILPATH Liste des fichiers de courrier.
PATH Chemin de recherche des commandes.
PS1 Invite de commande, par défaut « $ ».
PS2 Invite secondaire, par défaut « > ».
PS3 Invite de boucle select, par défaut « #? ».
PS4 Invite de trace, par défaut « + ».
SHELL Le shell de préférence.
TMOUT Temps maximum d’inactivité.
VISUAL L’éditeur de commandes.
Alias prédéfinis
autoload='typeset -fu'
false='let 0'
functions='typeset -f'
hash='alias -t'
history='fc -l'
integer='typeset -i'
nohup='nohup '
r='fc -e -'
true=':'
type='whence -v'
Les tests
[[Expression]]
-a Fichier Vrai si Fichier existe.
-b Fichier Fichier spécial par blocs.
-c Fichier Fichier spécial par caractères.
-d Fichier C’est un répertoire.
-f Fichier Fichier ordinaire.
-g Fichier Bit setgid est activé.
-k Fichier Le sticky bit est activé.
-n Chaîne La longueur de la chaîne est différente de zéro.
-o Option L’option est active.
-p Fichier C’est un fichier spécial, FIFO ou un tube.
-r Fichier Accessible en lecture.
-s Fichier La taille est supérieure à zéro.
-t [fd] fd est un descripteur associé à un terminal.
-u Fichier Le bit setuid est activé.
-w Fichier Accessible en écriture.
-x Fichier Fichier exécutable.
-z Chaîne La longueur de Chaîne est égale à zéro.
-L Fichier Lien symbolique.
-O Fichier Appartient à l’ID utilisateur effectif du processus.

A-22 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Annexe C : ksh – Le Korn shell

-G Fichier Le groupe auquel il appartient correspond à l’ID de groupe du processus.


-S Fichier C’est une socket.
f1 -nt f2 Fichier f1 est plus récent que f2.
f1 -ot f2 Fichier f1 est moins récent que f2.
f1 -ef f2 Fichiers f1 et f2 font référence au même fichier.
Chaîne = Forme Vrai si Chaîne correspond à Forme.
Chaîne != Forme Vrai si Chaîne ne correspond pas à Forme.
Chaîne1 < Chaîne2 Vrai si Chaîne1 précède Chaîne2.
Chaîne1 > Chaîne2 Vrai si Chaîne1 suit Chaîne2.
E1 -eq E2 E1 est égale à E2.
E1 -ne E2 E1 est différente de E2.
E1 -lt E2 E1 est inférieure à E2.
E1 -gt E2 E1 est supérieure à E2.
E1 -le E2 E1 est inférieure ou égale à E2.
E1 -ge E2 E1 est supérieure ou égale à E2.

Expression composée
(E) Vrai si E est vraie.
!E Vrai si E est fausse.
E1 && E2 Vrai si E1 et E2 sont vraies.
E1 || E2 Vrai si E1 ou E2 est vraie.
Les expressions arithmétiques
expression
terme
(expression)
exp_avec_opérateur_unaire
exp_avec_opérateur_binaire

Terme
variable_entière
[base#]constant

Opérateurs unaires
- moins
! non
~ complément à un

Opérateurs binaires
* multiplication
/ division entière
% modulo
+ addition
- soustraction
<< décalage à gauche
>> décalage à droite
< inférieur à
<= inférieur ou égal à
> supérieur à
>= supérieur ou égal à
== égal à
!= différent
& et binaire
^ ou binaire exclusif

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 A-23
Annexe C : ksh – Le Korn shell

| ou binaire
&& et logique
|| ou logique
= affectation
op= exp = exp op exp
*= /= %= ~= <<= >>= &= ^= |=
Les commandes internes
: [Arg ...] Etend les arguments, retourne vrai.
. Fichier [Arg...] Le shell courant exécute le fichier.
alias [-tx] Nom[=Valeur]] ...
Crée ou liste les alias.
-x Exporte l’alias.
-t Crée un alias « repéré » par le chemin absolu.
bg [Travail ...] Place les travaux en arrière-plan.
break [n] Sort de n niveaux de boucle.
cd [Arg] Change de répertoire.
continue [n] Passe à l’itération suivante, n indique le nombre
d’imbrications.
echo [Arg ...] (cf. La commande echo)
eval [Arg ...] Les arguments sont lus comme entrée du shell et ensuite
exécutés.
exec [Arg ...] La commande donnée en argument se substitue au shell.
exit [n] Provoque la sortie du shell avec l’état de sortie n.
export [Nom[=Valeur]] ... Les noms spécifiés sont exportés.
fc [-e Nom_éditeur] [-nlr] [Première [Dernière]]
Liste les commandes ou les édite.
fg [travail ...] Place le travail spécifié au premier plan.
getopts Chaîne_options Nom [Arg ...]
Extrait les options (cf. paragraphe suivant).
jobs [-lnp] [travail ...] Liste les travaux spécifiés.
kill -l Liste des signaux.
kill [-Signal] Travail ... Transmet un signal (par défaut TERM) aux travaux
spécifiés.
Désigne un travail :
PID
%Numéro_Travail
%Chaîne Travail qui commence par Chaîne.
%?Chaîne Travail qui contient Chaîne.
%% Travail en cours.
%+ Equivalent à %%.
%- Travail précédent.
let Exp ... Evalue les expressions.
newgrp [-] [group] Change le groupe courant.
print [-Rnpreu[n]] [Arg...] Affiche les arguments.
-R Ecrit en mode brut.
-n Empêche d’ajouter une ligne sur la sortie.
-p Envoie les arguments vers le tube généré par
l’intermédiaire de |&.
-r Ecrit en mode brut.
-e Envoie les arguments vers le fichier historique.
-u Ecrit la sortie vers le fichier de descripteur u.
pwd Affiche le répertoire courant.

A-24 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Annexe C : ksh – Le Korn shell

read [-preu[n]] [Nom?Invite] [Nom ...]


Une ligne est lue et divisée en plusieurs zones, les
caractères de IFS étant utilisés comme séparateurs.
-p Extrait la ligne d’entrée du tube d’entrée d’un
processus généré par le shell en utilisant |&.
-r Sauvegarde l’entrée dans l’historique.
-u Lecture à partir du fichier de descripteur u.
readonly [Nom[=Valeur]] ...
Les noms sont marqués en lecture seule.
return [n] Retour d’une fonction shell, avec le code n.
set [+|-aefhkmnopstuvx] [+|-o Option]...[+|-A Nom] [Argument ...]
-A Affectation de tableau.
shift [n] Décale les paramètres.
test exp ou [ exp ] L’équivalent de [[ exp ]] sauf les opérateurs && et ||.
time Séquence_commandes
times Ecrit le temps utilisateur et le temps système du shell et
des processus lancés par le shell.
trap [Commande] [Signal] ...
Lit et exécute la commande spécifiée lorsque le shell
reçoit le ou les signaux spécifiés.
type Nom Identifie une commande.
typeset [+HLRZfilrtux[n]] [Nom[=Valeur]] ...
Définit les attributs et les valeurs des paramètres du shell.
-L Justifier à gauche.
-R Justifier à droite.
-Z Justifier à droite avec des zéros en début de ligne.
-f Les noms sont des fonctions.
-x Active la trace pour cette fonction.
-i Le paramètre est un entier.
-l Convertir les majuscules en minuscules.
-r Noms en lecture seule.
-t Marque les paramètres nommés.
-u Convertit les minuscules en majuscules.
Remplacer le signe - par + désactive ces options.
ulimit [-HSacdfmst] [Limite]
Définit ou affiche une limite.
-H Spécifie la limite permanente.
-S Spécifie la limite temporaire.
-a Les limites en cours.
-c Nombre de blocs pour les fichiers « core ».
-d Nombre de blocs de la zone de données.
-f Nombre de blocs des fichiers écrits.
-m Nombre de Ko de la mémoire physique.
-p Nombre de Ko pour la pile.
-t Nombre de secondes attribuées à chaque
processus.
umask [Masque] Spécifie le masque, ou l’affiche.
unalias Nom ... Supprime des alias.
unset [-f] Nom ... Les variables sont supprimées.
-f Les fonctions sont supprimées.
wait [Travail] Suspend le shell, et attend le travail spécifié ou par défaut
tous les travaux.
whence [-v] Nom ... Décrit l’interprétation d’une commande.
-v Mode verbose.

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 A-25
Annexe C : ksh – Le Korn shell

getopts
getopts Chaîne_options Nom [Argument ...]

Vérifie les options d’un argument. Si aucun argument n’est spécifié, le paramètre
Chaîne_options contient les lettres reconnues par la commande getopts. Si une lettre
est suivie d’un signe deux-points (:), l’option doit comporter un argument. Un espace
peut séparer l’option et l’argument. La commande getopts place la lettre
correspondant à l’option suivante dans la variable Nom lorsque le signe + précède
l’argument. L’index de l’argument suivant est enregistré dans OPTIND. L’argument
d’option, s’il existe, est placé dans OPTARG. Si un signe deux-points (:) est placé au
début du paramètre Chaîne_options, la commande getopts enregistre la lettre
correspondant à une option incorrecte dans OPTARG, et attribue la valeur ? à la
variable Nom d’une option inconnue, ou la valeur : lorsqu’une option requise n’est pas
spécifiée. L’état de sortie est différent de zéro lorsqu’il n’y a plus d’option.

A-26 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Annexe D : bash – Bourne Another Shell

Annexe D : bash – Bourne Another SHell


Le shell bash est développé par la « Free Software Foundation ». Il est couvert par la licence GNU, et
c’est le shell standard du système Linux. Le bash, comme le Korn shell, dérive du shell Bourne dont il tire
son nom « Bourne Another SHell ». Le bash est compatible avec le shell POSIX sh et il est d’ailleurs
fréquemment lancé sous ce nom. Le bash intègre la majorité des fonctionnalités du Korn shell.

Principales différences du bash par rapport au Korn shell (éléments manquants)


- Pas de « tracked aliases ».
- Absence des variables suivantes : ERRNO, FPATH, COLUMNS, LINES, EDITOR, VISUAL.
- Pas de coprocessus (|&, >&p, <&p).
- L’historique des commandes est en mémoire et non dans un fichier.
- Absence des commandes internes suivantes : alias –x, newgrp, print, set –A, whence.

Fonction
bash - Appelle le Bourne Another Shell.
Syntaxe
bash [option...] [script...]

script Le script exécuté par le shell.


-c cmd Le shell exécute la commande cmd.
-i Shell interactif.
-s Lit les commandes à partir de l’entrée standard.

Voir la commande set pour les autres options d’une seule lettre.

-norc Ne lit pas le fichier ~/.bashrc.


-rcfile Fichier
Spécifie le fichier de remplacement de ~/.bashrc.
-noprofile Ne lit pas les fichiers de démarrage.
-version Affiche la version du shell.
-login Exécute le shell comme un shell de connexion.
-nobraceexpansion
Ne réalise pas l’expansion des accolades (cf. Expansion des {}).
-nolineediting
N’utilise pas la bibliothèque GNU pour la lecture de commande.
-posix Le shell se conforme au standard POSIX 2.
La commande interne set
-a Les variables sont exportées.
-b Les comptes rendus des travaux en arrière-plan sont donnés immédiatement.
-d Désactive la recherche des commandes en mémoire (table de Hash).
-e Sort du shell si la commande se termine en erreur.
-f Désactive la substitution de nom de fichier.
-h Mémorise les fonctions.
-k Met dans l’environnement d’une commande chaque variable affectée dans
la ligne de commande.
-m Les travaux en arrière-plan sont exécutés dans un groupe de processus distincts.
-n Lit les commandes sans les exécuter.
-o (cf. paragraphe suivant).

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 A-27
Annexe D : bash – Bourne Another Shell

-p Mode privilégié.
Le fichier $ENV n’est pas exécuté, les fonctions ne sont pas héritées.
-t Sort après l’exécution d’une commande.
-u Traite les paramètres non définis en tant qu’erreurs.
-v Mode verbose.
-x Trace les commandes.
-C Equivalent au drapeau noclobber.
-H Active l’utilisation de l’historique des commandes de style C-Shell (!!, ...).
-P Utilise les répertoires physiques au lieu des liens symboliques correspondants.
- Désactive les options « -x » et « -v ». Signale la fin des options.
-- Débute la liste d’arguments, même si le premier argument commence par « + »
ou « -».

Remplacer le signe - par + désactive l’option.


La commande set -o
allexport Equivalent à -a.
braceexpand
Réalise les substitutions des accolades (par défaut).
errexit Equivalent à -e.
emacs Utilise emacs pour l’édition des commandes (par défaut).
histexpand Equivalent à –H.
ignoreeof Ignore la fin de fichier.
interactive-comments
Le # débute un commentaire, y compris dans un shell interactif.
monitor Equivalent à -m.
noclobber Empêche la redirection > de détruire les fichiers.
noexec Equivalent à -n.
noglob Equivalent à -f.
nohash Equivalent à –f.
notify Equivalent à –d.
nounset Equivalent à -u.
physical Equivalent à –P.
posix Respect du standard POSIX 2.
privileged Equivalent à -p.
verbose Equivalent à -v.
vi Active l’édition vi des commandes.
xtrace Equivalent à –x.
Les commentaires
# ....<New Line>
Le groupement de commandes
! cmd Inverse le code retour.
cmd1 newline cmd2
cmd1 ; cmd2
cmd1 | cmd2
cmd &
cmd1 || cmd2
cmd1 && cmd2
(Liste)
{ Liste; }

A-28 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Annexe D : bash – Bourne Another Shell

Les structures de contrôle


if Liste ;then Liste [elif Liste ;then Liste] ... [;else Liste] ;fi
for Identificateur [in Mot ...] ;do Liste ;done
while Liste ;do Liste ;done
until Liste ;do Liste ;done
case Mot in [[ ( ] Forme [ | Forme] ... ) Liste ;;] ... esac
select Identificateur [in Mot ...] ;do Liste ;done
Les fonctions
[function] Identificateur {Liste ;}
Substitution de répertoires
~ Le répertoire de connexion.
~nom Idem mais de l’utilisateur nom.
~- Répertoire précédent.
~+ Chemin absolu du répertoire courant.
Les caractères de protection (d’échappement)
\ Annule la signification du caractère suivant.
’...’ Annule tous les caractères.
"..." Annule tous les caractères, sauf `, \, et $.
Remplacement de noms de fichiers
* Correspond à une chaîne quelconque, même vide.
? Correspond à un caractère quelconque.
[[domaine]...] Un des caractères du domaine.
[![domaine]...] Aucun des caractères du domaine.
Les redirections
[n]<mot Redirection de l’entrée standard.
[n]>mot Redirection de la sortie standard.
[n]>| mot Idem, mais ne tient pas compte de noclobber.
[n]>> mot Redirection de la sortie standard en ajout à mot.
&>mot Redirige la sortie standard et l’erreur standard (équivalent à >mot 2>&1).
>&mot Idem.
[n]<> mot Mot devient l’entrée et la sortie standard.
[n]<<[-] ch L’entrée du shell est lue jusqu’à la ligne correspondant à ch. Si - est
ajouté à <<, les tabulations de début sont supprimées.
[n]<&m L’entrée standard est dupliquée dans le descripteur m.
[n]>&m La sortie standard est dupliquée dans le descripteur m.
[n]<&- L’entrée standard est fermée.
[n]>&- La sortie standard est fermée.

Dans toutes les redirections qui précèdent, n représente le descripteur du fichier


redirigé. Par défaut les redirections portent sur l’entrée ou la sortie standard. Mot
représente un fichier ou bien un descripteur dans le cas où mot est numérique.
Substitution de commandes
`commande` ou $(commande)
Substitution d’accolades
La substitution des accolades permet de générer des chaînes arbitraires. Ce mécanisme
est voisin du remplacement des noms de fichiers via les jokers.

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 A-29
Annexe D : bash – Bourne Another Shell

a{d,c,b}e est remplacé par ade ace abe

Les accolades peuvent être imbriquées et elles sont interprétées avant les autres
caractères spéciaux.

Exemple complet : chown root /usr/{ucb/{ex,edit},lib/{ex?.?*,how_ex}}


Les expressions de variables
$nom La valeur de la variable.
${nom} Idem.
${#nom} Le nombre de caractères de la variable.
${nom:-mot} Mot si nom est nulle ou renvoie la variable.
${nom:=mot} Affecte mot à la variable si elle est nulle et renvoie la variable.
${nom:?mot} Affiche mot et réalise un exit si la variable est non définie.
${nom:+mot} Mot si non nulle.
${nom#modèle} Supprime le petit modèle à gauche.
${nom##modèle} Supprime le grand modèle à gauche.
${nom%modèle} Supprime le petit modèle à droite.
${nom%%modèle} Supprime le grand modèle à droite.
Les variables internes du shell
$0 Nom du script.
$1,$2, ... Paramètres du shell
$* Tous les paramètres.
$@ Idem (mais "$@" eq. à "$1" "$2"...).
$# Nombre de paramètres.
$- Options du shell.
$? Code retour de la dernière commande.
$$ PID du shell.
$! PID du dernier processus shell lancé en arrière-plan.
$_ Le dernier argument de la commande précédente.
Cette variable est également mise dans l’environnement de chaque
commande exécutée et elle contient le chemin complet de la commande.
Les variables - les variables prédéfinies
BASH Le chemin complet du shell.
BASH_VERSION La version du shell.
CDPATH Répertoires explorés par cd.
ENV (cf. Fichiers de démarrage).
EUID EUID de l’utilisateur courant.
FCEDIT Editeur d’édition de commandes.
FIGNORE Liste de suffixes séparés par « : » indiquant les fichiers qui ne
doivent pas apparaître dans l’expansion des noms de fichiers.
HISTCMD Le numéro de la commande courante dans l’historique.
HISTCONTROL Si sa valeur est « ignorespace », les lignes commençant par des
blancs ne sont pas mises dans l’historique. Si sa valeur est
« ingoredups », la dernière ligne n’est pas mise dans l’historique
si elle est identique à la ligne précédente. Si sa valeur est
« ignoreboth », c’est équivalent aux deux options précédentes.
HISTFILE Le fichier historique.
HISTFILESIZE Taille du fichier historique.
HISTSIZE Nombre de commandes mémorisées par la commande history.
HOSTFILE Nom d’un fichier au format de /etc/hosts utilisé quand le shell
utilise des hostname.
HOSTTYPE Le type de machine.

A-30 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Annexe D : bash – Bourne Another Shell

HOME Le répertoire de connexion.


IFS Séparateur de champs.
IGNOREEOF Nombre de caractères EOF provoquant la fin du shell.
INPUTRC (cf. Fichiers).
LINENO Ligne courante du script.
MAIL Fichier contenant le courrier.
MAILCHECK Fréquence de vérification du courrier.
MAILPATH Liste des fichiers de courrier.
OLDPWD Répertoire précédent.
OPTARG (cf. getopts).
OPTERR (cf. getopts).
OPTIND (cf. getopts).
OSTYPE Chaîne qui décrit le système d’exploitation.
PATH Chemin de recherche des commandes.
PPID PID du processus père.
PROMPT_COMMAND
Commande exécutée avant chaque affichage du prompt.
PS1 Invite de commande, par défaut « $ » (cf. Le prompt).
PS2 Invite secondaire, par défaut « > ».
PS3 Invite de boucle select, par défaut « #? ».
PS4 Invite de trace, par défaut « + ».
PWD Répertoire courant.
RANDOM Nombre aléatoire.
REPLY Réponse à un select.
SECONDS Temps écoulé depuis le lancement du shell.
SHLVL Le nombre d’instance de shell.
TMOUT Temps maximum d’inactivité.
UID UID de l’utilisateur courant.
auto_resume Permet le rappel de job stoppé.
allow_null_glob_expansion
Les fichiers qui ne correspondent à rien dans une expansion de
noms de fichiers sont remplacés par une chaîne vide.
cdable_vars Drapeau qui implique que les arguments de cd qui ne sont pas
des répertoires soient interprétés comme des variables contenant
un nom de répertoire.
command_oriented_history
Mémorise dans l’historique en une seule ligne une commande
entrée sur plusieurs lignes.
glob_dot_filenames Drapeau qui implique la présence des noms commençant par « . »
dans l’expansion des noms de fichiers.
history_control (cf. HISTCONTROL).
histchars Les caractères qui contrôlent l’expansion de l’historique,
par défaut « !^# » (cf. Historique).
hostname_completion_file
(cf. HOSTFILE).
noclobber Equivalent à set –C.
no_exit_on_failed_exec
Un script ne se termine pas si une commande exec n’aboutit pas.
nolinks Equivalent à set -P.
notify Equivalent à set -b.
Le prompt
Avant l’affichage du prompt primaire (spécifié par la variable PS1), le shell exécute la
commande contenue dans la variable $PROMPT_COMMAND.

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 A-31
Annexe D : bash – Bourne Another Shell

Dans le cas d’un shell non interactif, la variable PS1 est vide.

La variable PS1 peut contenir les caractères spéciaux suivants :


\a Active la sonnerie.
\e Le caractère Escape.
\t Affiche l’heure au format HH :MM :SS, basé sur 24 heures.
\T Idem, mais basé sur 12 heures.
\@ Idem, mais avec indication am/pm.
\d Affiche la date au format « Jour_de_la_semaine mois jour_du_mois ».
\n Saut de ligne.
\r Retour-chariot.
\s Affiche le nom du shell.
\w Affiche le chemin complet du répertoire courant.
\W Affiche seulement le nom du répertoire courant (basename).
\u Affiche le nom de l’utilisateur.
\v Affiche la version du shell.
\V Idem, mais plus complet.
\h Affiche le nom réseau de la machine.
\H Idem, mais sous la forme du nom complet.
\# Affiche le numéro de la commande.
\ ! Affiche le numéro de la commande dans l’historique.
\nnn
Affiche un caractère spécifié en octal.
\s Affiche # si l’EUID est 0 (root), et $ autrement.
\\ Affiche un backslash.
\[ Débute une séquence d’échappement.
\] Termine une séquence d’échappement.

Exemple : PS1="[\t \W] "


Les expressions arithmétiques
Les expressions arithmétiques peuvent apparaître dans l’instruction let et l’expansion
arithmétique.

L’instruction let
let expression ...

L’expansion arithmétique
$[ expression ]
$((expression))

Opérateurs unaires
- moins
+ plus
! non
~ complément à un

Opérateurs binaires
* multiplication
/ division entière
% modulo
+ addition
- soustraction
<< décalage à gauche
>> décalage à droite

A-32 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Annexe D : bash – Bourne Another Shell

< inférieur à
<= inférieur ou égal à
> supérieur à
>= supérieur ou égal à
== égal à
!= différent
& et binaire
^ ou binaire exclusif
| ou binaire
&& et logique
|| ou logique
= affectation
op= exp = exp op exp
*= /= %= ~= <<= >>= &= ^= |=

Les constantes commençant par 0x ou 0X sont en hexadécimal. On peut exprimer un


nombre dans une base comprise entre 2 et 36 en préfixant la constante par BASE#.
Par défaut les constantes sont en base 10.
Les tests
[ Expression ] ou test expression
-b Fichier Fichier spécial par blocs.
-c Fichier Fichier spécial par caractères.
-d Fichier C’est un répertoire.
-e Fichier Vrai si Fichier existe.
-f Fichier Fichier ordinaire.
-g Fichier Bit setgid est activé.
-k Fichier Le sticky bit est activé.
Chaîne
-n Chaîne La longueur de la chaîne est différente de zéro.
-p Fichier C’est un fichier spécial, FIFO ou un tube.
-r Fichier Accessible en lecture.
-s Fichier La taille est supérieure à zéro.
-t [fd] fd est un descripteur associé à un terminal.
-u Fichier Le bit setuid est activé.
-w Fichier Accessible en écriture.
-x Fichier Fichier exécutable.
-z Chaîne La longueur de Chaîne est égale à zéro.
-L Fichier Lien symbolique.
-O Fichier Appartient à l’ID utilisateur effectif du processus.
-G Fichier Le groupe auquel il appartient correspond à l’ID de groupe du processus.
-S Fichier C’est une socket.
f1 -nt f2 Fichier f1 est plus récent que f2.
f1 -ot f2 Fichier f1 est moins récent que f2.
f1 -ef f2 Fichiers f1 et f2 font référence au même fichier.
Chaîne = Forme Vrai si Chaîne correspond à Forme.
Chaîne != Forme Vrai si Chaîne ne correspond pas à Forme.
E1 -eq E2 E1 est égale à E2.
E1 -ne E2 E1 est différente de E2.
E1 -lt E2 E1 est inférieure à E2.
E1 -gt E2 E1 est supérieure à E2.
E1 -le E2 E1 est inférieure ou égale à E2.
E1 -ge E2 E1 est supérieure ou égale à E2.

Expression composée

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 A-33
Annexe D : bash – Bourne Another Shell

(E) Vrai si E est vraie.


!E Vrai si E est fausse.
E1 -a E2 Vrai si E1 et E2 sont vraies.
E1 -o E2 Vrai si E1 ou E2 est vraie.
getopts
getopts Chaîne_options Nom [Argument ...]

Vérifie les options d’un argument. Si aucun argument n’est spécifié, le paramètre
Chaîne_options contient les lettres reconnues par la commande getopts. Si une lettre
est suivie d’un signe deux-points (:), l’option doit comporter un argument. Un espace
peut séparer l’option et l’argument. La commande getopts place la lettre
correspondant à l’option suivante dans la variable Nom lorsque le signe + précède
l’argument. L’index de l’argument suivant est enregistré dans OPTIND. L’argument
d’option, s’il existe, est placé dans OPTARG. Si un signe deux-points (:) est placé au
début du paramètre Chaîne_options, la commande getopts enregistre la lettre
correspondant à une option incorrecte dans OPTARG, et attribue la valeur ? à la
variable Nom d’une option inconnue, ou la valeur : lorsqu’une option requise n’est pas
spécifiée. L’état de sortie est différent de zéro lorsqu’il n’y a plus d’option.
Les commandes internes
: [Arg ...] Etend les arguments, retourne vrai.
. Fichier [Arg...]
source Fichier [Arg...]
Le shell courant exécute le fichier.
alias [Nom[=valeur]...]
Crée ou liste les alias.
bg [Travail ...] Place les travaux en arrière-plan.
break [n] Sort de n niveaux de boucle.
builtin [Arg...] Exécute la commande interne au lieu d’une fonction qui porte
le même nom.
bind
bind [-m KEYMAP] [-lvd] [-q NAME]
bind [-m KEYMAP] –f FILENAME
bind [-m KEYMAP] KEYSEQ:FUNCTION-NAME
Affiche les associations courantes ou réalise des associations.
-m KEYMAP Utilise KEYMAP pour les associations. Les valeurs
possibles sont emacs, emacs-standard, emacs-meta, emacs-ctlx,
vi, vi-move, vi-command, vi-insert.
-l Liste le nom des fonctions readline.
-v Liste le nom des fonctions et leur association.
-d Sortie des associations pour une relecture ultérieure.
-f FILENAME Lit les associations à partir d’un fichier.
-q NAME Spécifie les touches associées à NAME.
command [-pVv] cmd [arg ...]
Exécute la commande cmd, surcharge éventuellement le nom
d’une commande interne ou d’une fonction.
-p Utilise la valeur par défaut de la variable PATH, pour rechercher
une commande standard.
-v,-V Affiche des informations sur la commande.
continue [n] Passe à l’itération suivante, n indique le nombre d’imbrications.
declare [-frxi] [NAME[=VALUE]]
typeset [-frxi] [NAME[=VALUE]]
Déclare des variables ou leur donne des attributs.
-f Les noms correspondent à des fonctions.

A-34 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Annexe D : bash – Bourne Another Shell

-r Les variables sont en lecture seule.


-x Les variables sont exportées.
-i Les variables correspondent à des entiers.
dirs [-l] [+/-n] Affiche la liste des répertoires mémorisés.
-l Produit un listing commenté.
-n Liste les n premiers répertoires.
+n Liste les n derniers répertoires.
echo [-neE] [Arg ...]
Affiche les arguments.
-n Supprime le saut de ligne final.
-e Active l’interprétation des séquences d’échappement.
-E Désactive l’interprétation des séquences d’échappement.
\a alert (bell)
\b backspace
\c Supprime le saut de ligne final
\f form feed
\n new line
\r carriage return
\t horizontal tab
\v vertical tab
\\ backslash
\nnn Code ASCII en octal
enable [-n] [-all] [name ...]
Autorise ou non les scripts équivalant aux commandes internes.
-n Interdit (par défaut autorise).
-all Agit sur l’ensemble des commandes internes.
eval [Arg ...] Les arguments sont lus comme entrée du shell et ensuite
exécutés.
exec [[-] Commande [Arg ...]]
La commande donnée en argument se substitue au shell.
Si un moins est présent, l’argument 0 est précédé de moins.
exit [n] Provoque la sortie du shell avec l’état de sortie n.
export [Nom[=Valeur]] ...
export -p
Les noms spécifiés sont exportés, l’option « -p » permet de lister
les variables exportées.
fc [-e Nom_éditeur] [-nlr] [Première [Dernière]]
fc -s [pat=rep] [cmd]
Liste les commandes ou les édite.
fg [travail ...] Place le travail spécifié au premier plan.
getopts Chaîne_options Nom [Arg ...]
Extrait les options (cf. Paragraphe getopts).
hash [-r] [Nom ...] Mémorise le chemin complet des commandes spécifiées.
-r Retire les noms spécifiés de la mémoire (table de Hash).
help [Modèle] Affiche une aide concernant les commandes internes.
history [n]
history -rwan [Fichier]
Affiche l’historique des commandes.
Avec l’argument n, affiche les n dernières commandes.
-a Ajoute l’historique courant au fichier historique.
-n Le fichier historique s’ajoute à l’historique courant.
-r Lecture du fichier historique, qui devient l’historique courant.
-w Ecriture de l’historique courant dans le fichier historique.
jobs [-lnp] [travail ...]
jobs -x command [ args ... ]

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 A-35
Annexe D : bash – Bourne Another Shell

Liste les travaux spécifiés.


-l Liste également le PID des travaux.
-n Affiche seulement les travaux dont l’état a changé.
-p Liste le PID du leader.
-x Exécute la commande, un travail indique le groupe de processus .
kill -l [Signal] Liste des noms des signaux.
kill [-s Signal | -Signal] Travail ...
Transmet un signal (par défaut TERM) aux travaux spécifiés.
Désigne un travail :
PID
%Numéro_Travail
%Chaîne Travail qui commence par Chaîne.
%?Chaîne Travail qui contient Chaîne.
%% Travail en cours.
%+ Equivalent à %%.
%- Travail précédent.
let expression ... Evalue les expressions (cf. Expressions arithmétiques).
local Nom[=Valeur]
Crée une variable locale (obligatoirement dans une fonction).
logout Met fin à un shell de connexion.
popd [+/-n] Retire des entrées de la pile des répertoires (cf. pushd).
pushd [Répertoire]
pushd +/-n Dans la première forme, le répertoire est mis au sommet de
la pile et devient le répertoire courant. Les options « + » ou « - »
un nombre permettent de faire une rotation de la pile.
pwd Affiche le répertoire courant.
read [-r] [Nom ...] Lit des variables sur l’entrée standard.
-r Les backslash (\) ne sont pas ignorés.
readonly [Nom[=Valeur]] ...
readonly –p Les noms sont marqués en lecture seule, l’option « -p » liste ces
variables.
return [n] Retour d’une fonction shell, avec le code n.
set (cf. Paragraphe set).
shift [n] Décale les paramètres.
suspend [-f] Suspend l’exécution du shell jusqu’à la réception du signal
SIGCONT.
-f Force la suspension même si le shell est le shell de connexion.
test expression
[ expression ] Evalue une expression (cf. Paragraphe test).
times Affiche les temps cumulés CPU utilisateur et système du shell et
des processus lancés par le shell.
trap [-l] [[Commande] [Signal ...]]
Lit et exécute la commande spécifiée lorsque le shell reçoit le ou
les signaux spécifiés.
-l Liste les noms des signaux et le numéro correspondant.
type [-all] [-type | -path ] [Nom ...]
Identifie une commande.
-all Affiche l’ensemble des références du nom.
-type Affiche la nature de la commande : alias, builtin, file, keyword ...
-path Si la commande est un fichier, affiche son chemin.
ulimit [-acdmstfpnuvSH] [Limite]
Gère les ressources des processus.
-S Spécifie la limite « soft ».
-H Spécifie la limite « hard » (par défaut).
-a Affiche l’ensemble des limites.

A-36 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Annexe D : bash – Bourne Another Shell

-c La taille maximale d’un core.


-d La taille maximale de la zone de données.
-m La taille maximale de la zone résidente.
-s La taille maximale de la pile.
-t La durée maximale d’exécution (temps CPU) en secondes.
-f La taille maximale d’un fichier créée par un processus.
-p La taille des tubes.
-n Le nombre maximum de fichiers ouverts.
-u Le nombre maximum de processus simultanés.
-v La taille maximale de l’espace virtuel.
umask [-S] [Masque]
Spécifie le masque, ou l’affiche.
-S Utilise la notation symbolique.
unalias [-a] [Nom ... ]
Supprime les alias spécifiés.
-a Supprime l’ensemble des alias.
unset [-fv] Nom ...
-v Les variables spécifiées sont supprimées (par défaut).
-f Les fonctions sont supprimées.
wait [n] Attend la terminaison de l’ensemble des processus lancés en
arrière-plan. Il est possible de préciser un processus.
Historique de commandes, style C-Shell
!! Référence la dernière commande.
!23 Référence la commande n°23 (cf. La commande interne history).
!-2 L’avant-dernière commande.
!ls La dernière commande commençant par ls.
! ?profile La dernière commande contenant la chaîne profile.
!# La commande entière.
^1993^1999^
Substitution d’une chaîne par une autre dans la dernière commande.
! !:s/99/93/ Substitution d’une chaîne par une autre, technique générale.
Historique de commandes, mode emacs (mode par défaut)
Principales commandes (cf. manuel pour compléments)
CTRL-P ( ↑ ) Rappelle la commande précédente.
CTRL-N ( ↓ ) Rappelle la commande suivante.
CTRL-B ( ←) Déplace le curseur d’un caractère vers la gauche.
CTRL-F ( →) Déplace le curseur d’un caractère vers la droite.
Backspace Détruit le caractère à gauche du curseur.
CTRL-D (Suppr) Détruit le caractère sous le curseur.
Frappe de caractères
Les caractères sont insérés à partir du curseur.
CTRL-A (Début) Déplace le curseur en début de ligne.
CTRL-E (Fin) Déplace le curseur en fin de ligne.
CTRL-K Supprime la fin de la ligne.
CTRL-X Supprime le début de la ligne.
CTRL-V TAB Insère une tabulation.
Historique de commandes, mode vi
Le mode vi est activé par la commande set –o vi.
On utilise la touche Echappement pour rentrer dans le mode historique.
Les commandes vi d’édition peuvent alors être utilisées pour le rappel et l’édition de
commandes (h,j,k,l,0,$,a...<ESC>,i...<ESC>,x,r,/ls/,23G,etc.).

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 A-37
Annexe D : bash – Bourne Another Shell

La complétion
On peut compléter un nom de fichier en utilisant le caractère Tabulation. Ce caractère
peut également être utilisé pour proposer un choix lors de la saisie d’une variable
(texte commençant par $), d’un utilisateur (texte commençant par ~), d’un nom
d’ordinateur (texte commençant par @) ou d’une commande.
Les fichiers de démarrage
Pour un shell de connexion (l’option « –noprofile » n’étant pas utilisée) :
- A la connexion
1) /etc/profile
2) ~/.bash_profile s’il existe
~/.bash_login sinon
~/.profile si aucun des précédents n’existe
3) ~/.bashrc s’il est activé par l’un des scripts précédents
4) /etc/bashrc activé par ~/.bashrc
- A la déconnexion
~/.bash_logout

Pour un shell interactif qui n’est pas de connexion (sans les options « -norc » ou
« -rcfile ») :
~/.bashrc

Pour un script (shell non interactif)


1) $BASH_ENV
2) $ENV

Pour un shell invoqué sous le nom sh


- Pour un shell de connexion (sans l’option –noprofile)
1) /etc/profile
2) ~/.profile
- Autre shell : aucun fichier de démarrage

Pour un shell invoqué avec l’option « -posix », un seul fichier est exécuté :
$ENV
Les fichiers
/bin/bash L’exécutable
/etc/profile
/etc/bashrc
~/.bash_profile
~/.bash_login
~/.profile
~/.bashrc
$BASH_ENV
$ENV Fichiers de démarrage (cf. Les fichiers de démarrage).
~/.bash Fichier de clôture.
~/.bash_logout Script exécuté automatiquement à la déconnexion.
$INPUTRC
~/.inputrc Fichiers contenant la définition des touches d’édition de commande
du mode emacs.
~/.bash_history
Fichier historique des commandes. C’est la valeur par défaut de la
variable HISTFILE. Si cette variable est détruite, le shell ne
sauvegarde pas l’historique des commandes quand il se termine.

A-38 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Annexe E : Le processeur de texte

Annexe E : awk – Le processeur de texte


Syntaxe
awk [-Fx] [-v affec] program fichier ...
awk [-Fx] [-v affec] -f prg fichier ...

-Fx Spécifie le séparateur de champs.


-v affec Permet d’affecter des variables, variable=valeur.
program Le programme AWK en argument, généralement quoté.
-f prg Le programme AWK stocké dans le fichier prg.
Structure d’un programme AWK
[ section BEGIN ] # exécuté avant la lecture du fichier de données
[ section principale ] # exécuté pour chaque ligne du fichier
[ section END ] # exécuté après la lecture du fichier

Remarque :
Les commentaires sont précédés du caractère #.

Structure de la section BEGIN


BEGIN action
action ::= { énoncé ... }

Les énoncés sont des ordres AWK séparés par des « ; » ou des sauts de ligne.

Structure de la section END


END action

Structure de la section principale


clause ...
clause ::= [ critère ] [ action ]
Les expressions régulières
. Un caractère quelconque.
^ Le début de la ligne.
$ La fin de la ligne.
\x Le caractère x, x étant un caractère spécial qui perd ainsi sa
signification.
[liste] Un caractère de la liste, ex : [abc].
[ !liste] Un caractère qui n’est pas dans la liste.
[x-y] Un caractère appartenant au domaine précisé.
exp1|exp2 Correspond à l’une ou l’autre des expressions régulières.
exp ? Zéro ou une occurrence de exp.
exp* Zéro ou plusieurs occurrences de exp.
exp+ Au moins une occurrence de exp.
Les caractères spéciaux
\b Le retour arrière.
\f Un saut de page.
\n Un saut de ligne.
\r Un retour chariot.
\t Une tabulation.
\0xxx Un caractère ASCII exprimé en octal.

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 A-39
Annexe E : Le processeur de texte

Les critères
Les critères sont utilisés par AWK pour sélectionner les lignes d’entrée qui
déclenchent l’action qui suit.

/exp/ Contient l’expression régulière exp. Ex :


/sh/ { print $1 }

ch ~ exp La chaîne ch contient l’expression régulière exp. Ex :


$2 ~ /^$/ { print $1 }

ch !~ exp La chaîne ch ne contient pas l’expression régulière exp. Ex :


$2 !~ /^$/ { print $1 }

v1 == v2 La valeur v1 est égale à v2. Ex :


$2 == ”” { print $1 }

v1 != v2 La valeur v1 est différente de v2. Ex :


$2 != ”oui” { print $1 }

v1 < v2 La valeur v1 est inférieure à v2, numériquement ou


lexicographiquement parlant. Ex :
$5 < ”50” { print $1 }

v1 <= v2 La valeur v1 est inférieure ou égale à v2. Ex :


$5 <= ”M” { print $1 }

v1 > v2 La valeur v1 est supérieure à v2. Ex :


$5 > ”50” { print $1 }

v1 >= v2 La valeur v1 est supérieure ou égale à v2. Ex :


$5 >= ”M” { print $1 }

c1 && c2 Le critère c1 et le critère c2. Ex :


$2 ~ /^$/ && $7 ~ /sh/ { print $1 }

c1 || c2 Le critère c1 ou le critère c2. Ex :


$5 == ”50” || $5 == ”100” { print $1 }

( critère ) Groupement de critères. Ex :


( $5 == ”50” || $5 == ”100” ) && $7 ~ /sh/ { print $1 }

! critère La négation d’un critère. Ex :


!($2 == ””) { print $1 }

/exp1/,/exp2/ Un domaine de lignes. Ex :


/^root/,/^bin/ { print $1 }

A-40 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Annexe E : Le processeur de texte

Les variables
$0 L’enregistrement (ligne) courant.
$1, $2, ... Les champs de l’enregistrement courant.
ARGC Le nombre d’éléments du tableau des arguments de la ligne de
commandes.
ARGV Le tableau des arguments de la ligne de commandes.
CONVFMT Le format pour convertir des nombres en chaînes par la
commande printf.
ENVIRON Tableau associatif contenant l’environnement, le nom d’une
variable d’environnement est utilisé comme indice.
FILENAME Le nom du fichier d’entrée courant.
FNR Nombre d’enregistrements lus (du fichier courant).
FS Séparateur de champs en entrée.
NR Nombre d’enregistrements lus (tous les fichiers confondus).
NF Nombre de champs de l’enregistrement courant.
OFMT Le format pour les nombres de la commande printf dans les
instructions de sortie.
OFS Le séparateur de champs de la commande print, l’espace par
défaut.
ORS Le séparateur d’enregistrements de la commande print,
le « new line » par défaut.
RLENGTH Longueur de la chaîne traitée par la fonction match.
RS Séparateur d’enregistrements en entrée.
RSTART Le point de départ de la chaîne trouvée par la fonction match.
SUBSEP Séparateur d’indices d’un élément de tableaux.
Les expressions
Les opérateurs mathématiques
Les opérateurs unaires - (moins) et + (plus).
Les opérateurs binaires :
+, -, /, ^, *, %
Remarque :
^ correspond à l’exponentiation et % au modulo.

Les opérateurs de pré- ou post-incrémentation


++Variable ou --Variable
Variable++ ou Variable--

Les opérateurs d’affectation


=, +=, -=, /=, *=, ^=, %=

La concaténation de chaînes
Il suffit d’indiquer les chaînes les unes derrière les autres, ex : $3 = $1$2.

Les opérateurs de comparaison


<, <=, ==, !=, >=, >

Les opérateurs booléens


&&, ||, !

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 A-41
Annexe E : Le processeur de texte

Les tableaux
Un élément d’un tableau
tb[i]
Un élément d’un tableau à deux dimensions
tab[i,j]
Un élément d’un tableau associatif
table["pierre"]
Supprimer un élément de tableau
delete tb[i]
Tester l’existence d’un élément de tableau (indice in tableau)
"pierre" in table
Les fonctions définies par l’utilisateur
function nom(arg1,arg2,...) { énoncé … }
Les instructions
if ( condition ) énoncé [ else énoncé ]
while ( condition ) énoncé
do énoncé while ( condition )
for ( exp ; condition ; exp ) énoncé
for ( variable in tableau ) énoncé
delete tableau[ domaine ]
print [ liste_d_expression ] [ > exp ]
printf format [, liste_d_expression ]
break
continue
next
exit [ expression ]
return [ expression ]
expression
Les fonctions prédéfinies
atan2(y,x) La tangente de y/x.
cos( x ) Le cosinus de x, x étant exprimé en radian.
sin( x ) Le sinus de x, x étant exprimé en radian.
exp( x ) La fonction exponentielle de x.
log( x ) Le logarithme de x.
sqrt(x) La racine carrée de x.
int( x ) Renvoie la partie entière de x.
rand( ) Renvoie un nombre aléatoire n, avec 0 <= n < 1.
srand( [exp] ) Utilise exp pour initialiser la génération des nombres aléatoires,
par défaut utilise l’heure.
gsub(exp,ch,[In]) Identique à la fonction sub, mais toutes les occurrences de
l’expression régulière exp sont remplacées.
sub(exp,ch,[In]) Remplace la première occurrence de l’expression régulière exp,
par la chaîne ch dans la chaîne In. Si In n’est pas précisé, on
utilise $0.
length(x) Renvoie la longueur de la chaîne x.
index(x,y) Renvoie la position de la chaîne x dans la chaîne y, sinon
renvoie 0.
match(ch1,ch2) Recherche la chaîne ch1 dans la chaîne ch2, renvoie la position
de départ ou 0 si la chaîne n’a pas été trouvée.
substr(x,i,l) Renvoie la sous-chaîne de x, qui commence au ième caractère et
de longueur l.

A-42 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Annexe E : Le processeur de texte

split(x,tb) Met chaque champ de x dans un élément du tableau tb.


sprintf(f,exp,...) Renvoie les expressions exp données en argument en utilisant le
format f.
tolower(ch) Renvoie la chaîne ch convertie en minuscules.
toupper(ch) Renvoie la chaîne ch convertie en majuscules.
system(cmd) Exécute la commande cmd et renvoie son code retour.
close(exp) Ferme un fichier ouvert par une instruction print, printf ou
getline.
exp|getline [var] Lit un enregistrement dans la variable var à partir d’un tube créé
par une commande, par défaut var correspond à $0.
getline Lit le prochain enregistrement dans la variable $0.
getline var Idem, mais dans la variable var.
getline [var]<exp Idem, mais lit l’enregistrement à partir du fichier indiqué par exp.

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 A-43
Annexe F : Sed – Editeur en mode flot

Annexe F : sed – Editeur en mode flot


Syntaxe
sed [-n] script [fichier ...]
sed [-n] [-e script] ... [-f prg] ... [fichier ...]

-n Supprime la sortie par défaut : normalement chaque ligne non modifiée


est recopiée sur la sortie standard.
script Une instruction sed.
-e script Une instruction sed.
-f prg Le fichier prg contient une suite d’instructions sed.

Syntaxe d’une commande sed


[adresse[,adresse]]commande[argument ...]
[adresse[,adresse]]{
commande ...
}

Les adresses correspondent à des lignes du texte. Elles peuvent s’exprimer selon les
expressions suivantes :
num Le numéro num de la ligne.
$ La dernière ligne.
/exp/ La première ligne qui satisfait l’expression régulière exp. Le caractère
/ peut être remplacé par un caractère quelconque.
Si aucune adresse n’est précisée, la commande agit sur chaque ligne du texte.
Dans la description des commandes, la syntaxe [2] signifie que la commande peut être
précédée d’un domaine d’adresse : adresse,adresse ; [1] signifie que la commande ne
peut être précédée que d’une seule adresse.

Le caractère # débute un commentaire qui se termine par la fin de ligne.


Les tampons
La commande sed dispose de deux tampons permettant de stocker les lignes en cours
de modification : l’espace des modèles (« pattern space »), où les lignes sélectionnées
sont maintenues pendant la durée du traitement, et l’espace annexe (« hold space »),
où une ligne peut être stockée temporairement.
Les commandes
[1]a\
text Ajoute le texte text, et le place sur la sortie avant la lecture de la
prochaine ligne. « text » correspond à une seule ligne de texte qui peut
contenir des sauts de ligne précédés d’un backslash (« \ »).

[2]b [étiq] On se branche à l’étiquette etiq ; si l’on ne précise pas d’étiquette, on se


branche à la fin du programme.

[2]c\
text Substitue le texte courant par text.

[2]d Détruit la ligne.

[2]D Détruit la première ligne du domaine sélectionné.

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 A-45
Annexe F : Sed – Editeur en mode flot

[2]g Remplace le contenu de l’espace des modèles par le contenu de l’espace


annexe.

[2]G Ajoute le contenu de l’espace annexe à celui des modèles.

[2]h Remplace le contenu de l’espace annexe par celui des modèles.

[2]H Ajoute le contenu de l’espace annexe à celui des modèles.

[1]i\
text Insère le texte text avant la prochaine sortie.

[2]l Imprime la ligne, en visualisant tous les caractères.

[2]n Imprime la ligne.

[2]N Ajoute les lignes sélectionnées à l’espace des modèles en les séparant
d’un saut de ligne. On peut utiliser cette commande pour rechercher des
modèles s’étendant sur plusieurs lignes.

[2]p Imprime la ligne.

[2]P Imprime la première ligne du texte sélectionné.

[1]q Quitte sed.

[1]r fichier Lit le fichier et copie son contenu sur la sortie.

[2]s/exp_reg/ch_sub/[drapeaux]
La commande substitue la chaîne correspondant à l’expression régulière
exp_reg par la chaîne ch_sub.
Le séparateur / peut être remplacé par un séparateur quelconque.
Dans la chaîne ch_sub, le caractère & correspond à la chaîne trouvée.
Dans la chaîne ch_sub, l’expression \n correspond à la nième sous-
expression \(...\) de l’expression régulière exp_reg.
Les drapeaux suivants sont supportés :
n Le remplacement porte seulement sur la nième occurrence.
g Remplace toutes les occurrences de la ligne.
p Toutes les occurrences sont affichées.
w fic Ecrit dans le fichier fic les lignes substituées.

[2]t [etiq] Saut à l’étiquette etiq si une substitution a été faite dans la ligne courante.

[2]w fic Ecrit la ligne dans le fichier fic.

[2]x Permute l’espace des modèles et l’espace annexe.

y/ch1/ch2/ Remplace chaque caractère de ch1 par le caractère correspondant de ch2.

[1]= Affiche le numéro de la ligne courante.

[2]!cmd Exécute cmd si la ligne n’est pas sélectionnée.

:etiq Définit une étiquette.

A-46 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Annexe G : Les principaux fichiers d’administration

Annexe G : Les principaux fichiers


d’administration
Le tableau qui suit donne la liste des principaux fichiers d’administration du système
Linux. Pour chacun, une brève description est fournie. L’ordre, choisi arbitrairement,
est l’ordre alphabétique.
/.profile Script exécuté automatiquement en début d’une session
d’administration.
/etc/at.allow, /etc/at.deny La configuration de l’accès à la commande at.
/etc/bashrc Script exécuté en début de chaque session d’utilisateur
du shell bash.
/etc/conf.modules Configure le démon kerneld.
/etc/cron.allow, La configuration de l’accès à la commande crontab.
/etc/cron.deny
/etc/crontab Une table au format cron, gérée par root, mais exécutée
sous diverses identités.
/etc/dhcpd.conf Le fichier de configuration du service DHCP.
/etc/dumpdates L’enregistrement des sauvegardes réalisées par la
commande dump.
/etc/exports Les arbres partagés par un serveur NFS.
/etc/fstab Liste des systèmes de fichiers qui doivent être montés
et des espaces de swap qui doivent être activés au
démarrage.
/etc/ftpusers Liste des utilisateurs interdits de FTP.
/etc/gettydefs Fichier qui paramètre les terminaux.
/etc/group Description des comptes de groupes d’utilisateurs.
/etc/host.lpd Fichier de gestion de la sécurité d’accès au service
d’impression à travers le réseau.
/etc/hosts Table de correspondance entre un nom et une adresse
IP.
/etc/hosts.allow, fichiers de gestion de la sécurité d’accès du service
/etc/hosts.deny « wrapper » TCP.
/etc/hosts.equiv Liste des ordinateurs en relation de confiance pour
l’exécution des « r-commande ».
/etc/inittab Liste des applications lancées au démarrage par init.
/etc/issue Fichier affiché avant une connexion.
/etc/lilo.conf Le fichier de configuration de LILO.
/etc/login.defs Paramètre la durée de vie du mot de passe.
/etc/man.config Configure la documentation en ligne.
/etc/motd Fichier affiché après une connexion.
/etc/named.boot Le principal fichier de configuration du démon named,
le serveur DNS.

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 A-47
Annexe G : Les principaux fichiers d’administration

/etc/nologin Le verrou qui empêche la connexion des utilisateurs.


/etc/pam.d/* Les fichiers de configuration de PAM.
/etc/passwd Description des comptes utilisateurs.
/etc/printcap Fichier de description des files d’attente d’impression.
/etc/profile Script exécuté en début de chaque session d’utilisateur.
/etc/rc.d Script lancé au démarrage par init via /etc/inittab. Il
active les scripts des répertoires /etc/rc.d/rc ?.d/*.
/etc/rc.d/init.d Le répertoire des scripts de démarrage et d’arrêt des
services, appelés par les scripts /etc/rc.d/*rc*.
/etc/rc.d/rc?.d/* Des liens sur les scripts de /etc/init.d.
/etc/securetty Les terminaux où root peut se connecter.
/etc/sendmail.cf Le fichier de configuration de sendmail, le serveur
Email.
/etc/services,/etc/inetd.conf Fichiers de configuration du super démon réseau inetd.
/etc/shadow Paramètre le « password aging », contient les mots de
passe.
/etc/shutdown.allow Les utilisateurs autorisés à arrêter le système par
CTRL-ALT-DEL.
/etc/skel/* Les fichiers installés dans un nouveau compte.
/etc/smb.conf Le fichier de configuration de Samba.
/etc/termcap Les séquences de contrôle des terminaux.
/etc/X0.host Définit la sécurité d’accès d’un écran X.
/etc/X11/fvwm2/system.fvwm Fichier de configuration, par défaut, de fvwm2.
2rc
/etc/X11/prefdm Lien sur le gestionnaire de connexion graphique.
/etc/X11/twm/system.twmrc Fichier de configuration, par défaut, de twm.
/etc/X11/xdm/* Fichiers de configuration de xdm.
/etc/X11/XF86Config Le fichier de configuration du serveur X.
/etc/X11/xinit/Xclients La configuration par défaut de la commande xinitrc.
/tmp/install.log Compte rendu de l’installation.
/usr/lib/X11/app-defaults/* Fichiers de configuration des ressources.
/usr/lib/X11/xinitrc La configuration par défaut de la commande startx.
/usr/share/magic Les « magic numbers » utilisés par la commande file.
/usr/share/terminfo/* Alternative à /etc/termcap.
/usr/spool/cron/crontabs/* Les fichiers de requêtes des travaux périodiques.
/var/log/cron Le fichier log de cron.
/var/log/dmesg Les messages générés par la procédure de démarrage.

/var/log/messages Les messages affichés normalement sur la console


maîtresse.

A-48 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Annexe G : Les principaux fichiers d’administration

/var/log/secure L’historique des connexions qui ont échoué.


~/.bash_logout Le script exécuté à la déconnexion.
~/.bash_profile Script exécuté automatiquement au début d’une session
d’un utilisateur qui utilise le shell bash.
~/.bashrc Script exécuté automatiquement au début d’une session
d’un utilisateur qui utilise le shell bash.
~/.fvwm2rc Fichier de configuration de fvwm2.
~/.profile Script exécuté automatiquement au début d’une session
d’un utilisateur qui utilise le shell ISO ou le Korn shell.
~/.twmrc Fichier de configuration de twm.
~/.xinitrc, ~/.xsession, Les fichiers de configuration d’une session X.
~/.Xclients
~/.Xresources, ~/.Xdefaults Fichiers de configuration des ressources.

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 A-49
Annexe H : Solutions des exercices

Annexe H : Solutions des exercices


Atelier 1 : Introduction
Exercice N° 1
Red Hat, S.u.S.E et Mandrake (cf. pages 1-6 et 1-7)
Exercice N° 2
Slackware
Exercice N° 3
GNU C, GNU bash et GNU emacs (cf. page 1-4)
Exercice N° 4
# man date
# date 0815093099 # par exemple pour le 15/08/99 à 9h30, format :
MMDDhhmm[yy]
Exercice N° 5
$ man -k login
Exercice N° 6
Démonstration
Exercice N° 7
# wall
=== Déjeuner à 12h30 ====
CTRL-D
Exercice N°8
# Le document HOWTO META-FAQ se trouve, entre autres, sur le site kernel.org.

Atelier 2 : La gestion des utilisateurs


Exercice N° 1
$ grep ’^bin:’ /etc/passwd
ou
$ id bin
Exercice N° 2
# su bin
Exercice N° 3
$ grep ’^[^:]*:[^:]*:0:’ /etc/passwd
Exercice N° 4
$ grep ’^bin:’ /etc/passwd
ou
$ groups bin
Exercice N° 5
# man useradd
# useradd pierre
# groups pierre
Remarque : quand on crée un compte utilisateur sans lui affecter de groupe, Linux
crée un groupe du nom de l’utilisateur. Ce groupe a comme GID l’UID de l’utilisateur
et il en est le seul membre.
Exercice N° 6
# usermod –G staff pierre
Si le groupe n’existe pas, il faut préalablement exécuter la commande suivante :

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 A-51
Annexe H : Solutions des exercices

# groupadd staff
Exercice N° 7
# groups pierre
ou
# id pierre
Exercice N° 8
Le mot de passe de pierre n’est pas défini. La connexion n’est pas possible.
L’administrateur root peut utiliser la commande su pour se connecter au compte de
pierre, le mot de passe ne lui est pas demandé.
# su pierre
Exercice N° 9
Il faut créer le mot de passe de pierre.
# passwd pierre
Exercice N° 10
Il faut éditer le fichier /etc/passwd et vérifier ensuite sa cohérence.
# vipw
# pwck
Exercice N°11
La solution proposée est réalisée avec linuxconf. Dans linuxconf, choisissez le menu
Comptes utilisateurs -> Normal -> Comptes utilisateurs -> Ajouter. Il suffit de
renseigner les différents champs de la boite de dialogue.
Exercice N°12
# man useradd
# useradd –u 0 –o admin
# vi /etc/group
root:x:0:root,admin
# passwd admin

login : admin
password : xxxxx
# id
uid=0(root) gid=505(admin) groups=505(admin),0(root)

Atelier 3 : Les fichiers


Exercice N° 1
# find / -type d -name cron -print
Exercice N° 2
# find / -type p -print
Exercice N° 3
# find / -type d -perm -2 -print
Exercice N° 4
$ ls -lR ~
$ du -a ~ # sans l’option -a, on n’a que les répertoires
$ find ~ -print
Exercice N° 5
Si l’on se restreint à l’arborescence de pierre :
# chmod -R 700 ~pierre

A-52 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Annexe H : Solutions des exercices

Si l’on veut être le plus général possible :


# find / -user pierre -exec chmod 700 {} \;
Exercice N° 6
$ man chmod
Exercice N°7
$ cp /etc/passwd .
$ chattr +i passwd
chattr: Opération non permise while setting flags on passwd
$ su
Password:
# chattr +i passwd
# exit
$ echo "Fin" >> passwd
bash: passwd: Permission non accordée

Atelier 4 : Les systèmes de fichiers


Exercice N° 1
$ df # Affiche des informations sur l’utilisation des systèmes de fichiers.
$ df –i # Affiche des informations sur les inodes.
$ mount
Exercice N° 2
$ export POSIXLY_CORRECT=512
$ df
Exercice N° 3
La taille d’un bloc d’un système de fichiers ext2 peut être de 1024, 2048 ou 4096
octets.
Exercice N° 4
# mount -t iso9660 /dev/cdrom /mnt/cdrom
# find /mnt/cdrom -print | more
# umount /mnt/cdrom
Exercice N° 5
Le système de fichiers NFS permet d’accéder à des arborescences de fichiers d’autres
systèmes UNIX alors que le système SMB permet d’accéder à des ressources
d’ordinateurs fonctionnant avec le système d’exploitation Windows (9x ou NT).
Exercice N° 6
mkfs et mke2fs créent des systèmes de fichiers.
df permet de connaître l’espace libre et occupé d’un système de fichiers.
fsck et e2fsck contrôlent et réparent un système de fichiers.
debugfs affiche des informations sur les systèmes de fichiers et permet de tenter une
récupération d’un système de fichiers irrécupérable avec les autres outils.
Exercice N° 7
Il n’est pas possible d’installer le logiciel de jeu dans le répertoire
/home/pierre/games/blackjack qui se trouve dans le FS /home, lequel ne possède plus
que 3 Mo de libre. Par contre, il est possible de l’installer par exemple dans le
répertoire /usr/games/blackjack que l’on peut créer dans le FS /usr qui, lui, a encore 16
Mo de libre. Il est ensuite possible d’établir un lien symbolique
/home/pierre/games/blackjack vers le répertoire /usr/games/blackjack.
Exercice N° 8
L’utilisateur pierre consulte son fichier .profile qui se trouve dans le FS /home. Le

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 A-53
Annexe H : Solutions des exercices

démontage de /home n’est pas possible car on ne peut pas démonter un FS qui est en
cours d’utilisation. L’administrateur peut tuer les applications qui utilisent un fichier
grâce à la commande fuser, par exemple :
# fuser -k /dev/hda6 # Si /home est associé à /dev/hda6
# umount /dev/hda6
Exercice N° 9
Pour donner le FS à pierre, il suffit que le répertoire racine du FS appartienne à pierre.
En pratique, on monte le FS et on change le propriétaire du répertoire de montage.
# mount /dev/hda8 /games
# chown pierre /games
Exercice N° 10
$ ls -i .profile
3542 .profile
$ find /home -xdev -exec ls -i {} \; | grep 3542
$ find /home -xdev -inum 3542
Exercice N° 11
# find / -type f -name core -exec rm -f {} \;
Exercice N° 12
# find / -size + 2000 -mtime 0 -print
Exercice N° 13
$ man -k quota
Exercice N° 14
Exécuter les opérations suivantes. Il est préférable de les exécuter en mode
maintenance (cf. Module 7 :L’ arrêt et le démarrage) pour ne pas être gêné par les
utilisateurs.
1 - Etudier la faisabilité du transfert en calculant la taille de l’arborescence à
transférer.
# du -k -s /home/pierre
2 - Sauvegarder l’arborescence par précaution (cf. Module 5 : La sauvegarde).
3 - Créer un FS sur la disquette, tester sa cohérence et afficher l’espace libre.
# mkfs /dev/fd0 1440 # Ou simplement mkfs /dev/fd0
# fsck /dev/fd0 # Ou fsck -t ext2
/dev/fd0
# df /dev/fd0
4 - Le monter sur un répertoire transitoire.
# mount /dev/fd0 /mnt/floppy
5 - Déplacer les fichiers dans ce répertoire.
# mv /home/pierre/* /home/pierre/.[!.]* /mnt/floppy
ou
# cp -Rp /home/pierre/* /home/pierre/.[!.]* /mnt/floppy
# rm -Rf /home/pierre/*
6 - Donner la racine du FS à pierre.
# chown pierre /mnt/floppy
7 - Activer le FS au démarrage.
# cp /etc/fstab /etc/fstab.old
# grep -v "/dev/fd0" /etc/fstab > /tmp/fstab
# echo "/dev/fd0 /home/pierre ext2 rw 0 0" >> /tmp/fstab
# mv /tmp/fstab /etc/fstab
Remarque :
Il est préférable d’utiliser linuxconf pour réaliser cette opération.
8 – Tester.
# umount /mnt/floppy

A-54 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Annexe H : Solutions des exercices

# mount /home/pierre
# su - pierre
Remarque :
Il est préférable de remettre le compte dans les conditions initiales pour le reste du
cours.

Atelier 5 : La sauvegarde
Exercice N° 1
a) $ tar cvf /tmp/pierre.sauve /home/pierre
Remarques :
On peut utiliser ~ ou $HOME pour /home/pierre.
On peut réaliser une sauvegarde absolue :
$ tar cvPf /tmp/pierre.sauve ~
b) $ tar tvf /tmp/pierre.sauve
c) $ cd ; rm passwd
$ cd /
$ tar xvf /tmp/pierre.sauve home/pierre/passwd
d ) $ rm -Rf ~/* ~/.[!.]*
$ cd /
$ tar xvf /tmp/pierre.sauve
e) Il faut réaliser une sauvegarde relative à partir du répertoire de connexion de
pierre :
$ cd ; tar cvf /tmp/pierre.sauve . # « . » : le répertoire courant
$ tar tvf /tmp/pierre.sauve
Exercice N° 2
$ man cpio
Exercice N° 3
a) $ find ~ -print | cpio -ocvB > /tmp/pierre.sauve
b) $ cpio -icvBt < /tmp/pierre.sauve
c) $ cd ; rm boot/profile
$ cpio -icvdumB /home/pierre/boot/profile < /tmp/pierre.sauve
d ) $ rm -Rf ~/* ~/.[!.]*
$ cpio -icvdumB < /tmp/pierre.sauve
e) Il faut réaliser une sauvegarde « relative » :
$ cd ; find . -print | cpio -ocvB > /tmp/pierre.sauve # « . » : le répertoire
courant
$ cpio -icvBt < /tmp/pierre.sauve
Exercice N° 4
$ dd if=/tmp/pierre.sauve of=/dev/fd0
$ cd ; rm boot/profile
$ cpio -icvdumB boot/profile < /dev/fd0
Exercice N° 5
a) On met la disquette au format MS-DOS dans le lecteur :
$ dd if=/dev/fd0 of=/tmp/disquette
b) On met une disquette vierge.
$ dd if=/tmp/disquette of=/dev/fd0
Exercice N° 6
$ dd if=/dev/fd0 of=/dev/null
Exercice N° 7
$ man -k tape
Exercice N° 8

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 A-55
Annexe H : Solutions des exercices

Montage du floppy
# mount /dev/fd0 /mnt/floppy
Sauvegarde des fichiers
# dump 0uf /tmp/sauve.dump /mnt/floppy
Affichage de la liste des fichiers
# restore tf /tmp/sauve.dump
Fabrication du système de fichiers
# umount /mnt/floppy
# mke2fs /dev/fd0
Restauration des fichiers
# mount /dev/fd0 /mnt/floppy
# cd /mnt/floppy
# restore rf /tmp/sauve.dump

Atelier 6 : La gestion des processus


Exercice N° 1
$ ps -ef | grep crond
Exercice N° 2
$ sleep 200&
[1] 523
a)) $ ps -f
b)) $ kill 523
Exercice N° 3
# ps -ef | grep pierre | grep bash
pierre 414 406 0 15:9 tty03 00:00:00 -bash
# kill -9 414
Exercice N° 4
# man crontab
# cd /etc/cron
# test -f cron.allow && mv cron.allow cron.allow.old
# cp /dev/null cron.deny
Exercice N° 5
# echo paul > cron.deny
Exercice N° 6
# man cron
# more /var/log/cron
Exercice N° 7
$ echo ″* * * * * { echo Bonjour ; date ; } >> /tmp/log ″ > moncron
$ echo ″0,15,30,45 8-17 * * 1-5 ps -ef >> /tmp/processus ″ >> moncron
$ crontab moncron
Exercice N° 8
# crontab -l > /root/crontab.sav
# crontab -l > /tmp/moncron
# echo ″0,20,40 * * * * su -c pierre date >> /tmp/log ″ >> /tmp/moncron
# crontab /tmp/moncron
Remarque :
Il est préférable d’utiliser la commande crontab -e pour éditer son crontab.

A-56 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Annexe H : Solutions des exercices

Exercice N° 9
Les processus qui ont un faible PID ont toutes les chances d’être des démons, car ils
ont été lancés au démarrage et sont toujours actifs. D’autre part, le nom d’un démon se
termine fréquemment par la lettre « d ». Enfin, les démons, le plus souvent, ne sont
pas gérés par un terminal (le contenu de la colonne TTY, produite par la commande ps
vaut ?).
Exercice N° 10
# cp /etc/profile /etc/profile.old
# echo ″# ajout de pierre a titre d’exercice″ >> /etc/profile
# echo ″PAYS=France ; export PAYS″ >> /etc/profile
Remarque :
On peut tester le résulat en lançant la commande env après s’être reconnecté.
Exercice N° 11
$ man -k IPC
Exercice N°12
$ whereis cp
$ ldd /bin/cp
$ whereis kedit
$ ldd /usr/bin/kedit

Atelier 7 : L’arrêt et le démarrage


Exercice N°1
La commande lilo est dangeureuse. Elle peut modifier les secteurs de démarrage du
système et interdire en conséquence l'activation d'un ou plusieurs système
d’exploitation, y compris le système linux courant Le paragraphe Précautions de la
section Mise en oeuvre définit les précautions élémentaires à prendre avant d'exécuter
la commande lilo.
Exercice N°2
# cp /etc/lilo.conf /etc/lilo.conf.old
# cat /etc/lilo.conf
boot=/dev/hda
delay=100
image=/boot/vmlinux
root=/dev/hda1
label=linux
image=/boot/linux.old
root=/dev/hda1
label=save
other=/dev/hda4
label=dos
# lilo
Exercice N°3
# mkfs /dev/fd0
# mount /mnt/floppy
# cp /boot/boot.b /mnt/floppy
# vi /tmp/lilo.conf
# cat /tmp/lilo.conf
boot=/dev/fd0
compact
timeout=100

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 A-57
Annexe H : Solutions des exercices

prompt
install=/mnt/floppy/boot.b
map=/mnt/floppy/map
default=dos
image=/boot/vmlinuz-2.4.7-10
label=linux
root=/dev/hda2
other=/dev/hda1
label=dos
# /sbin/lilo –C /tmp/lilo.conf –v –t
# /sbin/lilo –C /tmp/lilo.conf
Exercice N° 4
# runlevel
Exercice N°5
Au niveau 5, le processus init exécute la commande xdm qui permet d’avoir des
connexions en mode graphique (X Window). Il n’y a plus lieu de lancer manuellement
l’interface graphique par la commande startx.
Exercice N° 6
# cd /etc/rc.d/rc2.d
# ls
Exercice N° 7
Les services de NFS ne sont pas actifs au niveau 2. Ils sont démarrés au niveau 3.
Exercice N°8
# cp /etc/inittab /etc/inittab.old
# echo ″dl:3:once:date >> /home/pierre/date.log 2>&1″ >> /etc/inittab
# init 6
Exercice N° 9
# sed ’s/^dl:3:once/dl:2:off/’ /etc/inittab > /tmp/tempo
# cp /etc/inittab /etc/inittab.sav
# mv /tmp/tempo /etc/inittab
Exercice N° 10
# cd /etc/rc.d/rc3.d
# grep crond *
Exercice N° 11
# cd /etc/rc.d/init.d
# echo ″ps -ef > /home/pierre/ps.log 2>&1″ > essai
# chmod 700 essai
# cd ../rc3.d
# ln -s ../init.d/essai S99essai
# init 6
Exercice N°12
# man shutdown
# shutdown -h +3 "arrêt pour maintenance"
Exercice N° 13
# dmesg
et
# more /var/log/messages
Exercice N° 14
# shutdown now
ou

A-58 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Annexe H : Solutions des exercices

# telinit s
# date 0815093099 # par exemple pour le 15/08/99 à 9h30
# telinit 3
Exercice N° 15
# cd /etc/rc.d/init.d
# echo ″date >> /home/pierre/arret 2>&1″ > arret
# chmod 700 arret
# cd .. /rc0.d
# ln -s ../init.d/arret S00arret
# cd ../rc6.d
# ln -s ../init.d/arret S00arret
# shutdown -r now
Remarque
Il est possible d’appeler le script K00arret. Il faut alors que le fichier
/var/lock/subsys/arret existe pour que le script K00arret soit exécuté.
Exercice N° 16
# cp /etc/passwd /etc/passwd.old
# sed ’/^pierre/s/:[^:]*sh$/:\/bin\/vi/’ /etc/passwd > /tmp/tempo
# mv /tmp/tempo /etc/passwd
# su - pierre
# mv /etc/passwd.old /etc/passwd
Exercice N°17
Sous MSDOS, exécutez la commande rawrite pour copier les fichiers images de
boot.img et rescue.img du répertoire dosutils du CD-ROM sur les disquettes boot et
root, préalablement formatées. Le reste de l’opération est exécuté à partir de Linux .
# df # Pour connaître le système de fichiers /.
Création de la disquette de boot.
# uname –a
# mkbootdisk 2.4.7-10
Créaton de la disquette « rescue ».
# mount /dev/cdrom
# cd /mnt/cdrom/images
# dd if=rescue.img of=/dev/fd0
On démarre à partir de la disquette de boot.
LILO : rescue
On installe la deuxième disquette, quand elle est demandée. Un shell d’administraton
est activé.
# mount /dev/hda2 /mnt
# ls -l /mnt
# umount /mnt
# e2fsck /dev/hda2
Exercice N°18
# cp /etc/inittab /etc/inittab.old
# echo "z:789:respawn:/bin/sh </dev/console >/dev/console 2>&1" >> /etc/inittab
# telinit 7

Atelier 8 : L’impression
Exercice N° 1
$ more /etc/printcap
Exercice N° 2
$ ps -ef | grep lpd

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 A-59
Annexe H : Solutions des exercices

Exercice N° 3
# cp /etc/printcap /etc/printcap.old
# echo "imp:sd=/var/spool/lpd/imp:\\" /etc/printcap
# echo -e "\t:lp=/home/pierre/imp" >> /etc/printcap
# mkdir /var/spool/lpd/imp
# chown lp /var/spool/lpd/imp
# touch /home/pierre/imp
# cd /etc/rc.d/init.d
# ./lpd stop
# ./lpd start
# su - pierre
# lpr -P imp /etc/group
Remarque
En environnement X, il est plus simple d’exécuter :
# printtool &
Exercice N° 4
$ man -k printer

Atelier 9 : Les disques


Exercice N° 1
Linux supporte les disques IDE et les disques SCSI.
Exercice N° 2
/dev/hdb.
Exercice N° 3
/dev/sda1
Exercice N° 4
Les numéros de partition de 1 à 4 sont réservés aux partitions physiques. Le numéro 5
et les suivants sont destinés aux partitions logiques.
Exercice N° 5
$ man -k swap
Exercice N° 6
# cat /proc/swaps
Exercice N° 7
# fdisk
Exercice N° 8
# mkswap /dev/hda7 # exemple si la partition utilisée est la 7
Exercice N° 9
# dd if=/dev/zero of=/fic.swap bs=1024 count=16384
# mkswap /fic.swap
# chmod 600 /fic.swap
Remarque
Pour que le nouvel espace de swap soit pris en compte au prochain démarrage, il faut
modifier le fichier /etc/fstab en y ajoutant la ligne suivante :
/fic.swap none swap sw
Il en est de même pour l’exercice précédent.
Exercice N°10
# cat /proc/meminfo
ou
# free

A-60 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Annexe H : Solutions des exercices

Atelier 10 : L’installation de Linux


Exercice N° 1
L’installation de Linux nécessite au moins deux partitions : la partition / et la partition
swap.
Exercice N°2
oui
Exercice N° 3
On peut citer
/ Partition root obligatoire.
/usr Partition contenant les commandes et les services utilisateurs.
/home Partition contenant les répertoires de connexion des utilisateurs.
/var Partition contenant les fichiers historique et de données (files d’attente)
des services.
/boot La partition où résident le noyau Linux et LILO.
Exercice N°4
On peut installer Linux depuis le réseau, à partir d’un serveur NFS, d’un serveur
HTTP, d’un serveur FTP ou d’une image sur le disque dur.
Exercice N°5
LILO peut être installé dans le MBR ou dans le premier secteur de la partition Linux.
Exercice N°6
Si LILO est installé dans le premier secteur de boot de la partition Linux, on peut
démarrer Linux de trois façons :
En bootant avec la disquette de boot.
En configurant le chargeur résidant dans le MBR, pour qu’il puisse booter LILO.
En exécutant la commande LOADLIN depuis Windows 9x.

Atelier 11 : La gestion des périphériques


Exercice N° 1
$ ls -l /dev/fd0
brw-rw-rw- 2 root bin 2, 64 Aug 15 11 :08 /dev/fd0
Le majeur est 2, le mineur 64.
Exercice N° 2
$ ls -l /dev/fd0
brw-rw-rw- 2 root bin 2, 64 Aug 15 11 :08 /dev/fd0
$ ls -l /dev | grep ’^b.* 2,’
Exercice N° 3
# man -k format

Exercice N°4
# man fdformat
fdformat (8) - Low-level formats a floppy disk
FDFORMAT(8) Linux Programmer's Manual FDFORMAT(8)
NAME
fdformat - Low-level formats a floppy disk
SYNOPSIS

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 A-61
Annexe H : Solutions des exercices

fdformat [ -n ] device
DESCRIPTION
fdformat does a low level format on a floppy disk. device
is usually one of the following (for floppy devices, the
major = 2, and the minor is shown for informational purposes only):
/dev/fd0d360 (minor = 4)

Atelier 12 : Le noyau
Exercice N° 1
# uname -a
Exercice N° 2
Pour connaître les caractéristiques de votre processeur, il convient d’exécuter la
commande
# cat /proc/cpuinfo
Exercice N° 3
Pour modifier le nombre d’inodes que l’on peut utiliser simultanément, il faut
modifier le fichier /proc/sys/fs/inode-max.
# cat /proc/sys/fs/inode-max
4096
# echo 8192 > /proc/sys/fs/inode-max
Rappelons que ce nombre ne doit pas être inférieur à celui défini par file-max.
Exercice N° 4
Pour connaître les paramètres des sémaphores, il faut visualiser le fichier
/usr/src/linux-version-du-noyau/include/linux/sem.h. Rappelons que la modification se
fait en modifiant les lignes de la forme #define SEMxxx valeur et qu’il faut ensuite
compiler le noyau.
Exercice N°5
Suivre les étapes de la démonstration du chapitre « construire un nouveau noyau ».
Exercice N°6
$ man logger
$ logger -s -p user.notice "Serveur xxx a démarré"
# tail /var/log/messages
Exercice N°7
# more /proc/ioports
Exercice N°8
# grep modprobe /etc/rc.d/rc.sysinit
Exercice N°9
# lsmod
ou
# cat /proc/modules
Exercice N°10
# cd /lib/modules/2.4.7-10
# cd scsi
# insmod sg
# lsmod
Module Size Used by
sg 4080 0 (unused)
nfsd 151576 8 (autoclean)
lockd 31208 1 (autoclean) [nfsd]
sunrpc 52420 1 (autoclean) [nfsd lockd]

A-62 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Annexe H : Solutions des exercices

3c59x 18472 1
# rmmod sg
# lsmod
Module Size Used by
nfsd 151576 8 (autoclean)
lockd 31208 1 (autoclean) [nfsd]
sunrpc 52420 1 (autoclean) [nfsd lockd]
3c59x 18472 1

Atelier 13 : Les paquetages


Exercice N° 1
# rpm -qa # Liste des packages installés
# rpm -qa | wc -l # Leur nombre
Exercice N° 2
# mount /mnt/cdrom
# cd /mnt/cdrom
# find . -name '*.rpm' -print # liste des packages du CD-ROM
# cd RedHat/RPMS
# ls *.rpm | wc -l # Nombre de packages sur le CD-ROM
Exercice N° 3
# rpm -qf /bin/bash # à quel package appartient la commande bash
bash-1.14.7-16
# rpm -qi bash # liste des informations concernant ce package
# rpm -ql bash # liste des fichiers de ce package
Remarque : on ne spécifie que le préfixe pour un package installé.
Exercice N° 4
# mount /mnt/cdrom
# cd /mnt/cdrom/RedHat/RPMS
# ls *gnuchess*
gnuchess-4.0.pl79-3.i386.rpm
# rpm -qpi gnuchess*.rpm # liste les informations du package
# rpm -ivh gnuchess-4.0.pl79-3.i386.rpm # installe le package
error : Failed dependencies :
xboard-4.0.0-3
# rpm -ivh xboard*.rpm
# rpm -ivh gnuchess*.rpm

Atelier 14 : La gestion des performances


Exercice N° 1
# vmstat 5 10
Exercice N° 2
idem exercice n°1
Exercice N° 3
idem exercice n°1
Exercice N° 4
idem exercice n°1
Remarque :
En lançant suffisamment de commandes, on peut réussir à faire démarrer le swapping.
Exercice N° 5
idem exercice n°1

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 A-63
Annexe H : Solutions des exercices

Atelier 15 : Le réseau
Exercice N° 1
$ uname -n
Exercice N° 2
# ifconfig
# netstat -nr
Exercice N° 3
$ netstat -a | grep ftp
Si l’on ajoute l’option « -p », la commande netstat affiche le PID de chaque
commande identifiée.
Exercice N° 4
$ telnet distant 21
Trying 133.45.11.12
Connected to distant
Escape character ’^]’ .
200 -
200 - scosysv FTP server (Version 2.1W(1)) ready.
QUIT
221 Goodbye.
Connection closed by foreign host.
$
Exercice N° 5
# ps -ef | grep inetd
# grep stream /etc/inetd.conf | grep –v "^#"
Exercice N° 6
Manipulations effectuées sur le système local (idem sur le système distant) :
# ifconfig -a
# ifconfig eth0 down
# ifconfig eth0 133.45.11.12 netmask 255.255.0.0 up # Sur votre système local
# route add -net 133.45.0.0 netmask 255.255.0.0 dev eth0
# ifconfig eth0 133.45.44.45 netmask 255.255.0.0 up # Sur le système distant
# route add -net 133.45.0.0 netmask 255.255.0.0 dev eth0
# ping 133.45.11.12 # on teste le système local
# ping 133.45.44.45 # on teste le système distant
Remarque :
Si l’on désire mémoriser la configuration, on peut modifier le fichier /etc/rc2.d/S85tcp.
Il est bien sûr préférable d’utiliser l’outil d’administration linuxconf.
Exercice N° 7
# echo ’localhost’ >> /etc/hosts.equiv
Exercice N° 8
$ ping distant > result &
$ { sleep 20 ; kill -INT $! ; } &

Atelier 16 : X-Window
Exercice N° 1
Le fichier de configuration du serveur X se nomme XF86Config. Il est en ASCII.
on peut le visualiser facilement :
# more /etc/X11/XF86Config
Exercice N° 2
1) # useradd paul
# passwd paul

A-64 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Annexe H : Solutions des exercices

2) # su - paul
$ cat > .Xclients
# .Xclients
xsetroot -solid cyan
xterm -g 70x20+0+0 &
fvwm2
CTRL-D
$ chmod u+x .Xclients
3) $ startx
4) $ mv .Xclients .Xclients.old
$ cat > .Xclients
# .Xclients
exec startkde
CTRL-D
$ chmod u+x .Xclients
$ startx
Exercice N° 3
1) $ kedit &
2) $ echo $DISPLAY
:0.0
3) $ kedit -display $(uname -n):0 &
Exercice N° 4
1) # cd /usr/lib/X11/app-defaults
# cp XTerm Xterm.old # on sauvegarde la configuration actuelle !
# cat >> Xterm # on ajoute la configuration de la couleur
*background: blue
CTRL-D
$ xterm & # on teste (dans la fenêtre xterm d’un utilisateur)
# mv XTerm.old Xterm # on remet les choses dans l’ordre
2) $ cd
$ cat > Xterm
*background: green
CTRL-D
3) $ xterm -bg red &
$ xterm -xrm "*background: red" &
Exercice N° 5
En modifiant le lien /etc/X11/prefdm pour l’associer à /usr/bin/kdm. Il est sinon
associé à gdm, le service de connexion de gnome.

Atelier 17 : La sécurité
Exercice N° 1
$ man -k password
$ man 5 shadow
# grep pierre /etc/shadow
Exercice N° 2
# chage -M 15 -W 3 pierre
Exercice N° 3
# find / -type f -perm +6000
Exercice N° 4
# last | head

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 A-65
Annexe H : Solutions des exercices

Exercice N° 5
# more /etc/pam.d/rlogin
Exercice N° 6
Il existe deux solutions :
1. Mettre en commentaire la ligne qui limite les accès à certains terminaux dans le
fichier /etc/pam.d/login :
#auth required /lib/security/pam_securetty.so
2. Renommer le fichier /etc/securetty

A-66 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Annexe I : Les écrans de Linuxconfig

Annexe I : Les écrans de Linuxconf


Les modes de fonctionnement
Le logiciel linuxconf permet de réaliser la majorité des tâches d’administrattion et de
configuration du système Linux. Il peut être exécuté en mode texte aussi bien qu’en
mode graphique. Dans tous les cas, il se présente sous la forme de menus déroulants
qui aboutissent à des boîtes de dialogue. L’outil linuxconf est utilisé dans les
distributions Red Hat, Debian et Mandrake.

En mode texte, il suffit de saisir la commande :


# linuxconf
En mode graphique, à partir de gnome, il faut activer le menu principal accessible par
l’empreinte de pied, puis choisir Système et enfin Linuxconf.
Pied->Système->LinuxConf
Nous avons choisi de présenter linuxconf en mode graphique. Nous présentons
l’ensemble des menus et pour chaque menu, les principaux écrans.

Le menu principal de linuxconf

Le menu Réseau -> Tâches clientes

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 A-67
Annexe I : Les écrans de Linuxconfig

L’écran Réseau -> Tâches clientes -> Configuration de base de la machine

L’écran Réseau -> Tâches clientes -> Routage et Passerelles -> Par défaut

Le menu Réseau -> Tâches Serveur

A-68 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Annexe I : Les écrans de Linuxconfig

L’écran Réseau -> Tâches Serveur-> Systèmes de fichiers exportés (NFS)

Le menu Réseau -> Tâches Serveur -> Serveur de fichier samba

L’écran Réseau -> Tâches Serveur -> Serveur de fichier samba -> Conf par défaut pour
un répertoire

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 A-69
Annexe I : Les écrans de Linuxconfig

Le menu Réseau -> Tâches Serveur -> Serveur de messagerie


(sendmail)

Le menu Comptes utilisateurs

L’écran Comptes utilisateurs -> Normal -> Comptes utilisateurs

A-70 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Annexe I : Les écrans de Linuxconfig

L’écran Comptes utilisateurs -> Normal -> Définition de groupe

Le menu Système de fichiers

L’écran Système de fichiers -> accéder au disque local

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 A-71
Annexe I : Les écrans de Linuxconfig

L’écran Système de fichiers -> accéder au volume nfs

L’écran Système de fichiers -> Configurer les partitions et les fichiers d’échange

Le menu mode de démarrage

A-72 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Annexe I : Les écrans de Linuxconfig

L’écran mode de démarrage -> Param par défaut de LILO

L’écran mode de démarrage -> Configuration LILO de Linux

L’écran mode de démarrage -> Configuration LILO d’un autre OS

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 A-73
Annexe I : Les écrans de Linuxconfig

L’écran mode de démarrage -> La configuration de boot par défaut

L’écran mode de démarrage -> Mode -> Mode de démarrage par défaut

Le menu Contrôler -> Panneau de configuration

A-74 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Annexe I : Les écrans de Linuxconfig

L’écran Contrôler -> Panneau de configuration -> Activer la configuration

L’écran Contrôler -> Panneau de configuration -> Arrêter/redémarrer

L’écran Contrôler -> Panneau de configuration -> Contrôler l’activité des services

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 A-75
Annexe I : Les écrans de Linuxconfig

L’écran Contrôler -> Panneau de configuration -> Monter/Démonter des systèmes de


fichiers -> Contrôler les disques locaux

L’écran Contrôler -> Panneau de configuration -> Monter/Démonter des systèmes de


fichiers -> Contrôler les volumes NFS

L’écran Contrôler -> Panneau de configuration -> Monter/Démonter des systèmes de


fichiers -> Monter d’autres systèmes de fichiers

A-76 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Annexe I : Les écrans de Linuxconfig

L’écran Contrôler -> Panneau de configuration -> Configurer les tâches préprogrammées
du super utilisateur

L’écran Contrôler -> Panneau de configuration -> Changer le profil système

L’écran Contrôler -> Panneau de configuration -> Contrôler les liens PPP/SLIP/PLIP

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 A-77
Annexe I : Les écrans de Linuxconfig

Le menu Contrôler -> Contrôler les fichiers et les systèmes

L’écran Contrôler -> Contrôler les fichiers et les systèmes -> Configurer tous les fichiers
de config

A-78 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Annexe I : Les écrans de Linuxconfig

L’écran Contrôler -> Contrôler les fichiers et les systèmes -> Configurer toutes les
commandes et les démons

L’écran Contrôler -> Contrôler les fichiers et les systèmes -> Configurer les permissions et
appartenance des fichiers

L’écran Contrôler -> Contrôler les fichiers et les systèmes -> Configurer les modules de
linuxconf

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 A-79
Annexe I : Les écrans de Linuxconfig

L’écran Contrôler -> Contrôler les fichiers et les systèmes -> Configurer les profils du
système

L’écran Contrôler -> Contrôler les fichiers et les systèmes -> Créer les suppléments de
linuxconf

Le menu Journaux, date et heure et fonctionnalités

A-80 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Annexe I : Les écrans de Linuxconfig

L’écran journaux -> Logs de linuxconf

L’écran date et heure

L’écran Fonctionnalités

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 A-81
Annexe J : Webmin

Annexe J : Webmin
Le Menu principal

La configuration du serveur Webmin

Les principales options : les adresses IP d’écoute dans le cas d’une machine avec
plusieurs cartes réseau, le numéro de port du serveur, l’ajout, la modification et la
suppression de modules, la liste des hôtes autorisés à se connecter au serveur.

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 A-83
Annexe J : Webmin

Les utilisateurs Webmin

Les principales options : l’ajout, la modification des comptes d’utilisateurs, le


changement des mots de passe des utilisateurs Webmin.

Le Menu System

Le menu system couvre les principales tâches d’administration : la gestion des


utilisateurs et des groupes du système Linux, l’arrêt et le démarrage, les systèmes de
fichiers, la configuration client NIS, la gestion des paquetages, la gestion des
processus, la configuration du service syslog.

A-84 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Annexe J : Webmin

Le Menu Hardware

Le menu Hardware couvre la gestion des disques et des partitions, la gestion des
impressions, la configuration de base du réseau, la configuration des chargeurs LILO
et GRUB, l’heure et la date (système et CMOS).

Le Menu servers

Le menu servers couvre les services réseau DHCP, DNS, Apache, SAMBA, ftp,
Xinetd, Sendmail, Postfix, fetchmail, SSH, MySQL …

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 A-85
Annexe J : Webmin

Le Menu Others

Le menu Others permet l’ajout de modules Perl, l’exécution de commandes système,


l’affichage d’informations d’état sur les serveurs. O on y trouve aussi un gestionnaire
de fichiers.

Le Gestionnaire de fichiers

A-86 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Annexe K : Compilation du noyau

Annexe K : Compilation du noyau


Suit un exemple de configuration du noyau en mode ligne de commande. Toutes les
options sont présentées, à l’exception de celles qui se rapportent à des configurations
matérielles très rares ou à celles qui nécessitent des configurations complexes que
seuls des spécialistes peuvent réaliser, par exemple les options avancées des réseaux
TCP/IP.
Code maturity level options
Prompt for development and/or incomplete code/drivers
(CONFIG_EXPERIMENTAL) [Y/n/?]
Cette option vous demande si vous voulez utiliser des pilotes qui sont en cours de
développement, vous pouvez raisonnablement répondre « n ».
Processor type and features
Processor family (386, 486/Cx486, 586/K5/5x86/6x86, Pentium/K6/TSC,
PPro/6x86MX) [386]MD/Cyrix/Intel 386DX/DXL/SL/SLC/SX, Cyrix/TI
Cette option permet d'optimiser le noyau Linux, la documentation de Linux préconise
les choix suivants :
- Pentium Intel pentium/MMX, AMD K5, K6 et K6 3D
- PPro Intel pentium II/Pentium Pro, Cyrix/IBM/natonel Semiconductor
6x86MX, MII
- 586 Pentium génériques
- 486 486, tous constructeurs confondus
- 386 386 tous constructeurs confondus
Si vous ne connaissez pas le type de votre processeur, vous pouvez choisir « 386 ».
Cette option, sans être optimale, fonctionne avec toutes les architectures.
Math emulation (CONFIG_MATH_EMULATION) [Y/n/?]
Cette option active l’émulation d’un processeur mathématique par le noyau. Seuls les
anciens processeurs 386/486SX peuvent ne pas avoir de processeur mathématique,
aussi vous répondrez normalement « n ».
MTRR (Memory Type Range Register) support (CONFIG_MTRR) [Y/n/?]
Cette option accélère nettement l’affichage des cartes graphiques PCI et AGP (gain
en vitesse de 2,5 et plus encore), et corrige les bogues de certains BIOS SMP,
répondez « y », et dans tous les cas vous ne faites qu'augmenter votre noyau de 3 Ko.

Symmetric multi-processing support (CONFIG_SMa)etup


*
La plupart des PC n’ont qu'un seul processeur, aussi vous répondrez « n » pour cette
option destinée aux architectures multi-processeurs.
Loadable module support
Enable loadable module support (CONFIG_MODULES) [Y/n/?]
Cette option vous permet de charger dynamiquement les pilotes avec les commandes
insmod et modprobe, répondez « y ».
Set version information on all symbols for modules (CONFIG_MODVERSIONS)
[Y/n/?]

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 A-87
Annexe K : Compilation du noyau

Cette option vous permet d’utiliser des modules compilés avec d’autres versions du
noyau, vous pouvez raisonnablement répondre « n » et recompiler les modules à
chaque fois que vous construirez un nouveau noyau.
Kernel module loader (CONFIG_KMOD) [Y/n/?]
Cette option permet au noyau de charger dynamiquement un module requis par un
processus, via la commande insmod ou modprobe : vous répondrez normalement
« y ».
General setup
Networking support (CONFIG_NET) [Y/n/?]
Vous ne pouvez que répondre « y » à cette option, car les programmes Linux et UNIX
utilisent aussi en local les mécanismes de communication réseau.
PCI support (CONFIG_PCI) [Y/n/?]
Si vous avez un bus PCI, répondez « y ».
PCI access mode (BIOS, Direct, Any) [Any]
Si vous avez des cartes PCI, gardez le choix par défaut (Any) pour que Linux puisse, si
le BIOS échoue, procéder à la détection des périphériques PCI.
PCI quirks (CONFIG_PCI_QUIRKS) [Y/n/?]
Cette option permet à Linux d’initialiser le bus PCI en cas de défaillance du BIOS.
Backward-compatible /proc/pci (CONFIG_PCI_OLD_PROC) [Y/n/?]
Cette option installe l’ancienne interface /proc/pci des anciens noyaux Linux en plus
de la nouvelle /proc/bus/pci pour assurer la compatibilité des nombreux programmes
utilisant /proc/pci. Dans le doute répondez « y ».
MCA support (CONFIG_MCA) [N/y/?]
Répondez « y » seulement si vous avez un ordinateur PS/2 IBM, équipé d’un bus
MCA.
SGI Visual Workstation support (CONFIG_VISWS) [N/y/?]
Normalement vous répondrez « n », sauf si votre PC est à base de puces SGI comme
c’est le cas des quelques PC utilisant des composants Legacy. Nous vous renvoyons à
la documentation de votre PC et au fichier sgi-visws.txt.
System V IPC (CONFIG_SYSVIPC) [Y/n/?]
Les IPCs système V sont utilisés par les applications, répondez « y ».
BSD Process Accounting (CONFIG_BSD_PROCESS_ACCT) [Y/n/?]
Vous pouvez répondre « y » à cette option qui est utile pour les informations de
comptabilité des processus.
Sysctl support (CONFIG_SYSCTL) [Y/n/?]
Cette option permet de régler dynamiquement certaines variables ainsi que la taille de
certaines tables système du noyau sans avoir ni à redémarrer le système ni à
régénérer un nouveau noyau, aussi répondez « y ».
Kernel support for a.out binaries (CONFIG_BINFMT_AOUT) [M/n/y/?]
Avant la version 2.0 du noyau Linux, les exécutables étaient au format a.out. Ils sont
maintenant au format ELF. Vous répondrez « y » uniquement dans le cas où vous
avez d’anciennes applications au format a.out, sans les sources qui vous auraient
permis de les recompiler au format ELF. Dans le doute, répondez « m ».

A-88 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Annexe K : Compilation du noyau

Remarque
La commande file (cf. L'ouvrage UNIX Utilisateur des mêmes auteurs) permet de
connaître le format d'un exécutable (syntaxe : file fichier_exécutable).
Kernel support for ELF binaries (CONFIG_BINFMT_ELF) [Y/m/n/?]
C’est actuellement le format standard des exécutables Linux, répondez « y » sans
aucune hésitation.
Kernel support for MISC binaries (CONFIG_BINFMT_MISC) [M/n/y/?]
Cette option est une solution globale pour la prise en compte de certaines applications
comme des programmes « Java » ou « Python », par exemple. Il vous suffit de taper le
nom de l’application et le noyau Linux se charge du reste. Vous pouvez même
exécuter ainsi des programmes MS-DOS grâce à l'émulateur DOSEMU.
Répondez « y » à cette option, ainsi qu’à l’option « proc filesystem support
(CONFIG_PROC_FS) » présentée plus loin.
Parallel port support (CONFIG_PARPORT) [M/n/y/?]
Répondez « y » à cette option, car le port parallèle est couramment utilisé pour
connecter une imprimante, et même d'autres périphériques comme un lecteur de
cartouches par exemple notamment.
PC-style hardware (CONFIG_PARPORT_PC) [M/n/y?]
Tous les PCs, ainsi que certaines stations Alpha, sont, en standard, équipés d’un port
parallèle style PC. Vous répondrez « m » à cette option car cette dernière est
disponible sous forme de module.
Support foreign hardware (CONFIG_PARPORT_OTHER) [N/y/?]
Vous répondez « n », à moins de disposer d’un port parallèle spécifique.
Advanced Power Management BIOS support (CONFIG_APM) [Y/n/?]
Cette option d’économie d’énergie est principalement destinée aux portables,
répondez « n » .
Plug And Play support
Plug and Play support (CONFIG_PNP) [Y/n/?]
Répondez « y » à cette option de reconnaissance des périphériques Plug And Play.
Auto-probe for parallel devices (CONFIG_PNP_PARPORT) [M/n/y/?]
Cette option permet aux périphériques conformes au standard IEEE 1284 de
s’identifier entre eux automatiquement, répondez « m » si vous voulez l’activer, dans
le doute, vous répondrez « n ».
Enhanced IDE/MFM/RLL disk/cdrom/tape/floppy support
(CONFIG_BLK_DEV_IDE) [Y/n/?]
Cette option installe un pilote IDE évolué capable de contrôler quatre cartes IDE, ce
qui autorise au total huit périphériques IDE (cf. Module 9 : Les disques Linux). Si
vous avez au moins un périphérique IDE, répondez « y ». On doit, de toute manière,
obligatoirement répondre « y » si le système de fichiers root « / » est sur un disque
IDE.
Use old disk-only driver on primary interface (CONFIG_BLK_DEV_HD_IDE)
[N/y/?]
Il s’agit des pilotes antérieurs aux pilotes IDE évolués, répondez « n » si vous avez un
disque IDE.

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 A-89
Annexe K : Compilation du noyau

Include IDE/ATAPI CDROM support (CONFIG_BLK_DEV_IDECD) [Y/n/?]


Répondez « y » si vous avez un lecteur de CD-ROM ATAPI.
Include IDE/ATAPI TAPE support (CONFIG_BLK_DEV_IDETAPE) [Y/n/?]
Répondez « y » si vous avez un lecteur de bandes ATAPI.
Include IDE/ATAPI FLOPPY support (new) (CONFIG_BLK_DEV_IDEFLOPPY)
[Y/n/?]
Répondez « y » si vous avez un lecteur ATAPI ZIP ou LS-120.
SCSI emulation support (CONFIG_BLK_DEV_IDESCSI) [N/y/?] n
Le protocole ATAPI étant similaire au protocole SCSI, cette option permet d’utiliser
un pilote SCSI avec un lecteur ATAPI, dans le cas par exemple où vous n’avez pas de
pilote natif ATAPI pour ce lecteur. En dehors de ce cas, répondez « n ».
Support removable IDE interfaces (PCMCIA) (CONFIG_BLK_DEV_IDE_PCMCIA)
[Y/n/?]
Typiquement pour les portables, cette option ajoute le code nécessaire au pilote IDE
afin d’autoriser l’insertion ou le retrait d’un disque PCMCIA « à chaud », c'est-à-dire
sans avoir à arrêter le système et couper l'alimentation électrique. Vous répondrez
« n », sauf si vous avez un portable.
Chipsets
Cette partie propose l’installation de pilotes pour chipsets spécifiques et plutôt rares
actuellement (CMD40, RZ100, Intel 82731 PIIX). Nous vous recommandons de lire la
documentation de votre matériel pour savoir si vous avez besoin d’un de ces pilotes.
Additional Block Devices
Loopback device support (CONFIG_BLK_DEV_LOOP) [M/n/y/?]
Ce pilote vous permet de monter un fichier comme un système de fichiers. Cette
option peut être utile si vous disposez d’images de disquettes ou de CD-ROM, afin
d’accéder aux fichiers de ces images à l’aide des commandes standard de gestion de
fichiers (ls, cp ...). Répondez « y » ou « m » si vous voulez utiliser cette fonctionnalité.
Network block device support (CONFIG_BLK_DEV_NBD) [Y/m/n]
Cette option est normalement inutile, répondez « n » et consultez le fichier nbd.txt
pour des détails.
Multiple devices driver support (CONFIG_BLK_DEV_MD) [Y/n/?]
Cette option vous permet d’émuler les disques RAID (cf. Modules 9 : Les disques
Linux). Normalement, vous répondez « n ».
RAM disk support (CONFIG_BLK_DEV_RAM) [Y/m/n/?]
Cette option vous permet de créer des systèmes de fichiers dans la RAM, normalement
vous répondrez « n ».
Initial RAM disk (initrd) support (CONFIG_BLK_DEV_INITRD)i [Y/n]
Cette option qui crée un « RAM disk » lors du démarrage sert essentiellement à
charger des modules nécessaires au montage de votre système de fichier root (/), vous
répondrez normalement « n ».
XT harddisk support (CONFIG_BLK_DEV_XD) [N/y/m/?]
Cette option implémente la gestion de disque des anciens contrôleurs (8 bits) de la
gamme XT. Répondez « n ».

A-90 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Annexe K : Compilation du noyau

Viennent ensuite deux pilotes, Mylex DAC960/DAC1100 PCI et Compaq SMART2.


Le premier est documenté dans le fichier README.DAC960, quant au second, il n’y a
aucune aide, aussi nous vous recommandons de répondre « n » aux deux, à moins que
vous n’ayez plus d’informations.
Parallel port IDE device support (CONFIG_PARIDnk device emulation
(CONFIG_NETLINK_DEV) [Y/m/n/?]
Cette option est destinée aux lecteurs externes (CD-ROM et disques durs) le plus
souvent de type IDE, que l'on branche sur le port parallèle. Si vous avez de tels
lecteurs, répondez « y » ou « m ». Pour plus de détails, nous vous invitons à consulter
le fichier /usr/doc/linux/Documentation/paride.txt.
Networking options
Packet socket (CONFIG_PACKET) [Y/m/n/?]
Option pour les spécialistes des réseaux TCP/IP, mais nous vous recommandons de
répondre « y ».
Kernel/User netlink socket (CONFIG_NETLINK) [Y/n/?]
Option pour les spécialistes des réseaux TCP/IP, mais nous vous recommandons de
répondre « y ».
Routing messages (CONFIG_RTNETLINK) [Y/n/?]
Option pour les spécialistes des réseaux TCP/IP, mais nous vous recommandons de
répondre « n ».
Netlink device emulation (CONFIG_NETLINK_DEV) [Y/m/n/?]
Option pour les spécialistes des réseaux TCP/IP, mais nous vous recommandons de
répondre « y ».
Network firewalls (CONFIG_FIREWALL) [Y/n/?]
Option pour les spécialistes des réseaux TCP/IP, répondez « n » sauf si votre machine
est destinée à assurer les fonctions de routeur Internet pour un réseau local.
Socket Filtering (CONFIG_FILTER) [Y/n/?]
Option pour les spécialistes des réseaux TCP/IP, répondez « n ».
Unix domain sockets (CONFIG_UNIX) [Y/m/n/?]
Option pour les spécialistes des réseaux TCP/IP, mais répondez obligatoirement « y »
à cette option, même si vous n'êtes connecté à aucun réseau, car le système graphique
X-Window, ainsi que le service syslog comptent parmi les nombreux programmes qui
utilisent cette fonctionnalité.
TCP/IP networking (CONFIG_INET) [Y/n/?]
Cette option installe les protocoles TCP/IP, répondez « y ».
IP: multicasting (CONFIG_IP_MULTICAST) [Y/n/?]
Option pour les spécialistes des réseaux TCP/IP, répondez « n ».
IP: advanced router (CONFIG_IP_ADVANCED_ROUTER) [Y/n/?]
Option pour les spécialistes des réseaux TCP/IP, répondez « n ».
IP: kernel level autoconfiguration (CONFIG_IP_PNP) [y/n]
Option pour les spécialistes des réseaux TCP/IP, répondez « n ».
IP: firewiling (CONFIG_IP_FIREWALL) [y/n]

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 A-91
Annexe K : Compilation du noyau

Option pour les spécialistes des réseaux TCP/IP, répondez « n ».


IP: firewall packet netlink (CONFIG_IP_FIREWALL_NETLINK) [Y/n]
Option pour les spécialistes des réseaux TCP/IP, répondez « n ».
IP: transparent proxy support (CONFIG_IP_TRANSPARENT_PROXY) [Y/n]
Option pour les spécialistes des réseaux TCP/IP, répondez « n ».
IP: masquerading (CONFIG_IP_MASQUERADE) [Y/n/?]
Option pour les spécialistes des réseaux TCP/IP, répondez « n ».
Protocol-specific masquerading support will be built as modules.
IP: ICMP masquerading (CONFIG_IP_MASQUERADE_ICMP) [Y/n/?]
Option pour les spécialistes des réseaux TCP/IP, répondez « n ».
IP: optimize as router not host (CONFIG_IP_ROUTER) [N/y/?]
Option pour les spécialistes des réseaux TCP/IP, répondez « n ».
IP: tunneling (CONFIG_NET_IPIP) [M/n/y/?]
Option pour les spécialistes des réseaux TCP/IP, répondez « n ».
IP: GRE tunnels over IP (CONFIG_NET_IPGRE) [Y/n]
Option pour les spécialistes des réseaux TCP/IP, répondez « n ».
IP: broadcast GRE over IP (CONFIG_NET_GRE_BROADCAST) [Y/n]
Option pour les spécialistes des réseaux TCP/IP, répondez « n ».
IP: multicast routing (CONFIG_IP_MROUTE) [Y/n]
Option pour les spécialistes des réseaux TCP/IP, répondez « n ».
IP: aliasing support (CONFIG_IP_ALIAS) [M/n/y/?]
Option pour les spécialistes des réseaux TCP/IP, répondez « n ».
IP: tcp syncookie support (not enable per default) (CONFIG_SYN_COOKIES) [Y/n]
Option pour les spécialistes des réseaux TCP/IP, répondez « y ».
IP: Reverse ARP (CONFIG_INET_RARP) [M/n/y/?]
Répondez « m » seulement si votre machine est utilisée comme serveur de boot pour
des machines sans disque.
IP: Allow large windows (not recommended if <16Mb of memory)
(CONFIG_SKB_LARGE) [Y/n/?]
Cette option améliore les échanges réseau, normalement vous devrez répondre « n ».
SCSI support
SCSI support (CONFIG_SCSI) [N/y/m/?]
Si vous n’avez pas de lecteurs SCSI, répondez « n » et vous avez terminé avec la
section SCSI.
Si vous avez des lecteurs SCSI, répondez « m » si votre système Linux démarre à
partir d'un disque IDE, et « y » s'il démarre à partir d'un disque SCSI. Dans tous les
cas, il faut renseigner les options suivantes, en tenant compte de votre configuration.

A-92 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Annexe K : Compilation du noyau

Network device support


Cette partie définit les cartes réseaux à prendre en compte.
ARCnet support (CONFIG_ARCNET) [M/y/n/?]
Ce type de carte réseau est rarissime en France, répondez « n ».
Network device support (CONFIG_NETDEVICES) [Y/n/?]
Répondez « y » si vous voulez vous connecter à un réseau local ou au réseau Internet
avec un modem.
Dummy net driver support (CONFIG_DUMMY) [M/n/y/?]
Répondez « y » ou « m » si vous voulez vous connecter à Internet via les protocoles
slip ou Internet.
EQL (serial line load balancing) support (CONFIG_EQUALIZER) [M/n/y/?]
Répondez « y » ou « m » si vous disposez de deux modems, ces derniers vont accélérer
vos téléchargements en se répartissant les paquets IP entrants.
Ethernet (10 or 100Mbit) (CONFIG_NET_ETHERNET) [Y/n/?]
Répondez « y » si votre machine est appelée à se connecter à un réseau local
Ethernet. Répondez « y » pour sélectionner votre type de carte (3COM, Western
Digital/SMC, ...) et « m » pour votre carte précise (exemple 3C509/3C579 support).
Ensuite, vous répondrez normalement « n » pour les pilotes FDDI et Frame Relay,
ainsi que pour le support des protocoles APPLE.
PLIP (parallel port) support (CONFIG_PLIP) [M/n/y/?]
Option pour les spécialistes des réseaux TCP/IP, répondez « n ».
PPP (point-to-point) support (CONFIG_PPP) [M/n/y/?]
Répondez « m », c’est le protocole standard pour se connecter à Internet via
Wanadoo, AOL…
SLIP (serial line) support (CONFIG_SLIP) [M/n/y/?]
Normalement ce protocole n'est plus utilisé pour les connexions Internet, aussi vous
devriez répondre « n ».
CSleep compressed headers (CONFIG_SLIP_COMPRESSED) [M/y/n/?]
Répondez « m » seulement si vous avez activé l’option précédente.
Keep alive and linefill (CONFIG_SLIP_SMART) [M/y/n]
Option pour les spécialistes des réseaux TCP/IP, répondez « n ».
Six bit SLIP encapsulation (CONFIG_SLIP_MODE_SLIP6) [M/y/n/?]
Option pour les spécialistes des réseaux TCP/IP, répondez « n ».
Wireless LAN (non hamradio) [Y/n]
Option pour les spécialistes des transmissions radioamateurs, répondez « n ».
Token ring driver support (CONFIG_TR) [Y/n]
Répondez « y » si vous avez une carte réseau Token Ring. Vous pouvez ensuite activer
éventuellement d’autres options, dans tous les autres cas répondez « n ».
Red Creek Hardware VPN (CONFIG_RCPCI) [M/n]
Option pour les spécialistes des réseaux, répondez « n ».

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 A-93
Annexe K : Compilation du noyau

Wan drivers (CONFIG_WAN_DRIVERS) [Y/n]


Option pour les spécialistes des réseaux WAN, répondez « n ».
Amateurs radio support
Options pour les spécialistes des transmissions radioamateurs, répondez « n ».
ISDN subsystem
ISDN support (CONFIG_ISDN) [M/n/y/?]
Répondez « m » seulement si vous souhaitez utiliser des connexions RNIS (Réseau
Numérique à Intégration de Services), c'est-à-dire avec un abonnement Numeris (en
France), au lieu d’un traditionnel modem via l’infrastructure générale du réseau
téléphonique.
Old CD-ROM drivers (not for SCSI or IDE/ATAPI drives)
Support non-SCSI/IDE/ATAPI CDROM drives (CONFIG_CD_NO_IDESCSI)
[Y/n/?]
Les pilotes de CD-ROM qui ne sont ni SCSI ni IDE sont plutôt rares, répondez « n ».
Character devices
Virtual terminal (CONFIG_VT) [Y/n]
Répondez « y » à cette option, le concept de terminal virtuel est très utile dans le
monde Linux.
Support for console on virtual terminal (CONFIG_VT_CONSOLE) [Y/n]
Répondez « y » à cette option qui installe les consoles virtuelles (cf. Module 11 : Les
périphériques).
Standard/generic serial support (CONFIG_SERIAL) [Y/m/n/?]
Répondez « m », car cette option active la gestion des ports série standard (interface
RS232), sur lesquels on branche habituellement une souris, une imprimante ou un
modem.
Suit une liste de cartes d’entrées-sorties série diverses, qui permettent par exemple
l’emploi de plus de quatre ports série, normalement vous répondrez « n ».
Nous vous recommandons aussi de décliner pour l’instant l’offre de support des
pseudo-terminaux UNIX98.
Parallel printer support (CONFIG_PRINTER) [M/n/y/?]
Vous connecterez probablement votre imprimante au port parallèle, répondez « y », et
répondez « n » pour l’option suivante, à moins que votre imprimante réponde au
standard IEEE 1284 (cf. La documentation de votre imprimante).
Mouse Support (not serial mice) (CONFIG_MOUSE) [Y/n/?] y
Si votre souris est une souris de type bus, vous devez répondre « y » ici, et « y » ou
« m » pour l’une des options qui suivent selon le type de votre souris (Microsoft,
Logitech, PS/2, etc.), et « n » pour toutes les autres.
QIC-02 tape support (CONFIG_QIC02_TAPE) [N/y/?]
Répondez « y » seulement si vous avez un lecteur de bandes de type QIC (ni IDE, ni
SCSI) et déclinez pour l'instant l'option complémentaire suivante.

A-94 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Annexe K : Compilation du noyau

Filesystems
Quota support (CONFIG_QUOTA) [Y/n/?]
Les quotas peuvent être très utiles pour la gestion de l'espace disque (cf. Module 4 :
Les systèmes de fichiers), répondez « y » ou « m ».
Kernel automounter support (CONFIG_AUTOFS_FS) [M/y/n/?]
Cette option permet le montage (NFS) « à la demande » de systèmes de fichiers
distants, aussi vous répondrez normalement « n ».
Suit une liste de systèmes de fichiers UNIX, Linux, et autres origines, dont la plupart
sont inutiles, aussi nous vous recommandons de ne retenir que la liste suivante.
Systèmes de fichiers non Linux :
- DOS FAT fs support et tous ses composants
- ISO9660 CDROM filesystem support
- Microsoft Joliet CDROM extensions
- NTFS filesystem support (read only)
Systèmes de fichiers Linux :
Nous commentons maintenant les systèmes de fichiers Linux que nous vous
recommandons d’activer :
Minix fs support (CONFIG_MINIX_FS) [M/n/y/?]
Répondez « y » ou « m » pour utiliser ce système de fichier économique avec des
disquettes.
/proc filesystem support (CONFIG_PROC_FS) [Y/n/?]
Dans le répertoire /proc, le noyau crée et met à jour en temps réel deux types de
fichiers :
- Des fichiers dont le nom ne contient que des chiffres (le PID du processus) contenant
l'image des processus actifs, et qui sont exploitées par les commandes qui affichent
des informations sur les processus comme la commande ps.
- Des fichiers qui contiennent des informations sur l’état courant du système, comme
la mémoire et le swap libres (cf. Module 4 : Les systèmes de fichiers), les modules
chargés ou les ressources système utilisées (cf. Module 11 : Les périphériques).
Vous devez en toute logique répondre « y ».
Second extended fs support (CONFIG_EXT2_FS) [Y/m/n/?]
C’est le système de fichiers standard de Linux, répondez « y ».
Suit ensuite une liste de systèmes de fichiers réseaux, nous vous recommandons
d’activer les suivants en répondant « y » ou « m » :
- NFS filesystem support, sans l'option « Emulate Sun NFS server »
- SMB filesystem ainsi que tous ses composants
- NCP, seulement si vous devez accéder à des ressources de serveurs NOVELL,
auquel cas vous devrez aussi sélectionner les options afférentes.
Partitions types
Normalement, vous devez répondre « n » à cette option qui propose d’intégrer le
partitionnement BSD, Macintosh ou SUN à votre système Linux.
Native language support

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 A-95
Annexe K : Compilation du noyau

Cette option permet d'activer les « codepages » Microsoft, permettant de prendre en


compte les caractères internationaux dans les noms de fichiers, répondez « m » pour
l’option : NLS ISO 8859-1 (Latin-1 ; Western European Language).
Sound
Sound card support (CONFIG_SOUND) [M/n/y/?]
Répondez « y » ou « m » si vous avez une carte son (obligatoirement « y » si elle est
de type Plug And Play), puis activez tous les pilotes nécessaires.
Nous vous recommandons pour cela de lire le « HOWTO » : Sound-HOWTO.
Kernel hacking
La documentation Linux précise que cette option est exclusivement destinée aux
gourous en matière de noyaux Linux.
La configuration du noyau est terminée, le système affiche le message suivant :
The linux kernel is now hopefully configured for your setup.
Check the top-level Makefile for additional configuration,
and do a 'make dep ; make clean' if you want to be sure all
the files are correctly re-made

A-96 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Annexe L : Dépannage (« Troubleshooting »)

Annexe L : Dépannage (« Troubleshooting »)


L’objet de cette annexe est de donner un certain nombre de conseils, de méthodes et
d’heuristiques à l’administrateur pour l’aider dans le cas où « ça ne marche pas ».

Les problèmes
Les causes de dysfonctionnement sont très diverses. Il peut se produire qu’une
application ne démarre pas ou bien que la procédure de lancement de Linux s’arrête.
Voici une liste de problèmes parmi les plus importants :
• Le système ne démarre pas.
• Le système est planté (CRASH ou panic).
• Une application ne démarre pas.
• Une application serveur ne démarre pas.
• Le réseau ne fonctionne plus.
• Une application ne réagit plus.
• Une sauvegarde paraît corrompue.
• Un utilisateur a perdu son mot de passe.
• Vous avez perdu le mot de passe de root.
• Vous n’avez plus d’espace disque.
• Vous avez trop de zombies sur le système.
• Le système de fichiers root est corrompu.
• Le clavier ne fonctionne plus très bien.
Cette liste n’est pas exhaustive. En fonction de votre expérience, vous pouvez rajouter
des items.

Solutions globales
Quel que soit le problème, il existe une approche globale :
Anticipation
« Gouverner c’est prévoir », si l’on est conscient des problèmes avant qu’ils ne
surviennent, il est possible de préparer une riposte a priori.
Voici quelques conseils :
Mémoriser (sur papier, sur disquette, …) les fichiers de configuration et le résultat des
commandes d’information.
Comprendre comment le système fonctionne, comment les applications fonctionnent,
comment le réseau fonctionne. Plus vous connaîtrez votre système, plus vous serez
capable de comprendre les messages d’erreur et les raisons des dysfonctionnements.
Vous serez capable également de prévoir vous-même les problèmes et de leur donner
une solution ad hoc :
• Activer les journaux de bord du système et des applications.
• Tenir un journal de bord pour enregistrer vos actions d’administrateur, les
problèmes qui surviennent et les solutions que vous appliquez.

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 A-97
Annexe L : Dépannage (« Troubleshooting »)

• Lire le présent chapitre et connaître les problèmes et les solutions associées liés au
mauvais fonctionnement du système. Tester les solutions présentées.
• Quand le problème survient, le décrire et essayer de le résoudre.
• En quelques phrases, décrire clairement le problème. Indiquer également la date et
l’heure, et le message d’erreur complet. Si le problème est lié à un logiciel, on
recherche la version du logiciel (… --version) et les bibliothèques dynamiques
(ldd). On précise les arguments de lancement et le script d’activation. Enfin, on
reproduit les fichiers de configuration. On inscrit le tout dans le cahier
d’administration.
• Essayez de lister les éléments extérieurs qui ont pu jouer un rôle dans l’apparition
du problème : la version du noyau (uname –a), les différents pilotes présents
(lsmod), les processus présents (ps –ef), les crontabs, le niveau d’init (runlevel),
l’environnement (env), l’identité de l’utilisateur (id)... Encore une fois, la
connaissance du fonctionnement du système permet de créer une liste réaliste et
utile.
• Lisez les journaux de bord pour avoir de plus amples informations, en particulier
/var/log/messages.
• Lisez la documentation qui relève du problème (le man, les HOWTO, les fichiers
présents dans /usr/doc/ …). Consulter les FAQs des forums Internet.
• En un mot, essayez de comprendre le problème. Ecrire noir sur blanc ces
hypothèses et les commandes de tests ou de réparation à effectuer.
Essayez de reproduire le problème. Bien sûr, si c’est possible et si cela n’entraîne pas
de situation désastreuse. Si on peut reproduire le problème, c’est la preuve que l’on a
déterminé ses causes.
Demandez de l’aide. Si l’on ne sait pas résoudre le problème, on doit demander de
l’aide à un collègue, à la cellule prévue à cet effet dans votre société, à une « HOT
LINE » ou adresser un message à un forum Internet. Dans tous les cas, vous devez
décrire le problème, comme indiqué précédemment. Vous devez aussi indiquer vos
démarches pour le comprendre et le corriger, notamment les pages de manuels que
vous avez lues. Vous risquez, sinon, de recevoir en réponse un cinglant RTFB (« Read
The F… Books »), que l’on pourrait traduire par : lire cette P… de documentation.
Astuce
Gardez en permanence une connexion à root sur la console maîtresse. Ainsi
l’administrateur peut toujours intervenir.
Heuristiques
• Redémarrez le système et les applications.
• Réinstallez le système et les applications.
• Réinstallez une version stable du système et des applications (plus anciennes ou
plus récentes).
• Réinstallez le système et les applications sur un autre ordinateur.

Problèmes liés au démarrage


Les problèmes liés au démarrage du système sont fréquents, il faut absolument les
prévoir.

A-98 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Annexe L : Dépannage (« Troubleshooting »)

Anticipation
• Enregistrez les paramètres stockés dans l’Eprom de votre PC : la géométrie de vos
disques, la configuration de la mémoire…
• Mémorisez les caractéristiques physiques et logiques de vos disques :
# ls /proc/ide # liste des disques IDE
# cat /proc/scsi/scsi # liste des disques SCSI
# hdparm /dev/hda # les paramètres physiques d’un disque
# fdisk -l /dev/hda # la table des partitions d’un disque
# df # la liste des FS actifs et le FS root
# ls –l /dev/hda2 # liste les majeurs et mineurs du FS root (ici /dev/hda2)
# cat /etc/fstab # liste les FS et le swap
• Réalisez régulièrement des sauvegardes de vos fichiers et/ou de vos FS.
• Conservez les supports d’installation (disquettes, CD-ROM, notices …).
• Mémorisez le bloc de boot de votre disque de démarrage :
# dd if=/dev/hda of=/dev/fd0 bs=512 count=1
• Créez une disquette de démarrage (cf. Paragraphe suivant).
• Conservez une copie du fichier /etc/inittab et des scripts de démarrage (les RC).
• Utilisez si possible un onduleur.
• Disposez de matériels de rechange (claviers, écrans, disques, ...) et même d’un
poste complet.
Eléments à vérifier si un système ne démarre pas et ne donne
aucun message
• La prise de courant est-elle branchée ?
• La prise de courant est-elle alimentée ?
• L’écran est-il allumé ? Le contraste et la luminosité sont-ils corrects ?
• Les périphériques (disques, contrôleurs, …) sont-ils correctement enfichés ?

Créer une disquette de démarrage


La commande mkbootdisk
La commande mkbootdisk permet de créer une disquette de démarrage, mais qui
monte ensuite les systèmes de fichiers du disque dur. Cette disquette ne peut donc pas
servir si le système de fichiers root est endommagé. Les anciennes versions
permettaient de créer une deuxième disquette RESCUE à partir du fichier
images/rescue.img du CD-ROM d’installation qui permettait d’avoir un système
autonome. Le CD-ROM d’installation permet, si le CD-ROM de votre ordinateur est
bootable, de démarrer en mode rescue.
# uname –a # permet de connaître la version du noyau
# mkbootdisk 2.4.7-10 # crée la disquette de boot
La mini-distribution Linux TOMSRTBT
La mini-distribution TOMSRTBT est tout à fait extraordinaire et indispensable. Elle
contient un système Linux autonome et complet sur une seule disquette (1,7 Mo) !
Elle contient, entre autres, les commandes suivantes : cpio, dd, pax, tar, gzip, mount,
badblocks, fdisk, e2fsck, debugfs, fdformat, dumpe2fs, df, insmod, vi, ifconfig,
ping, telnet, rsh, … On peut même réaliser des montages NFS ! TOMSRTBT est

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 A-99
Annexe L : Dépannage (« Troubleshooting »)

disponible à partir du site http://www.toms.net/rb/. La distribution se présente sous la


forme d’un fichier ZIP. Le fichier README décrit la création de la disquette
bootable. Il est possible de la créer à partir d’un poste Linux ou MS-DOS. D’autre
part, on peut adapter la configuration de la disquette, et à partir du site Internet on peut
récupérer des pilotes pour les principales cartes réseaux et autres périphériques.

Restaurer le MBR
Si l’on désire restaurer le MBR, le secteur de boot du disque de démarrage, il faut
premièrement en avoir une copie et deuxièmement une disquette bootable (cf. Les
paragraphes précédents). Si on a sauvegardé le MBR sur le premier secteur d’une
disquette, on utilise la commande suivante pour le restaurer :
# dd of=/dev/hda if=/dev/fd0 bs=512 count=1

Restaurer le système de fichiers root corrompu


1. On démarre à partir d’une disquette TOMSRTBT.
2. On effectue un FSCK sur le FS root (il faut le connaître !)

# fsck -f /dev/hda5
3. Si la réparation réalisée par fsck n’est pas suffisante, on doit restaurer le système
de fichiers root à partir d’une sauvegarde après l’avoir recréé.

# mkfs -c /dev/hda5

# mount /dev/hda5 /mnt

# cd /mnt

# tar xvf /dev/rft0


4. On redémarre.

Démarrer le système avec un fichier inittab incorrect


Si le fichier /etc/inittab est incorrect, il est toujours possible de démarrer en mode
maintenance. Au prompt de LILO, on rentre « linux single ». On réinstalle le fichier
/etc/inittab à partir d’une sauvegarde.

Problèmes liés aux applications


Approche globale aux problèmes liés à des applications
La principale méthode pour déboguer une application est de lire les journaux de bord
de l’application. Si ces journaux ne sont pas créés ou si les messages sont insuffisants,
on commence par configurer l’application pour que ces journaux soient générés avec
un niveau suffisant de commentaire.
La commande ps permet de surveiller la présence de l’application :
# ps -ef | grep httpd
Une application ne démarre pas
Si une application ne démarre pas, on peut essayer les tests suivants :
• La variable PATH est-elle correcte ?

A-100 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Annexe L : Dépannage (« Troubleshooting »)

# echo $PATH # affiche le PATH


# whereis httpd # affiche l’emplacement de la commande (ici httpd)
• Les droits sur les fichiers sont incorrects. On peut le vérifier en lançant
l’application sous le compte de root. Si l’application fonctionne, c’est un problème
de droit. Le plus simple, dans ce cas, est de réinstaller l’application.
• Les arguments utilisés lors du lancement sont-ils corrects ? Essayer d’utiliser
d’autres options (cf. Le man de l’application).
• L’environnement est-il correct ? La commande env permet de connaître
l’environnement du shell courant.
• Avez-vous récemment modifié la configuration de l’application ? Si oui,
réinstallez l’ancienne configuration, que vous avez évidemment sauvegardée, et
essayez à nouveau de lancer l’application.
• Vérifiez s’il n’existe pas un fichier verrou créé par l’exécution précédente de
l’application et qui n’aurait pas été supprimé, suite à un crash, par exemple.
Une application fonctionne incorrectement, ou ne démarre pas
En l’absence d’une explication des raisons des dysfonctionnements, on peut essayer
les heuristiques suivantes, transmises de bouche de druide à oreille de druide depuis
des générations d’administrateurs :
• Arrêter l’application et la relancer.
• Redémarrer le système et relancer l’application.
• Désinstaller et réinstaller l’application.
• Désinstaller et réinstaller une version stable de l’application (plus ancienne ou
plus récente).
• Faire une mise à jour du système (noyau, bibliothèque C, …).
Une application ne réagit plus
Il faut, dans ce cas, l’arrêter.
Si l’application est complexe, on doit l’arrêter via son script :
# cd /etc/rc.d/init.d
# ./httpd stop
Dans les autres cas, on utilise la commande kill.
# ps -ef | grep httpd
483 ? 00 :00 :00 httpd

# kill 483
Ou, si l’application ne réagit pas :
# kill -9 483
Vous avez trop de zombies sur le système
Vous constatez qu’il y a un nombre de plus en plus grand de zombies. Ces zombies
apparaissent sous l’appellation « defunct » lorsqu’on liste les processus avec la
commande ps –ef. Vous ne pouvez pas les tuer, y compris avec le signal 9. C’est
normal, ce sont des applications qui sont déjà mortes. Vous pouvez, par contre, tuer
l’application qui les a créées. Les zombies disparaîtront aussi. La solution définitive

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 A-101
Annexe L : Dépannage (« Troubleshooting »)

est d’installer une version plus récente de l’application qui génère ces zombies. En
effet leur présence est toujours liée à un bug applicatif.
Votre application présente un bug applicatif
Envoyez un e-mail au développeur de l’application. L’adresse e-mail du développeur
est généralement indiquée dans le man. On ne se résout à cette mesure qu’en dernière
analyse et pour des applications qui sont encore en phase de tests.

Problèmes liés au réseau et aux applications réseaux


Approche globale des problèmes réseaux
La commande ping se révèle être l’outil le plus important pour diagnostiquer les
problèmes réseaux. Cette commande teste l’accessibilité d’un poste distant. Si le ping
fonctionne, les pilotes TCP/IP du client et du serveur, ainsi que le réseau physique
(cartes, connecteurs, câbles, hubs, routeurs, modems, …) sont opérationnels. La
commande est capable de montrer également de légers dysfonctionnements physiques
si on la laisse s’exécuter pendant plusieurs minutes. Si le réseau est hors de cause, ce
sont les applications réseaux elles-mêmes qui fonctionnent incorrectement. Dans ce
cas, on peut réaliser les actions présentées dans le paragraphe précédent.
Une application réseau ne fonctionne pas
Si une application réseau ne fonctionne pas, on teste les éléments suivants (exemple
Apache) :
# ping venus # on teste l’accessibilité du serveur
# ps -e | grep httpd # l’application serveur fonctionne-t-elle ?
# netstat –an | grep 80 # on examine si le port serveur est actif
# lynx ‘http://localhost’ # activer un client local
# lynx ‘http://venus’ # activer un client distant
Erreur DNS (« DNS lookup failure »)
C’est la résolution de nom qui s’effectue de manière incorrecte. Pour le confirmer, on
utilise la commande nslookup, qui est un client DNS :
# nslookup venus # demande l’adresse IP du poste venus
# ping ns # on teste la présence du serveur DNS de nom ns.
# nslookup 172.16.0.1 # on teste le reverse-DNS avec l’adresse IP du client.
Si le diagnostic se confirme, il faut relancer le serveur DNS.
Le système, configuré en DHCP, n’obtient pas d’adresse IP
On relance le serveur DHCP.
La connexion telnet est très longue
Le DNS n’est pas utilisé ou n’est pas actif. En effet, le système utilise le « reverse
DNS » pour inscrire dans les journaux de bord le nom du poste client. La solution est
d’activer le DNS ou d’inscrire les postes clients dans le fichier /etc/hosts.

A-102 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Annexe L : Dépannage (« Troubleshooting »)

Problèmes liés aux systèmes de fichiers


Il n’y a plus d’espace disque
Anticipation
Il est vital de surveiller l’espace disque avec la commande df. La commande nous
indique, entre autres, l’espace qui reste libre. Elle doit être la commande la plus
utilisée par l’administrateur.
Il est possible d’instaurer des quotas (cf. Module 4 : Les systèmes de fichiers).
Solutions
Lorsque l’espace vient à manquer, il existe diverses solutions :
• Détruire les fichiers core et, de manière générale, tous les fichiers inutiles.
• Sauvegarder et détruire ensuite les fichiers qui n’ont pas été utilisés depuis
longtemps. La commande find permet de les rechercher.
• Transférer des fichiers dans un autre système de fichiers et, éventuellement, établir
des liens symboliques, pour ne pas détruire les accès existants.
• Transférer des données dans un nouveau système de fichiers, éventuellement créé
sur un nouveau disque. Si le point de montage correspond à l’ancien emplacement
des données, ce transfert est transparent pour les applications.
Remarque
Il faut remarquer que l’administrateur dispose toujours d’un peu de place dans un FS
même si ce dernier est plein.

Un système de fichiers est corrompu, mais ce n’est pas le système


de fichiers root
Si un système de fichiers est corrompu, on peut essayer de le réparer.
# telinit s # on passe en mode maintenance
# fsck /dev/hda5
Si la réparation n’est pas possible, il faut recréer le système de fichiers et le restaurer à
partir des sauvegardes (cf. Module 5 : La sauvegarde).
# umount /home
# mkfs /dev/hda5
# mount /home
# tar xvPf /dev/rft0

Problèmes liés au noyau et aux périphériques


Les « panics »
Les « kernel panics » sont le résultat d’un plantage du système. Le noyau s’arrête de
fonctionner. C’est équivalent aux célèbres écrans bleus de Windows. Plus aucune
application ne peut évidemment fonctionner. Il n’y a plus qu’à rebooter. Les panics
Linux sont excessivement rares sur un noyau stable qui ne comporte pas de pilotes ou
de périphériques exotiques.
Exemple de panic :
Unable to handle kernel paging request at virtual address c202e000
Current->tss.cr3 = 012c0000, $r3 = 012c0000

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 A-103
Annexe L : Dépannage (« Troubleshooting »)

*pde = 00001067
*pte = 00000000
Oops: 0000
CPU: 0
EIP: 0010 :[<0202d079]
EFLAGS: 00010216
eax: 00000041 ebx: 00001000 ecx: 0000004b edx: 0156b018
esi: 0202e000 edi: 0800aed4 ebp: 01106f90 esp: 01106f6c
ds: 0018 es: 002b fs: 002b gs: 002b ss: 0018
Process cat (pid : 597, process nr : 31, stackpage=01106000)
Stack: 02020018 0202d004 00f992e8 01257440 0800a000 00001000 01257440
00001000 00f992e8 00120e7a 00f992e8 01257440 0800a000 00001000
0800a000 00001000 bffffbd8 0010a602 0010a602 00000003 00001000
Call Trace: [<02020018>] [<0202d004>] [<00120e7a>] [<0010a602>]
Code : f3 a5 83 e3 03 89 d9 f3 a4 07 8b 45 14 8d 65 f4 5b 5e 5f 89
Anticipation
La précaution la plus importante est de lire le fichier /var/log/messages fréquemment,
en recherchant les messages provenant du noyau (« kernel »).
Surveiller les performances de votre système (vmstat, free, …). Un crash système est
souvent annoncé par des problèmes de performances.
Paramétrer le système pour un reboot automatique ou non. On peut configurer le
noyau, via lilo, pour qu’il redémarre automatiquement après un crash. Par exemple,
« panic=30 » signifie que le système redémarre au bout de 30 secondes après un crash
du noyau. Cette pratique est bonne pour un serveur qui utilise a priori des logiciels et
un noyau stable et que l’on veut opérationnel en permanence. Inversement, pour un
système de test, c’est une bien mauvaise idée.

Divers
Un utilisateur a perdu son mot de passe
L’administrateur lui attribue un nouveau mot de passe :
# passwd pierre
L’administrateur a perdu son propre mot de passe
L’administrateur peut, s’il l’a autorisé, redémarrer le système et, à l’invite de LILO,
saisir « linux single », action qui démarre le système en mode maintenance, sans avoir
à fournir de mot de passe. L’administrateur a aussi tout intérêt à créer un autre compte
ayant les droits de root, c’est-à-dire l’UID 0, avec un mot de passe spécifique. Ce
compte est un compte de secours.
# useradd -u 0 -o –d /root operateur
# passwd operateur
Le clavier fonctionne incorrectement
Si le clavier d’un terminal ou de la console maîtresse ne fonctionne pas correctement,
on peut essayer les actions suivantes :
• Exécuter la commande <ctrl-j> stty sane<ctrl-j> qui réinitialise le clavier.
• Se déconnecter et se reconnecter. La procédure de connexion réinitialise le clavier.
• Si l’on ne peut plus se connecter sur la console maîtresse, redémarrer le système.

A-104 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Annexe L : Dépannage (« Troubleshooting »)

Le dysfonctionnement du clavier peut aussi résulter du chargement d’une table de


définition des touches qui ne correspond pas au clavier du pays. C’est la commande
loadkeys qui réalise cette opération. Pour y remédier, il faut charger le bon fichier,
situé dans l’un des répertoires de /usr/lib/kbd/keymaps/i386/*. Dans le cas de la
France, on exécute la commande loadkeys /usr/lib/kbd/i386/azerty/fr-latin1.map.gz.
Son extension nous indique qu’il et au format compressé « gzip ». L’image ascii de la
table en cours peut être visualisée en exécutant la commande dumpkeys.
Remarque
Le manuel de la commande loadkeys nous indique qu’il suffit d’exécuter loadkeys fr
pour charger le fichier fr.map.gz. Le contenu de ce fichier est parfois incorrect.

Une sauvegarde paraît corrompue


La restauration d’une sauvegarde peut ne pas fonctionner, que faire ?
• Insister ! On ne doit pas juger la qualité d’une sauvegarde sur un seul essai, on
doit essayer plusieurs fois de restaurer.
• On peut utiliser un autre lecteur, éventuellement sur un autre système et rapatrier
les fichiers via le réseau.
Remarque
Bien que cela ait déjà été dit dans le module concernant les sauvegardes, répétons-le :
il faut réaliser les sauvegardes en plusieurs exemplaires et en conserver un dans un
lieu géographiquement différent du site d’exploitation.

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 A-105
Bibliographie

Bibliographie

Ouvrage traitant des commandes UNIX


UNIX Utilisateur
par Abdelmadjid Berlat, Jean-François Bouchaudy et Gilles Goubet, 1999,
aux éditions Eyrolles, Tsoft

Ouvrages généraux d’administration UNIX


Les Bases de l’administration système
par Aeleen Frisch, aux éditions O’Reilly International Thomson.
Traduction de l’ouvrage :
Essential System Administration
par Aeleen Frisch, 1996, aux éditions O’Reilly & Associates.

UNIX Administrateur
par Jean-François Bouchaudy et Gilles Goubet, 1999,
aux éditions Eyrolles, Tsoft

Ouvrages traitants du shell


Unix Shell
par Abdelmadjid Berlat, Jean-François Bouchaudy et Gilles Goubet, 1999
aux éditions Eyrolles, Tsoft

Learning the bash


par Cameron Newbam & Bill Rosenblatt, 1995, aux éditions O’Reilly & Associates.

Ouvrages traitants de perl


Introduction à Perl
par Randal L. Swartz & Tom Christiansen, 1997, aux éditions O’Reilly & Associates.

Programming Perl
par Larry Wall, Tom Christiansen & Randal L. Schwartz, 1996, aux éditions O’Reilly.

Perl for System Administration


par David N. Blank-Edelman, 2000, aux éditions O’Reilly.

Ouvrages généraux sur Linux


Running Linux
par Welsh, 1999, aux éditions O’Reilly & Associates.

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 B-1
Bibliographie

Système Linux
traduction française du précédent, 2000, aux éditions O’Reilly France.

Linux pour les nuls


par Witherspoon, 1999, aux éditions Sybex.

Linux Undercover
Red Hat Software, 1998, édité par Eric S. Raymond.

Kit de démarrage Linux


par H.G. Esser et Thomas Förster, 1999, aux éditions Micro Application.

Linux in a Nutshell
par Siever, 1999, aux éditions O’Reilly & Associates.

Linux formation visuelle


par Ovalline, 2000, aux éditions First Interactive.

Ouvrages traitants de l’administration de Linux


Linux System Administration Handbook
par Mark F. Komarinski, 1998, aux éditions Prentice Hall.

Linux Administation System


par Anne H. Carasik, 1999, aux éditions Sybex.

Linux Administration: Beginner’s guide


Par Shah, 2000, aux éditions Mac Graw Hill.

Linux Companion for System Administrators


par Hein, 1998, aux éditions Addison wesley.

Linux Administration for Dumies


par Bellomo, 1999, aux éditions IDG Books.

Linux System Administration


par Carasik, 1998, aux éditions IDG Books.

Linux Administration Black Book


par Pritchard, 2000, aux éditions Coriolis Group.

Linux System Administrator’s Suvrival Guide


par Parker, 2000, aux éditions SAMS.

Ouvrages sur les logiciels libres (Module 1)


Open Sources: Voices from the Open Source Revolution
édité par Chris DiBona & all, 1999, aux éditions O’Reilly.

Logiciels libres: de l’utopie au marché


par Desbois, 2000, aux éditions L’Harmattan.

Ouvrage traitant des sauvegardes (Module 5)


Unix Backup & Recovery
par W. Curtis Preston, 1999, aux éditions O’Reilly.

B-2 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Bibliographie

Ouvrage traitant de l’impression (Module 8)


Network Printing
par Radermacher, aux éditions O’Reilly.

Ouvrages traitants de l’installation (Module 10)


Linux Installation, configuration et administration
par Kofler, 1999, aux éditions Campus Press.

Redhat Linux, The Official red Hat Linux Installation guide


aux éditions Red Hat software (fourni avec la distribution).

Slackware Linux installation manual


1996, aux éditions Walnut Creek.

Installing Debian GNU/Linux


Par Down, 2000, aux éditions SAMS.

Installing Red Hat Linux 7


par Von Hagen, 2000, aux éditions SAMS.

Installing SUSE Linux


par Fabor, 2000, aux éditions SAMS.

Linux Install and configuration little Black Book


par Leblanc, 1999, aux éditions Coriolis Group.

Ouvrage traitant des périphériques (Module 11)


Linux Hardware Handbook
par Roderick W. Smith, 2000, aux éditions SAMS.

Ouvrages traitants du noyau (Module 12)


Understanding the Linux Kernel
par Daniel P.Bovet & Marco Cesati, 2001, aux éditions O’Reilly.

Linux Device Driver


par Alexandro Rubini, 1998, aux éditions O’Reilly.

Linux Kernel Internal


par Beck, 1996, aux éditions Addison Wesley.

Linux Internals
par Moshe Bar, 2000, aux éditions Mac Graw Hill.

Programmation Linux 2.0, API système et fonctionnement du noyau


par Rémy Card, Eric Dumas et Franck Mével, aux éditions Eyrolles.

Les systèmes d’exploitation


par Andrew Tanenbaum, 1987, aux éditions InterEditions
(en annexe, le code source du noyau Minix, l’ancètre de Linux).

The Design of the UNIX Operating System


par Maurice J. Bach, 1986, aux éditions Prentice Hall
(les algorithmes du noyau System V, par son concepteur).

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 B-3
Bibliographie

Unix Internals, the new frontiers


par Uresh Vahalia, aux éditions Prentice Hall.

Ouvrage traitant des RPM (Module 13)


Maximum RPM
par Bailey, aux éditions SAMS.

Ouvrage traitant des performances (Module 14)


System Performance Tuning
par Mike Loukides, aux éditions O’Reilly & Associates.

Ouvrages traitants des réseaux, de l’Internet et de l’Intranet


(Module 15)
Ouvrages généraux
Linux Network Administrator’s Guide
par Olaf Kirch, 1995, aux éditions O’Reilly & Associates.

Adminstration de réseaux sous Linux (2nd édition)


traduction du précédent, 2001, aux éditions O’Reilly France.

Linux: a network solution for your office


par Toth, 1999, aux éditions SAMS.

Linux Network Servers


par Graig Hunt, 1999, aux éditions Sybex.

TCP/IP Network Administration


par Graig Hunt, aux éditions O’Reilly & Associates.

NFS et NIS
Managing NFS and NIS
par Hal Stern, aux éditions O’Reilly & Associates.

E-mail
Sendmail
par Bryan Costales & all, 1993, aux éditions O’Reilly & Associates.

Running Qmail
par Blum, 2000, aux éditions SAMS.

Apache et le web
Apache, The Definitive Guide
par Ben Laurie & Peter Laurie, 1997, aux éditions O’Reilly & Associates.

Apache, Installation et mise en œuvre


traduction du précédent, 1999, aux éditions O’Reilly & Associates.

Apache web server administration and e-commerce handbook


par Hawkins, 2000, chez Prentice Hall.

Unix Web Server Administration


par John Leavitt, 1997, aux éditions O’Reilly & Associates.

B-4 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Bibliographie

Professional Apache
par Peter Wainwright, chez Wrox

Apache professionnel
traduction du précédent, chez Eyrolles.

Samba
Samba in 24 hours teach yourself
par Carter, aux éditions SAMS.

Samba, L’intro
Par Gerald Carter & Richard Sharpe, 1999, aux éditions Campus Press.

Using Samba
par Peter Kelly & all, 1999, aux éditions O’Reilly.

Dns
DNS and Bind
par Liu, 1998, aux éditions O’Reilly & Associates.

Divers
Internet et Intranet sous Linux Guide pratique pour l’entreprise
Par H. Holz, B. Schmitt et A. Tikart, 1999, aux éditions Eyrolles.

Linux routers: A primer for Network Administrators


par Mancil, 2000, aux éditions Prentice Hall.

Using & Managing PPP


par Andrew Sun, aux éditions O’Reilly.

Ouvrages traitants de l’environnement graphique


(Module 16)
Objectif X Window
par M.Lambouli, aux éditions Masson.

X Window System Administrator’s Guide


par Linda Mui and Eric Pearce, 1992, aux éditions O’Reilly.

Concise Guide to Xfree86 for Linux


par Hsiao, 1999, aux éditions Que Development.

Gnome for Linux Dummies


par Wing Sze Yuen, 2000, aux éditions IDG Books.

Linux XFree 86 Red Hat 6.0


par Georgescu, 1999, aux éditions Eyrolles.

KDE
KDE teach yourself in 24 hours
par Wells, 1999, aux éditions SAMS.

Guidexpress KDE
par H. Wehr, 2000, aux éditions Micro Applications.

KDE Bible
par Nash, 2000, aux éditions IDG Books.

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 B-5
Bibliographie

KDE For Linux Dummies


par Meadhra, 2000, aux éditions IDG Books.

Ouvrages traitants de la sécurité (Module 17)


Practical UNIX & Internet Security
par Simson Garfinkel et Gene Spafford, 1996, aux éditions O’Reilly & Associates.

Maximum Linux Security


Anonymous, 2000, aux éditions SAMS.

Linux Security
par Flowers, 1999, aux éditions New Riders.

Linux System Security: Administrators Guide to open source security tools


par Mann, 2000, aux éditions Prentice Hall.

Real World Linux Security: Intrusion prevention, Detection and recovery


par toxen, 2000, aux éditions Prentice Hall.

Linux Security Toolkit


par Bandel, 2000, aux éditions IDG Books.

Redhat Linux Security


par Doss, 2000, aux éditions Wordware.

SSH, The Secure Shell : The Definitive Guide


par D.J. Barrett et Richard Silverman, chez O’Reilly.

Firewalls
Linux Firewalls
par Ziegler, 1999, aux éditions New Riders.

Building Linux and OpenBSD Firewalls


par Sonnenreich, 2000, aux éditions John Wiley.

Building Internet Firewalls (2nd Edition)


par Chapman, 2000, aux éditions O’Reilly.

Ouvrages traitants des bases de données (Module 18)


DBA’s Guide to Databases on Linux including Oracle and MySQL
par Egan, 2000, aux éditions Syngress Media.

Bases de données sous Linux: Installer et configurer MySQL, PostgreSQL, Oracle 8i,
traduction du précédent, 2000, aux édition Eyrolles.

Oracle
Oracle Database Administration on Unix Systems
par Lynnwood Brown, 1997.

Oracle 8i sous Linux - Guide de l’administrateur et du développeur


Par G. Briard, 2000, aux éditions Eyrolles.

MySQL
MySQL and mSQL
par Yarger, 1999, aux éditions O’Reilly & Associates.

B-6 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Bibliographie

PostgreSQL
Postgesql: Introduction and Concepts
par Momijan, aux éditions Addison Wesley.

DB2
DB2 Universal Database Version 7.1 for Unix, Linux, Windows and OS2
par Baklarz, 2001, aux éditions Prentice Hall.

Ouvrages traitants de la programmation sous Linux


(en plus du shell et de Perl)
Beginning Linux Programming
par Matthew, 1996, aux éditions Wrox Press.

TCL/TK in a Nutshell
par Raines, 1999, aux édition O’Reilly & Associates.

Linux Assembly Language Programming


par Neveln, aux éditions Prentice Hall.

Programming Python
par Lutz, 1997, aux éditions O’Reilly & Associates.

Programming with GNU Software


Par mike Loukides & Andy Oram, aux éditions O’Reilly & Associates.

Professional PHP Programming


Par J. Castagnetto, B. Moon, H. Rawat, S. Schumann, C. Scollo, D. Veliath, 1999,
aux éditions Wrox Press.

Building Database Applications on Web using PHP 3


par Hilton, aux éditions Addison Wesley.

Programmer avec Ot
Par M. Dalheimer, 2000, aux éditions O’Reilly & Associates.

Programmation Linux
Par N. Matthew et R. Stones, 2000, aux éditions Eyrolles.

Programmation Linux avec GTK+


Par D. Odin, 2000, aux éditions Eyrolles.

Writing Gnome Applications


par Sheets, aux éditions Addison Wesley.

Programmation système en C sous Linux


par Blaess, 2000, aux éditions Eyrolles.

Linux en entreprise
par Asbury, 2000, aux éditions Eyrolles.
Détaille la mise en ouvre de 10 applications d'entreprise associant les langages (Java, C/C++,
Perl) et les technologies (Apache, Corba, XML, MySQL, LDAP) les plus utilisés du moment.

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 B-7
Bibliographie

Ouvrages traitants d’une distribution Linux


Redhat
Red Hat Linux 6 Unleashed
par Mable, 1999, aux éditions SAMS.

Red Hat Linux System Administration


par Thomas Schenk & all, 2000, aux éditions SAMS.

Learning Red Hat Linux


par Bill Mac Carty, aux éditions O’Reilly & Associates.

Mandrake
Linux Mandrake 7.0
aux editions CampusPress (livre officiel).

Kit de démarrage Mandrake 7.2


par Wielsch, 2000, aux éditions Micro Application.

Debian
Debian GNU/Linux
par J. Goerzen et O.Othman, 1999, aux éditions New Riders.

SUSE
Linux snapshot SUSE 6.0
1999, aux éditions S.U.S.E.

SUSE Linux 6.2 Unleashed


par Ball, 2000, aux éditions SAMS.

Corel Linux
Corel Linux Starter Kit: The Official Guide
par Merlino, 2000, aux éditions Mac Graw Hill.

Mastering Corel Linux


par Danesh, 2001, aux éditions Sybex.

Caldera
Caldera OpenLinux Desktop 2.4
par Caldera, aux éditions Prentice Hall.

Caldera OpenLinux Bible,


par Negus, 2000, aux éditions IDG Books.

TurboLinux
TurboLinux Bible
par Duprey, 2000, aux éditions IDG Books.

Linux et Windows
Unix and Windows 2000 Handbook: Planning Integration and Administration
par Harvel, 2000, aux éditions Prentice Hall.

Integrating Linux and Windows


par Mccune, 2001, aux éditions Prentice Hall.

B-8 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Bibliographie

Integrating Unix and NT Technology The Definitive Guide


par Dulaney, 1999, aux éditions Duke Communications.

Les certifications Linux


Sair Linux and GNU Certification Level 1: System Administration
par Maginnis, 2000, aux éditions John Wiley.

Sair Linux and GNU Certification Level 1: Installation and Configuration


par Maginnis, 2000, aux éditions John Wiley.

Get Linux Certified and get ahead


par Martinez, 2000, aux éditions Mac Graw Hill.

Autres sujets (logiciels, multimédia, …)


Linux Multimedia Guide
par Tranter, 1997, aux éditions O’Reilly & Associates.

Learning GNU Emacs


par Cameron, 1996, aux éditions O’Reilly & Associates.

Latex for Linux: a vade mecum


par Lipkin, 1999, aux éditions Telos.

SAMS Teach yourself staroffice 5 for Linux in 24 hours


par Wells, 1999, aux éditions SAMS.

SAMS teach yourself Gimp in 24 hours


par Pruitt, 1999, aux éditions SAMS.

Using Wordperfect 8 for Linux


par Roderick, aux éditions Que Development.

Lotus Domino Administration in a nutshell


par Neilson, 2000, aux éditions O’Reilly.

Coreldraw for Linux F/X Design


par Hunt, 2000, aux éditions Coriolis group.

Building Linux Clusters


par Spector, 2000, aux éditions O’Reilly.

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 B-9
Index

IIndex
& ....................................................................................6-8 /etc/skel.................................................................. 2-6, 2-10
/boot ............................................................................12-10 /etc/smb.conf............................................................... 15-60
/boot/bootb ......................................................................7-4 /etc/syslog.conf ........................................................... 12-34
/dev/md<n>..........................................Voir disque multiple /etc/termcap .................................................................. 7-29
/etc/auto.master .............................................................4-34 /etc/ypserv.conf........................................................... 15-25
/etc/auto.misc ................................................................4-35 /lib/modules/$(uname –r)/........................................... 12-11
/etc/bashrc .....................................................................2-11 /proc............................................................................ 12-23
/etc/conf.modules ........................................................12-22 /proc/ide/......................................................................... 9-3
/etc/crontab...........................................................6-10, 6-13 /proc/mdstat .................................................................. 9-15
/etc/default/login .........................................................17-14 /proc/modules ............................................................. 12-18
/etc/dumpdates..................................................... Voir dump /proc/scsi/........................................................................ 9-3
/etc/exports ..................................................................15-15 /usr/share/terminfo ........................................................ 7-30
/etc/fstab ........................................................................4-33 /usr/src/linux/.config ................................................... 12-12
/etc/gettydefs .................................................................7-27 /usr/src/linux/Documentation/proc.txt ................. Voir /proc
/etc/group ........................................................................2-4 /var/log/cron.................................................................. 6-10
/etc/hhtpd.....................................................................15-46 /var/log/messages................................... 12-33, 12-34, A-98
/etc/host.lpd .....................................................................8-3 /var/yp/makefile.......................................................... 15-21
/etc/hosts .......................................................................15-5 /var/yp/securenets ....................................................... 15-25
/etc/hosts.allow - /etc/hosts.deny...................................15-9 ~/.bash_logout .............................................................. 2-11
/etc/hosts.equiv............................................................15-12 ~/.bash_profile ..............................................2-10, 6-4, 7-28
/etc/inetd.conf................................................................15-7 ~/.bash_rc ..................................................................... 2-10
/etc/initttab ....................................................................7-15
/etc/issue........................................................................1-22
/etc/ld.so.cache ..............................................................6-16
/etc/lilo.conf ........................... 4-4, 7-4, 10-18, 10-19, 12-11
A
/etc/login.defs.......................................................2-3, 17-17
/etc/man.config..............................................................1-27 accton.......................................................................... 14-13
/etc/mdstat .....................................................................9-14 adesse e-mail............................................................... 15-32
/etc/motd .......................................................................1-22 adresse IP...................................................................... 15-4
/etc/named.ca...............................................................15-68 adresse virtuelle ............................................................ 14-2
/etc/named.conf ...........................................................15-68 adresses d’entrées-sorties.............................................. 11-3
/etc/named.hosts ..........................................................15-68 AGP .............................................................................. 11-3
/etc/named.local ..........................................................15-68 alias.............................................................................. A-24
/etc/nologin....................................................................7-28 allexport ............................................................. A-19, A-28
/etc/nsswitch.conf...............................................15-6, 15-20 Apache........................................................................ 15-45
/etc/passwd ......................................................................2-2 API....................................................................... 11-2, 12-2
/etc/printcap..............................................................8-3, 8-8 arborescence de fichiers.................................................. 3-2
/etc/profile .......................................................................6-4 arborescence Linux ......................................................... 3-3
/etc/raidtab ...........................................................9-14, 9-15 ARPANET.................................................................... 15-2
/etc/rc.d/rc .....................................................................7-21 Arrêt du système .........................Voir commande shutdown
/etc/rc.d/rc.sysinit ..........................................................7-19 arrière-plan...................................................................... 6-2
/etc/rc.d/rc<n>.d ............................................................7-21 ascii................................................................................. 3-8
/etc/resolv.conf ..............................................................15-6 ASP............................................................................. 15-52
/etc/sendmail.cf ...........................................................15-38 AT&T ............................................................................. 1-3
/etc/services...................................................................15-7 ATAPI ............................................................................ 9-2
/etc/shadow..................................................................17-16 attributs d’un fichier...................................................... 3-15
/etc/shutdown.allow.......................................................7-32 authentification ............................................................. 17-2

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 I-1
Index

autoload........................................................................ A-22 commande arp............................................................... 15-6


automount......................................................................4-34 commande at.......................................................... 6-8, 6-13
autres types d'installation de Linux .............................10-17 commande badblocks.................................................... 4-21
avant-plan........................................................................6-2 commande cc ................................................................ 6-16
awk.......................................................................A-3, A-39 commande cfdisk ............................................................ 9-9
commande chage ........................................................ 17-18
commande chattr........................................................... 3-16
B commande chkconfig........................................... 7-22, 7-24
commande chpasswd .................................................. 17-14
commande chroot............................................................ 6-4
basename........................................................................ A-3 commande compress....................................................... 5-3
bash ...............................................................................1-13 commande cpio............................................................. 5-10
batch..............................................................................6-10 commande crontab................................................... 6-8, 6-9
bc ................................................................................... A-3 commande dd................................................................ 5-12
bg ......................................................................A-24, A-34 commande debugfs ....................................................... 4-19
bgnice........................................................................... A-19 commande depmod ..................................................... 12-20
bibliothèque dynamique ................................................6-15 commande df ....................................................... 4-12, 4-20
BIOS ........................................................................7-2, 9-2 commande dmesg ....................................................... 12-32
boot manager...................................................................7-3 commande domainname ............................................. 15-20
boot.img ........................................................................10-5 commande du....................................................... 4-12, 4-20
break............................................................................. A-24 commande dump........................................................... 5-16
BSD.................................................................. 1-3, 1-4, 8-2 commande dumpe2fs .................................................... 4-21
bureau............................................................................16-3 commande e2fsadm ...................................................... 9-24
bus local ........................................................................11-3 commande e2fsck .................................................. Voir fsck
bus USB ......................................................................11-18 commande edquota ....................................................... 4-39
commande env ................................................................ 6-8
commande exec .............................................................. 6-8
C commande ext2resize.................................................... 4-21
commande fdisk.............................................................. 9-7
commande file ................................................................ 3-7
cat................................................................................... A-3 commande find .................................................... 3-12, 5-11
cd .........................................................................A-3, A-24 commande finger ............................................................ 2-3
CDE...............................................................................16-3 commande FIPS............................................................ 10-9
CDPATH...................................................................... A-21 commande free.............................................................. 14-4
CGI..............................................................................15-51 commande fsck ............................................................. 4-18
chargeur LI..................................................................10-18 commande fuser.............................................................. 6-7
chgrp .............................................................................. A-3 commande getty............................................................ 7-28
chksum ........................................................................... A-3 commande gnorpm ....................................................... 13-8
chmod............................................................................. A-3 commande groups ........................................................... 2-6
chown............................................................................. A-3 commande gzip........................................................ 5-3, 5-7
classe de réseau commande hdparm.......................................................... 9-3
classe A.....................................................................15-4 commande hostname..................................................... 15-6
classe B .....................................................................15-4 commande httpd.......................................................... 15-47
classe C .....................................................................15-4 commande ident................................................... 6-7, 12-33
classe paramétrable .......................................................10-5 commande ifconfig ....................................................... 15-6
classe serveur ................................................................10-4 commande info ............................................................. 1-29
classe station .................................................................10-4 commande init ..................................................... 7-18, 7-19
clés de la commande tar ..................................................5-6 commande insmod ...................................................... 12-19
client - démarrage........................................................16-11 commande iostat ........................................................... 14-4
client - options.............................................................16-11 commande ipcrm ............................................... 6-20, 12-30
client serveur .................................................................15-7 commande ipcs .................................................. 6-19, 12-29
client X - les ressources...............................................16-20 commande isamchk ...................................................... 18-4
clients - panorama .......................................................16-13 commande isapnp ....................................................... 11-11
clients X ........................................................................16-2 commande kernelcfg................................................... 12-22
cmp................................................................................. A-4 commande kerneld...................................................... 12-18
COLUMNS .................................................................. A-22 commande kill ................................................................ 6-6
comm.............................................................................. A-4 commande last ............................................................ 17-15
command........................................................................ A-4 commande ldd............................................................... 6-17
commande batch...........................................................6-14 commande linuxconf..................................................... 1-16
commande /dev/MAKEDEV ........................................11-8 commande loadkeys................................................... A-105
commande /sbin/lilo ..................................... 7-4, 7-6, 10-18 commande lock........................................................... 17-23
commande apropos........................................................1-25 commande login.......................................................... 17-14

I-2 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Index

commande lpc ...............................................................8-10 commande restore ......................................................... 5-16


commande lpd ............................................. Voir démon lpd commande rlogin ........................................................ 15-12
commande lpq .................................................................8-6 commande rm2cpio ...................................................... 13-2
commande lpr...........................................................8-2, 8-5 commande rmmod ...................................................... 12-19
commande lprm...............................................................8-7 commande rpcinfo ...................................................... 15-16
commande lsattr ............................................................3-16 commande rpm ............................................................. 13-3
commande lsmod ........................................................12-18 commande rsh............................................................. 15-12
commande lvchange......................................................9-25 commande runlevel....................................................... 7-18
commande lvcreate........................................................9-23 commande rwho.......................................................... 15-12
commande lvdisplay......................................................9-23 commande sadc............................................................. 14-8
commande lvextend.......................................................9-23 commande sar ...................................................... 14-7, 14-8
commande lvmchange...................................................9-25 commande showmount ............................................... 15-16
commande lvmcreate_initrd ..........................................9-25 commande shutdown .................................................... 7-31
commande lvmdiskscan ................................................9-25 commande startx........................................................... 16-7
commande lvmsadc .......................................................9-25 commande su ..............................................1-13, 6-7, 17-14
commande lvmsar .........................................................9-25 commande supermount ................................................. 4-36
commande lvreduce.......................................................9-25 commande swapon........................................................ 9-32
commande lvremove .....................................................9-24 commande sysctl......................................................... 12-27
commande lvrename .....................................................9-25 commande tar ................................................................. 5-4
commande lvscan ..........................................................9-25 commande telinit .................................................... Voir init
commande make..........................................................12-12 commande time............................................................. 14-7
commande MAKEDEV ................................................11-6 commande top............................................................... 14-6
commande makewhatis .................................................1-27 commande touch........................................................... 5-11
commande man ....................................................1-24, 1-25 commande tunefs .......................................................... 4-21
commande mkbootdisk ..............................7-9, 12-15, A-99 commande ulimit ............................................................ 6-4
commande mkfs .....................................................4-5, 4-14 commande umount........................................................ 4-17
commande mknod ................................................11-6, 11-7 commande uname ....................................................... 12-32
commande mkraid .........................................................9-14 commande uncompress................................................... 5-3
commande mkswap .......................................................9-32 commande uptime......................................................... 14-4
commande modprobe .......................................12-18, 12-22 commande useradd ......................................................... 2-5
commande mount ...............................................4-16, 15-16 commande vgcfgbackup ............................................... 9-24
commande mount -a ......................................................4-33 commande vgcfgrestore ................................................ 9-25
commande mt ................................................................5-19 commande vgchange..................................................... 9-24
commande mysqldump .................................................18-4 commande vgck ............................................................ 9-25
commande named......................................15-73, Voir DNS commande vgcreate ...................................................... 9-23
commande netstat.................................................14-7, 15-6 commande vgdisplay .................................................... 9-23
commande newgrp ..........................................................2-4 commande vgextend ..................................................... 9-23
commande nslookup...........................................15-6, 15-72 commande vgimport ..................................................... 9-25
commande objdump ......................................................6-17 commande vgmerge...................................................... 9-25
commande passwd ...............................................2-7, 17-19 commande vgmknodes ................................................. 9-25
commande pax ..............................................................5-15 commande vgreduce ..................................................... 9-25
commande ping ........................................15-5, 15-6, A-102 commande vgremove.................................................... 9-24
commande pnpdump ...................................................11-11 commande vgrename .................................................... 9-25
commande printtool ......................................................8-10 commande vgscan......................................................... 9-25
commande procinfo.......................................................9-31 commande vgsplit......................................................... 9-25
commande ps..........................................................6-5, 14-5 commande vigr ............................................................... 2-6
commande pstree...........................................................14-5 commande vipw.............................................................. 2-6
commande pvchange .....................................................9-24 commande vmstat .............................................. 14-4, 14-11
commande pvcreate.......................................................9-23 commande w................................................................. 14-7
commande pvdata..........................................................9-24 commande wait............................................................... 6-8
commande pvdisplay.....................................................9-24 commande wall............................................................. 1-22
commande pvmove .......................................................9-24 commande whatis ......................................................... 1-26
commande pvscan .........................................................9-24 commande who........................................................... 17-14
commande quotacheck ..................................................4-40 commande Xconfigurator ............................................. 16-5
commande quotaon .......................................................4-40 commande xhost ......................................................... 16-11
commande raidstart .......................................................9-15 commande xinit ............................................................ 16-7
commande raidstop .......................................................9-15 commande xlock......................................................... 17-23
commande rawrite .........................................................10-6 commande xrdb .......................................................... 16-21
commande rcp .............................................................15-11 commande ypbind....................................................... 15-20
commande rdist ...........................................................15-13 commande ypinit ........................................................ 15-23
commande remote .......................................................15-11 commande yppush ...................................................... 15-24
commande repquota ......................................................4-40 commande ypxfr ......................................................... 15-24

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 I-3
Index

commandes chgrp et chown ..........................................3-12 disque multiple.............................................................. 9-13


commandes NIS ..........................................................15-26 disque RAID ................................................................. 9-12
commandes POSIX ........................................................ A-3 disquette de réparation .................................................. 10-6
commandes pwconv et pwunconv...............................17-16 disquette d'installation .................................................. 10-6
compilation - édition de liens ................. Voir commande cc disquettes de secours....................................................... 7-9
comptabilité BSD ........................................................14-13 distfile ......................................................................... 15-13
Configuration de xinetd distribution Linux ........................................................... 1-6
/etc/xinetd.d ............................................................15-10 DMA............................................................................. 11-3
Configuration du serveur maître..................................15-20 DNS ................................................................... 15-2, 15-68
Configuration d'un client NIS......................................15-19 DNS - enregistrement SOA ........................................ 15-70
Configuration d'une imprimante... Voir commande printtool DNS - fichiers de configuration .................................. 15-68
connaître le niveau ........................Voir commande runlevel DNS - format d'une ressource ..................................... 15-69
Connexion à chaud .........................Voir Périphériques USB domaine NIS
consoles virtuelles .........................................................7-26 esclave .................................................................... 15-18
construction d'un nouveau noyau ................................12-10 maître ..................................................................... 15-18
continue........................................................................ A-24 drakConf ......................................................................... 9-7
contrôleur de périphériques ...........................................11-2 driver.......................Voir pilote de périphérique, Voir pilote
convertquota..................................................................4-39 droit d'endossement .................................................... 17-24
COPS...........................................................................17-26 droits ............................................................................... 3-9
core................................................................................4-13 droits d'endossement ..................................................... 3-10
cp ................................................................................... A-4 Dynamic Link Library ............ Voir biblothèque dynamique
crack............................................................................17-15
Crack ...........................................................................17-25
cron .................................................................................6-9
cron.allow........................................................................6-9
E
cron.deny.........................................................................6-9
crond (démon) ....................................................... Voir cron echo...................................................................... A-5, A-24
cryptage.........................................................................17-2 ed ................................................................................... A-5
CUPS...............................................................................8-4 EDITOR ...................................................................... A-22
cut................................................................................... A-4 edquota ......................................................................... 4-39
emacs ................................................................. A-19, A-28
e-mail............................................................................ 15-3
env ................................................................................. A-5
D ENV............................................................................. A-22
environnement ................................................................ 6-4
DA commande procmail .............................................15-33 errexit................................................................. A-19, A-28
DA (« Deliver Agent ») ...............................................15-33 ERRNO........................................................................ A-21
DARPA ......................................................Voir ARPANET ESDI ............................................................................... 9-2
date................................................................................. A-4 ESMTP ....................................................................... 15-33
dd ................................................................................... A-5 eval .............................................................................. A-24
Debian .............................................................................1-7 exec.............................................................................. A-24
défaut de page ...............................................................14-3 exit ............................................................................... A-24
Démarrer Linux à partir de Windows..........................10-20 export........................................................................... A-24
démon..............................................................................6-9 expr ................................................................................ A-5
démon lpd........................................................................8-3 ext2 ........................................ Voir système de fichiers ext2
dépannage..................................................................... A-97 ext3 ............................................................................... 4-26
DHCP ................................................................15-5, 15-43 Extension des noms de fichiers....................................... 3-6
fichiers de configuration .........................................15-44 extent ............................................................................ 9-21
principes de fonctionnement ...................................15-43
dhcp.conf.....................................................................15-44
diff.................................................................................. A-5
dirname .......................................................................... A-5
F
Disk Druid...................................................................10-14
DISPLAY...........................................................16-8, 16-11 false...................................................................... A-5, A-22
disque (ajout).................................................................9-10 FAQ ..................................................................... 1-24, 1-29
disque (définition) ...........................................................9-4 FAQs............................................................................ A-98
disque (noms en mode caractère et bloc).........................9-4 fc ....................................................................... A-24, A-35
disque (utilisation)...........................................................9-5 FCEDIT ....................................................................... A-22
disque de réparation ......................................................9-13 fdformat .......................................................................... 9-3
disque de swap ..............................................................9-11 fdisk ................................................................................ 9-3
disque esclave................................................................9-10 fetchmail ..................................................................... 15-36
disque maître .................................................................9-10 ffs .................................................................................... 4-7

I-4 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Index

fg .......................................................................A-24, A-35 IFS ............................................................................... A-22


fichier au format crontab ...............................................6-11 ignoreeof............................................................ A-19, A-28
fichier spécial ................................................................11-5 IMAP .......................................................................... 15-33
fichier spécial - nomenclature .......................................11-6 inetd .............................................................................. 15-7
fichiers log.....................................................................4-13 init................................................................................... 6-3
file d'attente de messages ............................................12-29 inode ............................................................................... 4-5
File system .....................................Voir système de fichiers insmod ........................................................................ 11-11
files d’attente de message..............................................6-18 Installation à partir d'un réseau ................................... 10-23
find ................................................................................. A-5 installation de Linux ..................................................... 10-2
fips ..................................................................................9-7 installation de Linux Red Hat ....................................... 10-4
fold ................................................................................. A-6 installer Linux à partir du réseau................................. 10-22
FPATH ......................................................................... A-22 Installer Linux depuis le CD-ROM............................. 10-13
Free Software Foundation..................................... Voir FSF integer .......................................................................... A-22
FSF..................................................................................1-5 interface ATAPI.......................................................... 11-13
FTP.....................................................................15-3, 15-30 interface EIDE ............................................................ 11-13
ftp anonyme.................................................................15-30 interface parallèle........................................................ 11-14
function ........................................................................ A-22 interface SCSI............................................................. 11-13
fvwm2 - gestionnaire de fenêtre ..................................16-28 interface série.............................................................. 11-14
interface USB ............................................................. 11-14
Internet.......................................................................... 1-31
G IP.V4............................................................................. 15-3
IP.V6............................................................................. 15-3
IPC..................................................................... 6-18, 12-29
gestionnaire de fenêtre ..................................................16-3 IRQ ............................................................................... 11-3
getconf............................................................................ A-6 IRTF ............................................................................. 15-2
getopts ....................................A-6, A-24, A-26, A-34, A-35 ISA................................................................................ 11-3
getty...............................................................................7-26 ISAM ............................................................................ 18-4
GID .................................................................................2-3 iso9660 ......................................................................... 4-11
gmacs ........................................................................... A-19
Gnome...........................................................................16-4
GNOME ......................................................................16-26
GNU................................................................................1-5 J
gnu-parted .......................................................................9-7
GPL .................................................................................1-6 jfs .................................................................................. 4-32
grep ................................................................................ A-6 jobs .................................................................... A-24, A-35
groupe .............................................................................3-9 John the Ripper ........................................................... 17-26
groupe de volumes ........................................................9-21 join................................................................................. A-7
GUID........................................... Voir droits d'endossement journalisation ................................................................ 4-26
journaux de bord .......................................................... A-97

H
K
hash .............................................................................. A-22
head ................................................................................ A-6 KDE................................................................... 16-4, 16-22
HISTFILE ..........................................................A-22, A-30 KDE - les applications ................................................ 16-23
Historique du noyau ......................................................12-4 kernel-headers............................................................. 12-11
history .......................................................................... A-22 kernel-source .............................................................. 12-11
HISTSIZE ..........................................................A-22, A-30 keyword ....................................................................... A-19
HOME......................................................A-17, A-22, A-31 kill.............................................................. A-7, A-24, A-36
HOWTO...............................................................1-24, 1-29 killall............................................................................... 6-7
HTTP...........................................................................15-45 Korn shell .......................................................... A-19, A-27
ksh ..................................................................... A-19, A-27

I
L
IAB................................................................................15-2
id ................................................................................... A-7 LAN MANAGER....................................................... 15-58
IDE..................................................................................9-2 LANG .......................................................................... A-17
Identification d'un processus ..................................Voir PID last .............................................................................. 14-14
IETF ..............................................................................15-2 lastcomm..................................................................... 14-13

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 I-5
Index

LC_ALL....................................................................... A-17 modules.dep................................................................ 11-11


LC_COLLATE ............................................................ A-17 monitor .............................................................. A-19, A-28
LC_CTYPE.................................................................. A-17 montage ............................................................. Voir mount
LC_MESSAGES.......................................................... A-17 mount..................................................................... 4-4, 4-28
LD_LIBRARY_PATH..................................................6-16 MTA (« Message Transfer Agent ») ........................... 15-32
ldconfig ................................................................6-16, 6-17 mv .................................................................................. A-8
ldd ...................................................................................6-8 MySQL ......................................................................... 18-2
LDP ...............................................................................1-33 mysqladmin .................................................................. 18-3
let ................................................................................. A-24
LILO ............................................................ 7-3, 7-4, 12-14
LINENO....................................................................... A-21
LINES .......................................................................... A-22
N
Linus Torvald ......................................................Voir Linux
Linux ...............................................................................1-5 ncheck......................................................................... 17-24
ln ................................................................................... A-7 netmask......................................................................... 15-4
LOADLIN.....................................................................7-10 newgrp ......................................................................... A-24
locale .............................................................................. A-7 NFS.................................................................... 15-2, 15-15
localedef ......................................................................... A-7 nfsd ............................................................................. 15-15
locate .............................................................................1-29 NIC ............................................................................... 15-2
log ..................................................... 1-11, Voir fichiers log NIS.............................................................................. 15-18
logger ............................................................................. A-8 NIS map...................................................................... 15-18
Logical extent................................................................9-21 NIS, NIS+ ................................................................... 15-18
logname.......................................................................... A-8 niveau de fonctionnement pour init............................... 7-12
lp ................................................................................... A-8 niveau de message pour syslogd ................................. 12-35
LPD ........................................................................1-24, 8-2 niveaux de RAID sous linux ......................................... 9-13
LPRng .............................................................................8-4 nmbd ........................................................................... 15-59
ls ................................................................................... A-8 nmblookup .................................................................. 15-59
lsof ............................................................. 4-20, 6-8, 17-26 noclobber ........................................................... A-19, A-28
noexec................................................................ A-19, A-28
noglob ................................................................ A-19, A-28
nohup ................................................................... A-8, A-22
M nolog ............................................................................ A-19
noms des disques IDE..................................................... 9-5
magic number..................................................................3-7 noms des disques SCSI ................................................... 9-5
MAIL .................................................................A-22, A-31 nounset............................................................... A-19, A-28
MAILCHECK ....................................................A-22, A-31 Noyau - version 2.2....................................................... 12-5
MAILPATH .......................................................A-22, A-31 noyau Linux.................................................................. 12-2
MAILTO .......................................................................6-11 NT Loader....................................................................... 7-3
mailx .............................................................................. A-8 ntfs ................................................................................ 4-11
majeur ...........................................................................11-5
Makefile ......................................................................12-12
Mandrake ........................................................................1-7
markdirs ....................................................................... A-19
O
MBR.........................................................7-2, 10-18, A-100
mémoire partagée ..........................................................6-19 od ................................................................................... A-9
MIME..........................................................................15-33 OLDPWD .......................................................... A-21, A-31
mineur ...........................................................................11-5 Open Group .................................................................... 1-3
mingetty ........................................................................7-26 OPTARG ........................................................... A-21, A-31
Minix...............................................................................1-5 OPTIND ............................................................ A-21, A-31
miroir (disque)...............................................................9-12
MIT ........................................................................1-5, 16-2
mkdir .............................................................................. A-8
mke2fs..................................................................4-15, 4-27
P
mkfifo............................................................................. A-8
mkreiserfs......................................................................4-31 page............................................................................... 14-2
mode bloc......................................................................11-5 pagination ..................................................................... 14-2
mode caractère ..............................................................11-5 Pagination ..................................................................... 14-3
modifier les run commands ...........................................7-22 paging ........................................................... Voir paginaton
module.........................................................................12-17 PAM ........................................................................... 17-20
module - ajout et retrait ...............................................12-18 PAM - composants ..................................................... 17-20
module - Installation....................................................12-20 PAM - configuration................................................... 17-21
modules de Webmin....................................... Voir Webmin PAM - dépannage ....................................................... 17-22

I-6 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Index

paquetage - définition....................................................13-2 RANDOM ......................................................... A-21, A-31


paquetage - dépendances ...............................................13-6 raw device.............................................................. 9-5, 9-35
paquetage - installation..................................................13-4 read .................................................................... A-10, A-25
paquetage - lister les fichiers .........................................13-5 readonly ....................................................................... A-25
paquetage - vérifier........................................................13-7 Red Hat........................................................................... 1-7
paquetage - visualiser ....................................................13-4 reiserfs .......................................................................... 4-31
paquetages installés .......................................................13-5 répertoire......................................................................... 3-5
paramètres des IPC......................................................12-29 répertoire des modules ................................................ 12-17
paramètres du noyau....................................................12-26 REPLY .............................................................. A-21, A-31
partition ....................................................................7-2, 9-6 repquota ........................................................................ 4-41
partition-magic ................................................................9-7 rescue.......................................... Voir disquettes de secours
partitionnement .............................................................10-8 ressources........................................................... 14-2, 16-20
passer des paramètres au noyau...................................12-28 ressources - configuration ........................................... 16-21
paste ............................................................................... A-9 return............................................................................ A-25
PATH .................................................................A-22, A-31 RFC .............................................................................. 15-2
pathchk........................................................................... A-9 rm................................................................................. A-10
pax.................................................................................. A-9 rmdir ............................................................................ A-10
PCI .....................................................................11-3, 11-11 rôle de l'administrateur.................................................... 1-9
périphérique ..................................................................11-5 root......................................................................... 1-13, 2-2
périphériques USB ......................................................11-18 RPC ............................................................................ 15-14
persistent super bloc ......................................................9-13 rpc.mountd.................................................................. 15-15
PHP .............................................................................15-52 RPM.............................................................................. 13-2
Physical extent ..............................................................9-21 rsion 2.4 ........................................................................ 12-5
PID ..................................................................................6-2 run commands............................................................... 7-20
pilote .............................................................................11-2
pilote de périphérique.........................................11-9, 12-17
plan de sauvegarde ..........................................................5-3
PnP ................................................................................11-4
S
POP .............................................................................15-33
port ................................................................................15-7 S.u.S.E ............................................................................ 1-7
portmap .......................................................................15-15 sa ................................................................................ 14-14
POSIX .......................................................... 1-3, 5-11, 11-2 sa1................................................................................. 14-8
PPID...................................................................A-21, A-31 sa2................................................................................. 14-8
pr ................................................................................. A-10 samba.......................................................................... 15-58
presse-papier ...............................................................16-13 samba - composants .................................................... 15-59
primitive ...............................................................11-2, 12-2 samba - configuration ................................................. 15-60
primitive fork ..................................................................6-2 sar ................................................................................. 14-9
print .............................................................................. A-24 SATAN....................................................................... 17-26
printf............................................................................. A-10 script Knnxxx ...................Voir Modifier les run commands
privileged ...........................................................A-19, A-28 script Snnxxx ....................Voir Modifier les run commands
propriétaire ......................................................................3-9 script xinitrc.................................................................. 16-7
proxy ...........................................................................15-53 scripts de /etc/rc.d/init.d....Voir Modifier les run commands
PS1 .....................................................................A-22, A-31 SCSI................................................................................ 9-3
PS2 .....................................................................A-22, A-31 scsi_info.......................................................................... 9-3
PS3 .....................................................................A-22, A-31 SECONDS ......................................................... A-21, A-31
PS4 .....................................................................A-22, A-31 section........................................................................... 1-25
pwd...........................................................A-10, A-24, A-36 sécurité
PWD...................................................................A-21, A-31 de connexion .......................................................... 17-14
informatique ............................................................. 17-2
niveau C2 ................................................................. 17-3
sécurité – fichiers de configuration ............................. 17-15
Q sed...................................................................... A-11, A-45
segment de mémoire partagée..................................... 12-29
quotacheck ....................................................................4-39 sémaphore.......................................................... 6-19, 12-29
quotas ............................................................................4-38 sendmail...................................................................... 15-38
serveur primaire de domaine Windows NT ................ 15-64
serveur X.............................................................. 16-2, 16-3
R service de connexion graphique.................................. 16-10
session X....................................................................... 16-7
session X locale ............................................................ 16-7
r ................................................................................. A-22 set................................................................................. A-25
RAID....................................................... Voir disque RAID setquota......................................................................... 4-40

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 I-7
Index

sfdisk ...............................................................................9-7 TMOUT .................................................. 17-23, A-22, A-31


SGBD............................................................................18-2 TOMSRTBT - distribution Linux ................................ A-99
sh .............................................................A-11, A-15, A-32 touch ............................................................................ A-13
shadow ........................................................................17-16 tr ................................................................................. A-13
Shared library .........................Voir bibliothèque dynamique trackall ......................................................................... A-20
SHELL ...............................................................A-22, A-31 transactions ................................................................... 18-2
shell POSIX.................................................................. A-15 trap............................................................................... A-25
shift .............................................................................. A-25 Triggers......................................................................... 18-2
signal ...............................................................................6-3 Trinux ......................................................................... 17-25
site virtuel....................................................................15-50 Tripwire ...................................................................... 17-26
Sites Internet .................................................................1-31 true..................................................................... A-13, A-22
Slackware ........................................................................1-6 truss................................................................................. 6-7
sleep ............................................................................. A-11 tty ................................................................................. A-13
SMB ............................................................................15-58 tube nommé .................................................................... 3-5
smbclient .....................................................................15-59 tune2fs .......................................................................... 4-27
smbd............................................................................15-59 twm - gestionnaire de fenêtre...................................... 16-18
smbpasswd ..................................................................15-59 type .................................................................... A-22, A-25
smbstatus.....................................................................15-59 typeset.......................................................................... A-25
SMTP ...............................................................15-33, 15-35
socket ............................................................................15-2
socket locale....................................................................3-5
sort ............................................................................... A-11
U
sous-système ...............................................................12-35
spare disk...................................... Voir disque de réparation UA commande kmail .................................................. 15-33
sticky bit........................................................................3-10 UA (« User Agent »)................................................... 15-32
strace ...............................................................................6-7 UID ................................................................................. 2-3
striped disk ....................................................................9-12 ulimit............................................................................ A-25
stty................................................................................ A-11 umask....................................................... A-13, A-25, A-37
su ................................................................................17-14 unalias................................................................ A-25, A-37
SUID ........................................... Voir droits d'endossement uname ............................................................... 12-10, A-13
SVID ...............................................................................1-4 uniq .............................................................................. A-13
swap ..............................................................................9-31 UNIX ....................................................................... 1-2, 1-3
swapping .......................................................................14-3 unset............................................................................. A-25
syslogd ........................................................................12-34 USB ............................................................................ 11-17
système de fichier Minix .................................................4-9 USB device FS............................................................ 11-19
système de fichiers ..........................................................4-2
système de fichiers distribués NFS................................4-11
système de fichiers ext ....................................................4-9
système de fichiers ext2 ................................................4-10
V
sysv ...............................................................................4-11
variable d’environnement ............................................... 6-4
verbose............................................................... A-20, A-28
vfat................................................................................ 4-11
T VFS............................................................................... 12-2
vgexport ........................................................................ 9-25
table des inodes ................................................... Voir inode vi ....................................................................... A-20, A-28
tail ................................................................................ A-12 viraw ............................................................................ A-20
taille des partitions ........................................................10-8 VISUAL ...................................................................... A-22
TAPE......................................................................5-4, 5-20 vmlinuz ......................................................................... 12-2
Tcp Wrappers ..............................................................17-25 volume logique ............................................................. 9-21
TCP/IP...........................................................................15-2 volumes physique ......................................................... 9-21
tcpd.......................................................... Voir wrapper tcpd vxfs ............................................................................... 4-26
tee................................................................................. A-12
telinit .......................................................................Voir init
telnet..............................................................................15-3
terminfo.........................................................................7-30
W
test ......................................................................A-12, A-25
testparms .....................................................................15-59 wait .................................................................... A-13, A-25
testprns ........................................................................15-59 warnquota ..................................................................... 4-41
thread kmod.................................................................12-18 wc ................................................................................ A-14
time .............................................................................. A-25 web ............................................................................... 15-3
times............................................................................. A-25 webmin ......................................................................... 1-16

I-8 Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004
Index

Webmin.........................................................................1-17 xinetd ......................................Voir Configuration de xinetd


whence ......................................................................... A-25 xterm.................................................................. 16-3, 16-16
Window manager ..................... Voir gestionnaire de fenêtre xtrace ................................................................. A-20, A-28
wrapper tcpd..................................................................15-9 X-Window .................................................................... 16-2

X Y
Noyau - version 1 ..........................................................12-5 yast................................................................................ 1-16
X11................................................................................16-2 ypinit........................................................................... 15-22
xargs............................................................................. A-14
xdm ...............................................................................16-8
xdm - configuration.......................................................16-9
XDMCP ........................................................................16-9
Z
XDR ............................................................................15-14
XFree86...........................................................................1-7 zombie ....................................................................... A-101
XFS ...............................................................................4-32

Copie légale autorisée par Tsoft © à CFAO Technologie jusqu'au 30/11/2004 I-9
Avis du lecteur

Vos critiques et suggestions sont


indispensables !
TSOFT fait la mise à jour de ses ouvrages tous les trimestres et même plus si l’exigence s’en
fait sentir. Nous comptons sur vous pour nous faire part de toute correction à effectuer ou de
toute amélioration à apporter.

Vous avez choisi les ouvrages TSOFT pour vous former ou former d’autres personnes. Vous
êtes donc les premiers concernés pour qu’à votre prochaine commande, le guide de
formation ait été rectifié si nécessaire ou complété s’il le faut.

Titre de l’ouvrage : .....................................................................................................................

Date d’achat ou d’entrée en possession de l’ouvrage : ..............................................................

Erreurs relevées (notez les pages concernées)

Sujets à ajouter (précisez éventuellement le chapitre)

Critiques et suggestions

M. Mme Mlle..................................................................Prénom ..............................................


Société..............................................................................Profession..........................................
Adresse .......................................................................................................................................
....................................................................................................................................................
Code postal ................Ville ......................................................... Pays ......................................

A photocopier ou découper et à envoyer à :


TSOFT – Service lecteurs – 10 rue du Colisée 75008 Paris

© TSOFT – Linux Administration


Guide TSOFT
Linux Administration
Référence : TS0038
Mise à jour février 2002

© TSOFT – Linux Administration

Vous aimerez peut-être aussi