Vous êtes sur la page 1sur 410

Administration Kiki Novak

K. Novak
LINUX par la pratique Tome 1
Une introduction aux bases de l’administration Linux

Administration
Ce guide pratique et ludique répond à toutes les questions que vous vous posez sur les bases de l’administration Linux, en explorant les
distributions GNU/Linux les plus populaires, notamment CentOS 7 et la famille Red Hat Enterprise Linux.
Il vous permet d’installer, de configurer et de gérer des serveurs sous Linux. Conçu étape par étape, il suit une progression pédagogique
cohérente, en détaillant tout ce qu’il faut savoir sur les bases de l’administration système Linux (shell et ligne de commande, droits d’accès,

Administration LINUX par la pratique - Tome 1


processus, etc.).

LINUX par la pratique


100 % pratique et compatible RHEL/CentOS
Les configurations fournies en exemple sont immédiatement utilisables, telles quelles. Aucun prérequis externe n’est nécessaire puisque les
techniques enseignées permettent à un administrateur novice de RHEL/CentOS de maîtriser les bases du système, tout en lui montrant les
bons réflexes pour se documenter et apprendre en autonomie par la suite.

À qui s'adresse cet ouvrage ?


• Aux administrateurs de serveurs qui souhaitent maîtriser leurs systèmes Linux au quotidien.
• Aux adeptes de Linux désireux d’approfondir leurs connaissances.
Tome 1 : les fondamentaux
• Aux professionnels qui préparent la certification RHCSA ou RHCE.
de l’administration système
Au sommaire
Si Linux m’était conté • Avant de mettre la main à la pâte • Linux installé par une poule • Linux en mode texte : consolez-vous ! • Gérer les utilisateurs
• Gérer les droits d’accès • Chercher une aiguille dans une botte de foin • Créer et manipuler des liens • Gérer les processus • Gérer les services •
Accéder aux périphériques amovibles • Partitionner et formater un disque dur • Gérer les archives compressées • Premiers pas sur le réseau • Installer
et gérer des logiciels • Manipuler le chargeur de démarrage et le noyau • Installer et gérer un RAID logiciel • Gérer les volumes logiques avec LVM •
Gérer les logs du système • Annexe : installer un poste de travail Linux

Féru d’informatique depuis les jours du processeur monoplatine 8080


et du Commodore VC-20, Kiki Novak est gérant de la société Microlinux,
spécialisée dans l’élaboration de solutions informatiques durables reposant
à 100 % sur GNU/Linux et les logiciels libres. Microlinux est également
un organisme de formation s’adressant aux utilisateurs et aux administrateurs
ISBN : 978-2-212-67738-6
Code éditeur : G67738

de Linux et du libre. Aucun stagiaire n’a été maltraité durant la conception 32 E


de cet ouvrage. https://www.microlinux.fr
Studio Eyrolles © Éditions Eyrolles

G67738_AdministrationLinux-EXE.indd 1 11/06/2019 10:33


Administration Kiki Novak

K. Novak
LINUX par la pratique Tome 1
Une introduction aux bases de l’administration Linux

Administration
Ce guide pratique et ludique répond à toutes les questions que vous vous posez sur les bases de l’administration Linux, en explorant les
distributions GNU/Linux les plus populaires, notamment CentOS 7 et la famille Red Hat Enterprise Linux.
Il vous permet d’installer, de configurer et de gérer des serveurs sous Linux. Conçu étape par étape, il suit une progression pédagogique
cohérente, en détaillant tout ce qu’il faut savoir sur les bases de l’administration système Linux (shell et ligne de commande, droits d’accès,

Administration LINUX par la pratique - Tome 1


processus, etc.).

LINUX par la pratique


100 % pratique et compatible RHEL/CentOS
Les configurations fournies en exemple sont immédiatement utilisables, telles quelles. Aucun prérequis externe n’est nécessaire puisque les
techniques enseignées permettent à un administrateur novice de RHEL/CentOS de maîtriser les bases du système, tout en lui montrant les
bons réflexes pour se documenter et apprendre en autonomie par la suite.

À qui s'adresse cet ouvrage ?


• Aux administrateurs de serveurs qui souhaitent maîtriser leurs systèmes Linux au quotidien.
• Aux adeptes de Linux désireux d’approfondir leurs connaissances.
Tome 1 : les fondamentaux
• Aux professionnels qui préparent la certification RHCSA ou RHCE.
de l’administration système
Au sommaire
Si Linux m’était conté • Avant de mettre la main à la pâte • Linux installé par une poule • Linux en mode texte : consolez-vous ! • Gérer les utilisateurs
• Gérer les droits d’accès • Chercher une aiguille dans une botte de foin • Créer et manipuler des liens • Gérer les processus • Gérer les services •
Accéder aux périphériques amovibles • Partitionner et formater un disque dur • Gérer les archives compressées • Premiers pas sur le réseau • Installer
et gérer des logiciels • Manipuler le chargeur de démarrage et le noyau • Installer et gérer un RAID logiciel • Gérer les volumes logiques avec LVM •
Gérer les logs du système • Annexe : installer un poste de travail Linux

Féru d’informatique depuis les jours du processeur monoplatine 8080


et du Commodore VC-20, Kiki Novak est gérant de la société Microlinux,
spécialisée dans l’élaboration de solutions informatiques durables reposant
à 100 % sur GNU/Linux et les logiciels libres. Microlinux est également
un organisme de formation s’adressant aux utilisateurs et aux administrateurs
de Linux et du libre. Aucun stagiaire n’a été maltraité durant la conception
de cet ouvrage. https://www.microlinux.fr

G67738_AdministrationLinux-EXE.indd 1 11/06/2019 10:33


67738-Administration Linux par la pratique-INT.book Page I Friday, May 24, 2019 10:38 AM

Administration Linux
par la pratique
67738-Administration Linux par la pratique-INT.book Page II Friday, May 24, 2019 10:38 AM

DANS LA MÊME COLLECTION


S. RINGUEDÉ. – SAS.
N°67631, 4e édition, 2019, 688 pages.
C. BLAESS. – Solutions temps réel sous Linux.
N°67711, 3e édition, 2019, 318 pages.
T. PARISOT. – Node.js.
N°13993, 2018, 472 pages.
C. PIERRE DE GEYER, J. PAULI, P. MARTIN, E. DASPET. – PHP 7 avancé.
N°67720, 2e édition, 2018, 736 pages.
H. WICKHAM, G. GROLEMUND. – R pour les data sciences.
N°67571, 2018, 496 pages.
F. PROVOST, T. FAWCETT. – Data science pour l’entreprise.
N°67570, 2018, 370 pages.
J. CHOKOGOUE. – Maîtrisez l’utilisation des technologies Hadoop.
N°67478, 2018, 432 pages.
R. GOETTER. – CSS 3 Flexbox.
N°14363, 2016, 152 pages.
H. BEN REBAH, B. MARIAT. – API HTML 5 : maîtrisez le web moderne !
N°67554, 2018, 294 pages.
W. MCKINNEY. – Analyse de données en Python.
N°14109, 2015, 488 pages.
E. BIERNAT, M. LUTZ. – Data science : fondamentaux et études de cas.
N°14243, 2015, 312 pages.

SUR LE MÊME THÈME


K. NOVAK. – Débuter avec Linux.
N°13793, 2017, 522 pages.
R. HERTZOG, R. MAS. – Debian Jessie.
N°14203, 2016, 538 pages.
J.-F. BOUCHAUDY. – Linux Administration – Tome 1.
N°14082, 2014, 690 pages.

Retrouvez nos bundles (livres papier + e-book) et livres numériques sur


http://izibook.eyrolles.com
67738-Administration Linux par la pratique-INT.book Page III Friday, May 24, 2019 10:38 AM

Kiki Novak

Administration Linux
par la pratique
Tome 1 : les fondamentaux de l’administration système
67738-Administration Linux par la pratique-INT.book Page IV Friday, May 24, 2019 10:38 AM

ÉDITIONS EYROLLES
61, bd Saint-Germain
75240 Paris Cedex 05
www.editions-eyrolles.com

En application de la loi du 11 mars 1957, il est interdit de reproduire intégralement ou partiellement le présent ouvrage,
sur quelque support que ce soit, sans l’autorisation de l’Éditeur ou du Centre Français d’exploitation du droit de copie,
20, rue des Grands Augustins, 75006 Paris.
© Éditions Eyrolles, 2019, ISBN : 978-2-212-67738-6
67738-Administration Linux par la pratique-INT.book Page V Friday, May 24, 2019 10:38 AM

Avant-propos

Vous voilà prêt à acheter ce livre, ou du moins suffisamment curieux pour jeter un œil aux
premières lignes de l’avant-propos. Cet ouvrage est un guide pratique pour les administra-
teurs en herbe qui veulent installer, configurer et gérer des serveurs sous CentOS et Red Hat
Enterprise Linux.
Si vous pensiez vaguement que Linux est une marque de mouchoirs ou de lessive, ce livre
s’adresse également à vous. Aucun savoir, aucune compétence spécifique n’est présupposée de
votre côté. Si vous êtes dôté d’une dose saine de curiosité et d’un certain plaisir à expéri-
menter, considérez-vous comme le lecteur idéal de ces pages.
Figure 1
Linux, ce n’est pas seulement une
marque de lessive. C’est aussi le
système qui fait fonctionner les
serveurs de la planète entière.
67738-Administration Linux par la pratique-INT.book Page VI Friday, May 24, 2019 10:38 AM

Administration Linux par la pratique


VI

Administration Linux par la pratique est un véritable manuel de formation, élaboré et peaufiné
dans le cadre des cours d’introduction à l’administration des systèmes Linux que je dispense entre
Nîmes, Alès et Montpellier. Il est le fruit de quelques années de terrain, qui a mûri lentement
sous le soleil de la garrigue gardoise, à la lumière des nombreuses questions de mes stagiaires.
Certes, il existe déjà plusieurs ouvrage sur Linux en général et l’administration des serveurs
CentOS et Red Hat Enterprise Linux en particulier. Il est même réjouissant de voir que les
publications sur ce sujet se multiplient. En quoi ce livre est-il différent, alors ? Plutôt que
réinventer la roue, j’ai choisi une approche pragmatique : vous faire découvrir les bases de
Linux en plongeant les mains dans le cambouis, sans prérequis externes, en suivant une pro-
gression pédagogique cohérente.
Ce premier ouvrage de la collection se limite à l’administration de base : l’installation, les bases
du shell et de la ligne de commande, la gestion des utilisateurs, les droits d’accès, les processus,
la gestion des disques et des applications, etc. Les aspects avancés de la configuration – le ser-
veur web Apache, le serveur de messagerie Postfix, le serveur de fichiers Samba, etc. – feront
l’objet de tomes ultérieurs. Songez à la célèbre devise du grand philosophe Friedrich Nietzsche,
selon laquelle celui qui un jour veut apprendre à voler doit d’abord apprendre à se tenir debout
et à marcher. Le tome 1 que vous tenez entre les mains est donc entièrement dédié à la marche ;
la danse et le vol plané seront abordés à partir du deuxième tome.
Toutes les configurations fournies en exemple sont immédiatement utilisables, telles quelles.
Elles sont basées sur CentOS 7, une distribution dérivée de Red Hat Enterprise Linux 7.
D’après mon expérience, les formations qui essaient de danser à toutes les noces (comme on
dit dans mon pays natal) finissent par embrouiller les novices. En règle générale, je conseille à
mes stagiaires de s’initier à Linux (ou Unix) en optant pour un seul système – CentOS en
l’occurrence – et de découvrir les autres, comme Debian, Ubuntu ou FreeBSD, par la suite.
CentOS est probablement le système Linux le plus ennuyeux qui existe. En informatique,
« ennuyeux » est une qualité très recherchée. Pas de drame, pas de mauvaises surprises, juste
un système qui fonctionne bien au quotidien. La distribution CentOS n’inclut pas les tech-
nologies dernier cri tout juste aptes à faire exploser vos systèmes en plein vol. Au lieu de cela,
l’ambition de cette distribution – et de sa jumelle commerciale Red Hat Enterprise Linux –
consiste à fournir le système open source le plus stable et le plus fiable qui existe, et ce pour une
durée de dix ans pour chaque version. Il n’est donc pas étonnant que ces deux distributions
soient omniprésentes dans les entreprises et les datacenters du monde entier.
Un effet secondaire non négligeable du focus de ce livre, c’est que les administrateurs un peu
aguerris pourront l’utiliser pour préparer leur certification RHCE (Red Hat Certified
Engineer) ou RHCSA (Red Hat Certified System Administrator). Les ouvrages spécialisés
dédiés à ce sujet (on ne citera pas de noms) sont particulièrement soporifiques et ce n’est
peut-être pas une mauvaise idée de les compléter par une approche plus ludique.
No profit grows where is no pleasure taken, disait Shakespeare. Pour vous donner une idée de
l’ambiance générale qui peut régner dans les formations Linux que j’ai l’occasion d’animer,
vous pouvez imaginer une bande de grands enfants qui s’amusent avec l’équivalent numérique
d’une boîte de Lego, vous n’en serez pas très loin. J’ai fait de mon mieux pour essayer de
conserver cet état d’esprit dans la rédaction de ce livre. Et si jamais vous trouvez que tout cela
67738-Administration Linux par la pratique-INT.book Page VII Friday, May 24, 2019 10:38 AM

Avant-propos
VII

ne fait pas très sérieux, rappelez-vous cet autre adage de Nietzsche selon lequel il n’y a rien de
plus sérieux qu’un élève qui joue.

Que contient ce livre ?


Ce livre est conçu pour être lu dans l’ordre, page par page, chapitre par chapitre. Lisez-le
comme un roman, tout en sachant que le chapitre sur lequel vous ferez l’impasse reviendra
vous mordre les fesses.
Le chapitre 1 raconte l’histoire d’Unix, de GNU et de Linux depuis les origines. Il effectue
un tour d’horizon sur l’informatique en général et Linux en particulier. Si vous ne savez pas
trop ce qu’est un « système d’exploitation », une « distribution » ou un « logiciel libre », ce
chapitre fournit des réponses à vos questions.
Le chapitre 2 présente CentOS, le système (ou la distribution) utilisé pour mettre en pratique
les exemples de ce livre, ainsi que des considérations sur le choix du matériel informatique sur
lequel vous pourrez l’installer. Nous y présentons également VirtualBox, un logiciel libre de
virtualisation qui vous permettra de vous entraîner sur votre ordinateur personnel sans pour
autant mettre en péril votre système et vos données.
Dans le chapitre 3, vous pourrez vous mettre aux fourneaux en apprenant comment effectuer
l’installation standard d’un système Linux, de la manière la plus simple possible. Le but de
l’opération est que vous disposiez d’un système fonctionnel, qui vous permette de découvrir
Linux par la pratique, chez vous, sur votre ordinateur.
Les chapitres 4 à 19 constituent sans aucun doute le « plat de résistance » de l’ouvrage. Ils
vous initient progressivement à l’administration d’un système Linux en commençant par des
opérations de base (chapitre 4), pour vous amener petit à petit à réaliser des opérations plus
avancées comme la gestion des utilisateurs (chapitre 5) et des droits d’accès (chapitre 6), la
recherche de fichiers (chapitre 7), la création et la manipulation de liens (chapitre 8), la ges-
tion des processus (chapitre 9) et des services (chapitre 10), l’accès aux périphériques
(chapitre 11), le partitionnement et le formatage des disques (chapitre 12) ou encore la ges-
tion des archives compressées (chapitre 13). Le chapitre 14 présente les bases du réseau sous
Linux. La gestion des logiciels est abordée au chapitre 15. Le chapitre 16 nous plonge au
cœur du chargeur de démarrage et nous fait changer de kernel comme de chemise. Les
chapitres 17 et 18 présentent des concepts avancés pour la gestion des disques comme le
RAID et LVM. Enfin, le chapitre 19 vous montre tout ce qu’il faut savoir pour exploiter les
logs du système.
Et, s’il vous reste un petit creux, vous trouverez en annexe des informations supplémentaires
pour l’installation d’un poste de travail basé sur la distribution OpenSUSE Leap et l’environ-
nement de bureau KDE.
67738-Administration Linux par la pratique-INT.book Page VIII Friday, May 24, 2019 10:38 AM

Administration Linux par la pratique


VIII

Remerciements
Merci à Alexandre Habian pour avoir cru en ce projet et surtout pour sa patience. Sans son
professionnalisme – le vrai, celui qui ne fait pas l’impasse sur les qualités relationnelles et la
bonne humeur – ce livre n’aurait jamais vu le jour.
Un grand merci à Clothilde, ma tendre moitié, pour son soutien, ses bons conseils, ses bons
petits plats et les hectolitres de thé au citron.

À propos de l’auteur
Féru d’informatique depuis les jours du processeur 8080 et du Commodore VC-20, Kiki Novak est gérant
de la société Microlinux, spécialisée dans l’élaboration de solutions informatiques durables basées à cent
pour cent sur Linux et les logiciels libres. Microlinux est également un organisme de formation s’adres-
sant aux utilisateurs et aux administrateurs de Linux.
B https://www.microlinux.fr
67738-Administration Linux par la pratique-INT.book Page IX Friday, May 24, 2019 10:38 AM

Table des matières

CHAPITRE 1
Si Linux m’était conté .................................................................... 1
Au commencement était Unix . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
Richard Stallman et le projet GNU . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
Linus Torvalds et le noyau Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
Les ancêtres Slackware, Red Hat et Debian . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
Slackware Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
Les distributions de l’entreprise Red Hat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
Debian GNU/Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
Linux pour tous : la famille Ubuntu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
SUSE : un drôle de caméléon. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
Les systèmes BSD, une autre famille d’Unix libres . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
La foire aux distributions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
Quelle est la « meilleure » distribution Linux ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
La panoplie logicielle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
L’actualité des paquets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
Les outils d’administration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
Le caractère commercial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
La qualité « entreprise » . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
La configuration par défaut . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
La qualité de la documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
Qui utilise Linux ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29

CHAPITRE 2
Avant de mettre la main à la pâte .............................................. 31
Petite introduction culinaire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
Se former à Linux avec CentOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
Le matériel : usine à gaz ou simple gazinière ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
Acheter un PC faisant office de serveur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
Acheter un vrai serveur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
Comment obtenir la distribution CentOS ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
Graver le fichier ISO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
Et si je n’ai pas de lecteur optique ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
S’entraîner sur un système virtualisé . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
Créer et configurer une machine virtuelle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
67738-Administration Linux par la pratique-INT.book Page X Friday, May 24, 2019 10:38 AM

Administration Linux par la pratique


X

CHAPITRE 3
Linux installé par une poule ........................................................ 45
L’œuf ou la poule ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
Au commencement était le BIOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
Testez votre mémoire ! . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
Installation de CentOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
Premiers pas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
Choisir la disposition du clavier . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
Partitionner le disque dur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
Désactiver le service Kdump . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
Activer le réseau et définir le nom d’hôte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
Démarrer l’installation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
Définir les paramètres utilisateur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
Créer un utilisateur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
Fin de l’installation et redémarrage initial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59

CHAPITRE 4
Linux en mode texte : consolez-vous ! ....................................... 61
Introduction à la ligne de commande . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
Faut-il avoir peur du mode texte ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
Console ? Terminal ? Et quoi encore ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
Se connecter à un serveur Linux en SSH . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
Utiliser PuTTY sous Windows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
Utiliser OpenSSH sous Windows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
Utiliser OpenSSH sous Mac OS X . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
Utiliser OpenSSH sous Linux ou BSD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
Basculer entre les consoles virtuelles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
Quitter la console . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
Premiers pas en ligne de commande . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
Naviguer : ls, pwd et cd . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
Afficher le contenu d’un répertoire avec ls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
Décrypter les résultats de votre ordinateur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
Qu’est-ce qui est quoi là-dedans ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
Mais encore ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
Humain, pas trop humain ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
Splendeur et misère des fichiers cachés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
Cachez cette configuration que je ne saurais voir . . . . . . . . . . . . . . . . . . . . . . . 74
Afficher les informations détaillées d’un répertoire . . . . . . . . . . . . . . . . . . . . . . . . 74
pwd : « Vous êtes ici ! » . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
On bouge avec cd ! . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
Chemin relatif ou absolu ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
À court d’arguments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
« Ici » et « à l’étage » . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
Deux commandes de sortie simples : echo et cat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
echo : afficher une ligne de texte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
cat : afficher et concaténer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
La structure des répertoires sous Linux. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
Où suis-je ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
Une structure en arborescence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
67738-Administration Linux par la pratique-INT.book Page XI Friday, May 24, 2019 10:38 AM

Table des matières


XI

Visite guidée du système en dix minutes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83


Home sweet home . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
Remonter à la racine : / . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
Les répertoires /bin et /boot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
Les répertoires /dev et /etc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
Le répertoire /lib . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
Les répertoires /mnt, /media et /run . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
Les répertoires /proc et /sys . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
Les répertoires /root et /sbin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
Le répertoire /usr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
Les répertoires /tmp et /var . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
Visualiser : more et less . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
Gérer l’affichage de fichiers longs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
Visualiser avec more . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
Less is more : moins, c’est plus ! . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
Créer : touch et mkdir . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92
Modifier l’horodatage d’un fichier avec touch . . . . . . . . . . . . . . . . . . . . . . . . . . . 92
Créer un fichier vide avec touch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92
Créer un fichier texte sans éditeur de texte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
Avec cat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
Avec echo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
Créer des répertoires avec mkdir . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
Créer une série de répertoires. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
Gare aux espaces ! . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
Les arborescences en un coup d’œil avec tree . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
Créer une arborescence de répertoires . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98
Copier, déplacer et renommer : cp et mv . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
Copier des fichiers et des répertoires avec cp . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
Sauvegarder un répertoire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
Déplacer des fichiers et des répertoires avec mv . . . . . . . . . . . . . . . . . . . . . . . . . 102
Renommer des fichiers et des répertoires avec mv . . . . . . . . . . . . . . . . . . . . . . . 103
Supprimer : rm et rmdir . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
Gare aux armes de destruction massive . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
Travailler avec ou sans filet ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
Supprimer des répertoires avec rmdir . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
Un coup d’essuie-glace avec clear . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106
Éditer des fichiers texte : Vi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106
Une réputation problématique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106
L’éditeur de texte installé sur tous les systèmes Linux . . . . . . . . . . . . . . . . . . . . . 107
Vi amélioré : Vim . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107
Vimtutor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
Travailler moins pour taper plus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
La complétion automatique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
La flemme devient un gage de qualité . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
Répéter une commande . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114
Utiliser l’historique des commandes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115
Invoquer une commande en utilisant la recherche inversée . . . . . . . . . . . . . . . . . 115
Consulter l’aide en ligne : man et info . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116
Unix est long et la vie est brève . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116
On appelle les secours ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117
67738-Administration Linux par la pratique-INT.book Page XII Friday, May 24, 2019 10:38 AM

Administration Linux par la pratique


XII

Le bonheur est dans le PC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117


Afficher le manuel en ligne : man . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118
Linux, Shakespeare et Molière . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119
Comment lire une page man ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120
Afficher le manuel en ligne : info . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121

CHAPITRE 5
Gérer les utilisateurs .................................................................. 125
Systèmes mono-utilisateurs et systèmes multi-utilisateurs . . . . . . . . . . . . . . . . . . . . . 125
Ajouter de nouveaux utilisateurs : useradd . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126
Utiliser n’est pas administrer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128
Changer d’identité et devenir root . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128
Savoir qui l’on est . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129
En savoir un peu plus sur les utilisateurs : id, groups, finger . . . . . . . . . . . . . . . . . . . . 130
La gestion des utilisateurs sous le capot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132
Comprendre le fichier /etc/passwd . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132
Les utilisateurs système . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133
Comprendre le fichier /etc/shadow. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133
Trouver les utilisateurs physiques du système. . . . . . . . . . . . . . . . . . . . . . . . . . . 135
Vue détaillée sur l’ajout d’un utilisateur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137
Les données GECOS des utilisateurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137
Le profil par défaut des nouveaux utilisateurs . . . . . . . . . . . . . . . . . . . . . . . . . . 139
Personnaliser le profil par défaut des nouveaux utilisateurs . . . . . . . . . . . . . . . 140
Modifier le mot de passe d’un utilisateur. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141
Associer les utilisateurs aux groupes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142
Comprendre le fichier /etc/group . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142
Supprimer un utilisateur d’un groupe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143
Créer et supprimer des groupes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144
Supprimer un utilisateur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144
Vider l’eau du bain avec le bébé . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145
Administrer le système avec sudo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146

CHAPITRE 6
Gérer les droits d’accès .............................................................. 149
Qui a le droit de faire quoi ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149
Un exemple pratique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150
Comprendre les permissions dans l’affichage détaillé . . . . . . . . . . . . . . . . . . . . . . . . . 151
Rendre un fichier exécutable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152
Ajouter et retirer les droits de lecture et d’écriture . . . . . . . . . . . . . . . . . . . . . . . . . . . 153
Une autre approche : la notation numérique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154
Attribuer tous les droits à tout le monde . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154
Retirer et ajouter des droits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155
Les permissions par défaut : umask . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156
Gérer les droits d’accès aux répertoires . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158
Changer le propriétaire et le groupe d’un fichier . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161
Pas de cadeaux ! . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162
67738-Administration Linux par la pratique-INT.book Page XIII Friday, May 24, 2019 10:38 AM

Table des matières


XIII

CHAPITRE 7
Chercher une aiguille dans une botte de foin ......................... 163
Chercher l’emplacement d’un fichier dont on connaît le nom . . . . . . . . . . . . . . . . . . . 163
Limiter la recherche à certains répertoires . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164
Zone interdite . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164
Faire fi des avertissements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165
Interrompre une recherche . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166
Chercher des fichiers dont on ne connaît pas le nom exact . . . . . . . . . . . . . . . . . . . . . 166
Chercher selon d’autres critères que le nom. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167
Chercher en fonction de la taille . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167
Appliquer une commande sur les fichiers trouvés . . . . . . . . . . . . . . . . . . . . . . . . 168
Chercher par type . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168
Chercher selon les droits d’accès . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169
Cas pratique : attribuer des permissions à un ensemble de fichiers . . . . . . . . . . . . 169
Chercher du texte à l’intérieur d’un fichier . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170
Chercher du texte dans une série de fichiers . . . . . . . . . . . . . . . . . . . . . . . . . . . 172
Affiner la recherche . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174
Obtenir des informations sur son matériel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175

CHAPITRE 8
Créer et manipuler des liens ..................................................... 177
Les liens symboliques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177
Créer des liens symboliques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178
À quoi servent les liens symboliques ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179
Exemple n°1 : awk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179
Exemple n°2 : ex . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179
Exemple n°3 : gpg . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180
Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180
Lequel est le vrai ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180
Casser un lien symbolique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181
Effacer un lien symbolique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182
Les liens physiques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183
Un nom de fichier alternatif . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183
Un lien physique a la vie dure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184

CHAPITRE 9
Gérer les processus..................................................................... 185
Linux, un système multitâche . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185
Surveiller un processus : ps . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 186
Afficher les processus en cours . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187
Compter les processus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188
Envoyer un signal à un processus : kill . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188
Arrêter et relancer un processus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189
Terminer et tuer un processus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 190
S’adresser à un processus par son nom : killall . . . . . . . . . . . . . . . . . . . . . . . . . . 191
Utiliser kill ou killall ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192
Les processus dans tous leurs états . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192
67738-Administration Linux par la pratique-INT.book Page XIV Friday, May 24, 2019 10:38 AM

Administration Linux par la pratique


XIV

Un lien de parenté : pstree . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193


Massacre familial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194
Tirer à vue sur tout ce qui bouge ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195
Surveiller l’utilisation des processus de la machine : top . . . . . . . . . . . . . . . . . . . . . . . 196

CHAPITRE 10
Gérer les services........................................................................ 199
Une confusion babylonienne . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199
Qu’est-ce qu’un service ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200
Arrêter et (re)démarrer un service . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200
Recharger la configuration d’un service . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201
Activer un service au démarrage de la machine . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202
Les cibles systemd . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204
Démarrer en mode de secours . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205
Changer de cible à la volée . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206
Afficher l’état du système . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207
Définir la cible par défaut . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208
Éteindre et redémarrer la machine . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209

CHAPITRE 11
Accéder aux périphériques amovibles...................................... 211
Les fichiers de périphérique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211
La notion de montage/démontage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213
Monter manuellement un CD ou un DVD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213
Démonter le CD ou le DVD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215
Monter et démonter manuellement une clé USB . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215
Scier la branche sur laquelle on est assis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218
Éjecter un DVD ou un CD-Rom : eject . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219
Monter plusieurs périphériques en même temps . . . . . . . . . . . . . . . . . . . . . . . . . . . . 220
Obtenir des informations sur les périphériques montés . . . . . . . . . . . . . . . . . . . . . . . 220

CHAPITRE 12
Partitionner et formater un disque dur.................................... 223
Le partitionnement automatique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 223
Les tables de partitionnement MBR et GPT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 224
Identifier le type de partitionnement sur mon système . . . . . . . . . . . . . . . . . . . . 224
Le schéma de partitionnement le plus simple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 225
La partition d’échange. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 225
Les systèmes de fichiers pour la partition principale . . . . . . . . . . . . . . . . . . . . . . 225
Retour à la case départ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 226
Supprimer les partitions existantes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227
Créer la partition d’échange . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 228
Créer la partition principale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 230
État des lieux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233
Comprendre les UUID . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233
Un schéma de partitionnement un peu plus élaboré . . . . . . . . . . . . . . . . . . . . . . . . . . 234
Préparation du disque . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 235
67738-Administration Linux par la pratique-INT.book Page XV Friday, May 24, 2019 10:38 AM

Table des matières


XV

Créer la partition /boot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 235


Créer la partition d’échange . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 235
Créer la partition principale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 235
État des lieux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 236
Comprendre les étiquettes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 237
Afficher l’espace occupé et l’espace disponible . . . . . . . . . . . . . . . . . . . . . . . . . . 237
Ajouter un disque à une installation existante . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 238
Insérer et connecter le deuxième disque dur . . . . . . . . . . . . . . . . . . . . . . . . . . . 238
Ajouter un disque dans une machine virtuelle . . . . . . . . . . . . . . . . . . . . . . . . . . 239
Vérifier la prise en charge du deuxième disque . . . . . . . . . . . . . . . . . . . . . . . . . . 240
Partitionner le deuxième disque . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 241
Formater le deuxième disque . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 242
Partitionnement manuel d’un système UEFI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 245
Ajouter un disque avec une table de partitions GPT . . . . . . . . . . . . . . . . . . . . . . . . . 247
Supprimer une table de partitions GPT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 250
Formater un disque dur externe ou une clé USB . . . . . . . . . . . . . . . . . . . . . . . . . . . . 251

CHAPITRE 13
Gérer les archives compressées ................................................ 255
Les différents formats d’archivage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255
Compresser et décompresser un fichier . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 256
Compresser et décompresser un fichier avec gzip . . . . . . . . . . . . . . . . . . . . . . . . 256
Compresser et décompresser un fichier avec bzip2 . . . . . . . . . . . . . . . . . . . . . . . 257
Manipuler les archives avec tar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 258
Créer une archive avec tar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 258
Extraire les fichiers d’une archive . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 259
Combiner l’archivage et la compression . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 259
Extraire une archive compressée . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 260

CHAPITRE 14
Premiers pas sur le réseau ......................................................... 261
Une confusion babylonienne . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 261
Prérequis matériel et logiciel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 262
Le modem routeur ADSL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 262
Questions de câblage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 263
Choisir le bon type de câble . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 263
La carte Ethernet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 264
Les pilotes sous Linux. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 264
Principe de fonctionnement des réseaux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 266
Afficher la configuration des interfaces réseau . . . . . . . . . . . . . . . . . . . . . . . . . . 266
L’adresse MAC de votre carte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 267
L’adresse IP et le réseau . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 267
IPv4 et IPv6. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 267
Les adresses IP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 268
Un peu de pratique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 268
Un peu de théorie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 269
Peaufiner l’affichage des adresses IP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 270
Établir un contact avec une machine distante : ping . . . . . . . . . . . . . . . . . . . . . . 271
67738-Administration Linux par la pratique-INT.book Page XVI Friday, May 24, 2019 10:38 AM

Administration Linux par la pratique


XVI

Le routeur : un centre de tri pour paquets numériques . . . . . . . . . . . . . . . . . . . . 272


Sous les pavés numériques, la plage d’adresses IP privées . . . . . . . . . . . . . . . . . 272
Relier le public et le privé . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273
Le système de noms de domaine : l’annuaire d’Internet . . . . . . . . . . . . . . . . . . 273
Configurer une connexion à Internet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 274
Configuration dynamique : DHCP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 274
Paramétrer le serveur DHCP intégré dans le modem routeur . . . . . . . . . . . . . . 275
La configuration DHCP en détail . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 276
À quoi sert NetworkManager ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 278
Configuration statique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 279
Renseigner les serveurs DNS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 280
Diagnostiquer le réseau en cas de panne . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 281

CHAPITRE 15
Installer et gérer des logiciels ................................................... 285
Petit aperçu pour les utilisateurs de Windows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 285
Installer des logiciels depuis le code source . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 286
Atelier pratique n° 1 : Joe’s Own Editor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 286
Atelier pratique n° 2 : TCPdump . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 289
Inconvénients d’une installation depuis le code source . . . . . . . . . . . . . . . . . . . . 291
Anatomie d’un paquet RPM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 293
Installer et gérer des paquets logiciels avec RPM . . . . . . . . . . . . . . . . . . . . . . . . . . . . 294
Trouver des paquets RPM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 295
Installer un paquet RPM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 295
Supprimer un paquet RPM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 295
Mode bavard ou laconique ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 296
Gérer les dépendances entre les paquets RPM . . . . . . . . . . . . . . . . . . . . . . . . . . 296
Mettre à jour des paquets avec RPM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 298
La suppression des paquets RPM revisitée . . . . . . . . . . . . . . . . . . . . . . . . . . . . 300
Obtenir des informations sur les paquets RPM . . . . . . . . . . . . . . . . . . . . . . . . . 300
Sur les paquets installés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 300
Sur des paquets non installés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 303
Avantages et inconvénients d’une installation avec RPM . . . . . . . . . . . . . . . . . . 303
Installer et gérer des paquets logiciels avec Yum . . . . . . . . . . . . . . . . . . . . . . . . . . . . 304
Installer un paquet avec Yum . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 304
Supprimer des paquets avec Yum . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 307
Gérer les dépendances orphelines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 308
Effectuer une mise à jour . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 308
Afficher les listes de paquets par états . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 310
Gérer les groupes de paquets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 311
Obtenir des informations sur les paquets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 313
Rechercher un paquet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 314
Configuration des dépôts pour Yum . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 315
Où est-ce que ça se configure ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 315
Les dépôts officiels de la distribution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 315
CentOS, le parent pauvre des distributions ? . . . . . . . . . . . . . . . . . . . . . . . . . . . 317
Paquets à gogo ! . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 317
Protéger le système de base avec Yum-Priorities . . . . . . . . . . . . . . . . . . . . . . . . 317
Configurer les dépôts de paquets officiels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 318
67738-Administration Linux par la pratique-INT.book Page XVII Friday, May 24, 2019 10:38 AM

Table des matières


XVII

Configurer le dépôt CR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 318


Configurer le dépôt tiers EPEL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 319
Configurer le dépôt tiers ELRepo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 320
Installer un paquet RPM téléchargé avec Yum . . . . . . . . . . . . . . . . . . . . . . . . . 321

CHAPITRE 16
Manipuler le chargeur de démarrage et le noyau................... 325
Le chargeur de démarrage GRUB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 325
Comprendre la configuration par défaut . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 326
Les mises à jour et le noyau . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 326
Les fichiers de configuration de GRUB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 327
Afficher les messages de démarrage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 329
Modifier la résolution de la console . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 329
Faire le ménage dans les kernels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 330
Installer un kernel récent. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 332

CHAPITRE 17
Installer et gérer un RAID logiciel............................................. 337
La fiabilité toute relative des disques durs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 337
Qu’est-ce que le RAID ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 338
RAID matériel ou RAID logiciel ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 338
Les niveaux de RAID . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 339
Le niveau RAID 0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 339
Le niveau RAID 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 339
Le niveau RAID 10 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 339
Le niveau RAID 5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 340
Le niveau RAID 6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 340
Installation de CentOS 7 en RAID 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 340
Simuler une panne . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 344
Simuler une panne plus conséquente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 347
Installation de CentOS 7 en RAID 6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 349

CHAPITRE 18
Gérer les volumes logiques avec LVM ...................................... 355
Concepts de base . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 355
LVM dans la configuration par défaut de CentOS . . . . . . . . . . . . . . . . . . . . . . . . . . 356
Une installation personnalisée basée sur LVM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 357
Redimensionnement à chaud de la partition principale . . . . . . . . . . . . . . . . . . . . . . . 361

CHAPITRE 19
Gérer les logs du système.......................................................... 367
Un peu de pratique avant la théorie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 367
Les logs au quotidien . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 368
Aperçu sur l’évolution des logs sous Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 369
Gérer le journal de systemd . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 369
Rendre le journal persistant . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 370
Définir les permissions nécessaires pour lire les logs . . . . . . . . . . . . . . . . . . . . . . 371
67738-Administration Linux par la pratique-INT.book Page XVIII Friday, May 24, 2019 10:38 AM

Administration Linux par la pratique


XVIII

Quelques options pratiques au quotidien . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 371


La configuration des logs avec rsyslog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 373
La rotation des logs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 374

ANNEXE A
Installer un poste de travail Linux ............................................ 377
Le choix de la distribution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 377
Confectionner les supports d’installation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 378
Réinitialiser le disque dur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 379
Installer OpenSUSE Leap 15.0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 379
Démarrer l’installation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 379
Partitionner le disque dur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 380
Terminer la configuration des paramètres . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 382
Redémarrage initial. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 384

Index ............................................................................................ 387


67738-Administration Linux par la pratique-INT.book Page 1 Friday, May 24, 2019 10:38 AM

1
Si Linux m’était conté

Le 16 septembre 2004, Linux est sorti tout ficelé du crâne de son inventeur Mark Shuttleworth,
revêtu de son armure et prêt à conquérir le monde.
Je plaisante.

Au commencement était Unix


Linux ? Unix ? Logiciels libres ? Faisons donc un petit voyage dans le temps pour y voir un
peu plus clair. Pas forcément dans la préhistoire, car les tables à calcul de l’ère babylonienne
datant de plus de quatre mille ans ne sont que d’un intérêt limité pour nous. Arrêtons-nous
plutôt vers le milieu du XXe siècle et situons là le début de « notre » préhistoire.
Les premiers ordinateurs construits à l’époque de la guerre froide étaient de véritables
monstres bibliques. Leur force de calcul était constituée de dizaines de milliers de tubes élec-
troniques ou « lampes ». Ils occupaient l’équivalent d’un terrain de foot ou d’un hangar,
consommaient autant d’électricité qu’un village entier et dégageaient plus de chaleur qu’une
mare de geysers en activité.

CITATION Retour vers le futur


« Je crois qu’il y a un marché mondial pour à peu près cinq ordinateurs. »
Thomas Watson, président d’IBM, 1958
67738-Administration Linux par la pratique-INT.book Page 2 Friday, May 24, 2019 10:38 AM

Administration Linux par la pratique


2

Vers le début des années 1960, la taille des machines a pu être réduite de façon considérable
avec l’avènement des semi-conducteurs. Les tubes électroniques ont été successivement rem-
placés par des transistors, puis par des circuits intégrés. Cette nouvelle génération de
machines occupait à peine l’espace d’une collection d’armoires normandes. Malheureuse-
ment, toutes souffraient toujours du même défaut majeur.
Chacun de ces ordinateurs disposait en effet de son propre système d’exploitation, conçu en
même temps que la machine et taillé sur mesure par la force des choses. Un ingénieur qui
avait appris à se servir de l’une d’entre elles et qui souhaitait travailler sur un autre type de
machine était contraint de jeter par-dessus bord tout son savoir-faire pour revenir à la case
départ et tout réapprendre depuis le début. Si seulement toutes ces machines pouvaient parler
le même langage... Il fallait trouver une solution.

B.A.-BA Système d’exploitation


Un système d’exploitation ou OS (Operating System) est un ensemble de logiciels qui gère les fonctions
les plus élémentaires d’une machine. D’une part, il contrôle les périphériques entrée/sortie comme le cla-
vier et l’écran, ce qui permet à un humain de communiquer avec l’ordinateur. D’autre part, il s’occupe de
la répartition intelligente des ressources de la machine comme le processeur et la mémoire.
Une machine dépourvue de système d’exploitation ne sera donc même pas capable de démarrer un pro-
gramme. Sans système installé, même un PC moderne vous servira tout au plus à caler la porte de la ter-
rasse un jour de mistral.

Le projet Multics (Multiplexed Information and Computing Service) a été initié en 1964 pour
apporter précisément cette solution. L’ambition de Multics consistait à fournir un système
d’exploitation portable, c’est-à-dire capable d’être porté sur la plupart des machines existantes ;
ambition pharaonique car, si le projet réussissait, il mettrait fin à la confusion babylonienne des
systèmes d’exploitation.
Multics n’a connu qu’un succès modeste, comme cela arrive parfois avec les projets pharao-
niques. Hormis quelques thésards en informatique et une poignée de vétérans, l’humanité a
même fini par l’oublier. Ce qui nous est resté de Multics, c’est une série de bonnes idées, mais
surtout sa descendance totalement imprévue : un rejeton qui n’était pas au programme, mais
qui a fini par connaître un succès incroyable.
1969, l’année où l’astronaute Neil Armstrong se promène sur la Lune, deux ingénieurs des
laboratoires Bell1, Dennis Ritchie et Ken Thompson, décident d’écrire un système d’exploi-
tation pour l’ordinateur dont ils disposent plus ou moins librement dans leur bureau. Cette
machine, un DEC PDP-7, est considérée comme un « mini-ordinateur » à l’époque. Pour
avoir une vague idée de la taille de l’engin, imaginez une batterie de quatre ou cinq réfrigéra-
teurs de taille familiale posés les uns à côté des autres. Ritchie et Thompson se servent des
bouts de code du projet Multics, mais leur ambition est bien plus modeste, pour ne pas dire
purement ludique. Ce qui les motive dans l’immédiat, c’est de disposer d’une machine suffi-

1. l’équivalent de France Télécom, aux États-Unis


67738-Administration Linux par la pratique-INT.book Page 3 Friday, May 24, 2019 10:38 AM

Si Linux m’était conté


3
CHAPITRE 1

samment fonctionnelle pour jouer à un jeu tout à fait dans l’air du temps : Space Travel, un jeu
interactif en mode texte, où il s’agit de poser une capsule spatiale sur la Lune.
Figure 1–1
Ken Thompson et Dennis Ritchie,
les fondateurs d’Unix.

Leur projet est un succès, comme cela arrive souvent lorsqu’on fait quelque chose uniquement
pour s’amuser et que l’ambition ne vient pas gâcher le plaisir. Étant donné que leur nouveau
système tourne sur une seule machine, celle qu’ils ont à portée de main, ils s’amusent à faire
un jeu de mots sur le système qui les a inspirés et décident de le baptiser « Unics ».

ÉTYMOLOGIE Le « X » de Unix
Le nom « Unics » est contracté par la suite en « Unix ». Cette consonne finale sera caractéristique d’un
certain nombre de variantes, dérivées et clones d’Unix : XENIX, AIX, HP-UX, Ultrix, IRIX, Minix... sans
oublier Linux et Mac OS X.

La fin des années 1960, ce n’est pas seulement la conquête spatiale, mais également la révolu-
tion de mai 1968, Woodstock, le flower power et la culture hippie. Les campus des universités
et les entreprises pullulent de barbus à sandales qui ont une idée en tête : contribuer au code
d’Unix en vue de l’améliorer. Certes, la propriété intellectuelle et les brevets existent déjà,
mais cela n’empêche personne de vivre pour autant. Les hackers – au sens noble du terme –
échangent entre eux leurs meilleures idées et les bouts de code source qui vont avec, aussi
naturellement que leurs grands-mères échangent entre elles leurs meilleures recettes de cui-
sine. Les entreprises et les facultés ne payent pas de frais de licence pour utiliser Unix et,
lorsqu’elles réclament le code source à Ken Thompson, celui-ci a l’habitude d’ajouter un petit
mot au colis de bandes magnétiques et de disquettes : « Love, Ken ».
67738-Administration Linux par la pratique-INT.book Page 4 Friday, May 24, 2019 10:38 AM

Administration Linux par la pratique


4

CULTURE Code source et programme exécutable


Les sources d’un programme, c’est l’ensemble des fichiers qui contiennent du code et que l’on compile
pour obtenir un programme exécutable. Lorsqu’on distribue un programme sous forme binaire, il est prêt
à l’emploi, mais on ne peut pas le modifier. De façon analogue, une recette de tarte aux pommes ainsi
que tous les ingrédients nécessaires comme la farine, les œufs, les pommes, la cannelle et le sucre per-
mettent de cuisiner une tarte aux pommes. Une fois qu’elle est sortie du four, il est difficile de revenir en
arrière pour changer les ingrédients de base et la recette.

L’AIR DU TEMPS L’informatique avant Microsoft et Apple


Imaginez-vous en 1970 : Microsoft et Apple n’existent pas encore et personne n’aurait l’idée d’associer des
mots de tous les jours comme « windows » ou « apple » à de l’informatique. Vous jetez un coup d’œil dans
votre boule de cristal. Vous apercevez le futur pas trop lointain, quelques décennies plus tard. Vous annon-
cez solennellement qu’un jour viendra où les systèmes et les applications se vendront sans le code source
qui va avec. Dans des cartons au graphisme léché. Des boîtes remplies majoritairement de vide comme les
cornflakes. Ornées de fenêtres multicolores ou d’une pomme stylisée. Le prix sera conséquent, les gens
devront acheter les boîtes avec le matériel et les ventes feront de vous l’homme le plus riche de la terre.
On vous prend probablement pour un fou.

Figure 1–2 À quoi ressemblait l’informatique en 1970, avant Microsoft et Apple ?

Durant les années 1970 et le début des années 1980, les universités utilisent à peu près exclu-
sivement Unix. Les entreprises décident d’emboîter le pas et l’adoptent également à grande
échelle. Après tout, les étudiants d’aujourd’hui font les ingénieurs de demain. Technique-
ment, Unix est à la pointe des systèmes d’exploitation. C’est un vrai système multitâche et
multi-utilisateur, robuste et transparent. Il définit clairement les droits d’accès aux fichiers, il
sépare les processus bien proprement et il est conçu dès le départ pour fonctionner en réseau.
Petit à petit, Unix est en bonne voie de faire tourner les ordinateurs du monde entier.
L’âge d’or d’Unix connaît une fin abrupte et quelque peu absurde en 1983. Dans le cadre de la
lutte antitrust du gouvernement de Ronald Reagan, les laboratoires Bell sont séparés de leur
maison mère, l’entreprise de télécommunications AT & T (American Telephone and Tele-
graph). Dans la foulée des actions judiciaires qui s’ensuivent, un décret qui empêchait la com-
mercialisation d’Unix jusque-là est rendu caduc. AT & T décide de sauter dans la brèche
ouverte par la nouvelle législation et de s’approprier le système Unix et tout le code qui va
67738-Administration Linux par la pratique-INT.book Page 5 Friday, May 24, 2019 10:38 AM

Si Linux m’était conté


5
CHAPITRE 1

avec, en faisant fi des nombreuses contributions externes. L’émoi causé par cette mainmise
– qui a failli sonner le glas du système – est considérable dans la communauté des hackers.
Les étudiants qui ont contribué au code d’Unix s’estiment doublement lésés. D’une part,
AT & T « oublie » de les rémunérer alors que les licences sont monnayées au prix fort.
D’autre part, ils n’ont plus accès à leur propre code ou – situation plus ubuesque encore –
n’ont plus le droit de l’utiliser pour de sombres raisons de propriété intellectuelle.
Certes, AT & T essaie de calmer le jeu en annonçant que les universités pourront désormais
bénéficier de tarifs préférentiels pour les licences. Il n’empêche que l’accès au code source est
dorénavant restreint. Du jour au lendemain, Unix est devenu un système d’exploitation
rigoureusement propriétaire et commercial.

MARKETING Les systèmes propriétaires dans l’éducation


Quelques décennies plus tard, le tarif préférentiel pour les élèves et les étudiants demeure une stratégie
de fidélisation populaire auprès des éditeurs de systèmes et de logiciels propriétaires.

Richard Stallman et le projet GNU


La commercialisation d’Unix marque l’avènement d’un véritable âge de fer en informatique.
La « culture hacker » des premières années cède la place à une logique restrictive, commerciale
et propriétaire. Cette transition ne s’est pourtant pas faite en un jour. Elle a été marquée par
une série de signes avant-coureurs.
Figure 1–3
Richard Stallman,
l’initiateur du projet GNU.

Revenons un peu en arrière, en 1980, et rendons visite à Richard Stallman dans son labora-
toire d’Intelligence artificielle au Massachusets Institute of Technology (MIT). Richard est
67738-Administration Linux par la pratique-INT.book Page 6 Friday, May 24, 2019 10:38 AM

Administration Linux par la pratique


6

confronté à un problème qu’il n’arrive pas à résoudre. La nouvelle imprimante laser du labo-
ratoire, une Xerox 9700, se bloque régulièrement et refuse d’imprimer suite à des erreurs de
bourrage papier. En bon hacker qui se respecte, Richard aime relever les défis techniques et le
dysfonctionnement d’un périphérique tombe dans cette catégorie.

ENFER Les imprimantes


Les imprimantes récalcitrantes nous viennent droit de l’enfer. Lisez la BD géniale de Matthew Inman à ce
sujet : Why I believe printers were sent from hell to make us miserable.
B http://theoatmeal.com/comics/printers

La précédente imprimante, une Xerox XGP, avait connu exactement le même problème de
bourrage papier et Richard l’avait résolu comme un informaticien de l’époque pouvait le
faire : il avait réclamé le code source du pilote à Xerox et s’était plongé dans sa lecture. Après
avoir identifié l’erreur, il lui avait suffi de modifier et recompiler le code pour que l’impri-
mante fonctionne correctement.

GLOSSAIRE Pilote/driver
Un pilote de périphérique ou driver est le code qui permet au système d’exploitation de communiquer
avec le périphérique en question.

Or, le problème auquel Richard se heurte cette fois-ci n’est pas d’ordre technique. Le fabri-
cant Xerox vient en effet d’opposer un refus à sa demande, estimant que le code source est
désormais un secret de fabrication. Richard ne peut donc pas y accéder, encore moins l’étu-
dier ou le corriger. En revanche, Xerox l’invite à « envoyer un rapport d’erreurs », afin que les
ingénieurs de l’entreprise étudient le problème à sa place et mettent à disposition une mise à
jour qui corrigera éventuellement le dysfonctionnement.

BUG Le fin mot de l’histoire


Richard Stallman a effectivement soumis le rapport d’erreurs suggéré par Xerox. Il n’a jamais reçu de
réponse.

Richard sent naître en lui un mélange de colère et d’impuissance. Les constructeurs de maté-
riel informatique tendent visiblement à ne plus livrer que des pilotes au format binaire, sans le
code source qui va avec. L’utilisation de licences logicielles restrictives s’impose manifeste-
ment comme une nouvelle norme. C’est une véritable gangrène qui touche le monde de
l’informatique et le pourrit de l’intérieur. Il faut donc trouver une solution, une force nouvelle
qui puisse contrecarrer cette tendance funeste.
Le 27 septembre 1983, quelques mois après la mainmise d’AT & T sur Unix, Richard
Stallman poste un message sur Usenet pour annoncer la naissance du projet GNU, un sys-
tème d’exploitation libre compatible avec Unix.
67738-Administration Linux par la pratique-INT.book Page 7 Friday, May 24, 2019 10:38 AM

Si Linux m’était conté


7
CHAPITRE 1

BIBLIOGRAPHIE Richard Stallman et la révolution du logiciel libre


Pour en savoir plus sur la vie et l’œuvre de Richard Stallman, lisez sa biographie autorisée publiée chez
Eyrolles.
R Richard Stallman et la révolution du logiciel libre, ISBN : 978-2-212-12609-9

CULTURE HACKER Acronyme récursif


GNU signifie GNU’s Not Unix, c’est-à-dire « GNU n’est pas Unix ». C’est un acronyme récursif, l’équivalent
linguistique d’un chat qui se mord la queue. L’acronymie récursive est assez répandue en informatique.

Figure 1–4 Le logo du projet GNU.

Pour Richard comme pour beaucoup d’autres, Unix reste le système d’exploitation de réfé-
rence, pour toutes les raisons évoquées plus haut. Son seul défaut, c’est qu’il n’est pas libre.
L’ambition du projet GNU consiste ni plus ni moins qu’à réinventer la roue et proposer un
système d’exploitation libre 100 % compatible Unix mais qui, justement, n’est pas Unix, c’est-
à-dire qu’il n’en contient aucune ligne de code.

URL Le projet GNU


B http://www.gnu.org

Un système d’exploitation comme Unix n’est pas un bloc monolithique. Il est composé d’une
multitude de petits programmes, dont chacun s’acquitte d’une tâche bien définie. Cette
modularité va considérablement faciliter la tâche au projet GNU, qui se pose comme but
concret de remplacer l’un après l’autre chacun des composants d’Unix par un équivalent libre.
C’est donc un projet d’envergure, une vaste mosaïque qu’il s’agit de compléter avec beaucoup
de patience, morceau par morceau. Richard Stallman lui-même démissionne de son poste au
MIT en janvier 1984 pour se consacrer entièrement au projet GNU et développer quelques
logiciels significatifs : un compilateur, un débogueur, une collection d’outils basiques et l’édi-
teur de texte Emacs.
Richard comprend très vite que le projet GNU a besoin d’une infrastructure légale pour assurer
sa pérennité et lui éviter d’être cannibalisé par les éditeurs de logiciels propriétaires. En 1985, il
crée la FSF (Free Software Foundation), une organisation à but non lucratif pour la défense et la
67738-Administration Linux par la pratique-INT.book Page 8 Friday, May 24, 2019 10:38 AM

Administration Linux par la pratique


8

promotion du logiciel libre. Cette même année, il publie le Manifeste GNU, un texte fondateur
qui porte aussi bien sur l’aspect technique et social du projet que sur sa philosophie.

URL La Free Software Foundation


B https://www.fsf.org

Le terme de « logiciel libre » est également clarifié ; en effet, le terme anglais free comporte une
ambiguïté et il s’agit de distinguer free as in speech (libre, dans le sens de « liberté de la parole ») et
free as in beer (gratuit, dans le sens de « bière à volonté »). Selon la définition proposée par
Richard, un logiciel est libre s’il respecte les quatre conditions fondamentales suivantes :
• liberté d’utiliser le logiciel ;
• liberté de le copier ;
• liberté d’en étudier le fonctionnement ;
• liberté de le modifier et de redistribuer cette version modifiée.
Une seule obligation permet de préserver ces quatre libertés : toute personne qui souhaite
apporter des modifications au code source d’un logiciel – en vue de l’améliorer ou d’en modi-
fier le comportement – est tenue de publier ces modifications sous les mêmes conditions, en
respectant à son tour les quatre libertés fondamentales. C’est l’application du principe du
copyleft (un jeu de mots sur copyright, « droit d’auteur ») qui évite notamment l’appropriation
du code source libre par une entreprise. Ce principe est entériné dans la licence publique
générale GNU (ou licence GPL), que Stallman publie en 1989.

CULTURE La viralité de la GPL


Un logiciel libre publié sous licence GPL restera libre indépendamment de toutes les modifications qu’il
subira. Cette préservation des quatre libertés fondamentales est garantie par le caractère viral de la GPL.
Dans un entretien avec le Chicago Sun-Times le 1er juin 2001, le PDG de Microsoft, Steve Ballmer, asso-
ciera la GPL à « un cancer qui s’accroche à la propriété intellectuelle ». (sic).

Durant la seconde moitié des années 1980, le projet GNU progresse lentement, mais sûre-
ment. En 1990, l’ensemble des composants est réalisé et il ne manque plus que le noyau du
système. Or, le noyau – ou kernel – constitue également la partie la plus importante du code,
la pièce maîtresse, celle qui se situe le plus près du matériel et qui contrôle les fonctions élé-
mentaires comme la gestion de la mémoire et des processus, le contrôle des
périphériques, etc.
Pour compléter son système d’exploitation libre, la FSF (Free Software Foundation) lance
Hurd, un projet de noyau libre pour les systèmes Unix en général et GNU en particulier.
Malheureusement, le développement s’avère long et fastidieux. Le projet va battre de l’aile
dès les débuts et Hurd fera progressivement sa descente vers les limbes de ces grands projets
informatiques voués à rester éternellement en chantier.
67738-Administration Linux par la pratique-INT.book Page 9 Friday, May 24, 2019 10:38 AM

Si Linux m’était conté


9
CHAPITRE 1

Linus Torvalds et le noyau Linux


Début janvier 1991, de l’autre côté de l’Atlantique, en Finlande, le jeune étudiant
Linus Torvalds décide d’investir dans du matériel informatique. Il n’hésite pas à s’endetter sur
trois ans pour acheter ce qui se fait de mieux à l’époque en matière d’ordinateur personnel :
un IBM PC 30 386 flambant neuf, équipé d’un processeur 32-bits.
Il commande un jeu de disquettes d’installation du système Minix, une variante pédagogique
d’Unix développée par le professeur Andrew Tanenbaum, qui lui servira pour les cours sur
l’architecture des systèmes d’exploitation qu’il suit à l’université d’Helsinki. Tanenbaum est
l’auteur de l’ouvrage de référence en la matière, Operating Systems Design and Implementation,
un pavé de plus de sept cents pages. Selon ses propres dires, Linus Torvalds passe les premiers
mois de l’année 1991 à faire deux choses principalement :
1 Rien.
2 Lire Operating Systems Design and Implementation.

L’AIR DU TEMPS Les ordinateurs personnels


Si vous êtes né vers la fin des années 1960 ou avant, vous vous souvenez peut-être de cette époque glo-
rieuse où les micro-ordinateurs ont fait leur apparition dans les foyers. Les machines 8-bits de la première
génération – comme l’Apple II, le TRS-80 de Radio Shack, le Commodore VC-20 et le Commodore 64,
le ZX-81 et le ZX Spectrum de Sinclair – étaient généralement livrées avec un système d’exploitation
rudimentaire – néanmoins propriétaire – comprenant un interpréteur BASIC. Comme Linus Torvalds, j’ai
fait mes premiers pas en programmation au début des années 1980, sur un VC-20, une machine sans
disque dur, dotée de 3,5 kilo-octets (!) de RAM et d’un lecteur spécial qui utilisait les cassettes audio bon
marché comme bandes magnétiques.
Par la suite et jusqu’à ce jour, les ordinateurs sont majoritairement compatibles PC, c’est-à-dire issus en
ligne directe de l’IBM PC (Personal Computer) de 1981. Au début des années 1990, ces machines sont à
peu près exclusivement équipées du système d’exploitation propriétaire et commercial MS-DOS (Micro-
soft Disk Operating System), livré sous forme d’une série de disquettes souples (floppy, en anglais).
Quant aux ordinateurs de la marque Apple, ils tournent sous Mac OS depuis le lancement du Macintosh,
le fameux petit cube beige présenté au public en 1984. Mac OS est un système d’exploitation proprié-
taire et commercial spécifiquement développé par Apple pour son matériel.
Au début des années 1990, l’installation d’un Unix commercial sur un ordinateur personnel reste hors de
portée pour les particuliers, pour deux raisons. D’une part, le prix d’une licence Unix est tout bonnement
prohibitif, de l’ordre de quelques milliers de dollars. D’autre part, Unix est relativement gourmand en res-
sources et son utilisation nécessite l’acquisition d’une station de travail puissante et tout aussi onéreuse.

Au bout d’un mois d’attente, Linus Torvalds finit par trouver le jeu de disquettes Minix dans
sa boîte aux lettres, ce qui lui permet de remplacer le système MS-DOS livré en version
réduite avec son matériel par quelque chose qui ressemble à Unix. Malgré sa visée pédago-
gique, Minix reste un système Unix sous le capot et son code source est disponible. Linus va
passer les mois suivants à se faire les dents sur son nouveau système et à l’explorer dans ses
moindres recoins pour en découvrir les possibilités.
67738-Administration Linux par la pratique-INT.book Page 10 Friday, May 24, 2019 10:38 AM

Administration Linux par la pratique


10

URL Minix
Le système d’exploitation Minix (Minimal Unix) est toujours utilisé à des fins pédagogiques. Il en est
actuellement à sa version 3.3.0.
B https://www.minix3.org/

Les limitations de Minix ne tardent pas à frustrer Linus, notamment l’émulateur de terminal qui
est censé gérer la connexion à distance à l’ordinateur de l’université. Les hivers sont rudes en Fin-
lande et, lorsqu’un étudiant en informatique veut éviter de sortir de chez lui, la possibilité de se
connecter à distance pour travailler devient une nécessité. Certes, l’émulateur de terminal inclus
dans Minix permet à Linus de lire ses courriels et de poster des messages sur Usenet, mais le télé-
chargement de fichiers à distance ne fonctionne pas. Ajoutons à cela le fait que l’architecture 16-
bits de Minix ne tire pas pleinement profit des ressources de son processeur. Enfin, même si le
code source est disponible, le système n’est pas vraiment libre, au vu des restrictions imposées par
Andrew Tanenbaum quant à la modification et à la redistribution du code.

CULTURE INTERNET Usenet


Usenet est un système en réseau de forums – ou newsgroups – qui a existé bien avant le World Wide
Web. Même s’il est rendu obsolète par les forums sur le Web, beaucoup de gens s’en servent encore. Use-
net s’utilise avec un lecteur de nouvelles graphiques comme Pan, KNode ou Thunderbird, ou avec un
client en ligne de commandes comme tin ou slrn. Alternativement, les groupes Google permettent d’y
accéder à l’aide d’un simple navigateur web.
B https://groups.google.com

Linus a bientôt terminé la lecture d’Operating Systems Design and Implementation. Il sent que
les cours sur Minix ne lui apportent plus grand-chose. Il décide donc de les sécher et de
mettre à profit le temps ainsi gagné pour coder son propre émulateur de terminal. Il part lit-
téralement de zéro, c’est-à-dire qu’il écrit son code directement au niveau du matériel, sans
passer par Minix.
Au bout de quelques semaines de travail acharné, il réussit à se connecter à l’ordinateur de
l’université pour lire ses courriels et poster dans les newsgroups. Il résout le problème du char-
gement des fichiers distants en écrivant un pilote pour son disque dur et un autre pour le sys-
tème de fichiers utilisé par Minix. Il ajoute d’autres fonctionnalités au gré de son inspiration,
dans l’effervescence de la création. Petit à petit, son émulateur de terminal se transforme en
véritable petit système d’exploitation à part entière.
Le 3 juillet, Linus poste un message sur news://comp.os.minix pour se renseigner sur les stan-
dards POSIX. Le message en lui-même ne compte que quatre lignes et la question semble
anodine en apparence, mais elle attire l’attention des lecteurs du groupe. Si ce Linus Torvalds
a besoin des standards POSIX, c’est qu’il doit vraisemblablement concocter son propre sys-
tème d’exploitation. Ari Lemmke, l’administrateur système de l’université, lui crée spontané-
ment un compte sur le serveur FTP pour lui permettre de ranger les fichiers de son nouveau
système et pour que le public y ait accès.
67738-Administration Linux par la pratique-INT.book Page 11 Friday, May 24, 2019 10:38 AM

Si Linux m’était conté


11
CHAPITRE 1

GLOSSAIRE POSIX
POSIX désigne la famille des standards valables pour les systèmes d’exploitation Unix. L’abréviation
signifie Portable Operating System Interface et le « X » final désigne l’héritage Unix.

Le 25 août 1991, Linus Torvalds poste un message désormais célèbre sur news://comp.os.minix.
J’essaie de le traduire aussi fidèlement que possible :

De : torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)


Groupe : comp.os.minix
Sujet : Qu’est-ce que vous aimeriez bien voir dans Minix ?
Date : 25 Août 91

Salut à tous les utilisateurs de Minix -

Je construis un système d’exploitation (libre) pour les clones 386(486)AT (juste pour
le fun, rien de gros et pro genre gnu). C’est en train de mijoter depuis avril et ça
commence à être prêt. J’aimerais avoir des retours sur ce que les gens aiment/
n’aiment pas dans Minix, vu que mon OS y ressemble plus ou moins (même organisation
physique du système de fichiers [pour des raisons pratiques] entre autres choses).

Pour l’instant, j’ai porté bash(1.08) et gcc(1.40) ; ça a l’air de marcher. Ce qui


signifie que j’aurai quelque chose d’utilisable d’ici quelques mois et j’aimerais
savoir ce que les gens voudraient comme fonctionnalités. Toutes les suggestions sont
les bienvenues, mais je ne promets pas de les implémenter :-)

Linus (torvalds@kruuna.helsinki.fi)

PS. Oui – il est débarrassé de tout code Minix et il a un système de fichiers


multithread. Il n’est PAS portable et il ne supportera probablement jamais autre
chose que les disques durs AT, étant donné que c’est tout ce que j’ai :-(

Quelques semaines plus tard, le 17 septembre 1991, Linus décide de publier la version 0.01
de son système sur le serveur FTP de l’université. Il choisit le nom de Freax, une contraction
de free (libre/gratuit), de freak (obsédé) et du « X » final caractéristique des Unix.
Ari Lemmke n’apprécie pas du tout ce nom et décide de son propre chef de nommer le réper-
toire de téléchargement /pub/OS/Linux.
Linus n’envoie pas d’annonce officielle pour la version 0.01 et se contente d’en informer
quelques amis et collègues par courriel. En revanche, la publication de la version 0.02 est
annoncée solennellement sur news://comp.os.minix et beaucoup d’utilisateurs de Linux consi-
dèrent que le message correspondant marque la « véritable » naissance de Linux :
Dans le contexte de l’époque, ce message est un véritable pavé dans la mare. Voilà quelqu’un
qui a réussi à faire tourner un « vrai » Unix sur son ordinateur personnel. Un Unix libre de
surcroît, avec son propre noyau libre et les outils GNU qui vont avec : le compilateur GCC,
l’interpréteur de commandes Bash, l’éditeur de flux sed, etc.
Cette fois-ci, les contraintes matérielles et les lacunes du projet constituent juste autant de
défis à surmonter. Les réactions de la communauté ne tardent pas à venir et elles sont aussi
67738-Administration Linux par la pratique-INT.book Page 12 Friday, May 24, 2019 10:38 AM

Administration Linux par la pratique


12

De : torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)


Groupe : comp.os.minix
Sujet : Sources d’un noyau libre de type Minix pour 386-AT
Date : 5 octobre 91

Vous regrettez le bon vieux temps de Minix-1.1, lorsque les hommes étaient des hommes
et écrivaient eux-mêmes les pilotes pour leur matériel ? Vous n’avez pas de projet
intéressant en cours et vous crevez d’envie de mettre les mains dans le cambouis d’un
OS que vous pouvez adapter à vos besoins ? Ça vous agace quand tout marche bien sous
Minix ? Finies les nuits blanches pour faire fonctionner un petit logiciel bien
pratique ? Alors ce message est sûrement pour vous.

Comme je l’ai dit il y a un mois (?), je travaille en ce moment sur une version libre
d’un minixoïde pour les machines de type AT-386. J’en suis à un stade où c’est même
utilisable (ou pas, ça dépend de ce que vous voulez) et je suis prêt à distribuer les
sources à plus grande échelle. C’est juste la version 0.02 (+1 [très petit] patch
déjà), mais j’ai réussi à faire tourner bash/gcc/gnu-make/gnu-sed/compress etc. avec.

Les sources de mon petit projet sont disponibles à nic.funet.fi (128.214.6.100) dans
le répertoire /pub/OS/Linux. Ce répertoire contient également un fichier README et
une poignée de binaires pour travailler sous linux (bash, update et gcc, que demander
de plus :-)). Les sources complètes du noyau sont fournies, vu qu’aucune ligne de
code Minix n’a été utilisée. Les sources des bibliothèques ne sont que partiellement
libres, elles ne peuvent donc pas être redistribuées pour le moment. Le système peut
être compilé tel quel et il est censé fonctionner. Heh. Les sources des binaires
(bash et gcc) sont disponibles au même endroit, dans /pub/gnu.

ALERTE ! AVERTISSEMENT ! ATTENTION ! Ces sources ont tout de même besoin de minix-386
pour être compilées (et gcc-1.40, peut-être même 1.37.1, pas testé) et il vous faut
Minix pour le configurer si vous voulez le faire tourner, donc ce n’est pas encore un
système indépendant pour ceux qui n’auraient pas Minix. J’y travaille. Il vous faut
également avoir l’esprit bidouilleur pour le configurer (?), donc ceux qui cherchent
une alternative à minix-386, passez votre chemin. Pour l’instant, ça s’adresse aux
bidouilleurs qui s’intéressent aux systèmes d’exploitation et aux 386 avec un accès à
Minix.

Le système a besoin d'un disque dur compatible AT (l’IDE c’est très bien) et EGA/VGA.
Si vous êtes toujours intéressé, procurez-vous le README/RELNOTES sur le ftp et/ou
envoyez-moi un mail pour des infos supplémentaires.

Je vous entends déjà (enfin, presque) vous demander : "Pourquoi?". Hurd va sortir
d’ici un an (ou deux, ou dans un mois, qui sait) et j’ai déjà Minix. C’est un système
fait par un bidouilleur pour les bidouilleurs. Je me suis bien amusé à l’écrire et ça
fera peut-être plaisir à quelqu’un d’y jeter un coup d’œil et même de l’adapter à ses
propres besoins. Il est suffisamment petit pour qu’on puisse le comprendre,
l’utiliser et le modifier. J’attends les commentaires que vous pourrez y apporter.

[...]

Linus
67738-Administration Linux par la pratique-INT.book Page 13 Friday, May 24, 2019 10:38 AM

Si Linux m’était conté


13
CHAPITRE 1

enthousiastes que nombreuses. C’est une véritable avalanche que Linus a déclenchée. Les
hackers du monde entier lui envoient une foule de suggestions et de demandes, mais égale-
ment des rapports de bogues.

CULTURE Le bogue informatique


Un bug (ou bogue dans la version francisée), c’est une erreur de conception dans un logiciel, qui entraîne
son dysfonctionnement. Le mot s’explique par le dysfonctionnement historique d’un des premiers ordina-
teurs électromécaniques, dû à un insecte (bug) coincé dans un relais.

Durant les mois à venir, Linus va peaufiner le code de son système en interaction constante
avec la communauté. Celle-ci se montre d’ailleurs reconnaissante en organisant spontané-
ment une collecte grâce à laquelle Linus s’acquittera des mensualités restantes pour sa
machine de développement. Fin 1991, il décide d’aller voir une conférence de
Richard Stallman sur le projet GNU à l’université d’Helsinki. Il est impressionné par la pré-
sentation et prend une décision d’une importance capitale pour la suite du projet.
Figure 1–5
Linus Torvalds, créateur et
mainteneur du noyau Linux.

Les toutes premières versions de Linux étaient certes libres, avec une restriction cruciale
toutefois : l’utilisation commerciale du code était interdite. En janvier 1992, Linus Torvalds
annonce son intention de libérer complètement le code de son noyau en le publiant doréna-
vant sous licence GNU General Public License. Ce changement de licence va encourager de
nombreux utilisateurs dans le monde à migrer de Minix vers Linux.

Les ancêtres Slackware, Red Hat et Debian


En 1992, l’installation d’un système Linux – ou plus exactement d’un système GNU et d’un
noyau Linux – reste une aventure réservée à une élite de bidouilleurs avec un certain sens de
l’aventure, comme Linus Torvalds l’a précisé dans son message détaillé sur Usenet : this is a
program for hackers by a hacker.
67738-Administration Linux par la pratique-INT.book Page 14 Friday, May 24, 2019 10:38 AM

Administration Linux par la pratique


14

Les toutes premières versions de Linux sont distribuées sous forme de deux disquettes qui
fournissent le minimum syndical du système :
• la première disquette est amorçable et contient le noyau ;
• la deuxième disquette fournit une panoplie d’outils GNU qui servent entre autres choses à
créer un système de fichiers.
Un tel système minimal ne permet pas de faire grand-chose. Le nombre de logiciels libres
disponibles au téléchargement augmente certes de façon exponentielle, mais leur installation
reste une procédure longue et pénible. Le code source de chaque composant d’un logiciel doit
d’abord être téléchargé au compte-gouttes via une connexion téléphonique. Une fois qu’on a
récupéré le code source, il faut le configurer manuellement pour l’adapter au système avant de
lancer la compilation et l’installation. Chacune de ces étapes est hautement chronophage et
engloutit facilement des après-midi ensoleillés, voire des week-ends entiers.
Les premières distributions Linux apparaissent dans le but de simplifier la procédure
d’installation : Boot Root, Yggdrasil Linux/GNU/X, SLS Softlanding Linux Systems et
d’autres encore.

CULTURE Qu’est-ce qu’une distribution ?


Pour vous faire une idée plus précise de ce que peut être une distribution Linux, pensez au mot pack, un
peu comme ce qu’on vous vend dans les magasins de sport pour faire du badminton ou de la plongée
sous-marine : deux raquettes, un volant, un filet et deux piquets, ou alors la paire de palmes, le masque
et le tuba, et vous voilà opérationnel. Une distribution Linux sera donc idéalement constituée d’un
ensemble cohérent composé en règle générale :
• du système de base ;
• d’une série d’outils d’administration ;
• d’une panoplie logicielle ;
• d’un installateur.

Ces premières distributions souffrent toutes d’une série de défauts prohibitifs. Soit elles sont
pathologiquement minimalistes et n’offrent guère de confort, soit la panoplie de logiciels
fournis est déjà plus complète, mais l’installateur est truffé de bogues à tel point que
l’ensemble reste à peu près inutilisable.
67738-Administration Linux par la pratique-INT.book Page 15 Friday, May 24, 2019 10:38 AM

Si Linux m’était conté


15
CHAPITRE 1

Slackware Linux
Le 16 juillet 1993, Patrick Volkerding, étudiant en informatique à la Minnesota State Uni-
versity Moorhead, annonce la publication de Slackware Linux 1.00 sur news://comp.os.linux :

De : Patrick J. Volkerding (bf703@cleveland.Freenet.Edu)


Sujet : ANNONCE: Slackware Linux 1.00
Groupes: comp.os.linux
Date : 1993-07-16 17:21:20 PST

La distribution Slackware Linux (v. 1.00) est disponible dès à présent sur FTP
anonyme. Il s’agit d’un système d’installation complet, conçu pour les systèmes avec
une disquette floppy 3.5". Il a été abondamment testé avec un système 386/IDE. Le
noyau par défaut n’offre pas de support SCSI, mais s’il y a suffisamment de demande,
ça pourrait me motiver pour compiler une poignée de noyaux spécifiques que je
mettrais sur FTP.

Cette version est largement basée sur le système SLS, avec une série de modifications
et d’améliorations substantielles. Elle est constituée de deux principaux groupes de
disquettes, A (13 disquettes) et X (11 disquettes).

[...]

--
Patrick Volkerding
volkerdi@mhd1.moorhead.msus.edu
bf703@cleveland.freenet.edu

HISTOIRE Slackware Linux 1.0


Le texte complet de l’annonce de Slackware Linux 1.0 est toujours en ligne sur le site de Slackware.
B http://www.slackware.com/announce/1.0.php

On peut considérer que Slackware est bien la première distribution Linux, dans la mesure où
il s’agit du premier système Linux réellement utilisable. Contrairement à l’ancêtre
SLS Softlanding Linux Systems sur lequel elle se base, Slackware ne contraint plus les utili-
sateurs à sauter à travers des cerceaux en feu pour obtenir un système Linux raisonnablement
complet sur leur machine.
Vous serez peut-être surpris d’apprendre que la distribution Slackware est encore activement
maintenue et qu’elle se porte bien. Elle a fêté ses vingt-cinq ans le 16 juillet 2018.

URL Slackware Linux


B http://www.slackware.com
67738-Administration Linux par la pratique-INT.book Page 16 Friday, May 24, 2019 10:38 AM

Administration Linux par la pratique


16

Les distributions de l’entreprise Red Hat


En novembre 1994, l’entreprise américaine Red Hat (« chapeau rouge ») publie la première
version de sa distribution Linux, Red Hat Commercial Linux, qui sera renommée en
Red Hat Linux.
Figure 1–6
Bob Young et Marc Ewing, les
fondateurs de Red Hat.

Le système Red Hat introduit le gestionnaire de paquets RPM (Redhat Package Manager) et
le format de paquets correspondant, qui sera utilisé par la suite par un grand nombre de dis-
tributions. RPM est le premier gestionnaire de paquets à prendre en compte les dépendances
entre ces derniers. Si vous n’avez rien compris aux deux phrases précédentes, ne vous en faites
pas et continuez sereinement votre lecture. Nous aurons l’occasion de voir tout cela en détail.
À partir de 1999, les distributions Red Hat utilisent l’installateur graphique Anaconda, dans
le but de faciliter la procédure pour les utilisateurs novices.
En 2003, l’entreprise décide de modifier sa politique commerciale. La ligne des distributions
libres et gratuites s’arrête avec la publication de Red Hat Linux 9 en mars 2003. Dorénavant,
les utilisateurs ont le choix entre deux produits fondamentalement différents :
• Red Hat Enterprise Linux, une distribution commerciale et payante ;
• Fedora Core, renommée plus tard en Fedora tout court, une distribution libre et gratuite,
sponsorisée par Red Hat.
Le projet Fedora jouit actuellement d’une popularité assez considérable, surtout sur les postes
de travail, mais pas seulement. D’un certain point de vue, cette distribution fournit les ver-
sions de développement successives de Red Hat Enterprise Linux. Autrement dit, une distri-
bution Red Hat Enterprise Linux peut être considérée comme une Fedora stabilisée et qui
bénéficie de mises à jour sur une durée prolongée.
Figure 1–7
La distribution Red Hat Linux est développée entre 1994
et 2003. Elle cède la place à la distribution communautaire
Fedora et son pendant commercial Red Hat Enterprise Linux.
67738-Administration Linux par la pratique-INT.book Page 17 Friday, May 24, 2019 10:38 AM

Si Linux m’était conté


17
CHAPITRE 1

Debian GNU/Linux
Le projet Debian est lancé deux mois après la publication de la première version de
Slackware, dans le but de fournir une distribution Linux de qualité, qui resterait entièrement
communautaire. Le nom de la distribution est une contraction des prénoms respectifs de son
regretté fondateur Ian Murdock et de celui de sa femme Debra. Peu de temps après la fonda-
tion, le nom de « Debian Linux » est officiellement modifié en « Debian GNU/Linux » pour
souscrire à l’avis de la Free Software Foundation, qui considère qu’il s’agit d’un système GNU
avec un noyau Linux.

FOLKLORE GNU/Linux ou Linux tout court ?


Étant donné qu’une distribution Linux est composée d’un noyau Linux et d’une panoplie d’outils GNU, il
serait théoriquement plus correct de parler d’une distribution GNU/Linux. Les puristes du Libre peuvent
être extrêmement pointilleux sur ce point et vous reprendre avec un zèle de théologien augustinien si
vous avez le malheur d’utiliser la forme brève « Linux » en leur présence.

Les objectifs de cette distribution sont fixés dans le Manifeste Debian, une sorte de contrat
social qui définit notamment l’engagement du projet vis-à-vis de ses utilisateurs et la priorité
accordée aux logiciels libres. À ses débuts, la distribution est d’ailleurs sponsorisée par la Free
Software Foundation.

URL Debian GNU/Linux


Pour en savoir plus sur Debian, visitez le site officiel et suivez les liens À propos de Debian et Notre
contrat social.
B https://www.debian.org

La première version de Debian ne voit le jour qu’en 1996 et porte le nom de code « Buzz ».
Depuis cette première version et à ce jour, le système est constamment disponible en trois
branches : stable, testing et unstable. La branche stable, comme son nom le suggère, est à privi-
légier pour les machines de production. La branche testing contient les éléments de la future
version stable. Quant à unstable, il s’agit d’une version en constante évolution. Cette façon de
procéder garantit avant tout la transparence du processus de développement de Debian.
Notez au passage que l’adjectif unstable ne signifie pas « qui plante tout le temps », mais
« susceptible de changer de temps en temps ».

CULTURE Les noms de code des versions de Debian


Les noms de code des différentes versions sont tous empruntés aux personnages du dessin animé Toy Story :
Buzz, Rex, Bo, Hamm, Slink, Potato, Woody, Sarge, Etch, Lenny, Squeeze, Jessie. Stretch correspond à
l’actuelle version stable, Buster à la version testing. Peut-être vous rappelez-vous Sid dans le dessin animé, le
sale gosse qui casse tous les jouets. C’est également le nom de code évocateur pour la version unstable.
67738-Administration Linux par la pratique-INT.book Page 18 Friday, May 24, 2019 10:38 AM

Administration Linux par la pratique


18

De nos jours, Debian est un projet vaste, avec plus d’un millier de développeurs dans le
monde entier, dix architectures prises en charge officiellement et quelques dizaines de milliers
de paquets sources. Sur les serveurs, Debian reste l’une des distributions les plus utilisées dans
le monde. Sur les postes de travail, elle constitue également la base robuste d’un certain
nombre de projets à grande envergure dans plusieurs pays.
Figure 1–8
Debian est la seule distribution majeure
dont le nom fasse référence au projet GNU.

Techniquement, le système Debian se distingue par son gestionnaire de paquets dpkg et le


frontend APT (A Package Tool). Tout comme le gestionnaire de paquets RPM de Red Hat
Linux, APT gère les dépendances des paquets, mais il les résout automatiquement, ce qui
facilite considérablement les opérations d’installation et de mise à jour. Là encore, nous ver-
rons tout cela en détail un peu plus loin.

POUR ALLER PLUS LOIN Les ouvrages sur Debian aux éditions Eyrolles
Les ouvrages sur Debian rédigés par Raphaël Hertzog et Roland Mas et publiés chez Eyrolles pour chaque
version stable de Debian constituent sans doute le meilleur support pour se former à cette distribution,
sur les serveurs aussi bien que sur les postes de travail. Je ne peux que vous en conseiller la lecture, une
fois que vous aurez terminé celui que vous tenez entre les mains ;o)

Linux pour tous : la famille Ubuntu


En 2002, le milliardaire et philanthrope sud-africain Mark Shuttleworth réalise le rêve de sa
vie et embarque à bord de la mission spatiale Soyouz TM-34 en tant que touriste de l’espace.
Cet humaniste passionné d’informatique devient ainsi l’un des rares privilégiés à avoir pu
embrasser notre planète d’un regard.
Il décide alors de financer le développement d’un système d’exploitation « par des humains, pour
des humains » et d’y participer lui-même. Ce projet sera basé sur la distribution Debian, pour
laquelle Mark Shuttleworth a travaillé à la fin des années 1990. En tant qu’ancien développeur de
ce projet, il en connaît les ficelles et la grande qualité technique. Cependant, Debian reste trop
complexe à installer pour un utilisateur lambda. La procédure d’installation et la configuration du
système requièrent une connaissance technique considérable. C’est justement là que réside le
défi : créer un système d’une grande qualité et d’une grande stabilité, accessible à tous – Ubuntu.

CULTURE L’origine du mot Ubuntu


Ubuntu est un mot africain qui n’a pas d’équivalent direct en français. Selon la région en Afrique, il pour-
rait se traduire par « l’Humain faisant un tout avec les autres », « la générosité qui différencie l’homme
de l’animal » ou tout simplement « l’Humanité ». Certaines mauvaises langues prétendent qu’Ubuntu
est un ancien mot africain qui signifie « Je n’arrive pas à configurer Debian ».
67738-Administration Linux par la pratique-INT.book Page 19 Friday, May 24, 2019 10:38 AM

Si Linux m’était conté


19
CHAPITRE 1

Le projet Ubuntu est actuellement financé et maintenu par la fondation du même nom, créée
par Mark Shuttleworth et dotée d’une mise initiale de 10 millions de dollars. La société
Canonical, également fondée par Shuttleworth, s’occupe quant à elle du support commercial
et de la certification Ubuntu.
Figure 1–9
Mark Shuttleworth, le milliardaire
philanthrope qui a lancé le projet
Ubuntu.

La distribution Ubuntu suit un cycle de développement programmé. Une nouvelle version est
prévue tous les six mois, soit deux par an. Ces versions sont numérotées par l’année et le mois
de la date de sortie. Ainsi, la version 14.04 est sortie en avril 2014, la 14.10 en octobre 2014,
la 15.04 en avril 2015, la 15.10 en octobre 2015 et ainsi de suite.
Tous les deux ans, Ubuntu publie une version LTS (Long Term Support) qui bénéficie d’un
cycle de support prolongé pour les mises à jour de sécurité. Les versions 14.04, 16.04 et 18.04
sont des LTS et reçoivent des mises à jour pendant une période de cinq ans.

CULTURE Les noms des versions d’Ubuntu : drôles d’animaux


Outre le numéro, il est de coutume de baptiser chaque version d’Ubuntu avec le nom d’un animal et un
adjectif s’y rapportant, les deux mots devant commencer par la même lettre. Ainsi, la première version,
la 4.10, fut nommée Warty Warthog (phacochère pustuleux) pour bien marquer qu’il s’agissait d’une
première version avec tous les défauts qu’elle peut comporter. Elle était suivie par le hérisson aux che-
veux blancs (Hoary Hedgehog, 5.04) et le blaireau dans le vent (Breezy Badger, 5.10). Le canard pim-
pant (Dapper Drake, 6.06) illustrait la finition et l’excellence de la première version LTS. Depuis, Ubuntu
n’a pas dérogé à cette règle en sortant successivement Edgy Eft (salamandre nerveuse), Feisty Fawn
(faon téméraire), Gutsy Gibbon (gibbon fougueux), Hardy Heron (héron robuste, une version LTS) et ainsi
de suite jusqu’à Precise Pangolin (pangolin précis) (12.04), Trusty Tahr (bélier confiant) (14.04) et Xenial
Xerus (xerus hospitalier) (16.04). La dernière version LTS en date, Bionic Beaver (castor bionic) (18.04)
reprend au début de l’alphabet en succédant à la version de développement Artful Aardvark (oryctérope
du Cap astucieux) (17.10).
67738-Administration Linux par la pratique-INT.book Page 20 Friday, May 24, 2019 10:38 AM

Administration Linux par la pratique


20

SUSE : un drôle de caméléon


La distribution SUSE mérite d’être mentionnée ici, étant donné qu’elle jouit d’une popularité
considérable dans certains pays, notamment en Allemagne, dans les pays nordiques et aux
États-Unis. Elle a connu un historique plutôt mouvementé, ce qui se reflète d’ailleurs dans
ses appellations successives ainsi que ses numéros de versions quelque peu erratiques.
À l’origine, la compagnie allemande S.u.S.E. (Software-und System-Entwicklung, c’est-à-
dire « développement de logiciels et de systèmes ») concentrait son fond de commerce sur les
services de consultation autour d’Unix et de Linux. Les premières offres de la compagnie
étaient principalement basées sur Slackware et SLS. La version 1.0 de SuSE Linux consistait
peu ou prou en un jeu de disquettes Slackware Linux traduit en allemand et accompagné d’un
manuel d’installation.
Vers le milieu des années 1990, la distribution SuSE s’est émancipée de Slackware pour
adopter le format de paquets RPM de Red Hat. L’équipe de S.u.S.E. s’est distinguée par le
développement de YaST (Yet another Setup Tool, littéralement « encore un outil de
configuration »), une interface d’administration qui ressemblait au panneau de configuration
Windows et allait devenir le point fort de ce système.
Suite au rachat par la société Novell en 2003, SuSE est devenue SUSE Linux, et le modèle
économique de la distribution ressemble désormais à celui adopté par Red Hat et Fedora.
D’une part, des systèmes comme SLES (SUSE Linux Enterprise Server) ou SLED (SUSE
Linux Enterprise Desktop) sont des distributions commerciales et payantes qui ciblent une
clientèle professionnelle. D’autre part, Novell sponsorise le projet communautaire openSUSE
qui fournit notamment les distributions libres et gratuites Tumbleweed et Leap.

POSTE DE TRAVAIL Le choix de l’auteur


OpenSUSE Leap est actuellement la distribution de mon choix pour tous les postes de travail que j’installe.
Je l’utilise sur mon ordinateur portable aussi bien que sur la station de travail sur laquelle j’écris ces lignes.

Figure 1–10 La station de travail sur laquelle j’écris ces lignes tourne sous openSUSE Leap.
67738-Administration Linux par la pratique-INT.book Page 21 Friday, May 24, 2019 10:38 AM

Si Linux m’était conté


21
CHAPITRE 1

La distribution OpenSUSE n’est pas très répandue en France, probablement parce que Man-
drake Linux – un système francophone également dérivé de Red Hat – lui a fait de l’ombre
depuis sa sortie en France en 1998. L’emblème de la distribution SUSE dans toutes ses décli-
naisons est un caméléon vert prénommé Geeko.
Figure 1–11
Le caméléon Geeko,
la mascotte de SUSE Linux.

Les systèmes BSD, une autre famille d’Unix libres


Avant même la naissance du noyau Linux et celle du projet GNU, la Berkeley Software Distri-
bution est une variante d’Unix, développée par l’Université de Berkeley en Californie, à partir
de la fin des années 1970.
Contrairement au projet GNU, le système BSD contient du code écrit par les ingénieurs
d’AT & T. Son développement rencontre un frein majeur au début des années 1990,
lorsqu’AT & T intente un procès contre l’Université de Berkeley, pour violation de propriété
intellectuelle.
Linus Torvalds déclarera plus tard que si le système BSD n’avait pas été empêtré dans ce
litige – et si le projet GNU avait disposé à l’époque de son propre noyau libre – lui-même
n’aurait jamais eu la motivation nécessaire pour écrire son propre kernel.
BSD finit par régler le problème en supprimant les parties incriminées de son code. Les
années 1993 et 1994 voient naître trois rejetons du système BSD : FreeBSD, NetBSD et
OpenBSD. Ce sont là aussi des Unix libres, des cousins de Linux en quelque sorte, qui
jouissent actuellement d’une popularité considérable, notamment sur les serveurs.
Techniquement, ces systèmes BSD ne s’administrent pas de la même manière qu’un système
GNU/Linux, mais ils gardent quand même un tronc commun de commandes Unix, de sorte
qu’un administrateur venant de l’univers Linux ne se sentira pas complètement perdu sur un
système FreeBSD ou NetBSD, un peu comme un Marseillais qui débarque sur la côte ligu-
rienne ne se sent pas totalement dépaysé : il ne comprend pas la langue, mais beaucoup de
mots lui semblent familiers et, du moment que le soleil et la mer sont toujours là, tout
va bien.
67738-Administration Linux par la pratique-INT.book Page 22 Friday, May 24, 2019 10:38 AM

Administration Linux par la pratique


22

LECTURE Cahiers de l’Admin BSD


Si vous voulez en savoir (beaucoup) plus sur les systèmes BSD, terminez d’abord la lecture de ce livre,
puis allez jeter un œil dans l’excellent ouvrage Cahiers de l’Admin BSD d’Emmanuel Dreyfus, également
publié chez Eyrolles.

La différence fondamentale entre les systèmes BSD et Linux se situe plutôt au niveau de la
licence. En schématisant, la licence BSD se résume en trois phrases :
• ne dites pas que c’est vous qui avez écrit le logiciel ;
• on n’y est pour rien s’il ne fonctionne pas chez vous ;
• si cela vous chante, prenez le code et faites-en ce que vous voulez.
Cette licence est donc beaucoup plus permissive ou plus « libre », étant donné qu’elle inclut
toutes les libertés, y compris celle de s’approprier le code en le cannibalisant.

DEVINETTE Un célèbre système d’exploitation propriétaire basé sur FreeBSD ?


Au début de ce millénaire, une entreprise américaine a pris le code source de FreeBSD et l’a adapté à ses
besoins. Elle a ajouté une couche graphique nommée Aqua et l’ensemble est un système d’exploitation
propriétaire vendu dans des grands cartons blancs arborant des noms de fauves ou de paysages excep-
tionnels. Quel est le nom de cette entreprise ? Réponse page 66.

La foire aux distributions


Il y a quelques années, une entreprise de marketing a entrepris une expérience dont le résultat
peut laisser songeur. Pendant une semaine, un stand de confitures dans un supermarché pro-
posait pas moins de vingt-cinq sortes de confitures, disposées en petites pyramides de pots
bariolés. Le stand attirait beaucoup de monde. Les clients s’arrêtaient pour goûter aux nom-
breux échantillons. Tout le monde louait la qualité des confitures et la variété de saveurs dis-
ponibles. Pourtant les ventes restaient médiocres. La semaine suivante, le stand ne comptait
plus que trois sortes de confitures différentes, disposées en une seule pyramide. Personne ne
pipait mot à propos de la disposition du stand, qui n’avait plus rien de spécial. Cependant, les
trois saveurs de confitures disponibles se vendirent désormais très bien.
Les utilisateurs de systèmes d’exploitation propriétaires courants – Microsoft Windows ou
Mac OS X – sont habitués à une poignée de versions plus ou moins courantes de systèmes.
Windows 7 et 8 ont progressivement cédé la place à Windows 10, que l’utilisateur le veuille
ou non. Et Mac OS X reprend son nom d’origine avec Mac OS Sierra qui succède à
El Capitan, Yosemite et Mavericks. Tous ces systèmes se déclinent tout au plus en une
« édition familiale » et une « édition professionnelle », à peu de choses près.
Quant à l’utilisateur novice de Linux – celui qui souhaite s’y mettre, ne serait-ce que pour
essayer –, il se retrouve d’abord confronté à un choix qui peut s’avérer déroutant. Linux, oui,
mais lequel ? Red Hat ? Debian ? Ubuntu ? CentOS ? Fedora ? OpenSUSE ? Arch ?
Gentoo ? Alpine ? Scientific Linux ? Oracle Linux ? Car, en 2019, les distributions Linux ont
67738-Administration Linux par la pratique-INT.book Page 23 Friday, May 24, 2019 10:38 AM

Si Linux m’était conté


23
CHAPITRE 1

proliféré à tel point qu’il y a de quoi être happé par un vertige existentiel face à cette jungle.
On trouve près de trois cents distributions activement maintenues, si l’on s’en tient aux résul-
tats du moteur de recherche du site DistroWatch. De nouvelles distributions surgissent toutes
les semaines, sans compter la pléthore de distributions confidentielles produites par les uni-
versités ou les simples bidouilleurs.

EN SAVOIR PLUS DistroWatch


Le site DistroWatch se consacre à l’actualité des distributions Linux et des autres systèmes d’exploitation
libres comme les BSD. Il fournit à ses lecteurs des informations générales sur les distributions : tableaux
comparatifs, classements de popularité, etc.
B https://distrowatch.com

Quelle est la « meilleure » distribution Linux ?


Le Moyen Âge et la Renaissance avaient leurs guerres de religion, où l’on avait tout loisir de
partir en croisade pour fracasser allègrement le crâne de tous les incroyants et, plus générale-
ment, de tous ceux qui avaient le malheur de ne pas souscrire à la même religion. De nos
jours, les guerres saintes et autres contrariétés ne s’organisent plus que de façon épisodique et
sporadique. Le phénomène semble plutôt s’être déplacé vers les forums d’utilisateurs de sys-
tèmes d’exploitation, à en juger par le ton qui règne parfois entre individus de croyances diffé-
rentes ou, pire encore, entre individus de chapelles voisines, mais dont les obédiences diver-
gent un tant soit peu.
Tentez l’expérience. Inscrivez-vous à un forum d’utilisateurs Linux (le Web en regorge) et
posez la question anodine : « Quelle est la meilleure distribution Linux : Red Hat ?
CentOS ? Fedora ? Debian ? Ubuntu ? OpenSUSE ? Slackware ? Que pouvez-vous me
conseiller ? » Laissez macérer quelques heures, voire quelques jours, et appréciez le résultat.
Pour couper court à toute polémique stérile, essayons donc de voir de manière tout à fait
objective ce qui distingue les distributions entre elles. Une série de critères descriptifs – et
non pas prescriptifs – nous facilitera la tâche :
• la panoplie logicielle et l’actualité des paquets ;
• les outils d’administration ;
• le caractère commercial et la qualité « entreprise » ;
• la configuration par défaut du bureau ;
• la qualité de la documentation.

La panoplie logicielle
La panoplie logicielle, c’est d’une part l’ensemble des logiciels installés dans la configuration
par défaut, définie par le distributeur, et d’autre part l’ensemble des logiciels disponibles,
autrement dit, ceux que vous pouvez installer.
67738-Administration Linux par la pratique-INT.book Page 24 Friday, May 24, 2019 10:38 AM

Administration Linux par la pratique


24

• Red Hat Enterprise Linux et CentOS ne livrent qu’une sélection restreinte de paquets
soigneusement entretenus.
• Fedora, Debian, Ubuntu et OpenSUSE proposent des paquets binaires pour tous les logi-
ciels libres entre ciel et terre. Ou presque.
En principe, si un logiciel n’est pas inclus dans la distribution, il est toujours possible d’aller
en récupérer le code source et de le compiler soi-même. Le degré de difficulté de cette opéra-
tion varie grandement selon les distributions.
Sur les postes de travail, le choix des logiciels installés par défaut constitue une différence
majeure entre les systèmes d’exploitation propriétaires et le monde du logiciel libre. Une ins-
tallation par défaut de Microsoft Windows ou de Mac OS X vous fournit généralement un
navigateur web, un client de courrier électronique, un navigateur de fichiers ainsi qu’une poi-
gnée d’amuse-gueule comme un bloc-notes, un jeu de démineur, un jeu de cartes ou un jeu
d’échecs. Un PC Windows acheté neuf vous proposera très probablement une sélection de
raccourcis du genre Cliquez ici pour tester ce logiciel pendant 30 jours et autres cripplewares,
terme anglais que l’on pourrait traduire par « amputiciels », c’est-à-dire des logiciels dont
vous devez activer certaines fonctionnalités en achetant un code d’activation.
En comparaison, les distributions Linux grand public comprennent généralement d’office
une panoplie complète de logiciels pour Internet, la bureautique, le graphisme et le multi-
média qui vous rendent immédiatement productif. Et si vous souhaitez graver un CD ou
exporter un PDF, pas la peine de sortir la carte bleue pour acheter le logiciel ou le plug-in qui
manque – ou d’appeler le cousin Gérard pour qu’il vienne vous installer une version piratée.

L’actualité des paquets


L’actualité des paquets contenus dans les distributions – c’est-à-dire les applications et les
bibliothèques – peut varier de façon assez significative.
• Les distributions plus conservatrices comme Red Hat Enterprise Linux, CentOS ou
Debian stable préfèrent miser sur des versions de paquets un peu plus anciennes, dûment
testées et stabilisées.
• À l’inverse, certaines distributions extrêmement innovantes (ou bleeding edge, c’est-à-dire
« pointues au point que ça saigne »), comme Fedora ou Arch, n’hésitent pas à inclure les
dernières versions des paquets ou autres technology previews. Elles sont souvent prisées par
les développeurs. Les administrateurs système souffrant de surtension artérielle préfèrent
les éviter.
Dans certains cas, les utilisateurs de systèmes conservateurs pourront mettre à jour certains
composants qu’ils jugeront obsolètes sans nuire à la cohérence de l’ensemble. Là encore, la
difficulté variera en fonction de la distribution que l’on utilise.
67738-Administration Linux par la pratique-INT.book Page 25 Friday, May 24, 2019 10:38 AM

Si Linux m’était conté


25
CHAPITRE 1

Les outils d’administration


Les outils d’administration servent à installer, supprimer ou mettre à jour des logiciels, confi-
gurer son réseau, sa carte son, son imprimante et beaucoup de choses encore. Une partie de
ces outils est spécifique à chaque distribution. Prenons l’exemple des gestionnaires de paquets
mentionnés plus haut.
• Red Hat Enterprise Linux et CentOS utilisent rpm (Redhat Package Manager) et yum (Yel-
lowdog Updater Modified) pour l’installation, la mise à jour et la suppression de logiciels.
• Fedora est également basée sur rpm, mais c’est l’outil dnf (Dandified Yum) qui succède à
yum pour la résolution des dépendances.
• Debian, Ubuntu, Mint, Elementary et Mepis font toutes appel à dpkg (Debian Package),
aptitude, apt-get ou apt (Advanced Packaging Tool) pour gérer ces tâches administra-
tives.
• La distribution Slackware utilise les gestionnaires de paquets rudimentaires pkgtool et
slackpkg. La particularité de ces deux outils est qu’ils ne gèrent pas les dépendances entre
les paquets. C’est donc l’administrateur qui doit veiller manuellement à la cohérence de
son installation.
En dehors de cela, les distributions reposent pour la plupart sur un fonds commun de com-
mandes d’administration simples. Dans de nombreux cas, ce sont les interfaces graphiques
venant se greffer sur celles-ci qui feront la différence.
• Les distributions grand public comme Ubuntu, Mint, Fedora, OpenSUSE ou Mageia
vous facilitent – ou vous compliquent – la tâche en configurant le système à votre place à
l’aide d’une panoplie d’assistants automatiques. L’ambition explicite des distributions
comme Ubuntu et de ses dérivées consiste en effet à fournir un « Linux pour tous », ins-
tallable par des utilisateurs novices sans qu’ils aient à plonger les mains dans le cambouis.
• Les distributions « brutes de décoffrage » comme Slackware, Arch, Crux, Alpine ou Gen-
too vous compliquent – ou vous facilitent – la tâche en supposant que vous gérez manuel-
lement chaque étape de l’installation et de la configuration du système.
Ce livre privilégie autant que possible l’utilisation des commandes d’administration simples
en mode texte, plus flexibles et universelles.

VOUS VENEZ DE WINDOWS Où est mon interface ?


En temps normal, et à quelques rares exceptions près, un serveur Linux ne disposera pas d’interface gra-
phique. La seule façon d’interagir avec le système, ce sera en mode texte par le biais d’un interpréteur de
commandes.
Si je le précise ici, c’est que j’ai déjà eu l’occasion de voir les regards perplexes et vaguement offusqués
d’administrateurs Windows qui me demandaient « où faut-il cliquer dans votre truc Linux là ? ».
67738-Administration Linux par la pratique-INT.book Page 26 Friday, May 24, 2019 10:38 AM

Administration Linux par la pratique


26

Le caractère commercial
Un certain nombre de malentendus circulent autour des distributions commerciales, que nous
allons dissiper à l’aide de quelques exemples concrets.
Red Hat Enterprise Linux, SUSE Linux Enterprise Server ou SUSE Linux Enterprise
Desktop sont des produits commerciaux dans le sens où vous devez payer une souscription
pour les utiliser. Cependant, la logique n’est pas du tout la même que pour les systèmes pro-
priétaires. Ce que vous achetez, ce ne sont pas les logiciels en eux-mêmes, mais la possibilité
de contacter le support technique du distributeur. Par ailleurs, la disponibilité des mises à jour
de sécurité pour votre système est également liée à l’achat d’une licence.
En dehors de cela, une distribution commerciale comme Red Hat Enterprise Linux ou
SUSE Linux Enterprise respecte parfaitement les termes de la licence GNU et reste un sys-
tème libre. En effet, Red Hat et Novell publient scrupuleusement le code source de toutes les
déclinaisons de leurs systèmes, un peu comme un grand chef d’un restaurant quatre étoiles
publierait l’ensemble de ses recettes « aux petits oignons » sur son blog personnel.
La distribution Ubuntu offre une autre déclinaison dans le paradigme commercial. Chaque
version d’Ubuntu est normalement libre et gratuite, sans que l’accès aux mises à jour de sécu-
rité soit restreint. À partir de là, il est possible de contacter Canonical pour acheter une
licence de support professionnel.

La qualité « entreprise »
Non, ce n’est pas une erreur dans le manuscrit. Dans l’univers du logiciel libre, le caractère
commercial d’une distribution et sa qualité « entreprise » constituent effectivement deux
aspects bien distincts, même s’ils se rejoignent sur certains points.
Imaginons que votre entreprise héberge son site de e-commerce sur un serveur Linux. Une
faille de sécurité importante vient d’être découverte sur un des composants et l’administrateur
décide de mettre à jour le serveur. Malheureusement, l’application de e-commerce ne semble
plus compatible avec certains des nouveaux composants. Le site ne fonctionne plus correcte-
ment et il faut songer à revoir d’urgence l’intégralité du code pour l’adapter à la nouvelle ver-
sion. C’est le scénario catastrophe.

SÉCURITÉ La période de mises à jour


En règle générale, vous pouvez utiliser votre système Linux de façon sûre tant que vous disposez de
mises à jour. Une fois que la période de support de votre version a expiré, vous devez mettre à jour
l’ensemble de la distribution vers une version plus récente.

L’ambition des distributions de qualité entreprise est donc de fournir une plate-forme
robuste, stable et pérenne pour faire tourner des applications sans causer de problèmes de
compatibilité. Les deux principes de base sur lesquels repose une telle distribution sont, d’une
part, l’extension de la durée du support et, d’autre part, la mise à disposition de mises à jour
peu risquées. En pratique, pendant une période comprise entre cinq et dix ans en règle géné-
67738-Administration Linux par la pratique-INT.book Page 27 Friday, May 24, 2019 10:38 AM

Si Linux m’était conté


27
CHAPITRE 1

rale, un tel système bénéficiera de mises à jour de sécurité sans que celles-ci introduisent de
nouvelles fonctionnalités susceptibles de causer des mauvaises surprises.
Les « grandes » distributions commerciales affichent cette qualité entreprise dans leur nom
même : Red Hat Enterprise Linux, SUSE Linux Enterprise Server, SUSE Linux Enterprise
Desktop. Chacun de ces produits bénéficie en effet d’une période de support étendue de dix
ans, parfois même plus. En comparaison, la durée de vie du système communautaire Fedora
est limitée à treize mois, ce qui est bien trop court pour un usage en entreprise.

SOURCES Red Hat Enterprise Linux et SUSE Enterprise Linux


Red Hat et Novell publient l’intégralité du code source de leurs systèmes commerciaux, en conformité
avec la GPL.
B ftp://ftp.redhat.com/pub/redhat/linux/enterprise/
B https://www.suse.com/fr-fr/download-linux/source-code/

Puisque Red Hat et Novell publient le code source de leurs systèmes, rien n’empêche les uti-
lisateurs un tant soit peu chevronnés de le compiler pour fabriquer leur propre système de
qualité entreprise. En pratique, une telle compilation n’est pas une opération triviale, mais
c’est effectivement ce qui se passe avec des distributions comme CentOS (Community Enter-
prise Operating System), Scientific Linux, Springdale Linux, Oracle Linux et autres. Tous ces
distributeurs – la communauté CentOS, le laboratoire du CERN à Genève, l’université de
Princeton, la société Oracle – partent du code source RHEL pour produire un système binai-
rement compatible avec l’original. Les seules différences visibles, ce sont les logos et la collec-
tion de fonds d’écran par défaut, que chacun adapte à son propre gré.

DISTRIBUTION CentOS
Les exemples pratiques de cet ouvrage sont basés sur CentOS 7.6, publié en décembre 2018.
Mon tout premier ouvrage sur Linux, intitulé Linux aux petits oignons et publié chez Eyrolles en
juin 2009, était basé sur CentOS 5.3.
B https://www.centos.org

Notons que l’entreprise Red Hat soutient activement les efforts des communautés comme
CentOS, étant donné qu’elle bénéficie entre autres choses des rapports de bogues qui lui
reviennent en amont. Toute cette famille de « clones RHEL » est extrêmement populaire sur
les serveurs ainsi que sur les super-ordinateurs. En effet, les ordinateurs les plus puissants de
la terre tournent en majorité sous CentOS.
Depuis quelques années, la variante LTS (Long Term Support) d’Ubuntu constitue également
une distribution libre et gratuite de qualité entreprise. À titre d’exemple, c’est la distribution
proposée par défaut sur les serveurs dédiés de la société Online. Au moment de la rédaction
de ces lignes, Ubuntu LTS équipe près de 70 000 postes de travail de la Gendarmerie natio-
nale.
67738-Administration Linux par la pratique-INT.book Page 28 Friday, May 24, 2019 10:38 AM

Administration Linux par la pratique


28

UN AIR DE FAMILLE CentOS et Red Hat


CentOS est un système techniquement identique et binairement compatible à Red Hat Enterprise Linux.
La seule différence réside dans le fait que Red Hat fournit un support technique payant pour ses clients.
En dehors de cela, CentOS est une distribution de qualité entreprise, solide et éprouvée, qui ne réserve
pas de mauvaises surprises.
Depuis la sortie de CentOS 7, Red Hat a décidé de salarier l’équipe de développeurs bénévoles de cette
distribution.

La configuration par défaut


La notion de configuration par défaut telle que nous l’entendons ne concerne que les postes
de travail ou les stations de travail, mais nous allons quand même en dire deux mots.
Contrairement aux systèmes propriétaires comme Microsoft Windows ou Mac OS X, un
poste de travail Linux offre le choix parmi toute une panoplie d’interfaces graphiques diffé-
rentes, de l’environnement de bureau complet comme KDE, GNOME, Unity ou Xfce,
jusqu’au simple gestionnaire de fenêtres comme Openbox, LXDE, Window Maker, Fluxbox,
Enlightenment ou IceWM. La liste n’est pas exhaustive.
Chacune de ces interfaces dispose de sa propre ergonomie, parfois aussi de sa propre panoplie
de logiciels bien intégrés, et il est tout à fait possible de configurer une bonne douzaine de
postes de travail Linux à l’aspect et à l’ergonomie rigoureusement différents. Cette diversité a
de quoi dérouter les débutants. Elle motive également les experts à s’engager dans des discus-
sions aussi passionnées que celles qui portent sur les mérites respectifs des clubs de foot ou
des marques de voitures ou de motos.
Certaines distributions favorisent l’une ou l’autre interface. D’autres en intègrent plusieurs et
laissent l’utilisateur choisir son environnement de bureau préféré lors de l’installation. Les
différences peuvent également se situer au niveau de la configuration détaillée, dans l’agence-
ment des menus, etc.
Sur un serveur Linux dépourvu d’interface graphique, ce critère est caduc pour des raisons
évidentes.

La qualité de la documentation
La qualité de la documentation en ligne varie énormément selon les distributions.
La documentation en ligne de Red Hat Enterprise Linux est très complète. Les utilisateurs
des distributions clonées comme CentOS, Scientific Linux ou Springdale peuvent également
s’en servir, étant donné que leurs systèmes sont binairement compatibles.

DOCUMENTATION Red Hat Enterprise Linux


B https://access.redhat.com/documentation/
67738-Administration Linux par la pratique-INT.book Page 29 Friday, May 24, 2019 10:38 AM

Si Linux m’était conté


29
CHAPITRE 1

Les distributions « brutes de décoffrage » comme Arch, Gentoo ou LFS (Linux From Scratch)
se distinguent à peu près toutes par une documentation exceptionnelle. Étant donné que
l’installation, la configuration et la maintenance de ces systèmes nécessitent constamment de
plonger les mains dans le cambouis, une bonne documentation est tout simplement vitale.
La distribution Ubuntu dispose d’une documentation très bien faite sur deux niveaux. Le
volet « poste de travail » s’adresse aux débutants, dans un langage accessible aux non-informa-
ticiens. La documentation « serveur » est plus technique et offre un guide d’administration
système assez bien fait et qui couvre toutes sortes de scénarios.
En dehors des documents officiels, certaines distributions bénéficient d’une excellente docu-
mentation rédigée par des tiers, comme la Formation Debian d’Alexis de Lattre, ou le
Slackware Documentation Project. Les communautés francophone et germanophone d’Ubuntu
offrent également deux véritables portails d’information bien plus complets que la documen-
tation officielle.

Qui utilise Linux ?


Au cours des vingt-cinq dernières années, Linux s’est répandu un peu partout dans le monde,
sans faire de bruit, sans campagnes publicitaires et sans qu’une multinationale ne vienne
« encourager » le déploiement à coups de lobbying et autres méthodes douteuses. Voici
quelques exemples en vrac.
• Les ordinateurs les plus puissants de la terre tournent exclusivement sous Linux. D’après
les statistiques publiées en juin 2018, la totalité des cinq cents machines recensées par le
portail top500.org tournent sous Linux. La prochaine fois que quelqu’un vous sort que
« Linux c’est bien gentil mais c’est pour les bricoleurs », comme j’ai pu l’entendre dans la
bouche d’un décideur de l’Éducation nationale, vous saurez quoi lui rétorquer.
• L’infrastructure d’Internet est assurée en grande partie par Linux. Les gigantesques parcs
de serveurs des grandes entreprises comme Google, Facebook ou Amazon fonctionnent
tous sous ce système.
• Les systèmes Linux embarqués sont omniprésents dans notre quotidien et font tourner à
peu près tout, du modem-routeur ADSL au téléviseur, du distributeur de billets de train
au système de navigation GPS, du téléphone portable au distributeur de boissons, etc. Il
m’arrive de me demander le matin dans la salle de bains si Linux est installé sur mon
rasoir électrique.
• La Gendarmerie nationale a migré une grande partie de son parc de 90 000 postes de tra-
vail de Microsoft Windows vers Gendbuntu, une version spécialisée d’Ubuntu
Linux LTS.
• Les bourses de Londres et de New York ont migré l’ensemble de leurs serveurs critiques
vers Linux.
• En janvier 2018, la ville de Barcelone a décidé de se passer de Windows pour migrer son
système informatique vers Linux et les technologies Open Source.
67738-Administration Linux par la pratique-INT.book Page 30 Friday, May 24, 2019 10:38 AM

Administration Linux par la pratique


30

Cet aperçu est loin d’être complet. Notons qu’il est difficile voire impossible d’établir des sta-
tistiques précises sur l’adoption des systèmes Linux dans le monde, pour la simple raison que
les distributeurs ne suivent pas les utilisateurs à la trace.
67738-Administration Linux par la pratique-INT.book Page 31 Friday, May 24, 2019 10:38 AM

2
Avant de mettre la main à la pâte

Envie d’apprendre à cuisiner ? Il vous faut tout d’abord... une cuisine. Un four. Un frigo. Un évier.
Des ustensiles de base. Sans parler des ingrédients, pour lesquels il va falloir songer à faire quelques
courses. Supermarché ou marché tout court ? Prenons le temps de répondre à toutes les questions
élémentaires que l’apprenti cuistot sous Linux peut se poser. Car toute recette « aux petits oignons »
demande un peu de préparation...

Petite introduction culinaire


Il existe grosso modo trois façons de concevoir la cuisine. Prenons l’exemple d’un plat de
lasagnes.
1 Achetez une boîte de lasagnes congelées. Placez le contenu dans un four à micro-ondes et
faites chauffer. Observez la transformation progressive du bloc de béton grisâtre en geyser
de boue ocre en ébullition. Notez qu’à aucun moment de l’opération, le plat ne ressemble
à l’illustration appétissante de l’emballage.
2 Achetez les ingrédients nécessaires pour la préparation d’un plat de lasagnes. Faites vos
emplettes au marché et dans les petits commerces du quartier, en dédaignant les super-
marchés. Pour quatre personnes, prenez trois cent cinquante grammes de bœuf maigre,
trois cents grammes de farine, quatre œufs, un oignon, une carotte, une échalote, une
branche de céleri, un bouquet garni, quelques cuillerées d’huile d’olive, deux feuilles de
sauge et un zeste de citron. Sans oublier une grappe de tomates fraîches, un bol de parme-
san râpé et un demi-litre de bouillon. Le cas échéant, les tomates en boîte, le fromage en
67738-Administration Linux par la pratique-INT.book Page 32 Friday, May 24, 2019 10:38 AM

Administration Linux par la pratique


32

sachet et le bouillon cube font très bien l’affaire. Si vous êtes amateur, ajoutez un demi-
litre de bon vin rouge, mais ce n’est pas indispensable. Épluchez, lavez, hachez finement,
épluchez encore, égouttez, hachez encore, coupez en petits dés, faites chauffer, couvrez,
laissez étuver, remuez, mélangez, salez, poivrez, faites bouillir, arrosez, portez à ébullition,
et ainsi de suite. Au bout d’une heure, sortez les lasagnes du four et servez-les avec une
petite coupelle de parmesan.
3 Inscrivez-vous à une faculté de sciences et faites des études de biochimie alimentaire.
Découvrez et apprenez par cœur la composition moléculaire de quelques milliers d’ali-
ments. Au bout de deux ans à peine, vous serez en mesure d’évaluer le pH d’une sauce
tomate et cinq ans d’études suffiront pour vous permettre d’entreprendre la modélisation
moléculaire d’un plat de lasagnes alla bolognese.
Vous l’aurez deviné : le présent ouvrage se propose de vous initier à l’installation, la configu-
ration, l’administration et l’utilisation de Linux comme un cuistot vous initierait à la cuisine.
Sa philosophie – son approche, si vous préférez – sera donc en tous points pratique et prag-
matique, semblable à la deuxième conception culinaire énoncée précédemment.
Et maintenant, en cuisine !

Se former à Linux avec CentOS


Pour la rédaction de ce livre, j’ai pris le parti, pour toute une série de raisons, de choisir une
distribution bien précise : CentOS Linux, dans sa version 7.6 (1810), sortie en
décembre 2018.
Comme nous l’avons vu dans le précédent chapitre, CentOS est un système techniquement
identique à Red Hat Enterprise Linux, la principale différence résidant dans le fait que
Red Hat fournit un support technique payant pour ses clients. C’est une distribution de qua-
lité « entreprise », solide et éprouvée, qui ne réserve pas de mauvaises surprises. CentOS fait
partie des distributions les plus populaires sur les serveurs du monde entier et assure une
partie significative de l’infrastructure d’Internet.
Si vous décidez de devenir administrateur Linux en entreprise, vous allez tôt ou tard vous
retrouver confronté à une distribution de la famille Red Hat Enterprise Linux.

DISTRIBUTIONS Et les autres ?


En dehors de CentOS et Red Hat Enterprise Linux, les entreprises et les administrations utilisent réguliè-
rement Debian et Ubuntu LTS sur leurs serveurs. Dans la famille des Unix, FreeBSD est sans conteste le
système le plus populaire.
Pour la plupart, les ouvrages d’introduction à l’administration Linux fournissent une multitude
d’exemples pour toutes les familles de systèmes et finissent bien trop souvent par embrouiller le lecteur à
force de vouloir « danser à toutes les noces », comme on dit dans mon Autriche natale.
Le focus sur CentOS et la famille Red Hat est donc un parti pris pédagogique. Une fois que vous aurez
intégré les concepts présentés dans ce livre « avec le sourire », vous pourrez vous familiariser petit à
petit avec les systèmes de la famille Debian et BSD et leur manière particulière de faire les choses.
67738-Administration Linux par la pratique-INT.book Page 33 Friday, May 24, 2019 10:38 AM

Avant de mettre la main à la pâte


33
CHAPITRE 2

Le matériel : usine à gaz ou simple gazinière ?


Je connais un pianiste hongrois d’une certaine renommée qui a une façon assez singulière de
répéter. Lorsqu’on lui confie un nouveau morceau à travailler, il prend la pile de partitions,
s’installe dans un fauteuil confortable et étudie chaque page en sirotant un café. Suivant la
durée et la complexité du morceau, l’opération peut durer quelques minutes ou quelques
heures. Et c’est seulement après avoir appris, mémorisé et maîtrisé mentalement chaque note,
chaque mesure et chaque passage que le maestro se lève, s’installe au piano et s’exécute.
Si vous vous sentez un talent comparable pour l’informatique, vous pouvez très bien vous
contenter de la simple lecture de ce livre. Dans le cas contraire, si vous doutez de vos capacités
d’émulation mentale, il vous faudra songer à vous procurer l’instrument approprié pour
mettre en pratique le contenu des chapitres à venir.
Vous aurez donc le choix de vous entraîner sur... :
• un PC faisant office de serveur ;
• un vrai serveur ;
• une machine virtuelle (voir page 39).
Je pars du principe que vous possédez déjà un PC fixe et/ou un portable tournant sous Win-
dows, Mac OS X ou Linux. Ne changez rien au système que vous utilisez au quotidien et
gardez-le en l’état. Et surtout, de grâce, évitez les scénarios de double boot, qui sont tout juste
aptes à engendrer d’innommables souffrances.

Acheter un PC faisant office de serveur


Pas la peine de casser la tirelire pour découvrir Linux sur un ordinateur dédié. En règle géné-
rale, un PC d’occasion vieux de six ou sept ans fera très bien l’affaire. Pour vous donner une
idée très concrète : tous les exemples de ce livre ont été mis en pratique en centre de forma-
tion sur un réseau de postes de travail Dell OptiPlex 330 datant de 2008.
Étant donné que cet ouvrage se base principalement sur une installation en ligne de com-
mande – c’est-à-dire dépourvue d’interface graphique –, vous n’aurez pas besoin d’un foudre
de guerre pour mettre en pratique les exemples présentés. Il vous suffira de répondre aux pré-
requis de l’installateur de CentOS, notamment un processeur capable de faire tourner un sys-
tème 64-bits et un gigaoctet de mémoire vive, c’est tout.

LE CONSEIL DU CHEF PlusDePC.com


Je vous conseille d’acheter votre PC d’occasion chez PlusDePC.com, un revendeur de matériel informa-
tique de déstockage et d’occasion reconditionné. Vous y trouverez des configurations complètes (unité
centrale, clavier, souris, écran plat) aux performances décentes pour moins de 100 €. Le matériel est
dûment testé et garanti trois mois. Si vous ne savez pas trop quoi choisir, optez pour une unité centrale
de la gamme Dell OptiPlex.
B https://www.plusdepc.com
67738-Administration Linux par la pratique-INT.book Page 34 Friday, May 24, 2019 10:38 AM

Administration Linux par la pratique


34

Figure 2–1
Ce PC reconditionné d’entrée
de gamme est parfaitement adapté
à nos besoins.

Si vous optez pour la solution PC-reconverti-en-serveur, évitez les ordinateurs portables trop
modernes. Hormis le fait que l’utilisation d’un PC portable comme serveur est une aberra-
tion, vous risquez d’avoir quelques mauvaises surprises avec le matériel ultra-récent et/ou
exotique. Certes, il y a toujours moyen de faire fonctionner une carte réseau non reconnue par
l’installateur, mais il vaut mieux éviter ce cas de figure dans le cadre d’une formation Linux.

Acheter un vrai serveur


Si l’objectif qui vous motive à la lecture de ce livre est l’installation d’un serveur Linux dans
votre TPE ou votre PME, rien ne vous empêche de partir sur du « vrai » matériel serveur. Là
encore, ce n’est pas la peine de débourser une fortune. Les serveurs reconditionnés en bon
état sont vendus à partir d’une centaine d’euros. Optez plutôt pour le format tour que pour
une lame, à moins que vous ne disposiez d’un rack de rangement dans vos locaux.
Un facteur que l’on oublie souvent lorsqu’on achète un serveur, c’est le bruit. Certains
modèles génèrent autant de bruit qu’une batterie de sèche-cheveux au démarrage, ce qui peut
vite devenir lassant lorsqu’on essaie de travailler à côté.
Lorsque j’effectue une installation dans une petite entreprise qui ne dispose pas d’un local à
part pour les serveurs, j’utilise à peu près systématiquement les machines HP de la gamme
Proliant Microserver. Les serveurs de cette famille sont particulièrement silencieux et vous
pouvez les poser dans un espace de travail sans vous faire maudire par tout le monde. Dans
mon bureau, j’ai un des premiers modèles de HP Proliant Microserver qui tourne depuis
bientôt cinq ans et j’en suis très satisfait.
67738-Administration Linux par la pratique-INT.book Page 35 Friday, May 24, 2019 10:38 AM

Avant de mettre la main à la pâte


35
CHAPITRE 2

Figure 2–2
Un exemple de serveur
reconditionné pour budgets
restreints.

Figure 2–3
Le HP Proliant Microserver
est un serveur robuste,
peu encombrant et silencieux.

MATÉRIEL C’est dans les vieilles marmites qu’on fait les meilleures soupes
L’achat de matériel reconditionné – voire le reconditionnement de votre matériel existant – offre une
série d’avantages non négligeables. Vous faites un geste pour l’environnement, puisque vous offrez une
seconde vie sous Linux à votre serveur. Et un aspect que l’on oublie parfois, c’est la compatibilité. En
achetant du matériel serveur qui date un petit peu, vous pouvez être sûr à 100 % que tous vos compo-
sants seront reconnus sans problème par CentOS 7.
67738-Administration Linux par la pratique-INT.book Page 36 Friday, May 24, 2019 10:38 AM

Administration Linux par la pratique


36

Comment obtenir la distribution CentOS ?


Rendez-vous sur le site officiel https://www.centos.org et suivez le lien Get CentOS Now symbo-
lisé par un gros bouton orange au centre de la page. La page subséquente vous offre le choix
entre plusieurs supports d’installation. Cliquez sur le bouton Minimal ISO et sélectionnez un
miroir de téléchargement, par exemple ftp://ftp.free.fr/mirrors/ftp.centos.org. Téléchargez le fichier
CentOS-7-x86_64-Minimal-1810.iso, qui pèse un peu plus de 900 mégaoctets.

Figure 2–4
Le site officiel de CentOS.

Figure 2–5
Le support d’installation
Minimal ISO est suffisant
pour nos besoins.
67738-Administration Linux par la pratique-INT.book Page 37 Friday, May 24, 2019 10:38 AM

Avant de mettre la main à la pâte


37
CHAPITRE 2

Figure 2–6
La liste des miroirs de
téléchargement s’affiche
en fonction de votre pays.

Graver le fichier ISO


Étant donné que la taille du fichier ISO dépasse la capacité d’un simple CD, il vous faudra
graver un DVD.
Si vous utilisez une version raisonnablement récente de Microsoft Windows, lancez l’explo-
rateur de fichiers et naviguez vers le répertoire de téléchargement. Repérez votre fichier
CentOS-7-x86_64-Minimal-1810.iso, sélectionnez-le et cliquez sur Graver l’image disque.
L’interface de gravure apparaît et il vous suffit de cliquer sur Graver. Éventuellement, vous
pouvez activer l’option Vérifier le disque après la gravure.
De manière similaire, les utilisateurs de Mac OS X devront naviguer vers le répertoire de
téléchargement et repérer le fichier CentOS-7-x86_64-Minimal-1810.iso. Ici, il suffit de cli-
quer-droit sur le fichier et de sélectionner Graver... dans le menu contextuel.
Sous Linux, vous pouvez utiliser une application de gravure comme K3B, Brasero ou Xfburn
pour la confection de votre DVD d’installation. Dans chacun des cas, repérez l’entrée de
menu Graver une image. Sélectionnez votre fichier CentOS-7-x86_64-Minimal-1810.iso et
repérez les propriétés de gravure. Optez pour la vitesse la plus basse, activez la vérification de
la gravure si l’application propose cette option et fermez la fenêtre de paramétrage. Enfin, cli-
quez sur Graver et allez boire un café en attendant la fin de la gravure.
Au vu du nombre de systèmes et de logiciels de gravure différents, il m’est difficilement pos-
sible de fournir des indications détaillées pour toutes les combinaisons possibles. Veillez seu-
lement à graver en tant qu’image ISO.
67738-Administration Linux par la pratique-INT.book Page 38 Friday, May 24, 2019 10:38 AM

Administration Linux par la pratique


38

DISTINCTION CRUCIALE Graver en tant qu’image ISO


Ne vous contentez pas de ranger les fichiers sur un DVD de données. L’information dépasse peut-être le
cadre de ce livre, mais on la retrouve facilement sur le Web. Grosso modo, un fichier ISO équivaut ici à un
« cliché » du DVD d’installation, qu’il faut ensuite transférer sur le support vierge en suivant une procé-
dure bien spécifique.

Et si je n’ai pas de lecteur optique ?


Certaines machines, comme le serveur HP Proliant Microserver dans sa configuration de
base, sont dépourvues de lecteur optique. Dans ce cas, il faut passer par la confection d’une
clé USB amorçable.
Munissez-vous d’une clé USB vide avec une capacité de 4 gigaoctets ou plus. Notez que, de nos
jours, il est difficile de trouver des clés de moins de 8 gigaoctets dans le commerce. En revanche,
certaines enseignes offrent des disques USB à faible capacité comme porte-clés promotionnels.
Ce genre de gadget convient parfaitement pour la confection d’un support d’installation.
Sous Microsoft Windows, il existe une multitude de « solutions » pour écrire une image ISO sur
une clé USB, qui se distinguent toutes par le fait qu’elles ne fonctionnent pas. J’ai quand même
réussi à en trouver une qui s’acquitte correctement de cette tâche : c’est l’application Rufus.

OUTIL Rufus
Rufus est un logiciel libre pour Microsoft Windows qui permet de créer une clé USB amorçable depuis un
fichier ISO.
B https://rufus.akeo.ie/

Insérez une clé USB formatée, lancez Rufus, vérifiez si votre clé s’affiche bien dans le premier
champ Périphérique, sélectionnez votre fichier CentOS-7-x86_64-Minimal-1810.iso et cliquez
sur Démarrer.
Figure 2–7
Rufus permet de confectionner
une clé USB d’installation
en quelques clics.
67738-Administration Linux par la pratique-INT.book Page 39 Friday, May 24, 2019 10:38 AM

Avant de mettre la main à la pâte


39
CHAPITRE 2

Sous Mac OS X, branchez une clé USB formatée, lancez l’Utilitaire de Disque, sélectionnez la
clé, choisissez l’option Restaurer et effectuez un simple glisser/déposer du fichier ISO vers le
champ de texte au milieu de la fenêtre.
Sous Linux, la manière la plus simple consiste à utiliser la commande dd dans un terminal.
Dans un premier temps, il s’agit d’identifier le fichier de périphérique correspondant à votre
clé USB.
1 Ouvrez un terminal graphique.
2 Affichez les messages du système : sudo tail -f /var/log/messages.
3 Branchez la clé USB.
4 Guettez les messages du système pour quelque chose qui ressemble à /dev/sdb, /dev/
sdc, etc.
5 Notez le nom du périphérique /dev/sdX qui s’affiche.
6 Alternativement, invoquez la commande lsblk.
Une fois que vous avez identifié le fichier de périphérique /dev/sdX de votre clé USB, vous
pouvez utiliser la commande dd pour écrire le fichier ISO directement sur la clé :

# dd if=CentOS-7-x86_64-Minimal-1810.iso of=/dev/sdX

Au cas où ces informations s’avéreraient insuffisantes, effectuez une recherche Google sur
« clé usb bootable iso » et vous trouverez une multitude de tutoriels détaillés sur le sujet.

S’entraîner sur un système virtualisé


Il existe une troisième possibilité de découvrir Linux par la pratique : il s’agit d’installer une
machine virtuelle sur votre PC existant. Une solution virtualisée permet de vous entraîner sur
votre ordinateur personnel sans pour autant mettre en péril votre système et vos données ;
cela vous évite l’acquisition de nouveau matériel. Elle vous dispense également de la confec-
tion du support d’installation, étant donné que vous pourrez vous servir directement du
fichier CentOS-7-x86_64-Minimal-1810.iso téléchargé.
VirtualBox (« machine virtuelle ») est un logiciel de virtualisation de systèmes d’exploitation.
En utilisant les ressources matérielles de l’ordinateur (système hôte), VirtualBox crée un ordi-
nateur virtuel dans lequel s’installent d’autres systèmes d’exploitation (systèmes invités). Les
systèmes invités fonctionnent en même temps que le système hôte, mais seul ce dernier a
accès directement au véritable matériel de l’ordinateur.

APPLICATION VirtualBox
VirtualBox est un logiciel libre développé par la société Oracle. Il est disponible pour les plates-formes
Microsoft Windows, Mac OS X, Linux et Solaris.
B https://www.virtualbox.org/
67738-Administration Linux par la pratique-INT.book Page 40 Friday, May 24, 2019 10:38 AM

Administration Linux par la pratique


40

Rendez-vous sur le site de VirtualBox, lisez sommairement les instructions d’installation


pour votre plate-forme et installez l’application sur votre ordinateur.
Figure 2–8
VirtualBox vous permet de faire
tourner d’autres systèmes
d’exploitation sur votre machine.

Créer et configurer une machine virtuelle


Dans l’exemple qui suit, nous allons créer et préparer une machine virtuelle pour CentOS 7.
Les captures d’écran proviennent d’une station de travail tournant sous OpenSUSE. Si vous
utilisez VirtualBox sous Microsoft Windows ou Mac OS X, il se peut que l’interface de
l’application soit légèrement différente.
1 Démarrez VirtualBox et cliquez sur Nouvelle pour créer une nouvelle machine virtuelle.
2 Définissez le nom (CentOS 7 64-bit), le type (Linux) et la version (Red Hat 64-bit) de la
machine virtuelle.
3 Définissez la quantité de mémoire vive que vous souhaitez allouer à la machine virtuelle.
L’assistant suggère 1 gigaoctet (1 024 Mio), ce qui est le minimum requis pour que l’instal-
lateur de CentOS fonctionne correctement. Rien n’empêche d’allouer davantage de
mémoire en fonction de la RAM disponible sur le système hôte.
4 Créez un disque dur virtuel. Gardez l’option par défaut Créer un disque virtuel maintenant
et cliquez sur Créer.
5 Gardez le type de fichier de disque dur VDI par défaut.
6 Faites de même pour le stockage dynamiquement alloué.
7 Augmentez la taille du disque dur à 20 Gio ou plus.
67738-Administration Linux par la pratique-INT.book Page 41 Friday, May 24, 2019 10:38 AM

Avant de mettre la main à la pâte


41
CHAPITRE 2

Figure 2–9
L’assistant de création de machines
virtuelles de VirtualBox vous
permet de créer une nouvelle
machine en quelques clics.

Maintenant que la machine virtuelle est créée, nous allons la configurer. Plus exactement,
nous allons définir ses caractéristiques matérielles. Suivez le guide.
Figure 2–10
Sélectionnez la machine virtuelle et
cliquez sur le bouton Configuration
en haut à gauche de la fenêtre
principale.
67738-Administration Linux par la pratique-INT.book Page 42 Friday, May 24, 2019 10:38 AM

Administration Linux par la pratique


42

Figure 2–11
Dans la section Système, repérez
l’onglet Processeur et augmentez
éventuellement le nombre de
processeurs de la machine virtuelle.
Vous pouvez décocher la case
Activer PAE/NX, qui ne concerne
que les systèmes 32-bits.

Figure 2–12
Dans la section Affichage, vous
pouvez éventuellement augmenter
la mémoire vidéo et activer
l’accélération 3D.

Figure 2–13
Dans la section Stockage,
sélectionnez le champ Vide du
Contrôleur : IDE, cliquez sur la
petite flèche en dessous de l’icône
du CD pour déplier le menu du
lecteur optique et sélectionnez
votre fichier ISO.
67738-Administration Linux par la pratique-INT.book Page 43 Friday, May 24, 2019 10:38 AM

Avant de mettre la main à la pâte


43
CHAPITRE 2

Figure 2–14
Le fichier ISO fait office de disque
optique virtuel, ce qui nous
dispense de confectionner un DVD
ou une clé USB d’installation.

Figure 2–15
Dans la section Réseau, remplacez
la configuration NAT par un Accès
par pont dans le menu déroulant
du mode d’accès réseau et
terminez en cliquant sur OK.

VirtualBox fait partie des applications du genre « usine à gaz » qui peuvent intimider par une
myriade de fonctionnalités et d’options. Si vous souhaitez aller plus loin, n’hésitez pas à jeter
un œil sur l’excellente documentation du projet, qui existe également en traduction française.
Elle a peut-être une ou deux versions de retard, mais ce n’est pas bien grave.
Enfin, notez que nous ne traitons pas ici l’installation des Additions Invité (Guest Additions) de
VirtualBox, qui ne sont réellement nécessaires que sur un système invité de type poste de travail.
Et maintenant, il est temps de mettre la main à la pâte...
67738-Administration Linux par la pratique-INT.book Page 44 Friday, May 24, 2019 10:38 AM
67738-Administration Linux par la pratique-INT.book Page 45 Friday, May 24, 2019 10:38 AM

3
Linux installé par une poule

Pour découvrir un système d’exploitation comme Linux, il faut d’abord l’installer sur son ordinateur.
C’est probablement beaucoup moins difficile que vous ne l’imaginez. Avec un peu de préparation,
c’est même un jeu d’enfant.

L’œuf ou la poule ?
Nous voilà donc armés jusqu’aux dents de matériel, de supports d’installation et de bonne
volonté. Et nous nous retrouvons face à un dilemme. Tout le monde connaît le paradoxe de
l’œuf et de la poule : qui était là en premier, l’œuf ou la poule ? L’œuf, répondrez-vous, pour
vous raviser instantanément en vous demandant quelle poule a bien pu le pondre. La poule,
donc, mais non, car de quel œuf a-t-elle bien pu éclore ? Et ainsi de suite, ad galinam
aeternam.
Notre dilemme est analogue et peut être formulé ainsi :
• l’apprentissage de Linux par la pratique nécessite une installation fonctionnelle de ce
système ;
• l’installation de Linux nécessite de connaître le système un tant soit peu.
Pour sortir de ce cercle vicieux, nous allons effectuer dans un premier temps ce que certains
informaticiens anglophones appellent une chicken install : l’installation d’un système d’exploi-
tation telle qu’une poule serait capable de réaliser. Il suffit qu’elle accepte les choix par défaut
de l’installateur en actionnant la touche Entrée avec son bec : OK, OK, OK, OK, OK, OK...
67738-Administration Linux par la pratique-INT.book Page 46 Friday, May 24, 2019 10:38 AM

Administration Linux par la pratique


46

Au commencement était le BIOS


La première chose à faire lorsqu’on installe un système d’exploitation, c’est de régler le BIOS
(Basic Input/Output System ou « système élémentaire d’entrée/sortie ») de la machine pour
qu’il démarre sur le support d’installation, en l’occurrence le DVD ou la clé USB.

B.A-BA Le BIOS
En termes très simples, le BIOS, c’est ce qui s’active immédiatement après l’allumage de votre ordinateur,
lorsque vous voyez défiler divers logos de carte mère et de carte graphique, un test sommaire de la
mémoire vive, ainsi qu’une flopée d’informations diverses et variées que vous avez toujours eu envie
d’ignorer – et qui défilent d’ailleurs à une telle vitesse que l’on a rarement le temps de les lire.
De nos jours, le BIOS est considéré comme obsolète, étant donné qu’il est progressivement remplacé par
l’UEFI. Si je vous le présente quand même, c’est que vous risquez encore de le trouver sur bon nombre de
machines.

Chaque constructeur possède sa touche magique qui vous permet de rentrer dans le menu du
BIOS. Il vous suffit d’appuyer dessus juste après avoir allumé votre ordinateur. Pour la plu-
part, les systèmes vous affichent la touche magique à utiliser pendant au moins quelques
nanosecondes. Le plus souvent, c’est la touche Suppr. D’autres fois, c’est une des touches Fx
en haut de votre clavier : F1, F2, F6, F8, F10 ou F11. Dans certains cas, il est nécessaire
d’appuyer sur la touche Échap avant de faire tout cela. Et dans de très rares cas, il s’agit d’une
combinaison de touches improbable figurant dans un manuel introuvable, mais qu’une armée
de singes ataviques finirait par trouver au bout de quelques milliers d’années à peine.
Tout ce que vous avez à faire ici, c’est indiquer à votre PC que le premier périphérique utilisé au
démarrage (First Boot Device) est votre lecteur DVD ou votre clé USB si votre machine est
dépourvue de lecteur optique. Le menu correspondant peut aussi s’appeler Boot Priority (priorité
de démarrage) ou bien Boot Order (ordre de démarrage). Enregistrez les changements et quittez
le menu du BIOS, ce qui s’effectue dans la majorité des cas en appuyant sur la touche F10.

INNOVATION UEFI
Le BIOS tel qu’on le connaît est une technologie établie depuis une bonne quarantaine d’années, qui
apporte donc nécessairement son lot de limitations et autres désagréments. Des constructeurs comme
Intel, AMD, Microsoft et Apple se sont donc retroussés les manches depuis la fin des années 1990 pour
développer EFI (Extensible Firmware Interface), rebaptisé UEFI (Unified Extensible Firmware Interface)
par la suite. Les ordinateurs de bureau et les portables neufs sont actuellement à peu près tous équipés
d’UEFI. Notez que, sur le descriptif des cartes mères modernes, le sigle « EFI » désigne à peu près
systématiquement l’UEFI.
Le système UEFI présente de nombreux avantages par rapport au BIOS. Il s’initialise plus rapidement, il
supporte l’installation parallèle de plusieurs systèmes d’exploitation et il sait gérer les disques durs de
plus de deux téraoctets tout comme les tables de partitions GPT (GUID Partition Tables), une méthode
moderne qui ne souffre plus des limitations anachroniques du partitionnement traditionnel. Si vous
n’avez rien compris à la phrase précédente, cela ne vous empêchera pas de vivre.
67738-Administration Linux par la pratique-INT.book Page 47 Friday, May 24, 2019 10:38 AM

Linux installé par une poule


47
CHAPITRE 3

Les distributions Linux commencent petit à petit à être compatibles EFI. CentOS 7 est capable de démar-
rer l’installation directement en mode UEFI. Ceci étant dit, l’écrasante majorité des cartes mères
modernes offrent la possibilité de démarrer en mode BIOS traditionnel (Legacy BIOS) et je vous conseille
d’y revenir pour l’installation que nous allons effectuer dans ce chapitre. Il se peut alors que votre sup-
port d’installation apparaisse deux fois dans le menu de démarrage de votre PC. Dans ce cas, choisissez
de démarrer sur l’entrée de menu qui ne comporte pas de préfixe EFI ou UEFI.

Figure 3–1 Exemple de menu UEFI moderne.

À présent, démarrez sur le DVD ou la clé USB de CentOS. Si vous avez opté pour l’installa-
tion d’une machine virtuelle dans VirtualBox, mettez-la en surbrillance et cliquez sur le gros
bouton Démarrer en haut de l’écran, symbolisé par une flèche verte. Au bout de quelques
secondes, vous voyez apparaître l’écran de démarrage que voici :
Figure 3–2
Démarrage sur le DVD ou
la clé USB d’installation de CentOS.
67738-Administration Linux par la pratique-INT.book Page 48 Friday, May 24, 2019 10:38 AM

Administration Linux par la pratique


48

L’écran d’accueil de l’installateur se présentera quelque peu différemment si vous démarrez en


mode UEFI. Dans ce cas, retournez dans l’interface de configuration d’UEFI, cherchez
l’option Legacy BIOS et activez-la. Si jamais vous ne la trouvez pas, ne vous arrachez pas les
cheveux pour autant. L’installation en mode UEFI utilisera tout au plus un schéma de parti-
tionnement différent, ce qui ne nous bloquera pas lors de notre apprentissage.

Testez votre mémoire !


Normalement, il nous suffirait d’appuyer sur Entrée pour lancer l’installation. Il est vrai que
nous nous étions promis de fonctionner en mode « poule écervelée » et de n’utiliser que les
options par défaut, mais dérogeons à notre propre règle pour cette fois, en démarrant sur
l’entrée Troubleshooting>Run a memory test.
Memtest86 est un petit utilitaire inclus dans le disque d’installation de CentOS, qui vérifie le
bon fonctionnement de la RAM (Random Access Memory, autrement dit la mémoire vive de
votre PC). Rien ne vous empêche de visualiser cette mémoire vive comme un amas de mil-
liards de petites cellules grises. Tout ce que l’ordinateur traite, calcule, affiche, etc. passe par
ces petites cellules.

URL Memtest86
Memtest86 est un utilitaire indépendant de CentOS.
B https://www.memtest86.com

Figure 3–3
L’écran de Memtest86.

Chez l’être humain normalement constitué, la destruction de quelques milliers de cellules


grises – suite à une soirée bien arrosée, par exemple – pourrait presque passer inaperçue, à
condition de ne pas répéter l’opération trop souvent, bien sûr. Dans le cas du PC, en
revanche, le dysfonctionnement ne serait-ce que d’une seule de ces milliards de cellules peut
entraîner des conséquences désastreuses, résultant en un système à peu près inutilisable.
67738-Administration Linux par la pratique-INT.book Page 49 Friday, May 24, 2019 10:38 AM

Linux installé par une poule


49
CHAPITRE 3

Le hic, c’est que les erreurs provenant d’une barrette de RAM défectueuse peuvent se révéler
perfides. Dans certains cas, elles ne se manifestent pas immédiatement. Pendant un certain
temps, l’ordinateur semble même fonctionner normalement. Pourtant, à peine a-t-on lancé
plus de trois applications en même temps que l’on obtient des erreurs inexplicables. Ajoutez à
cela le fait que les barrettes de mémoire vendues neuves dans le commerce ne sont pas testées
et vous avez toutes les raisons de vouloir vous assurer que vous partez sur des bases saines.
L’affichage de Memtest86 paraît quelque peu hermétique mais, parmi toutes les informations
retournées, seule une poignée nous intéresse.
• Dans la première colonne à gauche, Memory: affiche la quantité totale de RAM dispo-
nible, en mégaoctets. Sur notre exemple, 2048M signifie que la machine dispose de deux
gigaoctets de mémoire vive. Vérifiez si la totalité de la mémoire dont vous êtes censé dis-
poser s’affiche bien ici.
• Les deux barres de progression dessinées à l’aide d’une série de symboles dièse (#######)
près du bord supérieur de l’écran indiquent l’état d’avancement des tests effectués.
• Dans la colonne des résultats, il n’y a que deux valeurs qui nous intéressent : Pass et
Errors. La première indique le nombre de fois que Memtest86 a effectué la totalité des
tests. Et si Errors indique autre chose que 0 (zéro), il vous faudra songer à remplacer la ou
les barrette(s) incriminée(s).
Notez que Memtest86 ne s’arrête pas spontanément en bout de course. Dès que l’ensemble
des tests a été appliqué sur la totalité de la mémoire, le programme s’exécute à nouveau depuis
le début. Vous devez donc l’interrompre manuellement, grâce à la touche Échap.

À SAVOIR
Comptez entre dix minutes et plusieurs heures pour un test complet, en fonction de la puissance de
calcul du processeur et de la quantité de mémoire à tester.

Installation de CentOS

Premiers pas
Lancez l’installation pour de bon. Autrement dit, confirmez simplement avec Entrée sur
l’écran d’accueil de l’installateur. La différence entre Test this media & install CentOS 7 et Install
CentOS 7, c’est que l’option par défaut vérifie l’intégrité du support d’installation.

OPTION Vérifier l’intégrité du DVD d’installation ?


La vérification initiale de l’intégrité du DVD d’installation de CentOS n’est peut-être pas une mauvaise
idée, si je repense à ma toute première expérience Linux, une Slackware 7.1 sur un Pentium-II. L’installa-
teur produisait toute une série d’erreurs aléatoires et j’ai passé une bonne semaine à maudire ce soi-
disant système révolutionnaire, avant de me rendre compte que les erreurs provenaient tout bonnement
du CD d’installation défectueux.
67738-Administration Linux par la pratique-INT.book Page 50 Friday, May 24, 2019 10:38 AM

Administration Linux par la pratique


50

L’installateur vous somme d’abord de sélectionner la langue du système avant d’afficher


l’écran principal avec toutes les options.
Figure 3–4
Sélectionnez la langue du système.

Figure 3–5
Patientez un peu jusqu’à ce que
toutes les options de l’installateur
soient disponibles.
67738-Administration Linux par la pratique-INT.book Page 51 Friday, May 24, 2019 10:38 AM

Linux installé par une poule


51
CHAPITRE 3

Choisir la disposition du clavier


Si vous souhaitez utiliser un autre clavier que la disposition proposée, cliquez sur Clavier.
Dans l’écran Agencement du clavier, sélectionnez celui qui est proposé et cliquez sur le bouton
symbolisant un signe « moins » en bas à gauche de l’écran. Choisissez votre agencement dans
la liste, cliquez sur Ajouter, puis sur Terminer pour revenir à l’écran principal de l’installateur.
Figure 3–6
Sélectionnez l’agencement
du clavier dans la liste.

BUG Je n’arrive pas à changer de clavier dans VirtualBox !?!


Les rares lecteurs francophones qui – comme moi – utilisent un autre clavier que la disposition AZERTY
définie par défaut s’apercevront que le dialogue de sélection des claviers ne s’affiche pas correctement
dans VirtualBox. Ceci est dû à une incompatibilité entre le kernel de RHEL/CentOS 7.6 et l’application Vir-
tualBox, qui est décrite en détail ici :
B https://bugs.centos.org/view.php?id=15570
En attendant que le problème soit résolu par une mise à jour, voici comment vous pouvez procéder pour définir
une disposition clavier personnalisée. Dans l’exemple qui suit, je définis un clavier suisse romand QWERTZ.
1. J’effectue l’installation en utilisant le clavier français AZERTY configuré par défaut.
2. Lors de la définition des mots de passe dans l’installateur, je n’oublie pas que j’utilise un clavier AZERTY.
3. Au premier démarrage, je me connecte en tant que root.
4. J’affiche la liste des dispositions clavier disponibles avec la commande localectl list-keymaps.
Les touches fléchées me permettent de naviguer dans la liste. J’appuie sur Q pour quitter l’affichage.
5. Maintenant que je connais le nom de mon clavier, je peux le définir de manière temporaire : loadkeys
ch-fr.
6. Pour définir la nouvelle disposition clavier de façon permanente, j’invoque la commande localectl
set-keymap ch-fr.
Ce problème d’incompatibilité entre VirtualBox et CentOS 7.6 ne concerne que les anciennes versions de
VirtualBox, car il a été résolu dans VirtualBox 5.2.26.
67738-Administration Linux par la pratique-INT.book Page 52 Friday, May 24, 2019 10:38 AM

Administration Linux par la pratique


52

Partitionner le disque dur


Pour cette première installation, nous nous simplifierons la vie et nous choisirons le partition-
nement automatique.
1 Cliquez sur Destination de l’installation.
2 Vérifiez si le disque dur est bien sélectionné.
3 Gardez l’option Configurer automatiquement le partitionnement.
4 Si vous remplacez un système existant par CentOS, cochez Je voudrais libérer de l’espace
pour faire de la place sur le disque dur.
5 Cliquez sur Terminé.
6 Dans l’écran subséquent, supprimez toutes les partitions existantes le cas échéant. Cliquez
sur Tout supprimer, puis sur Récupérer de l’espace, ce qui vous fait revenir à l’écran principal.
L’installateur se chargera de calculer automatiquement le schéma de partitionnement en
fonction de la taille de votre disque dur et de la quantité de mémoire vive disponible. Il choi-
sira également les systèmes de fichiers adaptés. Si vous n’avez rien compris à ces deux der-
nières phrases, ne vous en souciez pas trop. Nous verrons tout cela en détail par la suite.
Figure 3–7
Sélectionnez le partitionnement
automatique en mode « poule ».
67738-Administration Linux par la pratique-INT.book Page 53 Friday, May 24, 2019 10:38 AM

Linux installé par une poule


53
CHAPITRE 3

Figure 3–8
Ici, nous supprimons d’abord
les partitions d’une installation
Windows existante.

Figure 3–9
Une fois que les partitions
existantes sont supprimées,
nous devons récupérer
l’espace disponible.

OPTION Sélection de logiciels


Si vous utilisez le DVD standard de CentOS – et non pas le DVD minimal – vous devez sélectionner le
groupe de paquets Installation minimale dans l’écran Sélection de logiciels. Le support minimal ne laisse
pas le choix de toute façon.
67738-Administration Linux par la pratique-INT.book Page 54 Friday, May 24, 2019 10:38 AM

Administration Linux par la pratique


54

Désactiver le service Kdump


Kdump est un mécanisme de capture lors du plantage d’un noyau. Là encore, ne vous inquiétez
pas trop si vous ne savez pas ce que c’est. Contentez-vous simplement de le désactiver en déco-
chant la petite case Activer Kdump dans la section Kdump, car nous n’en avons pas besoin.
Figure 3–10
Le service Kdump n’est d’aucune
utilité pour nous et nous pouvons
sereinement le désactiver.

Activer le réseau et définir le nom d’hôte


Si vous installez CentOS sur une machine physique – c’est-à-dire non virtuelle – vérifiez si
votre carte réseau est bien reliée à votre modem/routeur ADSL ou au switch de votre entre-
prise, puis ouvrez la section Nom d’hôte et réseau.
Le réseau n’est pas activé par défaut ; il faut donc songer à l’activer explicitement en cliquant sur
le bouton en forme d’interrupteur en haut à droite de l’écran, ce qui fait passer sa valeur de 0 à 1.

RÉSEAU DHCP
DHCP signifie Dynamic Host Configuration Protocol et désigne un protocole d’allocation dynamique
d’adresses IP. Pour comprendre le principe de fonctionnement du DHCP, imaginez un cours d’anglais où
le professeur décide de donner des noms typiquement anglais à ses élèves. Pour la durée du cours, tel
élève s’appellera donc Freddy, sa voisine à droite sera Pamela et son voisin à gauche sera connu sous le
nom de Brian. Pour éviter toute confusion, chaque élève portera un prénom distinct. De façon analogue
et en simplifiant un tant soit peu, le modem/routeur dira à votre PC : « Pour une durée de 32 400
secondes, tu seras la machine 192.168.2.10 dans le réseau. »
67738-Administration Linux par la pratique-INT.book Page 55 Friday, May 24, 2019 10:38 AM

Linux installé par une poule


55
CHAPITRE 3

Si tout se passe bien, votre serveur DHCP vous attribue vos paramètres réseau :
• une Adresse IP (quelque chose comme 192.168.2.10) ;
• un Masque de sous-réseau (quelque chose comme 255.255.255.0) ;
• une Route par défaut (quelque chose comme 192.168.2.1) ;
• l’adresse IP d’un serveur DNS (quelque chose comme 192.168.2.1, mais pas forcément la
même adresse IP que la route par défaut dans notre exemple).

NOMENCLATURE Les noms des interfaces réseau


Les habitués de CentOS auront remarqué que les noms des interfaces réseau ont changé avec la
version 7. On n’a plus affaire aux bons vieux eth0, eth1, eth2 ou wlan0, etc. Désormais, les interfaces
portent des noms bizarres comme enp2s0, enp3s0, enp3s1, enp0s25 ou encore p4p1.
En théorie, le nouveau schéma est moins arbitraire et offre davantage de consistance en se basant sur
l’emplacement physique de la carte dans la machine. En pratique, les administrateurs Linux chevronnés
du monde entier se sont à peu près tous demandé ce que c’était que ce bazar.

Pour le nom d’hôte de votre machine, choisissez-en un à votre convenance, en remplacement


de localhost.localdomain par défaut. Voici quelques exemples pour vous donner une idée :
• centosbox ;
• nestor ;
• grossebertha ;
• serveur-linux ;
• etc.
Figure 3–11
Activez le réseau, vérifiez les
paramètres obtenus et définissez
un nom d’hôte pour la machine.
67738-Administration Linux par la pratique-INT.book Page 56 Friday, May 24, 2019 10:38 AM

Administration Linux par la pratique


56

Démarrer l’installation
L’écran principal de l’installateur vous affiche une vue d’ensemble des différents paramètres.
S’il estime qu’il lui manque encore une information vitale, il vous le fait savoir par un point
d’exclamation dans un petit triangle orange.
Figure 3–12
Une fois que vous avez fourni tous
les paramètres, il ne vous reste plus
qu’à démarrer l’installation.

L’installateur mouline sous le capot pour installer CentOS sur le disque dur, mais nous
n’avons pas tout à fait terminé.

Définir les paramètres utilisateur


L’écran Paramètres utilisateur nous somme de choisir un mot de passe administrateur et nous
propose de créer un premier utilisateur « commun des mortels ».
Pour simplifier quelque peu les choses, un système Linux fait grosso modo la distinction entre
deux types d’utilisateurs.
1 Les utilisateurs du « commun des mortels » ont accès à certaines zones du système, si l’on
peut dire. À condition que leur compte soit configuré correctement – nous verrons cela
plus loin – ils ont suffisamment de droits pour travailler correctement, mais une mauvaise
manipulation de leur part ne pourra en aucun cas porter atteinte à l’intégrité du système.
On peut comparer ce cas de figure à une entreprise où chaque employé possède son propre
casier, son propre bureau avec ses tiroirs qui ferment à clé. Il bénéficie de l’infrastructure
de l’entreprise et partage une partie de son travail s’il le souhaite, mais personne
– à l’exception de l’administrateur root – ne pourra fouiner dans ses affaires personnelles.
2 L’administrateur root, quant à lui, possède tous les droits sur la machine. C’est le vigile
avec l’énorme trousseau de clés qui donne accès aux moindres recoins du bâtiment.
67738-Administration Linux par la pratique-INT.book Page 57 Friday, May 24, 2019 10:38 AM

Linux installé par une poule


57
CHAPITRE 3

SÉCURITÉ Bien choisir son mot de passe


Linux a une préférence marquée pour les mots de passe compliqués, le genre de chaîne de caractères que
vous obtenez lorsque votre chat marche sur le clavier. « 123456 », « 654321 » ou le nom dudit chat ne
sont pas de bons mots de passe, à moins que vous n’ayez l’habitude d’appeler votre animal domestique
« GnLpF3th » ou « Wgh8sTr5FgH ». Vous verrez d’ailleurs que l’installateur protestera si le mot de passe
que vous choisissez lui paraît trop simple. Dans ce cas, vous devrez soit en choisir un autre plus compli-
qué, soit confirmer par deux fois.

Figure 3–13
L’écran des paramètres utilisateur
s’affiche pendant que l’installation
s’effectue sous le capot.

Figure 3–14
Choisissez un mot de passe
suffisamment compliqué en évitant
les mots du dictionnaire.
67738-Administration Linux par la pratique-INT.book Page 58 Friday, May 24, 2019 10:38 AM

Administration Linux par la pratique


58

Créer un utilisateur
L’écran de création de l’utilisateur initial vous pose une série de questions. Rien ne vous
oblige de respecter l’ordre Nom et prénom dans le premier champ, et vous pouvez très bien
indiquer Nicolas Kovacs, Gaston Lagaffe ou Jean-Kevin Tartempion.
En fonction de votre saisie initiale, l’installateur vous fera une suggestion pour le nom d’utili-
sateur, mais vous n’êtes pas obligé de la suivre. Il existe une série de règles et de conventions
sur les systèmes Linux en ce qui concerne les noms d’utilisateur.
• Il est interdit d’utiliser les caractères spéciaux et les espaces.
• Préférez les lettres minuscules. Mais c’est une simple convention et rien ne vous empêche
d’utiliser les majuscules.
• Un nom d’utilisateur est généralement composé de l’initiale du prénom, suivie du nom de
famille. Là aussi, c’est une recommandation et vous n’êtes pas obligé de vous y tenir.
Si nous respectons ces règles, Gaston Lagaffe utilisera donc le nom d’utilisateur glagaffe,
Jacques Martin s’identifiera sur le système en tant que jmartin et le login de Jean-
Kevin Tartempion ressemblera à quelque chose comme jktartempion.
Rien ne nous oblige pourtant à être aussi strict dans la définition du nom d’utilisateur.
Kiki Novak pourra préférer kikinovak à knovak, Gaston Lagaffe utilisera un simple gaston
et Jean-Kevin Tartempion favorisera warlordz ou nemesis, plus incisifs que jktartempion.
Cochez éventuellement la case Faire de cet utilisateur un administrateur, tout en gardant à
l’esprit que c’est facultatif. Nous verrons plus loin ce que cela signifie.
Enfin, choisissez un mot de passe pour cet utilisateur, en respectant les mêmes règles que
celles énoncées page précédente pour celui de root.
Figure 3–15
La définition d’un utilisateur
du « commun des mortels ».
67738-Administration Linux par la pratique-INT.book Page 59 Friday, May 24, 2019 10:38 AM

Linux installé par une poule


59
CHAPITRE 3

Fin de l’installation et redémarrage initial


Au terme de l’installation et de la configuration du système, il ne vous reste plus qu’à Redé-
marrer la machine. N’oubliez pas de retirer le support d’installation.
Figure 3–16
Redémarrez la machine et retirez
le support d’installation.

L’ordinateur redémarre et vous affiche tout d’abord l’écran du chargeur de démarrage. Le réglage
par défaut du système prévoit un temps d’attente de cinq secondes avant le lancement automa-
tique du système. Les impatients parmi vous appuieront sur Entrée pour écourter l’attente.
Figure 3–17
L’invite du chargeur de démarrage
s’affiche cinq secondes avant
de lancer l’initialisation.

Dans la configuration par défaut, CentOS remplace les messages de démarrage du système
par une simple barre de progression horizontale en bas de l’écran. Pour afficher les messages,
appuyez sur la touche Échap sans vous inquiéter si vous n’y comprenez pas encore grand-
67738-Administration Linux par la pratique-INT.book Page 60 Friday, May 24, 2019 10:38 AM

Administration Linux par la pratique


60

chose. Ne vous tracassez pas trop non plus si la police d’affichage de votre console vous paraît
un peu trop petite. Essayez de faire avec en attendant que nous voyions plus loin comment
régler ce paramètre.
Au terme de l’initialisation du système, vous vous retrouvez confronté à un message qui res-
semble à peu de chose près à ceci :

CentOS Linux 7 (Core)


Kernel 3.10.0-957.el7.x86_64 on an x86_64

centosbox login: _

À l’heure actuelle, nous disposons de deux comptes sur notre machine :


1 l’administrateur root ;
2 l’utilisateur commun des mortels (kikinovak par exemple).
Connectez-vous en tant qu’utilisateur normal. Notez que le mot de passe ne s’affiche pas sur
l’écran.

centosbox login : kikinovak


Password : ********

Si tout se passe bien, vous vous retrouvez face à l’invite de commande :

[kikinovak@centosbox ~]$ _

Vous voilà « comme le bœuf devant la nouvelle porte de l’étable », comme on dit dans mon
pays natal.
67738-Administration Linux par la pratique-INT.book Page 61 Friday, May 24, 2019 10:38 AM

4
Linux en mode texte :
consolez-vous !

Vos amis vous regardent de travers parce que vous cuisinez vos propres gratins au lieu de les acheter
congelés au supermarché ? Ils ont peur de se salir et de perdre leur temps ? Si l’idée de casser un œuf ou
d’éplucher des pommes de terre ne vous paraît pas aberrante, poursuivez votre lecture. Nous abordons
les gestes de base de la cuisine sous Linux.

Introduction à la ligne de commande

Faut-il avoir peur du mode texte ?


C’est un fait : l’utilisation de la ligne de commande intimide la plupart des utilisateurs novices
de Linux. D’après un petit sondage que j’ai effectué dans mon entourage, le travail en mode
texte est associé à une période révolue et désormais archaïque de l’informatique, lorsque les
souris et les interfaces graphiques n’existaient pas encore, que la notion de confort d’utilisa-
tion (la fameuse usability, traduite parfois par les néologismes usabilité ou utilisabilité) était
encore inconnue. La manipulation de ces mystérieuses machines était alors réservée à un
public averti, initié aux arcanes du métier. Public averti, peut-être aussi un peu fou. Les per-
sonnes qui continuent à utiliser la ligne de commande de nos jours feraient ainsi penser à de
67738-Administration Linux par la pratique-INT.book Page 62 Friday, May 24, 2019 10:38 AM

Administration Linux par la pratique


62

drôles d’hurluberlus qui s’obstinent à rouler en 2 CV ou, pire, en traction avant ; un petit
groupe de passéistes aussi irréductibles qu’incorrigibles.
Figure 4–1
L’utilisation de la ligne de
commande effraie la plupart des
utilisateurs.

Ce refus en bloc peut se comprendre lorsqu’on voit certains ouvrages, soi-disant « pour les
nuls », qui inculquent avant tout au lecteur le sentiment d’être effectivement nul en la
matière, ou encore lorsqu’on considère certains ouvrages « d’introduction », « pour
débutants » ou autres, qui n’ont d’autre but que de vous plonger la tête dans le cambouis en
vous faisant faire le tour, complet et exhaustif, des commandes Unix de A à Z, avant de vous
lancer dans un grand écart sans échauffement vers l’édition de scripts shell. Ajoutons à cela les
mauvais souvenirs que certains auront pu garder de la fameuse invite de commande DOS de
Microsoft et les réticences s’expliquent.
Le présent chapitre s’adresse à tous ces utilisateurs intimidés, angoissés par une utilisation
plus « poussée » de leur machine. Laissons là toute polémique, et même toute théorie ;
concentrons-nous sur la pratique. Dites-vous avant tout que cela ne coûte rien d’essayer et
que vous ne risquez pas de casser quoi que ce soit sur votre machine.
« Oui, mais il existe des centaines de commandes, avec des milliers d’options, comment vais-
je apprendre tout ça ? » objecterez-vous avec une moitié de coquille d’œuf sur la tête, tout
comme Calimero. Pour vous répondre, je pourrais vous demander d’abord si vous vous prive-
riez d’un week-end à Londres sous prétexte que vous n’êtes pas agrégé de littérature et civili-
sation anglaises. Je me contenterai de vous dire qu’avec une poignée de commandes, on arrive
déjà à faire des choses très étonnantes. Que ceux qui ne veulent pas condamner leur âme à la
damnation éternelle s’arrêtent ici de lire, car nous attaquons la première leçon d’introduction
à la ligne de commande.
67738-Administration Linux par la pratique-INT.book Page 63 Friday, May 24, 2019 10:38 AM

Linux en mode texte : consolez-vous !


63
CHAPITRE 4

Console ? Terminal ? Et quoi encore ?


Pour travailler en ligne de commande, vous devez tout d’abord vous retrouver face à une
« invite de commande » (en anglais : command prompt), c’est-à-dire quelque chose qui res-
semble vaguement à ceci :

[kikinovak@centosbox ~]$ _

Si nous nous sommes connectés en tant que root, cette invite se présente un peu
différemment :

[root@centosbox ~]# _

Se connecter à un serveur Linux en SSH


Le système SSH (Secure Shell) est un protocole sécurisé de connexion à distance développé par
l’équipe d’OpenBSD depuis 1999. Nous aurons l’occasion de nous pencher dessus plus en
détail. Si nous en parlons sommairement ici, c’est que, dans le cadre d’une formation en entre-
prise, il est pratique de pouvoir se connecter d’emblée sur un serveur Linux dans le réseau.

RÉSEAU Quelle est l’adresse IP de mon serveur ?


Nous aborderons le fonctionnement des adresses IP dans le chapitre dédié au réseau. En attendant, vous
aurez besoin de connaître l’adresse IP de votre serveur Linux pour vous connecter à distance.
La commande ip addr affiche la configuration de vos interfaces réseau. Ignorez l’interface lo ; il s’agit
de votre boucle locale, c’est-à-dire celle qui contient une ligne comme inet 127.0.0.1/8. Repérez
une ligne du genre inet 192.168.2.10/24 brd 192.168.2.255. Ici, l’adresse IP de la machine
est 192.168.2.10.

Figure 4–2 La commande ip addr affiche l’adresse IP de la machine. Je l’ai mise en surbrillance pour la repérer
facilement.
67738-Administration Linux par la pratique-INT.book Page 64 Friday, May 24, 2019 10:38 AM

Administration Linux par la pratique


64

Utiliser PuTTY sous Windows


PuTTY est un client SSH libre pour Windows, écrit par Simon Tatham et publié sous
licence MIT. Téléchargez-le sur la page du projet, installez-le et lancez-le.

TÉLÉCHARGEMENT PuTTY
B https://www.putty.org/

Pour ouvrir une session distante avec PuTTY, je dois lui fournir quelques paramètres de base
comme le nom d’hôte ou l’adresse IP, le port et le type de connexion. Voici un exemple dans
mon réseau local.
1 Host Name : centosbox.microlinux.lan
2 IP address : 192.168.2.10 (si la machine n’est pas joignable par nom d’hôte)
3 Port : 22
4 Connection type : SSH
5 Cliquer sur Open
PuTTY affiche un avertissement quant à la clé publique du serveur distant. Nous décidons de
lui faire confiance en cliquant sur Oui. À partir de là, la console de PuTTY nous demande de
nous identifier.

login as: kikinovak


kikinovak@centosbox's password: ********
[kikinovak@centosbox ~]$ _

Figure 4–3
Saisie des paramètres de connexion
de PuTTY.
67738-Administration Linux par la pratique-INT.book Page 65 Friday, May 24, 2019 10:38 AM

Linux en mode texte : consolez-vous !


65
CHAPITRE 4

Figure 4–4
Lors de la première connexion,
nous faisons confiance à l’identité
du serveur distant.

Figure 4–5
L’invite de commande de notre
serveur Linux s’affiche dans
une fenêtre du poste de travail
Windows.

Utiliser OpenSSH sous Windows


Depuis la mise à jour de septembre 2017 de Windows 10, Microsoft a enfin intégré une prise
en charge native de SSH sur son système d’exploitation.
Le client OpenSSH n’est pas activé par défaut. Avant de s’en servir, il faut donc l’activer via
Paramètres Windows>Applications>Gérer les fonctionnalités facultatives>Ajouter une fonctionna-
lité. Installez OpenSSH Client (Beta) et redémarrez votre PC.
67738-Administration Linux par la pratique-INT.book Page 66 Friday, May 24, 2019 10:38 AM

Administration Linux par la pratique


66

Depuis l’invite de commandes Windows, utilisez la commande ssh pour vous connecter à
votre serveur Linux. Pour me connecter en tant que kikinovak sur la machine centosbox.micro-
linux.lan, j’utilise la syntaxe suivante :

C:\Users\Kiki> ssh kikinovak@centosbox.microlinux.lan

Si la machine n’est pas joignable par nom d’hôte, je peux toujours fournir son adresse IP en
argument :

C:\Users\Kiki> ssh kikinovak@192.168.2.10

Et si je souhaite me connecter directement en tant que root :

C:\Users\Kiki> ssh root@centosbox.microlinux.lan

Utiliser OpenSSH sous Mac OS X


Dans le chapitre d’introduction de ce livre, nous avons vu que Mac OS X faisait partie de la
famille des systèmes « unixoïdes ». Il n’est donc pas étonnant de constater que le client
OpenSSH fait partie de ses technologies de base.

VOUS VENEZ DE MAC OS X Peut-être faites-vous de l’Unix sans le savoir


Voici la réponse à notre petite devinette de la page 22 : sous sa couche graphique Aqua, Mac OS X est
constitué d’un système de base FreeBSD, un Unix libre datant de 1993.

Pour nous connecter au serveur Linux depuis un poste de travail tournant sous Mac OS X, nous
lancerons d’abord l’application Terminal dans le sous-dossier Utilitaires du dossier Applications.
Pour me connecter en tant qu’utilisateur kikinovak sur le serveur, j’invoque la commande
suivante :

$ ssh kikinovak@centosbox.microlinux.lan

Pour fournir l’adresse IP plutôt que le nom d’hôte, la syntaxe sera la suivante :

$ ssh kikinovak@192.168.2.10

Et pour me connecter en tant qu’administrateur root, la commande ressemblera à ceci :

$ ssh root@centosbox.microlinux.lan

Lors de la première connexion, SSH affiche un avertissement quant à l’identité de la


machine. Répondez par l’affirmative.
67738-Administration Linux par la pratique-INT.book Page 67 Friday, May 24, 2019 10:38 AM

Linux en mode texte : consolez-vous !


67
CHAPITRE 4

Utiliser OpenSSH sous Linux ou BSD


Tous les postes de travail Linux et BSD courants et moins courants intègrent un émulateur de
terminal et un client SSH dans leur configuration de base. Pour vous connecter à votre ser-
veur depuis un poste de travail sous Linux, ouvrez n’importe quel émulateur de terminal
comme Konsole, GNOME Terminal, Xfce Terminal, MATE Terminal Emulator, Eterm ou
Xterm et invoquez la commande ssh :

$ ssh kikinovak@centosbox.microlinux.lan

Ou :

$ ssh kikinovak@192.168.2.10

Ou encore :

$ ssh root@centosbox.microlinux.lan

Figure 4–6
Ouverture d’une connexion à
distance dans le terminal Konsole.
Lorsque le nom d’utilisateur est le
même sur le système local et sur la
machine distante, je peux utiliser
une syntaxe plus courte.

LE SAVIEZ-VOUS ? Votre machine virtuelle est une machine distante !


À partir du moment où vous avez correctement configuré l’accès par pont comme mode d’accès réseau
de votre machine virtuelle dans VirtualBox, votre système invité se comporte comme une machine à part
entière de votre réseau. Vous pouvez donc afficher son adresse IP et vous connecter en SSH comme s’il
s’agissait d’une « vraie » machine physique distante.

Basculer entre les consoles virtuelles


Si vous êtes connecté physiquement au serveur – autrement dit , si vous n’avez pas ouvert une
session distante – vous pouvez basculer entre les consoles virtuelles.
La commande tty affiche le nom du terminal associé à l’entrée standard.

[kikinovak@centosbox ~]$ tty


/dev/tty1
67738-Administration Linux par la pratique-INT.book Page 68 Friday, May 24, 2019 10:38 AM

Administration Linux par la pratique


68

Utilisez le raccourci clavier Alt+F2 pour basculer vers la deuxième console virtuelle.
Connectez-vous et invoquez la commande tty :

CentOS Linux 7 (Core)


Kernel 3.10.0-957.el7.x86_64 on an x86_64

centosbox login: kikinovak


Password: ********
[kikinovak@centosbox ~]$ tty
/dev/tty2

Dans la configuration par défaut, CentOS dispose de six consoles virtuelles auxquelles vous
accédez par les raccourcis clavier Alt+F1, Alt+F2 et ainsi de suite jusqu’à Alt+F6.
Basculez vers la troisième console virtuelle (Alt+F3), connectez-vous en tant que root et, là
aussi, invoquez tty. Puis revenez vers la première console avec Alt+F1.

UN PEU D’HISTOIRE Le terminal


Comme nous avons pu le voir, la commande tty affiche le nom du terminal associé à l’entrée standard.
Pourquoi « terminal », vous demanderez-vous peut-être ? Le terme est issu de l’ère préhistorique de
l’informatique, où les ordinateurs personnels n’existaient pas encore. Pour se connecter à l’un de ces
ordinateurs ancestraux, il fallait un terminal, c’est-à-dire un bloc « stupide » – comprenez : sans la
moindre puissance de calcul incorporée – composé uniquement d’un clavier et d’un écran, ainsi que d’un
câble le reliant à l’ordinateur central.

Figure 4–7
Une pièce de musée :
un « terminal », un vrai.
67738-Administration Linux par la pratique-INT.book Page 69 Friday, May 24, 2019 10:38 AM

Linux en mode texte : consolez-vous !


69
CHAPITRE 4

Quitter la console
Pour fermer la session et revenir à l’invite de connexion, invoquez la commande suivante :

$ logout

Alternativement, vous pouvez également vous déconnecter comme ceci :

$ exit

Enfin, le raccourci clavier Ctrl+D permet de faire la même chose plus rapidement.

Premiers pas en ligne de commande


Commencez par taper n’importe quoi et regardez la réaction de votre système. Par exemple :

[kikinovak@centosbox ~]$ make love


make: *** Aucune règle pour fabriquer la cible « love ». Arrêt.
[kikinovak@centosbox ~]$

Vous venez de taper une commande au hasard, tout en choisissant bien, et vous vous
retrouvez face à votre premier message d’erreur. Que s’est-il passé exactement ?
• L’interpréteur de commandes vous a affiché une invite [kikinovak@centosbox ~]$. Il
vous a ainsi signifié qu’il était prêt à recevoir une ou plusieurs commandes.
• Vous avez tapé une commande : make.
• Vous avez fait suivre cette dernière d’un argument : love.
• L’interpréteur a essayé en vain d’exécuter ce que vous lui avez demandé de faire et vous a dit
plus ou moins clairement ce qu’il en pense, en l’occurrence : make: *** Aucune règle pour
fabriquer la cible « love ». Arrêt.
• L’interpréteur vous affiche à nouveau l’invite, pour vous indiquer qu’il est prêt à recevoir
d’autres commandes.
À présent, nous n’avons qu’à essayer avec des commandes qui ont un peu plus de sens pour
votre machine.

DÉFINITION Qu’est-ce que le shell ?


Le shell est un programme ayant pour fonction d’assurer l’interface entre l’utilisateur et le système Linux.
C’est un interpréteur de commandes. Les systèmes Unix et Linux disposent de toute une panoplie de
shells au choix :
• Bourne Shell (sh) ;
• C-Shell (csh) ;
• Korn Shell (ksh) ;
• Z Shell (zsh) ;
• Bourne Again Shell (bash).
Nous nous concentrerons sur le shell Bash, qui est devenu la norme sur les systèmes Linux.
67738-Administration Linux par la pratique-INT.book Page 70 Friday, May 24, 2019 10:38 AM

Administration Linux par la pratique


70

Naviguer : ls, pwd et cd

Afficher le contenu d’un répertoire avec ls


La commande ls (comme list) affiche la liste des fichiers dans un répertoire. Invoquée sans
arguments, elle montre le contenu du répertoire courant :

[root@centosbox ~]# ls
anaconda-ks.cfg

Comment lire ce résultat ? La commande ls nous a retourné un élément situé dans notre
répertoire utilisateur. Notez que je me suis connecté en tant que root pour avoir quelque
chose à me mettre sous la dent, étant donné que le répertoire utilisateur de kikinovak est
encore vide. Pour le reste des opérations, nous allons travailler en tant qu’utilisateur
« commun des mortels ». Je vérifie : mon répertoire utilisateur est encore vide, effectivement.

[kikinovak@centosbox ~]$ ls

B.A.-BA Le répertoire courant


Le répertoire courant est celui dans lequel vous vous trouvez au moment où vous saisissez la commande.

Pour afficher le contenu de la racine du système de fichiers, saisissez ceci :

[kikinovak@centosbox ~]$ ls /

Résultat :

bin dev home lib64 mnt proc run srv tmp var
boot etc lib media opt root sbin sys usr

Et pour voir ce qu’il y a dans /usr, il suffit d’invoquer la commande suivante :

[kikinovak@centosbox ~]$ ls /usr


bin games lib libexec sbin src
etc include lib64 local share tmp

VOUS VENEZ DE WINDOWS La commande ls


Les habitués de Windows et de DOS l’auront deviné : ls sous Linux équivaut à la commande DIR.
67738-Administration Linux par la pratique-INT.book Page 71 Friday, May 24, 2019 10:38 AM

Linux en mode texte : consolez-vous !


71
CHAPITRE 4

Décrypter les résultats de votre ordinateur

Qu’est-ce qui est quoi là-dedans ?


Les différentes couleurs de l’affichage nous suggèrent qu’il ne s’agit peut-être pas d’éléments
du même type. Essayez :

[kikinovak@centosbox ~]$ ls /etc

Le résultat de cette commande dépassera éventuellement la taille d’un écran. Pour revenir en
arrière, maintenez la touche Maj enfoncée et utilisez les touches PageHaut et PageBas pour
faire défiler l’affichage en arrière et en avant.
Certains éléments apparaissent en bleu, d’autres en turquoise, d’autres en noir et blanc et il y
a même un peu de rouge. Pour en avoir le cœur net, il va falloir utiliser ls avec l’option -F,
qui donne des détails :

[kikinovak@centosbox ~]$ ls -F /etc


adjtime hosts rc0.d@
aliases hosts.allow rc1.d@
aliases.db hosts.deny rc2.d@
alternatives/ init.d@ rc3.d@
anacrontab inittab rc4.d@
asound.conf inputrc rc5.d@
audisp/ iproute2/ rc6.d@
...

Réinvoquez ls -F pour afficher le contenu de /etc/ppp :

[kikinovak@centosbox ~]$ ls -F /etc/ppp


ip-down* ip-up* ipv6-down* peers/
ip-down.ipv6to4* ip-up.ipv6to4* ipv6-up*

Vous constatez que certains éléments sont suivis d’une barre oblique /, d’autres d’une
arobase @ ou d’un astérisque * ; le reste des éléments ne contient aucun suffixe.
• La barre oblique / (couleur par défaut : bleu) désigne un répertoire.
• L’absence de suffixe (couleur par défaut : noir, blanc ou gris, selon votre terminal) indique
qu’il s’agit d’un fichier régulier non exécutable.
• L’arobase @ (couleur par défaut : turquoise) montre qu’il s’agit d’un lien symbolique, ce qui
constitue l’équivalent d’un raccourci sous Windows. Nous verrons les liens symboliques
un peu plus loin.
• L’astérisque * (couleur par défaut : vert) indique qu’il s’agit d’un fichier régulier exécutable.
Il nous en manque encore quelques-uns, mais nous nous contenterons des éléments que nous
avons pour l’instant.
67738-Administration Linux par la pratique-INT.book Page 72 Friday, May 24, 2019 10:38 AM

Administration Linux par la pratique


72

Mais encore ?
Ces informations paraissent un peu maigres. Nous pouvons en afficher davantage en utilisant
l’option -l (comme long).

[kikinovak@centosbox ~]$ ls -l /etc/sysconfig


total 80
-rw-r--r--. 1 root root 429 23 mai 20:30 authconfig
drwxr-xr-x. 2 root root 43 23 mai 20:20 cbq
drwxr-xr-x. 2 root root 6 6 nov. 2016 console
-rw-r--r--. 1 root root 150 22 nov. 2016 cpupower
-rw-------. 1 root root 110 31 mars 2016 crond
-rw-------. 1 root root 1390 5 nov. 2016 ebtables-config
-rw-r--r--. 1 root root 73 11 nov. 2016 firewalld
...

L’utilisateur non averti trouvera cet affichage quelque peu énigmatique. En fait, il est facile à
lire une fois que l’on sait à quoi correspond chaque terme.
Tout à fait à gauche, vous avez une série de dix caractères. Le tout premier vous indique s’il
s’agit d’un fichier (tiret -) ou d’un répertoire (d comme directory). Ensuite, la série de neuf
caractères (en fait, trois × trois) indique les droits d’accès au fichier ou au répertoire. Nous
traiterons la question des droits d’accès un peu plus loin. Les caractères r, w, x et - décrivent
ce que l’on a le droit de faire avec le fichier ou le répertoire :
• lire : r comme read ;
• écrire (modifier) : w comme write ;
• exécuter : x pour e[x]ecute ;
• rien du tout : -.
Je disais : ce que l’on a le droit de faire. Ce on est en fait assez bien spécifié : les trois premiers
caractères de la série concernent le propriétaire du fichier, les trois suivants le groupe et les
trois derniers le reste du monde. Nous y reviendrons bientôt en détail.

DÉTAIL Que signifie le point juste après les droits d’accès ?


Les lecteurs attentifs auront probablement remarqué la présence d’un point : « . », juste après les indi-
cations des droits de fichiers, c’est-à-dire la série de caractères qui ressemblent à quelque chose comme
-rw-r--r--. Ne vous en préoccupez pas pour l’instant. Sachez toutefois que le point indique que le
fichier possède un contexte SELinux (Security Enhanced Linux). Il s’agit d’un mécanisme de sécurité
avancé, que nous aurons l’occasion de traiter en temps et en heure.

Le chiffre qui suit (ici : la série de 1 et de 2 dans la deuxième colonne) n’est pas d’une grande
importance pour nous. Précisons tout de même qu’il indique le nombre de liens pointant vers
le fichier ou le répertoire.
Les deux indications immédiatement après montrent le propriétaire du fichier, ainsi que le
groupe auquel il appartient. Dans l’exemple, fichiers et répertoires appartiennent à l’utilisa-
teur root et au groupe root.
67738-Administration Linux par la pratique-INT.book Page 73 Friday, May 24, 2019 10:38 AM

Linux en mode texte : consolez-vous !


73
CHAPITRE 4

Humain, pas trop humain ?


La prochaine indication correspond à la taille du fichier. Ici, l’astuce est d’invoquer ls avec
l’option supplémentaire -h ou --human-readable. Essayez :

[kikinovak@centosbox ~]$ ls -lh /etc/sysconfig


total 80K
-rw-r--r--. 1 root root 429 23 mai 20:30 authconfig
drwxr-xr-x. 2 root root 43 23 mai 20:20 cbq
drwxr-xr-x. 2 root root 6 6 nov. 2016 console
-rw-r--r--. 1 root root 150 22 nov. 2016 cpupower
-rw-------. 1 root root 110 31 mars 2016 crond
-rw-------. 1 root root 1,4K 5 nov. 2016 ebtables-config
-rw-r--r--. 1 root root 73 11 nov. 2016 firewalld
...

La taille des fichiers est tout de suite beaucoup plus lisible, car le système l’indique en
kilooctets (K), mégaoctets (M) ou gigaoctets (G).

OPTIONS Version courte ou version longue ?


En passant, nous faisons également deux autres constats. D’une part, les options des
commandes peuvent se combiner. Nous aurions donc très bien pu invoquer la com-
mande comme ceci :
[kikinovak@centosbox ~]$ ls -l -h /etc/sysconfig
D’autre part, de nombreuses options de commande ont une version courte et une
longue. L’option -h (qui signifie « lisible par un humain », comme si les informaticiens
ne faisaient pas vraiment partie de l’espèce) s’écrit donc très bien comme dans
l’exemple qui suit. Je vous conseille cette option uniquement si vous avez un pen-
chant prononcé pour la dactylographie :
[kikinovak@centosbox ~]$ ls -l --human-readable /etc/sysconfig

Quant aux deux dernières colonnes, elles nous indiquent la date de la création ou de la der-
nière modification et, pour finir, le nom du fichier ou du répertoire.

Splendeur et misère des fichiers cachés


Une autre option fréquemment utilisée est -a (ou --all : tout). Appliquez-la sur votre réper-
toire utilisateur et vous serez probablement surpris.

[kikinovak@centosbox ~]$ ls -a
. .. .bash_history .bash_logout .bash_profile .bashrc

Cette option sert à afficher les fichiers et répertoires cachés. Dans un système Linux, les
fichiers et répertoires dont le nom commence par un point ne s’affichent pas lorsque ls est
invoquée normalement. Vous ne les verrez donc qu’en utilisant l’option -a.
67738-Administration Linux par la pratique-INT.book Page 74 Friday, May 24, 2019 10:38 AM

Administration Linux par la pratique


74

Cachez cette configuration que je ne saurais voir


À quoi peuvent bien servir ces fichiers et quel est l’intérêt de les dissimuler ? Les fichiers
cachés ou dotfiles (de l’anglais dot : point) contiennent la configuration personnalisée de vos
applications. Concrètement, les fichiers ~/.bash_profile, ~/.bashrc et ~/.bash_logout
contiennent la configuration de votre shell Bash (qui est une application). Quant au fichier
~/.bash_history, il renferme l’historique des commandes précédemment invoquées.
À la différence des fichiers situés dans /etc, qui définissent une configuration globale, c’est-à-
dire valable pour tous les utilisateurs, les fichiers et répertoires cachés que nous rencontrons ici
ne sont valables que pour vous seul. Nous aborderons le rôle du répertoire /etc un peu plus loin.
Vous vous demandez certainement ce que signifie le tilde ~ que j’ai utilisé à plusieurs reprises. Sur
les systèmes Linux (tout comme dans Unix), ce symbole désigne votre répertoire utilisateur. Le
fichier ~/.bashrc de l’utilisateur kikinovak sera donc /home/kikinovak/.bashrc dans sa nota-
tion explicite, tandis que le fichier ~/.bashrc de glagaffe correspondra à /home/glagaffe/
.bashrc. Étant donné que chaque utilisateur est libre de configurer le shell Bash à sa guise (ce que
nous verrons également plus loin), tout le monde aura donc son propre fichier .bashrc.

TILDE ? Tilt !
Les lecteurs attentifs auront probablement déjà noté le tilde ~ dans l’invite de commande :
[kikinovak@centosbox ~]$

DÉCRYPTAGE Comprendre l’invite de commande


Jetons un œil sur l’invite de commande telle qu’elle se présente en mode console, dans sa configuration
par défaut. Elle est très simple à décrypter.
• La première indication, c’est le nom de l’utilisateur (ici : kikinovak).
• Il est séparé par une arobase @ du nom de la machine (ici : centosbox).
• La troisième indication, c’est le répertoire courant (ici : ~ à savoir /home/kikinovak, puisque c’est
l’utilisateur kikinovak).
• Et enfin, le $ signifie par convention qu’il s’agit d’un utilisateur du « commun des mortels ». S’il s’agis-
sait de l’utilisateur root, nous verrions ici un # à la place du $.
Et ne partez pas en courant si je vous dis que l’aspect même de l’invite peut être paramétré à souhait.

Afficher les informations détaillées d’un répertoire


Il nous reste à voir une dernière option importante pour ls. Admettons que vous souhaitiez
afficher les informations détaillées pour le répertoire /etc : les droits d’accès, le propriétaire,
le groupe, etc. Vous invoquez donc hardiment ls suivie de l’option -l et de l’argument /etc
et vous voyez... les informations détaillées de tout le contenu du répertoire, mais pas du réper-
toire lui-même.
67738-Administration Linux par la pratique-INT.book Page 75 Friday, May 24, 2019 10:38 AM

Linux en mode texte : consolez-vous !


75
CHAPITRE 4

Comment faire ? Tout simplement en invoquant l’option supplémentaire -d (comme direc-


tory, c’est-à-dire « répertoire »). Cette option affiche les répertoires avec la même présenta-
tion que les fichiers, sans lister leur contenu :

[kikinovak@centosbox ~]$ ls -ld /etc


drwxr-xr-x. 76 root root 8192 25 mai 07:09 /etc

pwd : « Vous êtes ici ! »


La commande pwd (print working directory) s’acquitte d’une seule tâche. Elle vous affiche
(print) quel est le répertoire courant (working directory), c’est-à-dire le répertoire dans lequel
vous vous situez actuellement.

[kikinovak@centosbox ~]$ pwd


/home/kikinovak

Lorsque vous vous promenez dans une grande ville, il vous arrive de vous perdre. Avec un peu
de chance, vous tombez sur un de ces grands plans de la ville, avec une flèche et un petit rond
bien visible, qui vous indique : « VOUS ÊTES ICI ». C’est exactement ce que fait pwd. Et
maintenant que nous savons nous repérer, apprenons à nous déplacer.

On bouge avec cd !
La commande cd (change directory) est utilisée pour changer de répertoire courant. Il suffit de
taper cd puis le chemin du répertoire dans lequel on veut se placer. Dans l’exemple ci-après,
l’invocation de la commande pwd après cd permet de vérifier que nous sommes bien dans le
répertoire demandé.

[kikinovak@centosbox ~]$ cd /
[kikinovak@centosbox /]$ pwd
/
[kikinovak@centosbox /]$ cd bin
[kikinovak@centosbox bin]$ pwd
/bin
[kikinovak@centosbox bin]$ cd /etc
[kikinovak@centosbox etc]$ pwd
/etc
[kikinovak@centosbox etc]$ cd /usr/bin
[kikinovak@centosbox bin]$ pwd
/usr/bin

Chemin relatif ou absolu ?


Lorsque je me trouve dans le répertoire racine / et que je souhaite me déplacer vers le réper-
toire /bin, je peux écrire cd bin. Cela correspond au chemin relatif, c’est-à-dire celui indiqué
67738-Administration Linux par la pratique-INT.book Page 76 Friday, May 24, 2019 10:38 AM

Administration Linux par la pratique


76

à partir du répertoire dans lequel je me situe, en l’occurrence /. Quant à cd /bin, c’est le


chemin absolu, autrement dit l’emplacement à partir du répertoire racine.
En revanche, lorsque je me trouve dans le répertoire /etc et que je veux me placer dans le
répertoire /bin, je suis obligé – pour l’instant – d’utiliser un chemin absolu. Pour saisir la dis-
tinction, je vous donne un exemple qui illustre ce qu’il ne faut pas faire :

[kikinovak@centosbox bin]$ cd /etc


[kikinovak@centosbox etc]$ pwd
/etc
[kikinovak@centosbox etc]$ cd bin
-bash: cd: bin: Aucun fichier ou dossier de ce type

Ces deux exemples de la vie courante vous permettront peut-être de saisir la nuance :
• « Remontez la rue devant vous, tournez à gauche, continuez deux cents mètres, puis tour-
nez à droite et encore à droite » (chemin relatif) ;
• « Partez du Vieux Port, remontez la Canebière, puis prenez le boulevard Longchamp et
arrêtez-vous au Palais Longchamp » (chemin absolu).
Dans l’exemple ci-dessus, nous nous situons dans le répertoire /etc. Si nous écrivons cd bin
sans la barre oblique / qui précède, l’interpréteur de commandes cherche un répertoire inexis-
tant /etc/bin et affiche une erreur.

À court d’arguments
Pour revenir dans votre répertoire d’utilisateur, il suffit d’invoquer cd sans arguments :

[kikinovak@centosbox bin]$ cd /etc


[kikinovak@centosbox etc]$ pwd
/etc
[kikinovak@centosbox etc]$ cd sysconfig
[kikinovak@centosbox sysconfig]$ pwd
/etc/sysconfig
[kikinovak@centosbox sysconfig]$ cd
[kikinovak@centosbox ~]$ pwd
/home/kikinovak

« Ici » et « à l’étage »
Voyons maintenant deux répertoires un peu particuliers. Affichez la totalité du contenu de
votre répertoire d’utilisateur :

[kikinovak@centosbox ~]$ ls -aF


./ ../ .bash_history .bash_logout .bash_profile .bashrc
67738-Administration Linux par la pratique-INT.book Page 77 Friday, May 24, 2019 10:38 AM

Linux en mode texte : consolez-vous !


77
CHAPITRE 4

Vous remarquez qu’en début de liste, vous avez un répertoire nommé « . » et un autre
nommé « .. ». Affichez maintenant le contenu d’un autre répertoire, avec les mêmes options -aF :

[kikinovak@centosbox ~]$ ls -aF /usr


./ bin/ games/ lib/ libexec/ sbin/ src/
../ etc/ include/ lib64/ local/ share/ tmp@

Si vous répétez l’opération sur d’autres répertoires au hasard, vous constaterez que chaque
liste débute invariablement par ces mêmes répertoires . et .. :
• . est le répertoire courant.
• .. est le répertoire parent.
Là encore, la mise en pratique vous aidera à saisir le concept. Essayez ceci :

[kikinovak@centosbox ~]$ cd /etc/sysconfig/network-scripts


[kikinovak@centosbox network-scripts]$ pwd
/etc/sysconfig/network-scripts
[kikinovak@centosbox network-scripts]$ cd ..
[kikinovak@centosbox sysconfig]$ pwd
/etc/sysconfig
[kikinovak@centosbox sysconfig]$ cd ..
[kikinovak@centosbox etc]$ pwd
/etc
[kikinovak@centosbox etc]$ cd ..
[kikinovak@centosbox /]$ pwd
/

Chaque appel à cd .. nous fait ainsi remonter d’un cran dans l’arborescence, jusqu’à ce que
nous nous retrouvions à la racine.
Quant au point « . », il faut se le représenter comme le fameux « VOUS ÊTES ICI » sur le
plan de la ville. Admettons que je me situe dans le répertoire /etc et que je veuille me rendre
dans le sous-répertoire sysconfig. Je pourrais utiliser indépendamment ces deux notations,
qui reviendraient au même :

[kikinovak@centosbox /]$ cd /etc


[kikinovak@centosbox etc]$ cd sysconfig
[kikinovak@centosbox sysconfig]$ pwd
/etc/sysconfig

Ou alors :

[kikinovak@centosbox ~]$ cd /etc


[kikinovak@centosbox etc]$ cd ./sysconfig
[kikinovak@centosbox sysconfig]$ pwd
/etc/sysconfig
67738-Administration Linux par la pratique-INT.book Page 78 Friday, May 24, 2019 10:38 AM

Administration Linux par la pratique


78

L’utilité de cette notation vous apparaîtra un peu plus loin. Pour l’instant, retenez simplement
que « . » signifie « ici ».
Notez aussi que « .. » peut très bien faire partie d’un chemin. Admettons que vous soyez
dans le répertoire /etc/sysconfig et que vous souhaitiez vous rendre dans /etc/ssh. Vous
pourriez vous y prendre comme ceci :

[kikinovak@centosbox ~]$ cd /etc/sysconfig


[kikinovak@centosbox sysconfig]$ pwd
/etc/sysconfig
[kikinovak@centosbox sysconfig]$ cd ..
[kikinovak@centosbox etc]$ cd ssh
[kikinovak@centosbox ssh]$ pwd
/etc/ssh

Il y a moyen de faire plus court et plus élégant :

[kikinovak@centosbox ~]$ cd /etc/sysconfig


[kikinovak@centosbox sysconfig]$ pwd
/etc/sysconfig
[kikinovak@centosbox sysconfig]$ cd ../ssh
[kikinovak@centosbox ssh]$ pwd
/etc/ssh

REMARQUE pwd à tire-larigot


Si j’invoque pwd à chaque changement de répertoire, c’est uniquement à des fins de démonstration, pour
bien expliciter le répertoire courant.

Vous pouvez également monter de plusieurs crans, si cela est nécessaire. Si votre répertoire
courant est /etc/sysconfig/network-scripts et si vous souhaitez vous rendre dans /etc/
ssh, il va falloir que vous montiez de deux crans, pour ensuite entrer dans le répertoire ssh.
En pratique, cela ressemblerait à l’exemple suivant :

[kikinovak@centosbox ~]$ cd /etc/sysconfig/network-scripts


[kikinovak@centosbox network-scripts]$ pwd
/etc/sysconfig/network-scripts
[kikinovak@centosbox network-scripts]$ cd ../../ssh
[kikinovak@centosbox ssh]$ pwd
/etc/ssh
67738-Administration Linux par la pratique-INT.book Page 79 Friday, May 24, 2019 10:38 AM

Linux en mode texte : consolez-vous !


79
CHAPITRE 4

MÉTHODOLOGIE Petit aperçu très bref de la philosophie UNIX


Vous venez d’apprendre en tout et pour tout trois commandes et une poignée d’options. Peut-être sen-
tez-vous monter en vous un vague sentiment de déception. C’est donc ça, Linux ? Des commandes qu’il
faut taper fastidieusement dans une interface archaïque ?
Pour vous rassurer – et nous conforter dans notre démarche – je me permettrai de vous donner un
exemple qui semblera familier à beaucoup d’entre vous. Imaginez que votre voiture tombe en panne un
jour. Vous avez en gros deux possibilités pour la faire réparer.
• Vous la faites remorquer au garage Lapeau & Desfesses en ville : un endroit très high tech avec beau-
coup de chrome et de carrelage blanc, sans la moindre trace de cambouis ni de poussière. Les mécani-
ciens ressemblent à des ingénieurs en blouse blanche. Ils sont armés jusqu’aux dents d’ordinateurs
portables et ne répondent à personne. Votre voiture est le seul objet sale dans cet endroit étincelant de
propreté. L’ingénieur en chef dissimule à peine son dégoût, ouvre le capot et branche un câble dans
une prise dont vous ignoriez l’existence jusque-là. Il retourne devant l’écran de son portable, clique sur
une série de boutons dans son logiciel de diagnostic et vous annonce qu’il ne peut pas vous fixer un
rendez-vous avant le début du mois prochain, mais qu’on peut déjà établir un devis.
• Vous décidez d’aller voir Tony, le mécanicien du village. En guise de bonjour, Tony vous présente son avant-
bras à peine moins maculé de cambouis que ses mains. Il propose de s’occuper tout de suite de votre voi-
ture, l’objet le plus propre dans tout le garage. Il ouvre le capot et contemple le moteur en sifflotant le
refrain qui vient de passer à la radio. Puis il fouille dans sa boîte à outils et en extrait une clé tubulaire, un
tournevis et une pince. À peine deux minutes plus tard, il vous annonce qu’il fallait juste nettoyer les bou-
gies et refixer une durite qui s’était défaite. Il refuse de se faire payer malgré vos protestations réitérées.
Les commandes que nous venons d’apprendre sont certes aussi peu spectaculaires qu’une clé tubulaire,
un tournevis ou une clé de douze. Vous serez d’ailleurs probablement surpris d’apprendre que ce sont des
commandes Unix, le système d’exploitation présenté en début de cet ouvrage. Les principes de base
d’Unix sont restés les mêmes pendant près de quarante ans. Douglas McIlroy, l’un des fondateurs d’Unix,
a résumé la philosophie de ce système en une série de trois impératifs catégoriques.
1. Écrivez des programmes qui font une seule chose et qui la font bien.
2. Écrivez des programmes qui se combinent les uns avec les autres.
3. Écrivez des programmes pour gérer des flux de texte, car c’est une interface universelle.
Même si vous n’avez pas l’intention d’écrire des programmes Unix (ou Linux), ces trois règles sont d’une
importance capitale pour tout utilisateur de systèmes de cette famille. À partir du moment où vous maîtri-
sez ne serait-ce qu’une poignée de commandes Unix, vous apprendrez à les combiner pour résoudre les pro-
blèmes de manière efficace. Gardez ce principe à l’esprit lors de votre apprentissage, car nous verrons bien-
tôt comment les tâches les plus complexes peuvent être décomposées en une série d’opérations simples.

Deux commandes de sortie simples : echo et cat

echo : afficher une ligne de texte


La commande echo affiche sur l’écran le texte spécifié en argument :

[kikinovak@centosbox ~]$ echo Bonjour Monsieur !


Bonjour Monsieur !
67738-Administration Linux par la pratique-INT.book Page 80 Friday, May 24, 2019 10:38 AM

Administration Linux par la pratique


80

Voilà un grand pas pour nous, un petit pas pour l’humanité. Continuons :

[kikinovak@centosbox ~]$ echo Bonjour Monsieur ! > bonjour.txt

Cette fois-ci, il n’y a aucun résultat immédiat. Regardons le contenu du répertoire courant :

[kikinovak@centosbox ~]$ ls
bonjour.txt

Explication : la flèche > a redirigé la sortie standard vers un fichier, comme le formulerait
quelqu’un du métier. En d’autres termes, la chaîne de caractères Bonjour Monsieur ! a été
écrite dans un fichier bonjour.txt au lieu de s’afficher sur l’écran.

cat : afficher et concaténer


Affichons le contenu de ce fichier avec la commande cat :

$ cat bonjour.txt
Bonjour Monsieur !

REMARQUE Convention pour un affichage simplifié


Vous remarquerez que, dorénavant, je réduis l’invite de commande à un simple $, ce qui est une manière
habituelle de procéder et permet de faire figurer les commandes un peu plus longues sur une seule ligne.

Maintenant, créez deux nouveaux fichiers bonjour2.txt et bonjour3.txt, comme ceci :

$ echo Bonjour Madame ! > bonjour2.txt


$ echo Bonjour les enfants ! > bonjour3.txt

Affichez leur contenu en utilisant cat :

$ cat bonjour2.txt
Bonjour Madame !
$ cat bonjour3.txt
Bonjour les enfants !

Si nous mettons nos trois nouveaux fichiers en argument, cat affiche leurs contenus respectifs
l’un après l’autre :

$ cat bonjour.txt bonjour2.txt bonjour3.txt


Bonjour Monsieur !
Bonjour Madame !
Bonjour les enfants !
67738-Administration Linux par la pratique-INT.book Page 81 Friday, May 24, 2019 10:38 AM

Linux en mode texte : consolez-vous !


81
CHAPITRE 4

Là aussi, nous pouvons rediriger la sortie standard. Le résultat s’écrira dans un fichier au lieu
de s’afficher à l’écran :

$ cat bonjour.txt bonjour2.txt bonjour3.txt > bonjourtous.txt


$ cat bonjourtous.txt
Bonjour Monsieur !
Bonjour Madame !
Bonjour les enfants !

Ici, j’ai mis la charrue de la pratique avant les bœufs de la théorie pour vous faire comprendre
le fonctionnement de cat, qui remplit essentiellement deux missions. D’une part, cette com-
mande sert à la concaténation de fichiers, d’où son nom. C’est le fait de rassembler le contenu
de ces fichiers en un seul gros :

$ cat fichier1 fichier2 fichier3 > grosfichier

D’autre part, l’autre rôle de cat est tout simplement d’afficher le contenu de fichiers texte
simples.

EXEMPLE Tout savoir sur son processeur


Voici un cas d’utilisation de cat qu’on peut rencontrer dans le quotidien d’un administrateur système. Il
affiche des renseignements sur le processeur de la machine : le nombre de processeurs (processeur
simple, biprocesseur, quad-core, etc.), leur type (Intel, AMD, Celeron) et leur fréquence de travail (ou
vitesse) exprimée en MHz (mégahertz, c’est-à-dire millions d’opérations par seconde) ou en GHz
(gigahertz, milliards d’opérations par seconde) :
$ cat /proc/cpuinfo
...
processor : 1
vendor_id : AuthenticAMD
cpu family : 16
model : 6
model name : AMD Athlon(tm) II Neo N36L Dual-Core Processor
stepping : 3
microcode : 0x10000c8
cpu MHz : 800.000
cache size : 1024 KB
...
Cette simple utilisation de cat me montre donc que le serveur HP Proliant Microserver sur lequel j’ai
invoqué la commande dispose d’un biprocesseur (processeur 0 et processeur 1) AMD tournant à une fré-
quence de 800 MHz.
67738-Administration Linux par la pratique-INT.book Page 82 Friday, May 24, 2019 10:38 AM

Administration Linux par la pratique


82

La structure des répertoires sous Linux

Où suis-je ?
Parmi les questions que peuvent se poser les utilisateurs de Windows qui viennent de passer à
Linux, voici les plus fréquentes :
• « Lorsque je viens de me connecter au système, où est-ce que je me retrouve ? »
• « Où sont mes fichiers et mes documents ? »
• « Où est mon lecteur C: ? »

Une structure en arborescence


Comme la plupart des systèmes d’exploitation modernes, Linux enregistre tous ses fichiers
dans une structure organisée de façon hiérarchique, en arborescence. Imaginez votre système
Linux comme un de ces grands classeurs de dossiers qu’on voit dans les bureaux. Ce genre de
meuble se subdivise en tiroirs, chaque tiroir pouvant contenir une série de classeurs qui ren-
ferment des documents ou d’autres classeurs à leur tour. La métaphore est rudimentaire, mais
elle vous aidera à vous faire une première idée.

MÉTAPHORE Le principe des poupées russes


Une métaphore autrement parlante viendra compléter votre vision du système de fichiers : celle des pou-
pées russes. Vous connaissez certainement le principe des poupées gigognes qui s’emboîtent les unes
dans les autres.

Figure 4–8 Le principe des poupées russes.


Dans un système Linux comme dans d’autres systèmes, chaque répertoire peut ainsi contenir d’autres
répertoires, contenant eux-mêmes des sous-répertoires, jusqu’à ce qu’on arrive au bout de la hiérarchie.
67738-Administration Linux par la pratique-INT.book Page 83 Friday, May 24, 2019 10:38 AM

Linux en mode texte : consolez-vous !


83
CHAPITRE 4

Visite guidée du système en dix minutes


Vous avez peut-être déjà vu ces cars de touristes japonais ornés du sigle publicitaire « Visit
Europe in six days », « Visitez l’Europe en six jours ». Le but du jeu de cette formule touris-
tique consiste apparemment à parcourir une moyenne de mille kilomètres par jour pour avoir
tout juste le temps de prendre en photo le sourire exténué des compatriotes devant Big Ben,
la Tour Eiffel, le Vésuve et la maison natale de Mozart.
C’est un peu dans le même esprit que nous allons entreprendre une première visite sommaire du
système, maintenant que nous savons nous déplacer dans les répertoires. Un système Linux
comme celui que nous venons d’installer est composé de milliers de répertoires et de sous-réper-
toires, contenant des dizaines, voire une centaine de milliers de fichiers. Si cette idée vous est
insupportable, songez à la découverte d’une grande ville. Mettez-vous dans la peau d’un touriste
qui vient passer une semaine à Marseille. La ville est constituée de centaines de rues avec des
milliers d’immeubles et des centaines de milliers de gens. Est-ce que cela vous empêchera d’aller
vous balader sur la Canebière ou de boire un café au Vieux Port ? Non ? Bon.

Home sweet home


En partant de votre répertoire utilisateur, montez d’un cran (cd ..) dans le répertoire /home.
Vous y verrez le répertoire correspondant à l’utilisateur créé lors de l’installation. Si nous
avions créé les comptes des trois utilisateurs kikinovak, glagaffe et jktartempion sur le
même système, chacun d’eux disposerait ici de son propre répertoire d’utilisateur. Kiki Novak
rangerait sa documentation technique et ses articles dans /home/kikinovak, Gaston Lagaffe
organiserait ses blagues et vidéos drôles dans /home/glagaffe et Jean-Kevin stockerait ses
albums et ses films piratés dans les sous-répertoires de /home/jktartempion.
Nous verrons la gestion des utilisateurs un peu plus loin.

Remonter à la racine : /
Partant du répertoire /home, si vous montez encore d’un cran (cd ..), vous vous retrouvez à la
racine du système de fichiers, symbolisée par une barre oblique /. Pour notre première visite,
faites comme les touristes tout juste sortis du car. Regardez tout, prenez des photos, mais ne
touchez à rien. Nous reviendrons bientôt pour revoir tout cela en détail.

Les répertoires /bin et /boot


Historiquement, le répertoire /bin (pour binaries ou « binaires ») contient des commandes
simples pour tous les utilisateurs et, plus précisément, toutes les commandes dont le système
a besoin pour démarrer correctement. Sur notre système CentOS, /bin est un lien symbo-
lique pointant vers /usr/bin. Nous verrons plus loin pourquoi.
/boot est l’endroit où un système Linux range tout ce qu’il lui faut pour démarrer (to boot
signifie « démarrer » en anglais). Le fichier vmlinuz-3.10.0-957.el7.x86_64 est le noyau de
votre machine. Vous pouvez en avoir un seul ou toute une collection dans ce répertoire, ce que
nous verrons également plus loin. En revanche, vous n’en utiliserez jamais qu’un seul à la fois.
67738-Administration Linux par la pratique-INT.book Page 84 Friday, May 24, 2019 10:38 AM

Administration Linux par la pratique


84

Le noyau (ou kernel) est la partie du système d’exploitation qui est la plus près de votre maté-
riel. C’est précisément ce fichier qui est chargé, dès que GRUB (GRand Unified Bootloader, le
chargeur de démarrage) passe la main au système. GRUB est en quelque sorte un logiciel
ayant pour seule tâche de démarrer le noyau. Les fichiers utilisés par GRUB se trouvent res-
pectivement dans /boot/grub et /boot/grub2. Si cela ne vous évoque pas grand-chose pour
l’instant, ne vous tracassez pas. Et oui, c’est normal que vous n’ayez pas accès à /boot/grub2
en tant que simple utilisateur. Le chargeur de démarrage fait partie des composants vitaux de
votre système et un utilisateur « commun des mortels » n’a rien à y faire. Pour l’instant,
contentez-vous de savoir que ces fichiers existent et qu’ils sont rangés par ici.

Les répertoires /dev et /etc


Le répertoire /dev (comme device, qui signifie « périphérique ») est peuplé d’une multitude
de fichiers qui symbolisent chacun un périphérique de votre machine. Repérez, par exemple,
/dev/cdrom qui représente votre lecteur DVD (s’il existe), /dev/input/mouse0 qui désigne
votre souris, ou encore /dev/sda qui symbolise votre premier disque dur. Et, si jamais vous
vous demandez ce que peut bien être /dev/null, c’est le nirvana numérique.
L’étymologie de /etc est controversée. C’est un de ces cas de figure assez fréquents dans la vie
quotidienne où l’acceptation erronée a pris le dessus pour devenir monnaie courante. La tra-
dition veut que ETC signifie Editable Text Configuration, c’est-à-dire « configuration éditable
en mode texte ». Voyons ce que cela signifie concrètement. Dans le répertoire /etc, repérez le
fichier passwd et affichez son contenu :

$ cd /etc
$ ls passwd
passwd
$ cat passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
...
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
chrony:x:997:995::/var/lib/chrony:/sbin/nologin
kikinovak:x:1000:1000:Kiki Novak:/home/kikinovak:/bin/bash

La fin du fichier contient manifestement la configuration des utilisateurs standards du sys-


tème. Et avant que vous n’émettiez des réserves, ne vous inquiétez pas : les mots de passe des
utilisateurs sont stockés dans un endroit inaccessible pour eux. Quoi qu’il en soit, il n’y a là
rien de bien spectaculaire, objecterez-vous en réprimant un bâillement d’ennui. Eh bien, si !
67738-Administration Linux par la pratique-INT.book Page 85 Friday, May 24, 2019 10:38 AM

Linux en mode texte : consolez-vous !


85
CHAPITRE 4

La configuration d’un système Linux – qu’il s’agisse d’un poste de travail comme le vôtre ou
d’une ferme de calcul de trois mille machines de la NASA – est stockée dans de simples
fichiers texte humainement lisibles. Il est donc possible de configurer le système en modifiant
ces fichiers avec un éditeur de texte comme seul outil. Nous profiterons amplement de cette
possibilité dans les prochains chapitres.

VOUS VENEZ DE WINDOWS Une base obscure


En comparaison, un système Windows n’offre pas cette transparence. Sur ce dernier, les opérations du
système sont retranscrites sous forme de graffitis écrits dans une obscure base de registres, illisible pour
un humain.

Si vous êtes curieux, jetez un œil à quelques autres fichiers de ce répertoire, sans vous laisser
intimider par leurs noms barbares : DIR_COLORS, hostname, hosts, group, fstab ou profile.
Ne vous inquiétez pas si vous n’y comprenez rien du tout. Retenez simplement que ce sont
des fichiers au format texte simple.

CULTURE /etc pour etc[etera]


Et pour l’histoire : « etc[etera] (= all the other stuff : doesn’t go into bin, dev, tmp, usr, var). »
Traduction : « etc[etera] (= tous les autres trucs : ne vont pas dans bin, dev, tmp, usr, var). » C’est un
extrait de la description de l’arborescence d’Unix fournie par Dennis Ritchie, le fondateur en personne.
Lui devrait savoir.

Le répertoire /lib
Les bibliothèques partagées par les programmes de /bin et /sbin se trouvent dans /lib
(comme libraries, « bibliothèques » en français).

B.A.-BA Qu’est-ce qu’une bibliothèque ?


Un programme n’est pas forcément un bloc monolithique ; il se sert d’un ensemble de fonctions qui se
situent dans une bibliothèque partagée. Ces fichiers ne s’exécutent pas directement. Ils contiennent du
code que l’on ne veut pas réécrire chaque fois qu’un programme doit exécuter une fonction similaire (par
exemple, ouvrir une fenêtre Enregistrer sous ou calculer un cosinus).
Dans un système Windows, ce sont tous ces fichiers .DLL (Dynamic Link Library, c’est-à-dire « bibliothèque
de liens dynamiques ») que vous trouverez dans le répertoire C:\WINDOWS\SYSTEM\. Sur votre système
Linux, ce sont tous les fichiers .so (comme shared object qui signifie « objet partagé »).

Si vous vous rendez dans le répertoire /lib/modules, vous y trouverez un répertoire 3.10.0-
957.el7.x86_64. Les lecteurs attentifs noteront un air de parenté avec le nom du noyau
vmlinuz-3.10.0-957.el7.x86_64. Effectivement, tous les fichiers contenus dans ce réper-
toire appartiennent au noyau. Ce sont là les « modules », l’équivalent de ce que les utilisateurs
de Windows ou Mac OS X connaissent sous la désignation de pilotes (drivers ou
« gestionnaires de périphérique ») : des petits bouts de code que l’on charge dans le noyau
pour lui permettre de gérer tel ou tel périphérique. Avec Linux, contrairement à Windows,
67738-Administration Linux par la pratique-INT.book Page 86 Friday, May 24, 2019 10:38 AM

Administration Linux par la pratique


86

on peut effectuer cette opération sur un système en état de marche, sans que cela ne nécessite
un redémarrage. De façon analogue, il est possible d’enlever un module, ce qui désactive la
prise en charge d’un certain matériel sur un système « à chaud ».
Pour vous faire une idée un petit peu moins vague, entrez dans le répertoire 3.10.0-
957.el7.x86_64, puis continuez dans kernel/drivers/net/ethernet. Dans la liste de réper-
toires qui s’affiche, vous reconnaîtrez peut-être vaguement des noms de fabricants : atheros,
broadcom, intel, qlogic, realtek, etc. Jetez un œil dans quelques-uns de ces répertoires et
observez les différents fichiers .ko qu’ils contiennent. Chacun correspond à un certain type
de matériel, plus précisément à une série de cartes réseau (net signifie « réseau »). Ainsi,
8139cp.ko et 8139too.ko dans le répertoire realtek correspondent à une carte réseau équipée
d’une puce (chip) Realtek 8139. De manière similaire, les fichiers commençant par al et atl
dans le répertoire atheros correspondent à des cartes réseau Atheros, e1000.ko et e1000e.ko
dans l’arborescence intel gèrent les cartes réseau Intel et ainsi de suite. Dans la plupart des
cas, le nom du module permet de deviner quel matériel lui correspond. Dans d’autres cas, la
relation n’est pas évidente et il faut se renseigner.

Les répertoires /mnt, /media et /run


Les répertoires /media et /mnt constituent par convention les points de montage de votre sys-
tème. Le répertoire /run est un ajout récent à la hiérarchie sous Linux, dont un des rôles est
de prendre la relève de /media. C’est ici que se trouvent vos disques C:, D:, E:, F:, etc.
Dans un système Linux, lorsque vous insérez un périphérique amovible comme un CD-Rom, un
DVD, un disque dur externe ou une clé USB, il doit être « monté ». Cela signifie que le système
de fichiers du périphérique doit être intégré à l’arborescence du système. Les données sont ensuite
accessibles en dessous du répertoire qui constitue ce qu’on appelle le « point de montage ». Avant
d’enlever le périphérique, celui-ci doit être « démonté », c’est-à-dire que l’on indique au système
de fichiers que les données du périphérique amovible ne doivent plus être englobées.
Sur un serveur Linux dépourvu d’environnement graphique, les opérations de montage et de
démontage s’effectuent de manière traditionnelle, à la main. Pas avec un tournevis et une clé
de douze, non, mais en tapant une série de commandes. Les distributions « poste de travail »
modernes gèrent les périphériques amovibles de manière complètement transparente, c’est-à-
dire que le montage s’effectue automatiquement.
Le montage et le démontage constituent un des concepts auquel un habitué des systèmes Win-
dows peut être complètement étranger. Pour l’instant, retenez simplement que /media et /run
vous donnent accès aux données des périphériques amovibles que le système gère automatique-
ment, par exemple sur un poste de travail. Quant à /mnt, c’est le point de montage
« historique » que l’on conserve pour les systèmes de fichiers montés manuellement, comme
c’est le cas sur les serveurs. Nous éluciderons tout cela par la pratique, le moment venu.

Les répertoires /proc et /sys


Les répertoires /proc et /sys contiennent un système de fichiers virtuel qui documente à la
volée le noyau et les différents processus du système. Avant que vous ne partiez en courant,
67738-Administration Linux par la pratique-INT.book Page 87 Friday, May 24, 2019 10:38 AM

Linux en mode texte : consolez-vous !


87
CHAPITRE 4

retenez juste que certains fichiers contenus dans ces répertoires nous fourniront des informa-
tions précieuses sur le système : le modèle et la fréquence du processeur (/proc/cpuinfo que
nous avons eu l’occasion de voir), la mémoire vive et la quantité utilisée (/proc/meminfo), la
synchronisation d’une grappe de disques (/proc/mdstat) et beaucoup d’autres choses encore.
Quant au « système de fichiers virtuel », on peut le considérer comme un système de fichiers
volatile, dont il ne reste pas la moindre trace dès que vous éteignez la machine.

Les répertoires /root et /sbin


/root, c’est le répertoire d’utilisateur de… l’utilisateur root ! Il n’est donc pas étonnant que
vous n’y ayez pas accès en tant qu’utilisateur normal. « Et pourquoi pas /home/root ? »
penserez-vous peut-être. L’administrateur serait-il réticent de se retrouver ainsi à pied d’éga-
lité avec les basses castes des utilisateurs communs ? Oui, en quelque sorte, mais pour une
simple raison de sécurité.
Dans les installations de grande envergure, il arrive assez souvent qu’un système Linux soit
réparti sur plusieurs partitions d’un disque, voire sur plusieurs disques et, dans certains cas, le
système sur lequel vous travaillez peut être « distribué » sur plusieurs machines, qui ne sont
d’ailleurs pas forcément dans la même pièce, ni dans le même bâtiment. Au démarrage, le
système se charge d’assembler les pièces pour vous présenter un tout cohérent. Imaginez
maintenant qu’il y ait un problème avec le disque ou la machine contenant le répertoire
/home. Si le répertoire d’utilisateur de root était en dessous de /home, il serait inaccessible.
root ne pourrait plus s’identifier et, par conséquent, ne pourrait plus rien faire sur la machine.

ATTENTION Gare aux confusions !


La langue anglaise désigne la racine du système de fichiers (/) par root directory. Gare à la confusion
issue de l’homophonie avec /root directory !

Le répertoire /sbin (system binaries, autrement dit « systèmes binaires ») renferme une série
d’exécutables pour l’administrateur. Ces outils servent à partitionner et formater des disques,
configurer des interfaces réseau et bien d’autres choses encore. Certaines de ces commandes
peuvent être invoquées par les utilisateurs du « commun des mortels ». À titre d’exemple, la
commande suivante affiche la configuration réseau de votre machine.

[kikinovak@centosbox ~]$ /sbin/ip addr


1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue ...
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc ...
link/ether 08:00:27:00:00:01 brd ff:ff:ff:ff:ff:ff
inet 192.168.2.10/24 brd 192.168.2.255 scope global ...
valid_lft 85369sec preferred_lft 85369sec
inet6 fe80::a9aa:7f83:429:ff1e/64 scope link
valid_lft forever preferred_lft forever
67738-Administration Linux par la pratique-INT.book Page 88 Friday, May 24, 2019 10:38 AM

Administration Linux par la pratique


88

Cependant, pour la plupart, ces utilitaires représentent l’équivalent numérique d’une tron-
çonneuse. Dans les mains d’un expert, ils permettent d’abattre de la besogne très rapidement.
Mettez un utilisateur lambda aux commandes et attendez-vous à un massacre.
Tout comme /bin, /sbin est un lien symbolique qui pointe vers l’arborescence /usr. Nous y
venons, justement.

Le répertoire /usr
L’arborescence sous /usr (Unix System Resources ou Unix Specific Resources, aucun lien avec
us(e)r), renferme précisément tout ce qui n’est pas nécessaire au fonctionnement minimal du
système. Vous serez d’ailleurs peut-être surpris d’apprendre que cela représente la part du
lion. Sur notre installation serveur minimale, /usr contient près de 90 % de la totalité du sys-
tème. Vous constaterez que certains répertoires ou liens symboliques rencontrés à la racine du
système sont également présents ici : /usr/bin, /usr/lib ou encore /usr/sbin.
Même sur notre installation minimale, l’arborescence /usr compte déjà plus de 20 000
fichiers. Avec un système d’une telle complexité, il est important que chaque chose ait une
place bien définie pour que l’on s’y retrouve :
• /usr/sbin comporte d’autres commandes pour l’administrateur ;
• /usr/bin renferme la majorité des exécutables pour les utilisateurs ;
• /usr/lib et /usr/lib64 contiennent les bibliothèques partagées de ces derniers.
Le moment est venu pour dire deux mots des liens symboliques (ou raccourcis) /bin, /lib,
/lib64 et /sbin à la racine du système. Traditionnellement, les systèmes Linux opéraient la dis-
tinction et rangeaient dans ces répertoires le nombre relativement limité d’applications et de
bibliothèques qui étaient nécessaires au démarrage ou au dépannage du système. Tout ce qui
n’était pas vital stricto sensu pour le démarrage avait sa place dans /usr. Or, depuis quelques années,
on observe une tendance croissante à faire fi de cette distinction et à fusionner /bin et /usr/bin,
/lib et /usr/lib et ainsi de suite, d’où la série de liens symboliques.

Notez que, sous Linux, /usr/bin représente à peu de choses près l’équivalent du répertoire
C:\Program Files de Windows.

ASTUCE Comment fait-on pour compter tous ces fichiers ?


Étant donné que la question revient souvent, je me permets d’anticiper un peu pour vous montrer com-
ment je m’y suis pris pour compter le nombre de fichiers en dessous de /usr, ou pour afficher l’espace
disque occupé par les arborescences respectives. Invoquez les deux commandes suivantes sans vous pré-
occuper des détails pour l’instant.
$ find /usr -type f 2> /dev/null | wc -l
20058
$ du -sh /* 2> /dev/null
0 /bin
81M /boot
0 /dev
67738-Administration Linux par la pratique-INT.book Page 89 Friday, May 24, 2019 10:38 AM

Linux en mode texte : consolez-vous !


89
CHAPITRE 4

17M /etc
36K /home
0 /lib
0 /lib64
0 /media
0 /mnt
0 /opt
0 /proc
0 /root
8,4M /run
0 /sbin
0 /srv
0 /sys
0 /tmp
836M /usr
41M /var
Le résultat des deux dernières commandes m’affiche que le système compte un total de 20 058 fichiers
en dessous de /usr, et que cette arborescence occupe 836 Mo sur mon disque dur.

Les répertoires /tmp et /var


/tmp est le répertoire temporaire du système, comme son nom le suggère. C’est l’endroit des-
tiné à recevoir les données que vous considérez d’une certaine manière comme volatiles, c’est-
à-dire celles dont vous n’avez plus besoin après un redémarrage de la machine.
L’arborescence en dessous de /var contient toute une série de fichiers variables : des jour-
naux, des boîtes aux lettres de messagerie, des sites web, etc. Les journaux se situent dans
/var/log, mais ne vous attendez pas à y trouver Le Monde Diplomatique, Libération ou
L’Équipe. Ces journaux ou logfiles sont des fichiers au format texte « crachés » à la volée par
différents composants d’un système en marche. Un serveur de courrier électronique dépose
les messages pour les utilisateurs dans /var/spool/mail. Et lorsque vous installez un serveur
web sur votre machine, les pages de vos sites sont stockées en dessous de /var/www/html.

Visualiser : more et less

Gérer l’affichage de fichiers longs


L’utilitaire cat convient parfaitement pour afficher le contenu de fichiers courts. À titre
d’exemple, utilisez-le pour visualiser des fichiers de configuration comme /etc/hostname,
/etc/hosts, /etc/resolv.conf ou /etc/fstab. Ne tenez pour l’instant pas compte du fait
que vous ne comprenez pas grand-chose au contenu quelque peu énigmatique de ces fichiers ;
nous en éluciderons la signification en temps et en heure.
67738-Administration Linux par la pratique-INT.book Page 90 Friday, May 24, 2019 10:38 AM

Administration Linux par la pratique


90

Pour des fichiers dont l’affichage dépasse la taille d’un écran, comme dans l’exemple avec
/proc/cpuinfo, on peut très bien revenir en arrière (resp. en avant) avec la combinaison de
touches Maj+PageHaut (resp. Maj+PageBas). Si l’on s’est connecté à distance depuis un ter-
minal graphique, il est possible d’utiliser la barre de défilement ou la molette de la souris.
Dans votre terminal, affichez le fichier /etc/DIR_COLORS à l’aide de cat. L’affichage dépasse
la taille de votre fenêtre. Revenez en arrière en utilisant la combinaison de touches indiquée.
Pour un fichier comme /etc/DIR_COLORS, cette manière de procéder est tout à fait valable.
Dans d’autres cas, il faudra procéder différemment. Voyez vous-même pourquoi.

$ cat /etc/services
...
isnetserv 48128/tcp # Image Systems Network Services
isnetserv 48128/udp # Image Systems Network Services
blp5 48129/tcp # Bloomberg locator
blp5 48129/udp # Bloomberg locator
com-bardac-dw 48556/tcp # com-bardac-dw
com-bardac-dw 48556/udp # com-bardac-dw
iqobject 48619/tcp # iqobject
iqobject 48619/udp # iqobject
matahari 49000/tcp # Matahari Broker

Essayez de remonter au début du fichier, jusqu’à ce que vous aperceviez la ligne contenant
l’invite de commande. Vous n’en voyez pas la fin (ou plutôt le début). C’est normal : le fichier
en question compte plus de 11 000 lignes. Sa longueur pose un problème dans le sens où nous
arrivons aux limites de :
• la patience de l’utilisateur qui n’en peut plus d’appuyer sur Maj+PageHaut ;
• la mémoire d’affichage de la console, qui ne conserve qu’un nombre limité de caractères :
au-delà, il n’est plus possible de remonter davantage pour voir le début du fichier.

Visualiser avec more


Bien sûr, nous pourrions décider d’ouvrir avec un éditeur de texte simple tous ces fichiers
dont l’affichage dépasse la taille d’un écran. Avec un système Linux, si nous souhaitons seule-
ment voir le contenu d’un certain fichier de configuration sans toutefois l’éditer, nous aurons
d’abord le réflexe d’utiliser un pager. Le terme anglais a été francisé en « logiciel de
pagination », « logiciel de visualisation » ou « pageur » pour faire plus court. En voici un :

$ more /etc/DIR_COLORS

Le visualiseur more affiche le fichier spécifié en argument en remplissant exactement un


écran, puis il s’arrête. Pour voir le reste du fichier, vous avez le choix entre :
• appuyer sur Entrée pour avancer ligne par ligne ;
• utiliser la touche Espace pour progresser page par page ;
• appuyer sur Q (comme quit ou « quitter ») pour sortir du mode de visualisation.
67738-Administration Linux par la pratique-INT.book Page 91 Friday, May 24, 2019 10:38 AM

Linux en mode texte : consolez-vous !


91
CHAPITRE 4

Dès que more est arrivé à la fin du fichier, il considère qu’il a terminé son travail. L’invite de
commande réapparaît et le clignotement du curseur vous indique que vous pouvez continuer
de travailler normalement dans la console.
Essayez more sur un fichier plus long :

$ more /etc/services

EN SAVOIR PLUS Sur more


Les anciennes versions de more ne permettaient pas de revenir en arrière, ce qui ne facilitait pas la
recherche dans un fichier un peu plus volumineux. Les versions plus récentes (comme celle incluse dans
notre installation de CentOS) ont ajouté cette fonctionnalité : la touche B (back) sert à « feuilleter » le
fichier page par page en sens inverse. Toutefois, il faudra bien se résoudre à admettre que more fait partie
de la poignée d’utilitaires un peu obtus du monde Linux et qu’il n’est pas vraiment confortable à utiliser.

Less is more : moins, c’est plus !


C’est là que less entre en jeu. C’est un autre logiciel de pagination, dont le but déclaré est de
fournir un remplaçant confortable à more. Son nom est un clin d’œil ironique à la devise
less is more, la version anglaise de la tournure « ce n’est pas la peine d’en rajouter ». Prenez
cette boutade au pied de la lettre et vous devinerez qu’effectivement, less = more.

$ less /etc/services

Vous constatez que less vous laisse naviguer exactement comme more. La touche Entrée sert à
avancer d’une ligne, les touches Espace et B permettent de feuilleter le fichier dans un sens et
dans l’autre, Q interrompt la pagination et fait réapparaître l’invite de commande. Cependant,
ce n’est pas tout.
• À la différence de more, less ne quitte pas le mode de pagination lorsqu’il arrive à la fin
du fichier, ce qui évite les manipulations énervantes du style « retour à la case départ ».
• Les touches directionnelles du clavier FlècheHaut et FlècheBas permettent également de
naviguer dans le fichier. Non content de cela, FlècheGauche et FlècheDroite vous déplacent
latéralement dans un fichier dont la largeur dépasse celle de l’écran. Essayez.
• Il arrive très souvent que l’on ouvre un fichier de configuration à la recherche d’une certaine
chaîne de caractères. Lorsque le fichier compte plusieurs milliers de lignes, cela revient à
chercher une aiguille dans une botte de foin. Pour remédier à cela, less inclut une fonction
de recherche simple. Pour exemple, ouvrez le fichier /etc/passwd avec less, appuyez sur la
barre oblique / et faites-la suivre de la chaîne de caractères que vous cherchez, par exemple
nologin ou votre nom d’utilisateur. Vous remarquez que less vous affiche toutes les occur-
rences trouvées en surbrillance. Utilisez la touche N (next = prochain) pour sauter d’occur-
rence en occurrence et Maj+N pour faire la même chose en sens inverse.
67738-Administration Linux par la pratique-INT.book Page 92 Friday, May 24, 2019 10:38 AM

Administration Linux par la pratique


92

REMARQUE more & less


Profitons-en pour clarifier d’éventuels malentendus. less et more sont deux logiciels de visualisation
non destructifs, c’est-à-dire qu’ils ne modifient en aucune manière le contenu des fichiers sur lesquels
vous les appliquez. Leur utilisation se limite au seul format texte simple. Étant donné que, dans un sys-
tème Linux, toute la configuration est contenue dans des fichiers de ce format, nous constaterons bientôt
qu’il s’agit d’outils fort pratiques pour l’administration de notre machine.

Créer : touch et mkdir


L’affichage détaillé de ls avec l’option -l nous montre que chaque fichier est horodaté. Pre-
nons par exemple le fichier bonjour.txt que nous avons créé un peu plus haut :

$ ls -l bonjour.txt
-rw-rw-r--. 1 kikinovak kikinovak 19 26 mai 10:46 bonjour.txt

Modifier l’horodatage d’un fichier avec touch


En l’occurrence, ce fichier a été créé – ou modifié pour la dernière fois – le 26 mai à 10 h 46.
Attention à ne pas confondre les indications : le nombre 19 indique ici la taille du fichier,
c’est-à-dire dix-neuf octets. Maintenant, essayons ce qui suit :

$ touch bonjour.txt
$ ls -l bonjour.txt
-rw-rw-r--. 1 kikinovak kikinovak 19 7 juin 13:13 bonjour.txt

Nous constatons que l’horodatage du fichier indique maintenant le 7 juin à 13 h 13. En effet,
cela correspond à la date et à l’heure auxquelles j’écris ces lignes.

Créer un fichier vide avec touch


Si le fichier spécifié n’existe pas, touch prend soin de le créer. Essayons avec un nom de
fichier qui n’existe pas dans le répertoire courant :

$ touch yatahongaga.txt
$ ls -l yatahongaga.txt
-rw-rw-r--. 1 kikinovak kikinovak 0 7 juin 13:16 yatahongaga.txt

Ici, la commande touch a créé un fichier vide yatahongaga.txt, d’une taille de 0 octet.
67738-Administration Linux par la pratique-INT.book Page 93 Friday, May 24, 2019 10:38 AM

Linux en mode texte : consolez-vous !


93
CHAPITRE 4

Créer un fichier texte sans éditeur de texte

Avec cat
Voici une méthode pour créer un fichier texte simple, à l’aide de la seule commande cat :

$ cat > ~/livres.txt << EOF


> Alice au pays des merveilles
> La montagne magique
> Faust
> EOF
$ ls -l livres.txt
-rw-rw-r--. 1 kikinovak kikinovak 55 7 juin 13:19 livres.txt
$ cat livres.txt
Alice au pays des merveilles
La montagne magique
Faust

Nous avons écrit trois lignes de texte dans un fichier ~/livres.txt. N’oubliez pas que le
symbole tilde ~ représente ici le répertoire d’utilisateur, dans mon cas /home/kikinovak. La
suite de caractères EOF (comme End Of File) définit la fin du fichier.

Avec echo
Aurions-nous pu obtenir quelque chose de comparable avec la commande echo ? Essayons :

$ echo Beethoven > compositeurs.txt


$ cat compositeurs.txt
Beethoven

La commande echo a créé ici un nouveau fichier compositeurs.txt en y écrivant une ligne
Beethoven. Jusqu’ici, cela ressemble beaucoup à ce que nous avons fait plus haut avec
bonjour.txt. Maintenant, essayons ceci :

$ echo Bach > compositeurs.txt


$ cat compositeurs.txt
Bach

Ce n’était donc pas la bonne méthode pour ajouter une ligne à notre fichier. Le dernier contenu
en date a tout simplement écrasé l’ancien. Nous allons donc nous y prendre autrement :

$ echo Bartok >> compositeurs.txt


$ cat compositeurs.txt
Bach
Bartok
67738-Administration Linux par la pratique-INT.book Page 94 Friday, May 24, 2019 10:38 AM

Administration Linux par la pratique


94

Voilà qui est mieux. L’utilisation du chevron >> au lieu de la simple flèche > a provoqué l’ajout
de la chaîne de caractères à la fin du fichier, en évitant la substitution du contenu précédent.
Si nous souhaitons ajouter un troisième nom à la liste, il devrait donc suffire de répéter la der-
nière commande en insérant un autre nom. Essayons :

$ echo Schubert >> compositeurs.txt


$ cat compositeurs.txt
Bach
Bartok
Schubert

Effectivement, c’est bien cela. Soit dit en passant, nous en avons profité pour avoir un autre
petit aperçu de la redirection sous Linux. Passons maintenant à la création de répertoires.

Créer des répertoires avec mkdir


La commande mkdir (comme make directory, vous aurez remarqué que les informaticiens ont
un problème avec les voyelles) sert à créer un nouveau répertoire, dont on spécifie le nom.
Créons un répertoire Documents dans notre répertoire d’utilisateur :

$ mkdir Documents
$ ls -ld Documents
drwxrwxr-x. 2 kikinovak kikinovak 6 7 juin 13:54 Documents

Il est également possible de spécifier le chemin complet du répertoire à créer. Pour créer un
répertoire Images à l’intérieur de /home/kikinovak, je pourrais le faire comme suit :

$ mkdir /home/kikinovak/Images
$ ls -ld Images/
drwxrwxr-x. 2 kikinovak kikinovak 6 7 juin 08:07 Images/

Bien évidemment, dans cet exemple, il vous faudra remplacer kikinovak dans le chemin par
votre nom d’utilisateur. D’ailleurs, pour être sûr que c’est bien dans le répertoire utilisateur
que l’on crée le dossier, nous aurions pu écrire la commande suivante :

$ mkdir ~/Images

Créer une série de répertoires


Si, à l’intérieur du répertoire ~/Images, nous souhaitions créer trois sous-répertoires Photos,
Graphismes et Captures ; nous procéderions de la façon suivante :

$ cd ~/Images
$ mkdir Photos Graphismes Captures
$ ls -l
67738-Administration Linux par la pratique-INT.book Page 95 Friday, May 24, 2019 10:38 AM

Linux en mode texte : consolez-vous !


95
CHAPITRE 4

total 0
drwxrwxr-x. 2 kikinovak kikinovak 6 7 juin 14:08 Captures
drwxrwxr-x. 2 kikinovak kikinovak 6 7 juin 14:08 Graphismes
drwxrwxr-x. 2 kikinovak kikinovak 6 7 juin 14:08 Photos

Ce dernier exemple appelle deux remarques. D’une part, il est tout à fait possible de créer une
série de répertoires à la louche. Il suffit de spécifier leurs noms respectifs en argument, séparés
par des espaces. D’autre part, notez bien le d comme directory en tête des attributs complets
(drwxrwxr-x), qui signifie que nous avons affaire à des répertoires.

Gare aux espaces !


N’oublions pas de dire deux mots sur un détail important qui constitue une source d’erreur
fréquente : les espaces dans les noms de fichiers et de répertoires. Dans certains cas de figure
(sur les serveurs, par exemple, ou dans les réseaux hétérogènes, c’est-à-dire composés de
machines dotées de systèmes d’exploitation différents), il vaut mieux tout faire pour les éviter.
Dans d’autres cas, il est tout à fait possible de les utiliser, à condition d’être sûr de ce que l’on
fait. Je vous donne un exemple pour vous sensibiliser à la problématique.
Retournez dans votre répertoire d’utilisateur (cd sans argument), créez un répertoire Test et,
à l’intérieur de ce dernier, créez un répertoire Mes Documents, dont le nom vous semblera
vaguement familier si vous venez d’un autre système d’exploitation, du genre auquel on
échappe difficilement.

$ cd
$ mkdir Test
$ cd Test
$ mkdir Mes Documents
$ ls -l
total 0
drwxrwxr-x. 2 kikinovak kikinovak 6 7 juin 14:54 Documents
drwxrwxr-x. 2 kikinovak kikinovak 6 7 juin 14:54 Mes

Vous voyez le problème. La commande mkdir nous a créé deux répertoires distincts, Mes et
Documents. Ce n’est pas ce que nous voulions faire.

Prenons un autre exemple pour voir comment nous aurions pu nous y prendre. Revenons
dans notre répertoire d’utilisateur, créons un répertoire Test2 et à l’intérieur, essayons de créer
trois répertoires distincts Mes Documents, Mes Images et Mes Films.

$ cd
$ mkdir Test2
$ cd Test2
$ mkdir "Mes Documents"
$ mkdir 'Mes Images'
$ mkdir Mes\ Films
$ ls -l
67738-Administration Linux par la pratique-INT.book Page 96 Friday, May 24, 2019 10:38 AM

Administration Linux par la pratique


96

total 0
drwxrwxr-x. 2 kikinovak kikinovak 6 7 juin 14:57 Mes Documents
drwxrwxr-x. 2 kikinovak kikinovak 6 7 juin 14:58 Mes Films
drwxrwxr-x. 2 kikinovak kikinovak 6 7 juin 14:57 Mes Images

Cette fois-ci, nous avons bien obtenu le résultat escompté. Vous aurez certainement remarqué
que pour chacun des trois répertoires, je me suis servi d’une syntaxe différente, en utilisant
respectivement des guillemets doubles, des guillemets simples et un caractère d’échappement
devant l’espace.

UN PEU DE PRATIQUE Exercice de révision


Je vous propose de souffler un peu en faisant un petit exercice de révision :
1. Dans votre répertoire d’utilisateur, créez un dossier Fichiers ;
2. À l’intérieur de ce dernier, créez trois sous-répertoires Documents, Images et Films ;
3. Créez-y trois fichiers vides nommés respectivement texte.txt, photo.jpg et film.avi.

Les arborescences en un coup d’œil avec tree


Puisque nous sommes en plein dans les arborescences de répertoires, le moment est venu de
vous présenter un cousin lointain de ls, la commande tree. Curieusement, on ne la rencontre
pas souvent dans les manuels d’initiation à la ligne de commande sous Linux.

OUTIL Installer la commande tree


La commande tree ne fait pas partie de notre système minimal, mais il est facile de l’installer, en antici-
pant quelque peu sur le chapitre concernant la gestion des logiciels.
Déconnectez-vous (exit) et reconnectez-vous en tant que root. Vérifiez si vous êtes bien connectés à
Internet.
# ping -c 4 www.centos.org
PING www.centos.org (85.12.30.226) 56(84) bytes of data.
64 bytes from 85.12.30.226: icmp_seq=1 ttl=53 time=48.5 ms
64 bytes from 85.12.30.226: icmp_seq=2 ttl=53 time=48.3 ms
64 bytes from 85.12.30.226: icmp_seq=3 ttl=53 time=48.5 ms
64 bytes from 85.12.30.226: icmp_seq=4 ttl=53 time=48.7 ms

--- www.centos.org ping statistics ---


4 packets transmitted, 4 received, 0% packet loss, time 3006ms
rtt min/avg/max/mdev = 48.359/48.556/48.749/0.138 ms
Ensuite, installez l’application tree comme ceci :
# yum install tree
Répondez deux fois par l’affirmative pour l’installation du paquet (Y comme yes) et l’importation de la
clé GPG (O comme oui) et le tour est joué. Quittez la console (exit) et reconnectez-vous en tant qu’uti-
lisateur normal.
67738-Administration Linux par la pratique-INT.book Page 97 Friday, May 24, 2019 10:38 AM

Linux en mode texte : consolez-vous !


97
CHAPITRE 4

La commande tree offre des fonctionnalités fort pratiques. Dans le cas de notre petit exercice
de révision, elle nous permettra d’apprécier le résultat en un simple coup d’œil. Essayez.

$ cd
$ tree Fichiers
Fichiers
├── Documents
│ └── texte.txt
├── Films
│ └── film.avi
└── Images
└── photo.jpg

3 directories, 3 files

Les anglophones parmi vous auront deviné que la commande tree – qui signifie « arbre » en
anglais – sert à représenter des arborescences.
Notre système contient une série de fichiers et de répertoires cachés, que nous pouvons affi-
cher avec l’option -a comme pour la commande ls.

$ tree /etc/skel/
/etc/skel/
...
$ tree -a /etc/skel/
/etc/skel/
├── .bash_logout
├── .bash_profile
└── .bashrc
...

Puisque nous avons parlé d’arbre, vous pouvez très bien imaginer les suites de répertoires et
de sous-répertoires comme autant de branches qui se ramifient.

$ tree /usr/share/icons/hicolor
/usr/share/icons/hicolor
├── 16x16
│ └── apps
│ ├── fedora-logo-icon.png
│ └── system-logo-icon.png
├── 22x22
│ └── apps
│ ├── fedora-logo-icon.png
│ └── system-logo-icon.png
...

Les fichiers (comme fedora-logo-icon.png ou system-logo-icon.png) correspondent alors


aux feuilles de cet arbre. Pour filer la métaphore, tout se rejoint à la racine. Et les pinailleurs
noteront que notre arbre est à l’envers. La racine est en haut et il faut descendre vers les feuilles.
67738-Administration Linux par la pratique-INT.book Page 98 Friday, May 24, 2019 10:38 AM

Administration Linux par la pratique


98

L’option -d de tree montre les différents embranchements, mais sans les feuilles. En d’autres
termes, tree -d (comme directory) affichera seulement les répertoires d’une arborescence.

$ tree -d /usr/share/icons/hicolor
/usr/share/icons/hicolor
├── 16x16
│ └── apps
├── 22x22
│ └── apps
├── 24x24
│ └── apps
├── 256x256
│ └── apps
├── 32x32
│ └── apps
├── 36x36
│ └── apps
├── 48x48
│ └── apps
├── 96x96
│ └── apps
└── scalable
└── apps
...

Créer une arborescence de répertoires


Admettons maintenant que nous voulions créer une série de sous-répertoires imbriqués les
uns dans les autres, à la manière des poupées gigognes. Le résultat ressemble à peu près à
l’arborescence suivante :

$ tree branche1
branche1
└── branche2
└── branche3
└── branche4
...

La première idée sera sans doute d’invoquer mkdir avec le chemin complet des sous-
répertoires. Malheureusement, voici ce qui se passe si nous procédons ainsi :

$ mkdir branche1/branche2/branche3/branche4
mkdir: impossible de créer le répertoire « branche1/branche2/
branche3/branche4 »: Aucun fichier ou dossier de ce type

Réprimons un instant une éventuelle pulsion de traverser du poing l’écran de l’ordinateur. Au


lieu de cela, regardons de plus près le message d’erreur et prenons-le au pied de la lettre. Ce
que notre shell (interpréteur de commande) essaie de nous faire comprendre (de façon un peu
67738-Administration Linux par la pratique-INT.book Page 99 Friday, May 24, 2019 10:38 AM

Linux en mode texte : consolez-vous !


99
CHAPITRE 4

laconique, certes), c’est qu’il n’arrive pas à créer le répertoire branche4 parce que les réper-
toires parents branche1, branche2 et branche3 n’existent pas. Nous devons donc invoquer
mkdir avec l’option -p (comme parent) :

$ mkdir -p branche1/branche2/branche3/branche4
$ tree branche1
branche1
└── branche2
└── branche3
└── branche4
...

Je disais que notre shell se montrait un peu laconique à notre égard. Sachez que, dans bien des cas,
il ne tient qu’à nous de le rendre plus bavard. Créons une autre série de répertoires imbriqués, mais
cette fois-ci, utilisons l’option supplémentaire -v comme --verbose, c’est-à-dire « bavard » :

$ mkdir -pv poupee1/poupee2/poupee3


mkdir: création du répertoire « poupee1 »
mkdir: création du répertoire « poupee1/poupee2 »
mkdir: création du répertoire « poupee1/poupee2/poupee3 »

Cette option -v est applicable pour un grand nombre de commandes.

Copier, déplacer et renommer : cp et mv

Copier des fichiers et des répertoires avec cp


La commande cp (copy) sert à copier des fichiers. Dans son utilisation la plus basique, elle
duplique un fichier d’un endroit à un autre. Prenons par exemple un fichier de notre réper-
toire d’utilisateur et copions-le dans le répertoire /tmp :

$ ls -l bonjour.txt
-rw-rw-r--. 1 kikinovak kikinovak 19 7 juin 13:13 bonjour.txt
$ cp bonjour.txt /tmp/
$ ls -l /tmp/bonjour.txt
-rw-rw-r--. 1 kikinovak kikinovak 19 8 juin 09:19
/tmp/bonjour.txt

Pour copier des répertoires entiers avec leur contenu, il faudra invoquer cp avec l’option -R
(comme recursive, « récursif »). Dans l’exemple, j’utilise en plus l’option -v qui explicite bien
chaque détail de l’opération :
67738-Administration Linux par la pratique-INT.book Page 100 Friday, May 24, 2019 10:38 AM

Administration Linux par la pratique


100

$ tree Fichiers
Fichiers
├── Documents
│ └── texte.txt
├── Films
│ └── film.avi
└── Images
└── photo.jpg
...
$ cp -Rv Fichiers /tmp/
« Fichiers » -> « /tmp/Fichiers »
« Fichiers/Documents » -> « /tmp/Fichiers/Documents »
« Fichiers/Documents/texte.txt » -> « /tmp/Fichiers/.../texte.txt »
« Fichiers/Images » -> « /tmp/Fichiers/Images »
« Fichiers/Images/photo.jpg » -> « /tmp/Fichiers/Images/photo.jpg »
« Fichiers/Films » -> « /tmp/Fichiers/Films »
« Fichiers/Films/film.avi » -> « /tmp/Fichiers/Films/film.avi »
$ tree /tmp/Fichiers
/tmp/Fichiers
├── Documents
│ └── texte.txt
├── Films
│ └── film.avi
└── Images
└── photo.jpg
...

Voici maintenant une utilisation de cp qui peut ressembler (de loin) au quotidien réel d’un
administrateur système. Créez un fichier de configuration config dans votre répertoire d’uti-
lisateur. Effectuez-en ensuite une copie de sauvegarde config.orig, qui représentera en
quelque sorte l’état initial de votre fichier de configuration. Maintenant, modifiez config, en
ajoutant une ligne par exemple. Vos fichiers ne sont désormais plus les mêmes.

$ cat > config << EOF


> Option 1
> Option 2
> Option 3
> EOF
$ cp -v config config.orig
« config » -> « config.orig »
$ ls -l config*
-rw-rw-r--. 1 kikinovak kikinovak 27 8 juin 09:27 config
-rw-rw-r--. 1 kikinovak kikinovak 27 8 juin 09:27 config.orig
$ echo Option 4 >> config
$ ls -l config*
-rw-rw-r--. 1 kikinovak kikinovak 36 8 juin 09:27 config
-rw-rw-r--. 1 kikinovak kikinovak 27 8 juin 09:27 config.orig
67738-Administration Linux par la pratique-INT.book Page 101 Friday, May 24, 2019 10:38 AM

Linux en mode texte : consolez-vous !


101
CHAPITRE 4

L’ASTUCE DU CHEF Utiliser le joker *


Dans ce dernier exemple, j’ai introduit une petite nouveauté qui semblera familière aux utilisateurs de
MS-DOS, même si son fonctionnement diffère quelque peu : le joker *. J’évite d’utiliser les traductions
françaises comme « caractère générique » ou « métacaractère », tout juste aptes à séduire les penseurs
postmodernes. L’astérisque * signifie « n’importe quelle chaîne de caractères ». Si cela ne vous paraît
pas très parlant, pensez aux jeux de cartes, où le joker signifie « n’importe quelle carte », ou encore aux
petites lettrines immaculées du Scrabble, celles qui endossent le rôle de n’importe quelle lettre salvatrice
au milieu de votre « WGTHRX ». Là encore, prenons un exemple.
Depuis que nous avons entrepris notre initiation à la ligne de commande, les fichiers et les répertoires
s’entassent dans notre répertoire d’utilisateur. La prochaine leçon sera d’ailleurs consacrée aux com-
mandes de suppression, ce qui nous permettra d’envisager un brin de ménage. Pour l’instant, vous devez
faire avec tout ce fatras. Admettons que vous ne vouliez afficher des renseignements précis que sur vos
seuls fichiers dont le nom commence par bonjour. Vous pourriez très bien expliciter à la suite les quatre
fichiers en argument :
$ ls -l bonjour.txt bonjour2.txt bonjour3.txt bonjourtous.txt
-rw-rw-r--. 1 kikinovak kikinovak 17 26 mai 10:50 bonjour2.txt
-rw-rw-r--. 1 kikinovak kikinovak 22 26 mai 10:50 bonjour3.txt
-rw-rw-r--. 1 kikinovak kikinovak 58 26 mai 10:54 bonjourtous.txt
-rw-rw-r--. 1 kikinovak kikinovak 19 7 juin 13:13 bonjour.txt
Toutefois, il y a moyen de faire plus court :
$ ls -l bonjour*
-rw-rw-r--. 1 kikinovak kikinovak 17 26 mai 10:50 bonjour2.txt
-rw-rw-r--. 1 kikinovak kikinovak 22 26 mai 10:50 bonjour3.txt
-rw-rw-r--. 1 kikinovak kikinovak 58 26 mai 10:54 bonjourtous.txt
-rw-rw-r--. 1 kikinovak kikinovak 19 7 juin 13:13 bonjour.txt
Les habitués de MS-DOS verront tout de suite la différence. Sous Windows, le joker aurait dû être invo-
qué sous la forme BONJOUR*.*, voire BONJOUR*.TXT.

Sauvegarder un répertoire
Pour en revenir à cp, je peux également copier l’intégralité d’un répertoire vers un répertoire
d’un autre nom :

$ cp -Rv Fichiers CopieFichiers


« Fichiers » -> « CopieFichiers »
« Fichiers/Documents » -> « CopieFichiers/Documents »
« Fichiers/Documents/texte.txt » -> \
« CopieFichiers/.../texte.txt »
« Fichiers/Images » -> « CopieFichiers/Images »
« Fichiers/Images/photo.jpg » -> \
« CopieFichiers/Images/photo.jpg »
« Fichiers/Films » -> « CopieFichiers/Films »
« Fichiers/Films/film.avi » -> « CopieFichiers/Films/film.avi »
67738-Administration Linux par la pratique-INT.book Page 102 Friday, May 24, 2019 10:38 AM

Administration Linux par la pratique


102

Admettons maintenant que je souhaite effectuer une copie complète du répertoire Fichiers
et de tout son contenu vers un autre endroit du système, tout en donnant un autre nom au
répertoire copié, par exemple Sauvegarde20170608. Dans ce cas, voici ce qu’il faut faire :

$ cp -Rv Fichiers/ /tmp/Sauvegarde20170608


« Fichiers/ » -> « /tmp/Sauvegarde20170608 »
« Fichiers/Documents » -> « /tmp/Sauvegarde20170608/Documents »
« Fichiers/Documents/texte.txt » -> \
« /tmp/Sauvegarde20170608/Documents/texte.txt »
« Fichiers/Images » -> « /tmp/Sauvegarde20170608/Images »
« Fichiers/Images/photo.jpg » -> « /tmp/.../Images/photo.jpg »
« Fichiers/Films » -> « /tmp/Sauvegarde20170608/Films »
« Fichiers/Films/film.avi » -> « /tmp/.../Films/film.avi »

Le seul aspect peu réaliste de ce dernier exemple, c’est que /tmp n’est pas un endroit approprié
pour ranger des sauvegardes. De meilleurs endroits seront à découvrir un peu plus loin.

SYNTAXE La barre oblique / à la fin des noms de répertoires


Certains parmi vous auront probablement remarqué une certaine incohérence dans l’utilisation de / à la
fin des noms de répertoires. Concrètement, lorsque je copie un répertoire Fichiers, je peux écrire
cp Fichiers/ CopieFichiers ou bien cp Fichiers CopieFichiers. La barre oblique s’ajoute
d’emblée à la fin d’un nom de répertoire lorsque j’utilise la complétion automatique, comme nous le ver-
rons un peu plus loin.

Déplacer des fichiers et des répertoires avec mv


La commande mv (move comme « bouger ») sert à déplacer des fichiers :

$ mv bonjour.txt /tmp/

Le fichier ~/bonjour.txt a été déplacé vers le répertoire /tmp.


mv ne s’applique pas seulement sur des fichiers, mais également sur des répertoires entiers.
Pour essayer, créez une autre copie du répertoire Fichiers et déplacez-la vers /tmp :

$ cp -R Fichiers/ AutreCopieFichiers
$ mv AutreCopieFichiers/ /tmp/

Question épineuse : comment déplacer à nouveau le fichier /tmp/bonjour.txt vers mon


répertoire d’utilisateur lorsque je me trouve dans ce dernier ? Voici la réponse :

$ mv /tmp/bonjour.txt ./

Et je pourrais faire de même avec /tmp/AutreCopieFichiers :

$ mv /tmp/AutreCopieFichiers/ ./
67738-Administration Linux par la pratique-INT.book Page 103 Friday, May 24, 2019 10:38 AM

Linux en mode texte : consolez-vous !


103
CHAPITRE 4

Vous rappelez-vous ce que nous avons dit un peu plus haut concernant le point qui signifie
« ici » ? Dans ce cas, la première des deux commandes précédentes peut se lire littéralement
comme ceci : « déplace (mv) le fichier bonjour.txt qui se situe dans le répertoire /tmp (/tmp/
bonjour.txt) vers ici (./) ».

Renommer des fichiers et des répertoires avec mv


La commande mv ne sert pas seulement à déplacer, mais aussi à renommer des fichiers et des
répertoires. Cette double utilisation tourmente habituellement les novices de la ligne de com-
mande sous Linux. Rassurez-vous : ce n’est qu’une simple habitude à prendre. Un expert
venant d’un autre système d’exploitation mettra un peu moins de trois mois à s’y habituer. Et
un enfant de dix ans aura assimilé ce double fonctionnement en moins de trois minutes.

$ mv bonjour.txt hello.txt

Là, nous venons tout simplement de renommer le fichier bonjour.txt en hello.txt. Pour
ajouter à la confusion, demandons-nous s’il existe un moyen de déplacer ce fichier hello.txt
vers /tmp, tout en le renommant par la même opération en bonjour.txt ? Oui, et c’est même
très simple :

$ mv hello.txt /tmp/bonjour.txt

Supprimer : rm et rmdir

Gare aux armes de destruction massive


La commande rm (comme remove) sert à supprimer des fichiers et des arborescences de réper-
toires. Accessoirement, elle vous autorise à vous tirer dans le pied, car elle est capable
d’anéantir des dizaines de sites web, des années de courriels archivés, voire un serveur entier
en un tournemain. Vous l’aurez compris : dans la panoplie des outils Unix, rm fait partie des
instruments affûtés et tranchants qu’il convient de manier avec précaution.
Pour supprimer un fichier, il suffit de spécifier son nom en argument :

$ rm bonjour.txt

Vous n’obtiendrez pas de demande de confirmation du genre Êtes-vous sûr de… ou autres
Voulez-vous vraiment… Votre système Linux n’a rien d’une nounou qui vous prend par la main.
Vous lui avez ordonné de supprimer le fichier bonjour.txt et c’est sans broncher qu’il s’est
exécuté pour l’envoyer au paradis des octets. Ici, vous ne trouvez pas de Corbeille non plus, où
vous auriez pu repêcher vos données malencontreusement supprimées.
67738-Administration Linux par la pratique-INT.book Page 104 Friday, May 24, 2019 10:38 AM

Administration Linux par la pratique


104

SUPPRESSION La Corbeille
Sur un poste de travail Linux, les environnements de bureau comme KDE, GNOME, Xfce ou MATE dis-
posent bien d’une Corbeille qui permet de repêcher des fichiers supprimés en mode graphique par le biais
du navigateur de fichiers. En revanche, un fichier supprimé en ligne de commande sera perdu à jamais.

Travailler avec ou sans filet ?


Si ces manières expéditives vous mettent mal à l’aise, vous pouvez toujours invoquer rm avec
l’option -i (comme interactive), ce qui produit une demande de confirmation avant chaque
destruction de fichier. Tapez O pour répondre « oui » :

$ rm -i bonjour2.txt
rm : supprimer fichier « bonjour2.txt » ? o

Ce fonctionnement peut être implémenté par défaut grâce à ce qu’on appelle un alias de com-
mande. Ouvrons une petite parenthèse sur les alias.

ASTUCE Les alias de commande


Invoquez la commande suivante :
$ alias
alias egrep='egrep --color=auto'
alias fgrep='fgrep --color=auto'
alias grep='grep --color=auto'
alias l.='ls -d .* --color=auto'
alias ll='ls -l --color=auto'
alias ls='ls --color=auto'
alias which='alias | /usr/bin/which --tty-only --read-alias
--show-dot --show-tilde'
Ici, chaque entrée commençant par alias correspond à la définition d’un raccourci de commandes, le
but du jeu étant visiblement d’ajouter un peu de couleur ou de vous simplifier l’utilisation de ces
quelques commandes. Vous vous apercevez que le simple ls que vous avez pu invoquer jusqu’ici est
enrichi par défaut avec --color=auto.
La plupart des distributions Linux grand public prédéfinissent plusieurs alias de commandes, afin de
rendre l’utilisation du shell un peu plus agréable. Essayons d’en définir un nous-même.
$ alias rm='rm -i'
$ touch fichiertest
$ rm fichiertest
rm : supprimer fichier vide « fichiertest » ? o
Il se peut que vous soyez confronté au cas de figure inverse, c’est-à-dire un alias de commande rm -i
qui serait défini pour rm dans votre environnement de travail, alors que vous souhaitiez supprimer des
fichiers directement, sans avoir à passer par la confirmation de suppression. Dans ce cas, utilisez rm avec
l’option -f comme force.
67738-Administration Linux par la pratique-INT.book Page 105 Friday, May 24, 2019 10:38 AM

Linux en mode texte : consolez-vous !


105
CHAPITRE 4

$ alias rm
alias rm='rm -i'
$ touch fichierbidon
$ rm -f fichierbidon
Notons que notre définition d’alias n’est pas persistante. Autrement dit, lorsque vous démarrerez une
nouvelle session, en vous déconnectant et en vous reconnectant par exemple, votre alias individualisé
aura disparu. La personnalisation persistante du shell sera abordée un peu plus loin.

Supprimer des répertoires avec rmdir


De façon analogue à la commande rm, rmdir (remove directory) sert à supprimer des réper-
toires du système de fichiers :

$ mkdir repertoiretest
$ ls -ld repertoiretest/
drwxrwxr-x. 2 kikinovak kikinovak 6 9 juin 09:58 repertoiretest/
$ rmdir repertoiretest/

Le répertoire que vous souhaitez supprimer doit impérativement être vide. Dans le cas
contraire, rmdir refuse de s’exécuter et vous obtenez un message d’erreur :

$ mkdir repertoiretest
$ touch repertoiretest/fichiertest
$ rmdir repertoiretest/
rmdir: échec de suppression de « repertoiretest/ »: Le dossier
n'est pas vide

Dans ce cas, c’est-à-dire si l’on souhaite supprimer un répertoire ainsi que tout son contenu,
on peut avoir recours à la commande rm suivie de l’option -r (comme recursive). Dans
l’exemple suivant, j’ajoute l’option -i pour bien expliciter chaque opération de suppression :

$ mkdir repertoiretest
$ touch repertoiretest/fichiertest
$ rm -ri repertoiretest/
rm : descendre dans le répertoire « repertoiretest/ » ? o
rm : supprimer fichier vide « repertoiretest/fichiertest » ? o
rm : supprimer répertoire « repertoiretest/ » ? o

Dans la pratique quotidienne, c’est plutôt l’inverse que l’on souhaite faire. Il est souvent fasti-
dieux de confirmer chaque suppression dans une arborescence de répertoires. Dans certains
cas de figure, c’est même impossible. Lorsque vous décidez par exemple de nettoyer vos
anciens répertoires de sources du noyau, il vous faudrait confirmer quelques dizaines de mil-
liers d’opérations de suppression. C’est là que l’option -f (force) intervient.
67738-Administration Linux par la pratique-INT.book Page 106 Friday, May 24, 2019 10:38 AM

Administration Linux par la pratique


106

$ alias rm='rm -i'


$ mkdir repertoiretest
$ touch repertoiretest/fichiertest
$ rm -rf repertoiretest/

Comme l’exemple précédent vous le montre, rm -rf ne vous demande pas votre avis et
anéantit joyeusement tout ce que vous spécifiez, à condition que vous en ayez le droit, bien
sûr. Invoquée en tant que root, la commande rm -rf peut même vous faire commettre l’équi-
valent numérique d’un Seppuku1.

EXERCICE Un peu de ménage


Pour vous exercer avec rm et rmdir, faites un peu de nettoyage dans votre répertoire d’utilisateur. Effa-
cez tous les résidus des exercices que nous avons pu faire jusqu’ici.

Un coup d’essuie-glace avec clear


J’en profite pour vous montrer l’équivalent d’un coup d’essuie-glace dans votre terminal.
Remplissez ce dernier avec n’importe quelle commande susceptible de bien l’encombrer (par
exemple ls /etc), puis essayez ceci :

$ clear

Pour aller plus vite, utilisez simplement le raccourci clavier Ctrl+L, ce qui revient au même.

Éditer des fichiers texte : Vi

Une réputation problématique


Vous êtes pris par l’envie soudaine de jeter ce livre par la fenêtre et de courir vous acheter un
Mac ? C’est que l’on vous a probablement raconté des horreurs sur Linux en général et
l’éditeur Vi (prononcez « vie aïe ») en particulier.
L’âme charitable qui vous a conseillé a sans doute raison : Vi est une partie intégrante de tout
système Unix, de la même manière qu’un château médiéval qui se respecte ne serait rien sans
un solide chevalet de torture dans son sous-sol. Gare à l’imprudent qui s’aventure dans l’édi-
tion d’un texte avec Vi sans avoir respecté l’avertissement : « Vous qui utilisez cet éditeur de
texte, abandonnez tout espoir d’arriver à vos fins ! » Jetez un coup d’œil sur ce qui se dit dans
les forums d’utilisateurs Linux novices au sujet de Vi ; vous verrez que, si l’on considère la
moyenne arithmétique des opinions, il s’agit de toute évidence d’un logiciel conçu par un

1. Puisque vous tenez à le savoir, c’est # rm -rf / … mais NE FAITES PAS ÇA !!!
67738-Administration Linux par la pratique-INT.book Page 107 Friday, May 24, 2019 10:38 AM

Linux en mode texte : consolez-vous !


107
CHAPITRE 4

vénusien halluciné à la suite d’un abus conséquent de substances illicites diverses, synthé-
tiques et puissantes. Bref, de quoi s’inquiéter.

L’éditeur de texte installé sur tous les systèmes Linux


Laissons donc de côté les chimères mythiques qui font la grimace à Vi et essayons de voir la
chose plus sobrement. Vi, ce n’est pas simplement un éditeur de texte, c’est tout d’abord le
programme d’édition de texte standard présent sur tous les systèmes unixoïdes. En d’autres
termes, que vous installiez la dernière Fedora ou l’avant-dernière openSUSE, que vous tra-
vailliez avec un LiveCD comme Slax, SliTaz ou Knoppix, ou que vous essayiez de récupérer
des données après un crash avec SystemRescueCd, vous aurez à votre disposition la panoplie
d’éditeurs sélectionnée par le distributeur, mais Vi s’y trouvera toujours, dans tous les cas,
invariablement. Il est réellement incontournable. La preuve : on le trouve même sur un Mac,
installé par défaut sur Mac OS X.

Vi amélioré : Vim
Vi existe en plusieurs versions ou incarnations, les plus répandues étant l’ancêtre vi, la ver-
sion améliorée vim (ou Vi improved) et GVim, une version graphique qui s’installe sur les postes
de travail. CentOS fournit Vi dans trois moutures différentes :
• l’ancêtre Vi sous forme du paquet vim-minimal ;
• la version améliorée : vim-enhanced ;
• GVim pour les environnements graphiques : vim-X11.
Notre système minimal ne comprend pour l’instant que le paquet vim-minimal. Nous allons
installer la version améliorée comme ceci :

# yum install vim-enhanced

Cette opération récupère et installe automatiquement l’éditeur Vim et toutes ses dépen-
dances. Le téléchargement ne pèse pas très lourd, un peu moins de 20 mégaoctets au total.
Dorénavant, lorsque je mentionnerai « Vi », je parlerai en fait de la version améliorée invo-
quée par la commande vim. Une fois que vous l’aurez maîtrisée, vous ne serez pas dépaysé en
utilisant une version plus rudimentaire.
L’apprentissage de Vi se déroule généralement en deux temps. Tout d’abord, il s’agit
d’apprendre à survivre, c’est-à-dire réaliser des opérations simples d’édition de texte. Ensuite,
une fois que les manipulations de base sont à peu près maîtrisées, on découvre progressive-
ment le potentiel de cet éditeur. Il se révèle alors extrêmement puissant au quotidien et peut
servir aussi bien à administrer des serveurs distants et confectionner des sites web qu’à éla-
borer des scripts ou des programmes.
67738-Administration Linux par la pratique-INT.book Page 108 Friday, May 24, 2019 10:38 AM

Administration Linux par la pratique


108

Figure 4–9
L’éditeur de texte Vim, une version
améliorée de l’ancêtre Vi.

Parmi les nombreuses fonctionnalités que présente Vim, on trouve la coloration syntaxique, le
formatage automatique, des fonctions de recherche et de remplacement, l’utilisation de
macros, l’intégration du shell et beaucoup d’autres choses encore. Tous ces atouts en font
l’outil de prédilection des programmeurs, des webmasters ou des administrateurs système.
Commençons par les fonctions simples.

Vimtutor
Il existe un grand nombre de méthodes, de livres (imprimés ou en ligne) et de tutoriels pour
apprendre Vi. Ils ont tous un point commun, celui de vous dresser tôt ou tard une liste
impressionnante de raccourcis clavier plus rébarbatifs les uns que les autres, de façon à ce que
seuls les utilisateurs très têtus ou les compulsifs obsessionnels puissent espérer arriver au bout
du tutoriel. Sachez donc que le meilleur pédagogue pour enseigner Vi, c’est... Vi lui-même !
Il existe en effet un petit logiciel d’entraînement incorporé à Vi, nommé vimtutor, qui vous
permet de vous entraîner sur cet outil. C’est aussi ce que je vous conseille de faire, en faisant fi
de toutes les méthodes imprimées ou autres, car Vi est un outil de travail qui doit avant tout
vous rentrer dans les doigts. Vous pouvez donc ranger le petit carnet de notes destiné à
recueillir la liste de tous les raccourcis clavier. Ne cherchez pas à mémoriser les fonctions
de Vi, mais apprenez-les en les utilisant, par l’entraînement et par la répétition.

$ vimtutor
67738-Administration Linux par la pratique-INT.book Page 109 Friday, May 24, 2019 10:38 AM

Linux en mode texte : consolez-vous !


109
CHAPITRE 4

Figure 4–10
La fenêtre de bienvenue de
Vimtutor et le début de la première
leçon interactive.

À partir de maintenant, il suffit de lire attentivement les instructions qui vous sont données et
de les mettre en pratique. Vimtutor estime qu’il faut « entre 25 et 30 minutes » pour nager
d’une rive à l’autre. Comptez plutôt entre trois quarts d’heure et une bonne heure si vous
débutez. Si vous prévoyez d’effectuer un passage complet par jour, il y a fort à parier qu’au
bout d’une semaine, vous soyez raisonnablement à l’aise dans l’édition de fichiers de configu-
ration avec Vi.

DACTYLOGRAPHIE Raccourcis : tout s’explique !


Les raccourcis clavier de Vim paraissent pour le moins biscornus, notamment les déplacements du curseur,
mais cela s’explique très simplement. Vim a été conçu spécialement pour les utilisateurs qui ont l’habitude
de dactylographier. Si vous faites partie des gens qui utilisent leurs dix doigts pour taper sans regarder le
clavier, vous serez très vite agréablement surpris par la redoutable efficacité de cet outil de travail.
67738-Administration Linux par la pratique-INT.book Page 110 Friday, May 24, 2019 10:38 AM

Administration Linux par la pratique


110

Travailler moins pour taper plus


Si vous avez patiemment suivi les exemples et les exercices jusqu’ici, il y a des chances pour
que vous soyez quelque peu dépité par un certain manque de confort de la console.
• L’interface en ligne de commande requiert la saisie de commandes interminables, les
options, les noms de fichiers, les chemins d’accès complets, etc.
• Saisir tout ce texte représente une certaine quantité de travail.
• Personne n’aime travailler.
Il en résulte que personne n’aime travailler en ligne de commande. Le moment est donc venu
de se soucier du confort de l’utilisateur. La notion de confort d’utilisation peut également
s’appliquer à la ligne de commande, car nous allons aborder une fonctionnalité extrêmement
puissante du shell.

La complétion automatique
Commençons par une commande simple :

$ /usr/sbin/getenforce

L’invocation de la commande getenforce avec son chemin complet représente un certain tra-
vail. En tout et pour tout, il faut saisir vingt caractères et confirmer par Entrée. Pfouh !
Essayons donc de faire plus court. Tapez ceci, sans confirmer par Entrée :

$ /u

Appuyez sur la touche Tab.

B.A.-BA La touche Tab


Pour ceux qui ne savent pas ce que c’est : la touche Tabulation (Tab pour les intimes) se situe au-dessus
de la touche de verrouillage des majuscules, en haut à gauche du clavier. Elle est souvent ornée de deux
flèches pointant en sens inverse, une vers la droite, une vers la gauche.

Vous constatez que le shell a complété ce que vous avez tapé :

$ /usr/

Continuez. Ajoutez un S et un B :

$ /usr/sb
67738-Administration Linux par la pratique-INT.book Page 111 Friday, May 24, 2019 10:38 AM

Linux en mode texte : consolez-vous !


111
CHAPITRE 4

Appuyez à nouveau sur Tab :

$ /usr/sbin/

Ensuite, saisissez G, E, T, E :

$ /usr/sbin/gete

Et pour finir, appuyez une dernière fois sur Tab :

$ /usr/sbin/getenforce

Prenons un autre exemple. Imaginons que vous souhaitiez vous rendre dans le répertoire
/boot. Vous devriez donc taper la commande suivante :

$ cd /boot/

Essayons de procéder de la même façon :

$ cd /b

Nous appuyons sur Tab et... il ne se passe rien. Tout au plus, le terminal a émis un bip, c’est
tout. Appuyons une seconde fois sur Tab :

$ cd /b
bin/ boot/
$ cd /b

Explication : le shell est confronté à une ambiguïté. Il ne sait pas s’il doit se rendre dans /bin
ou dans /boot. Lorsque vous avez appuyé une seconde fois sur Tab, il vous a montré toutes les
possibilités qui s’offrent à lui. Pour lever l’ambiguïté, il suffit de fournir un caractère supplé-
mentaire...

$ cd /bo

… suivi de Tab :

$ cd /boot/

Voyons un autre exemple pour illustrer ce fonctionnement. Je souhaite afficher le contenu du


répertoire /sbin. Je fais donc :

$ ls /sbin/
67738-Administration Linux par la pratique-INT.book Page 112 Friday, May 24, 2019 10:38 AM

Administration Linux par la pratique


112

Si je me contente de saisir L, S, Espace, / et S suivis de Tab, j’entends un simple bip et rien ne se


passe. Une seconde pression sur la touche Tab me montre alors toutes les possibilités :

$ ls /s
sbin/ srv/ sys/
$ ls /s

Il suffit donc de saisir le B de /sbin pour lever l’ambiguïté et permettre au shell de compléter
le nom du répertoire.
Continuons avec un peu de pratique. Dans votre répertoire d’utilisateur, créez une série de
cinq fichiers vides.

$ touch fichier1.txt fichier2.txt fichier3.txt


$ touch fichier3.png fichier3.avi

Admettons que vous souhaitiez afficher les propriétés détaillées de chacun d’entre eux, un par
un. Commencez par le premier :

$ ls -l f

Tab :

$ ls -l fichier

1, puis Tab :

$ ls -l fichier1.txt

Procédez de même avec fichier2.txt et fichier3.txt. Vous constaterez qu’avec


fichier3.txt, vous aurez deux ambiguïtés à lever :

$ ls -l f

Tab :

$ ls -l fichier

3, Tab, Tab :

$ ls -l fichier3.
fichier3.avi fichier3.png fichier3.txt
$ ls -l fichier3.
67738-Administration Linux par la pratique-INT.book Page 113 Friday, May 24, 2019 10:38 AM

Linux en mode texte : consolez-vous !


113
CHAPITRE 4

T, Tab :

$ ls -l fichier3.txt

Résultat des courses :


• moins de touches à actionner ;
• autant d’heures de loisirs de gagnées, que l’on pourra mettre à contribution pour aller à la
plage ou, si le gain de temps est plus modeste dans un premier temps, faire une partie de
démineur ;
• plus aucune raison pour détester le travail en ligne de commande.

MÉTHODE Reculer pour mieux sauter


Comme tous les outils puissants, la complétion automatique requiert un certain entraînement avant
d’être efficace. Il se peut même qu’au début, cette façon de procéder vous ralentisse. Faites fi de cette
frustration initiale et accrochez-vous, car cela en vaut vraiment la peine. L’utilisation systématique de la
complétion automatique vous fera gagner un temps considérable.
J’en profite pour vous prodiguer un autre conseil : apprenez à dactylographier, c’est-à-dire à utiliser vos
dix doigts sans regarder le clavier. Là aussi, les bénéfices que vous en tirerez dépasseront de loin l’inves-
tissement que cela nécessite au départ. Pensez en termes de productivité accrue et surtout de migraines
évitées. Vos yeux n’auront plus à effectuer des va-et-vient incessants entre les touches.

La flemme devient un gage de qualité


La complétion automatique ne sert pas seulement à satisfaire le paresseux qui sommeille en
nous tous. Elle joue un autre rôle pour le moins aussi important que celui de vous faire gagner
du temps. Fidèle à mes habitudes, je fais précéder mon propos par un exemple pratique.
Le répertoire /etc/X11/xorg.conf.d est censé contenir une série de réglages de notre serveur
graphique. Ne vous inquiétez pas si vous ne savez pas ce que c’est. Pour l’instant, nous aime-
rions afficher le contenu de ce répertoire, sans trop nous soucier des détails techniques. Nous
invoquons donc la commande suivante, sans utiliser la complétion automatique :

$ ls /etc/x11/xorg.conf.d

Et nous nous retrouvons face au message d’erreur suivant :

ls: impossible d'accéder à /etc/x11/xorg.conf.d: Aucun fichier ou dossier de ce type

Là, nous restons quelque peu perplexes. La documentation du serveur graphique a pourtant
insisté sur l’utilisation de ce répertoire et voilà qu’il n’existe pas. Que se passe-t-il donc ?
67738-Administration Linux par la pratique-INT.book Page 114 Friday, May 24, 2019 10:38 AM

Administration Linux par la pratique


114

Regardez bien : le sous-répertoire de /etc s’appelle X11 (avec un X majuscule) et non x11, ce
qui n’est pas la même chose. Maintenant, invoquez à nouveau cette commande, mais en utili-
sant la complétion automatique, c’est-à-dire en tapant :

$ ls /e

Tab :

$ ls /etc/

Maj+X, Tab :

$ ls /etc/X11/

X, O, Tab, . (point), Tab :

$ ls /etc/X11/xorg.conf.d

Ici, le shell a complété le nom du répertoire correctement. Si nous avions essayé de taper X au
lieu de Maj+X pour le répertoire X11, nous nous serions tout de suite aperçu de notre erreur,
suite à l’absence pour le moins suspecte de X11 dans la liste des répertoires proposés.
Cette petite expérience nous permet de tirer la conclusion suivante. Outre l’avantage d’accé-
lérer la saisie de façon considérable, la complétion automatique offre également un contrôle
de qualité, en jouant un rôle non négligeable de correcteur.

Répéter une commande


Dans certains cas, le passage par la case départ est inévitable. Une fois que nous avons
invoqué notre commande erronée et qu’elle nous a gratifié d’un message d’erreur, il va bien
falloir se résoudre à la ressaisir, en prenant soin de ne pas commettre de faute de frappe. Est-
il donc vraiment nécessaire de tout recommencer depuis le début, juste à cause d’une petite
coquille ? Non, comme vous le montre cet autre exemple :

$ ls /etc/X11/xorg.donf.d
/bin/ls: impossible d'accéder à /etc/X11/xorg.donf.d: Aucun fichier ou dossier de ce
type

Après la petite seconde de surprise initiale, vous vous apercevez tout de suite de l’erreur : vous
avez tapé xorg.donf.d au lieu de xorg.conf.d. Pour corriger votre erreur, il vous suffirait donc
de ressaisir la commande en prenant soin, cette fois-ci, d’écrire correctement le nom du réper-
toire. Avant de faire cela, appuyez simplement sur la touche FlècheHaut et voyez ce qui se passe :

$ ls /etc/X11/xorg.donf.d
67738-Administration Linux par la pratique-INT.book Page 115 Friday, May 24, 2019 10:38 AM

Linux en mode texte : consolez-vous !


115
CHAPITRE 4

Votre shell a gardé la dernière commande en mémoire. Dans ce cas, il sera plus simple de rem-
placer le D par un C, plutôt que de retaper l’intégralité de la commande.
Mais ce n’est pas tout. Actionnez plusieurs fois de suite la touche FlècheHaut et observez ce
qui se passe. Apparemment, le shell n’a pas seulement mémorisé la dernière commande, mais
toutes les commandes que vous avez pu invoquer depuis belle lurette ! Ajoutez à cela la
touche FlècheBas et vous voilà capable de naviguer dans l’historique de toutes les commandes
saisies jusque-là – enfin, pas toutes, il y a une limite quand même.

Utiliser l’historique des commandes


Il existe un moyen très simple d’afficher la liste de toutes les commandes que vous avez pu saisir :

$ history
...
558 alias rm='rm -i'
559 mkdir repertoiretest
560 touch repertoiretest/fichiertest
561 rm -rf repertoiretest/
562 vimtutor
...

Pour répéter l’une des commandes de la liste, remontez dans l’historique en appuyant autant
de fois que nécessaire sur la touche FlècheHaut. Dans certains cas, ce sera un exercice fasti-
dieux, et il vaut mieux afficher l’historique complet, puis sélectionner la commande directe-
ment en tapant un point d’exclamation ! suivi du numéro de la commande. Admettons que je
veuille invoquer de nouveau la commande mkdir repertoiretest de l’exemple précédent, il
me suffirait de lancer la commande suivante :

$ !559
mkdir repertoiretest

ATTENTION Plus besoin de confirmation


Soyez tout de même vigilants en utilisant cette fonctionnalité du shell. La commande est exécutée direc-
tement, sans attendre une quelconque confirmation avec la touche Entrée. Ne l’utilisez donc pas avec
des commandes destructives comme rm.

Invoquer une commande en utilisant la recherche inversée


Dans le rayon « historique du shell », voici une dernière astuce que j’utilise fréquemment au
quotidien : la recherche inversée ou reverse search. Admettons que la dernière fois que vous
avez invoqué la commande mkdir, c’était pour créer repertoiretest. Admettons encore que
vous ayez effacé repertoiretest par la suite et que vous souhaitiez le recréer maintenant.
Pour ce faire, vous avez plusieurs possibilités :
67738-Administration Linux par la pratique-INT.book Page 116 Friday, May 24, 2019 10:38 AM

Administration Linux par la pratique


116

• invoquer mkdir repertoiretest tout simplement, en saisissant tous les caractères de la


commande ;
• actionner la touche FlècheHaut plusieurs fois de suite, jusqu’à ce que vous finissiez par
tomber sur la commande souhaitée ;
• afficher l’historique (history), chercher la commande que vous souhaitez, puis l’exécuter
par le biais du point d’exclamation suivi du numéro de la commande dans l’historique.
Il existe une autre solution, beaucoup plus simple. Tapez simplement Ctrl+R et vous verrez
que votre invite de commande change d’aspect :

(reverse-i-search)`':

À présent, dès que vous tapez les premiers caractères de la commande, le shell complète ins-
tantanément avec ce qu’il trouve dans l’historique. En l’occurrence, il me suffit ici de saisir M
et K pour obtenir le résultat attendu :

(reverse-i-search)`mk': mkdir repertoiretest

Il ne me reste qu’à confirmer par Entrée pour exécuter la commande. Alternativement, je peux
appuyer une deuxième fois sur Ctrl+R pour afficher la prochaine commande dans l’historique
qui commence par mk.

Consulter l’aide en ligne : man et info

Unix est long et la vie est brève


Je ne sais pas si vous avez déjà eu l’occasion de jeter un coup d’œil à un manuel de référence
Unix, un de ces ouvrages constitués de centaines, voire de milliers de pages, présentant une
myriade de commandes susceptibles d’accepter chacune une ribambelle d’options, égrenées
par ordre alphabétique, le tout saupoudré de quelques tableaux indigestes, mais sans la
moindre image. En un mot : le genre de pavé sur lequel on peut faire asseoir le petit à table
pour les repas de famille et qui suscite chez tout lecteur normalement constitué une envie vio-
lente d’aller habiter une île dépourvue d’électricité pour y entamer une carrière de réparateur
de pirogues au sein d’une micro-économie basée sur le troc.
Ars longa vita brevis, dit un proverbe latin, que l’on pourrait traduire par : « Unix est long et
l’espérance de vie d’un disque dur n’est plus ce qu’elle était ». Même si vous ne connaissez que
quelques commandes avec une poignée d’options, il arrive parfois que vous ne vous rappeliez
plus la syntaxe exacte de ce que vous souhaitez taper. C’est même fréquent, aussi bien pour les
débutants que les experts. Quelle était donc l’option pour la copie récursive d’un répertoire ?
cp -r ou -R ? Et comment fallait-il s’y prendre pour voir les propriétés détaillées d’un réper-
toire sans en afficher le contenu ? ls suivie de -d, -e ou -f ? Essayer toutes les lettres de
67738-Administration Linux par la pratique-INT.book Page 117 Friday, May 24, 2019 10:38 AM

Linux en mode texte : consolez-vous !


117
CHAPITRE 4

l’alphabet ? Quelle était donc l’option magique ? Comment la retrouver ? Feuilleter le livre de
Kiki Novak à la recherche de l’option perdue ?

On appelle les secours ?


D’après mon expérience, l’utilisateur moyen venant d’un système d’exploitation propriétaire
universellement répandu a développé deux réflexes de base en cas de blocage soudain, c’est-à-
dire lorsqu’il arrive aux limites de sa compétence.
• Il appelle Gérard, le beau-frère qui « touche à l’informatique » et qui lui a réinstallé son sys-
tème depuis que la dernière mise à jour a tout fait planter. Il compose directement son
numéro de portable pour être sûr de tomber sur lui et espère qu’il va décrocher tout de suite.
Il essaie de convaincre Gérard de passer à la maison pour voir le problème sur place, étant
donné que le diagnostic à distance est une source intarissable de malentendus et de disputes.
• Il contacte la hotline du support technique, un numéro 0800 facturé 34 centimes d’euro la
minute. Il répond aux questions préliminaires de la douce voix féminine mais néanmoins syn-
thétique du serveur vocal (« Étoile, trois, un, deux, un, un, quatre, étoile, un, un, deux, un, quatre,
dièse, trois, deux, deux ! »), précise ensuite sa demande (« Obtenir un renseignement ? »,
« Obtenir un renseignement ! », « OBTENIR UN RENSEIGNEMENT ! »). Avec un peu de
chance, il finit par tomber sur un interlocuteur humain. Trois quarts d’heure plus tard, au
terme d’un échange vraisemblablement inspiré du théâtre absurde d’Eugène Ionesco ou de
Samuel Beckett, il finit par se souvenir d’un juron blasphématoire que sa grand-mère hon-
groise lui a enseigné dans son enfance, et qui met en relation le statut marital des parents de
l’interlocuteur interloqué avec les organes reproducteurs de la Vierge Marie.
Les deux scénarios peuvent vous paraître caricaturaux ou, au contraire, bien trop familiers.
Dans un cas comme dans l’autre, nous n’allons plus du tout garder ce genre de réflexe sous
Linux. Ici, notre toute première réaction consistera à chercher l’aide directement sur la
machine, sous nos doigts pour ainsi dire.

Le bonheur est dans le PC


Tapez une commande, n’importe laquelle pourvu que son utilisation nécessite des arguments.
Invoquez-la sans ces derniers. Par exemple :

$ cp
cp: opérande de fichier manquant
Saisissez « cp --help » pour plus d'informations.

Prenons notre machine au pied de la lettre et faisons exactement ce qu’elle nous suggère de faire :

$ cp --help
Utilisation : cp [OPTION]... [-T] SOURCE DEST
ou : cp [OPTION]... SOURCE... DIRECTORY
ou : cp [OPTION]... -t DIRECTORY SOURCE...
Copier la SOURCE vers DEST ou plusieurs SOURCEs vers DIRECTORY.
...
67738-Administration Linux par la pratique-INT.book Page 118 Friday, May 24, 2019 10:38 AM

Administration Linux par la pratique


118

Le shell nous affiche une liste assez longue d’options applicables à la commande cp, ainsi
qu’une série d’explications sur son fonctionnement.

Afficher le manuel en ligne : man


Les commandes Unix acceptent ainsi pour la plupart une option --help (parfois aussi tout
simplement -h) affichant un écran d’aide succinct. En revanche, toutes les commandes (à très
peu d’exceptions près) disposent d’un véritable manuel en ligne, que l’on peut afficher grâce à
la commande man suivie du nom de la commande sur laquelle on souhaite se renseigner :

$ man cp

Figure 4–11
Chaque commande dispose
de son manuel en ligne.

L’affichage des pages de manuel s’effectue par le biais du visualiseur less et ce sont les rac-
courcis clavier de ce dernier qui vous aident à naviguer (Espace pour avancer d’un écran,
Q pour quitter et PageHaut, PageBas, FlècheHaut, FlècheBas pour avancer et reculer).
67738-Administration Linux par la pratique-INT.book Page 119 Friday, May 24, 2019 10:38 AM

Linux en mode texte : consolez-vous !


119
CHAPITRE 4

Linux, Shakespeare et Molière


Actuellement, de nombreuses distributions Linux courantes et moins courantes sont à peu
près intégralement traduites en français. Autrement dit, vous choisissez votre langue au
moment de lancer l’installation et, à partir de là, la procédure s’effectue entièrement en fran-
çais, comme nous avons pu le voir lors de l’installation de CentOS.
Si le simple utilisateur d’un poste de travail sous Linux peut légitimement s’attendre à ce que
son environnement graphique s’affiche entièrement dans sa propre langue, cela n’est pas tout
à fait vrai pour l’administrateur du système, pour plusieurs raisons.
• Les manuels en ligne ne sont que partiellement disponibles dans d’autres langues que
l’anglais. Leur traduction dans toutes les langues est une entreprise d’une envergure pha-
raonique.
• La lingua franca d’un grand nombre de projets du monde du libre (comme CentOS) reste
l’anglais. Il existe certes des projets localisés pour chaque pays (comme le forum franco-
phone de CentOS), mais très souvent, le gros de la communication passe par les forums,
les listes de diffusion et les canaux IRC anglophones. Dans le cas de CentOS, la liste
centos@centos.org constitue le principal canal de communication du projet. Même s’il est
théoriquement possible de survivre en tant qu’administrateur Linux sans parler un seul
mot d’anglais, attendez-vous à quelques complications. Autant vouloir entamer une car-
rière au Vatican sans comprendre un mot de latin.
Si malgré tous ces avertissements, vous préférez afficher vos pages man traduites en français,
installez le paquet correspondant :

# yum install man-pages-fr

À partir de là, la page de manuel de cp s’affichera en français.

$ man cp
67738-Administration Linux par la pratique-INT.book Page 120 Friday, May 24, 2019 10:38 AM

Administration Linux par la pratique


120

Figure 4–12
La page de manuel de la
commande cp traduite en français.

Comment lire une page man ?


Les pages de manuel en ligne (ou pages man) sont toutes plus ou moins organisées de la même
façon.
• Tout en haut de la page se trouve la commande, avec son numéro de chapitre, par exemple
CP(1). Traditionnellement, les pages de manuel sont organisées en huit sections distinctes,
que nous n’allons pas toutes énumérer ici. Retenez seulement que certaines commandes
intéressent les utilisateurs du système, alors que d’autres seront réservées à l’administrateur.
Pour comprendre cette distinction, affichez la page du manuel de cfdisk, une commande
qui sert à partitionner les disques durs. En haut de la page, CFDISK(8) vous indique qu’il
s’agit d’une page de manuel de la section 8 et donc d’une commande réservée à l’administra-
teur du système. Les commandes des simples utilisateurs sont toutes regroupées dans la
section 1. Certaines commandes disposent de leur page de manuel dans chaque section.
Dans ce cas, il est nécessaire de spécifier le numéro de section pour les afficher séparément.
À titre d’exemple, essayez successivement man 1 printf et man 3 printf.
• L’en-tête intitulé NAME (ou NOM) fournit une description succincte de la commande.
67738-Administration Linux par la pratique-INT.book Page 121 Friday, May 24, 2019 10:38 AM

Linux en mode texte : consolez-vous !


121
CHAPITRE 4

• La section SYNOPSIS désigne la syntaxe de la commande, c’est-à-dire la façon dont il faut


invoquer les options et les arguments. Ceux-ci peuvent être facultatifs ou obligatoires.
• DESCRIPTION fournit une explication détaillée du fonctionnement de la commande.
• La section OPTIONS affiche une liste exhaustive de toutes les options applicables à la com-
mande, en les détaillant une par une. Pour comprendre de quoi il s’agit, affichez par
exemple la page de manuel de la commande ls (man ls) et essayez de retrouver les
options qui vous sont déjà familières.
• Plus loin, la section BUGS (ou BOGUES) est quelque chose que vous chercherez en vain chez
un éditeur de logiciels propriétaires. Si la commande a pu présenter une quelconque ano-
malie ou un quelconque dysfonctionnement dans le passé, cette section vous en informe.
Voyez par exemple la page de manuel de fdisk pour une telle section.
• SEE ALSO (VOIR AUSSI) vous renvoie d’une part vers une documentation plus détaillée (les
pages info, que nous verrons ci-après), d’autre part vers des commandes « cousines »,
c’est-à-dire en relation étroite. La page de manuel de fdisk vous renverra ainsi vers
cfdisk, parted et sfdisk, trois autres commandes pour manipuler les tables de partitions
sous Linux.
• Les pages de manuel en ligne comportent également souvent une section AUTHORS
(AUTEURS) avec des informations de contact sous forme d’adresse web ou de courrier élec-
tronique, ce qui permet de signaler d’éventuels bogues. Ne vous sentez pas trop concerné
par ceci, du moins pas pour l’instant.

LE CONSEIL DU CHEF Recherche dans les pages de manuel


J’ai dit plus haut que les pages du manuel en ligne s’affichaient par le biais du visualiseur less. Cela
signifie que nous pouvons également nous servir des fonctions de recherche intégrées dans less. Pour
essayer ceci, cherchons par exemple toutes les occurrences du mot « modification » dans la page de
manuel de ls. Une fois que la page s’affiche, invoquez la fonctionnalité de recherche grâce à la barre
oblique suivie de la chaîne de caractères (modification) que vous souhaitez trouver dans le texte.
Certaines pages de manuel sont assez longues, et la fonction de recherche s’avérera utile pour trouver
rapidement l’information qu’il vous faut.

Afficher le manuel en ligne : info


Dans certains cas, les renseignements fournis par la commande man s’avèrent insuffisants.
Essayez par exemple d’obtenir des informations sur l’interpréteur de commandes Bash en
tapant man bash. Vous obtenez alors une série de pages pour le moins cryptiques, qui ne vous
sembleront probablement pas très parlantes.
Voici comment afficher un manuel bien plus complet :

$ info bash
67738-Administration Linux par la pratique-INT.book Page 122 Friday, May 24, 2019 10:38 AM

Administration Linux par la pratique


122

Figure 4–13
Certains composants du système
disposent d’une page info, un
manuel en ligne plus élaboré.

À la différence d’une simple page man, vous disposez ici d’un curseur. Celui-ci vous permet de
naviguer de page en page, en suivant les liens. Une page info est en fait une véritable arbores-
cence de pages organisées de façon hiérarchique. Pour naviguer dans cette arborescence, il
suffit de placer le curseur sur les bouts de texte compris entre une étoile * et un deux-points :.
La touche Entrée vous conduit alors dans le nœud (node) correspondant. Pour revenir en
arrière, utilisez la touche U (comme up, c’est-à-dire « remonter »). Là aussi, servez-vous du
raccourci Q pour quitter la page info.

ASTUCE Naviguer dans info


L’organisation d’une page info est comparable au fonctionnement d’un site web. Les pages y sont orga-
nisées hiérarchiquement, le passage d’une page à l’autre se faisant par le biais d’hyperliens. Le bouton
Page précédente du navigateur ramène en arrière.

À en juger par les commentaires des utilisateurs chevronnés de systèmes Unix dans les forums
ou les listes de diffusion, les pages info ont moins bonne presse que les pages man, en raison
de leur système de navigation quelque peu désuet et, surtout, de l’impossibilité de les mettre
en forme, notamment pour en imprimer un extrait ou la totalité.
67738-Administration Linux par la pratique-INT.book Page 123 Friday, May 24, 2019 10:38 AM

Linux en mode texte : consolez-vous !


123
CHAPITRE 4

LE CONSEIL DU CHEF La formule magique à retenir


Votre mémoire est une véritable passoire et vous oubliez sans cesse les commandes les plus basiques, au
point de vous retrouver incapable d’utiliser l’aide en ligne ? Ce n’est pas bien grave. Retenez juste ceci :
$ man man
La même chose vaut pour l’utilisation des pages info :
$ info info

Bien évidemment, il existe de nombreuses façons d’obtenir de l’aide pour votre système
Linux : les sites de documentation, les blogs, les forums, les listes de diffusion, les newsgroups
(ou groupes de discussion Usenet), les canaux IRC spécialisés, sans parler de la documenta-
tion spécifique à chaque distribution. Dans le monde Linux, ce n’est certainement pas la
documentation qui fait défaut, mais il est parfois difficile de s’y retrouver. Pour l’instant,
n’oubliez pas que l’aide la plus immédiate lorsque vous utilisez la ligne de commande se
trouve à portée de doigts.

HELP ! La liste de diffusion de CentOS


La meilleure adresse pour trouver de l’aide avec un système CentOS est sans doute la liste de diffusion
anglophone centos@centos.org. Vous y trouverez non seulement toute l’équipe de CentOS, mais égale-
ment une communauté sympathique d’administrateurs système, de développeurs et autres profession-
nels compétents, qui apporteront des réponses aux questions les plus pointues que vous pourrez leur
poser. Je suis moi-même un utilisateur régulier de cette liste.
B https://lists.centos.org/mailman/listinfo/centos

COCORICO ! La communauté francophone de CentOS


Si vous préférez trouver de l’aide en français, visitez le forum de la communauté francophone de CentOS.
B https://fr.centos.org
67738-Administration Linux par la pratique-INT.book Page 124 Friday, May 24, 2019 10:38 AM
67738-Administration Linux par la pratique-INT.book Page 125 Friday, May 24, 2019 10:38 AM

5
Gérer les utilisateurs

Tout comme Unix, Linux a été conçu dès le départ comme un vrai système multi-utilisateur. Gérer
les utilisateurs revient à définir qui a accès à quoi dans un système Linux.

Systèmes mono-utilisateurs et systèmes multi-utilisateurs


Linux est un vrai système multi-utilisateur, tout comme son ancêtre Unix. Pour comprendre la
portée de cette assertion, imaginez un poste de travail comme on peut en trouver dans la salle
informatique d’une grande université, fréquentée par une bonne dizaine de milliers d’étudiants.
Chaque étudiant inscrit a le droit d’utiliser les machines de la salle informatique. Il possède
donc son identifiant personnel et son mot de passe, qui lui permettent de se connecter à une
machine pour y travailler, c’est-à-dire effectuer ses recherches, écrire ses devoirs, rédiger son
mémoire ou sa thèse, etc. Une telle installation doit répondre à quelques exigences.
• Chaque utilisateur du système doit disposer de son répertoire personnel, c’est-à-dire d’un
endroit pour lui seul, utilisable par lui seul, où il peut stocker toutes ses données.
• La confidentialité doit être assurée, c’est-à-dire qu’un étudiant connecté ne pourra pas
aller fouiner librement dans les données de ses collègues.
• Il ne faut pas non plus qu’un utilisateur puisse effacer par mégarde (ou même intentionnel-
lement) les données qui ne lui appartiennent pas.
• Enfin, l’intégrité du système ne doit en aucun cas être mise en péril par les utilisateurs.
67738-Administration Linux par la pratique-INT.book Page 126 Friday, May 24, 2019 10:38 AM

Administration Linux par la pratique


126

Si l’importance de ces points ne vous apparaît pas dans toute son ampleur, imaginez dans un
tel contexte un système mono-utilisateur.
• Les données de tous les utilisateurs, c’est-à-dire quelques dizaines voire centaines de mil-
liers de fichiers, seraient stockées en vrac dans une seule arborescence.
• Chaque étudiant pourrait lire les données de ses collègues.
• Il pourrait les modifier et/ou les effacer comme bon lui semble.
• Chaque utilisateur serait libre de compromettre l’intégrité du système.
Bref, ça ferait désordre.

SÉCURITÉ Alerte au virus belge


En mai 2001, une alerte au virus un peu spéciale a fait le tour du monde. Les utilisateurs de systèmes
Microsoft Windows étaient mis en garde contre un fichier malintentionné SULFNBK.EXE éventuellement
présent sur leur système. L’alerte par courriel indiquait l’emplacement du fichier en question, en précisant
qu’il suffisait d’effacer le fichier pour le mettre hors d’état de nuire. Le problème, c’est que
SULFNBK.EXE n’était pas un virus, mais un fichier système de Windows. Cette alerte au virus a constitué
la première occurrence de ce que les administrateurs ont baptisé plus tard « virus belge » (parfois aussi
« virus albanais ») : son déploiement ne nécessite aucun effort de développement de la part des instiga-
teurs, étant donné que les victimes se chargent elles-mêmes de se tirer dans le pied, ce qu’elles ont tout
loisir de faire sur un tel système.

Notre configuration de test sera beaucoup plus modeste qu’une série de postes de travail dans
la salle informatique d’une université ; il n’empêche que l’approche multi-utilisateur est tout
aussi pertinente, même pour un usage sur une machine locale. Après tout, peu importe si le
système gère deux ou trois utilisateurs ou vingt-cinq mille.

RÉSEAU Profils itinérants


Techniquement parlant, une telle installation dans une université se différencie d’une installation domestique
d’un poste de travail par la configuration itinérante des profils d’utilisateurs. Dans une telle configuration,
l’ensemble des données, les identifiants de connexion et les mots de passe sont stockés de façon centralisée
sur le serveur. À partir de là, chaque étudiant peut se connecter sur n’importe quelle machine de la salle infor-
matique et retrouver son environnement, alors que, sur une installation comme un poste de travail domes-
tique, chaque compte d’utilisateur reste lié à la machine locale. Il existe plusieurs manières de mettre en
place les profils itinérants dans un réseau local et nous les aborderons en temps et en heure. Pour l’instant,
nous nous concentrons sur la gestion locale des utilisateurs sur une seule machine tournant sous Linux.

Ajouter de nouveaux utilisateurs : useradd


Lors de la configuration post-installation, j’ai défini un premier utilisateur du « commun des
mortels » pour mon système. Cela signifie que ma machine connaît déjà deux comptes :
• l’administrateur root ;
• l’utilisateur en question (kikinovak).
67738-Administration Linux par la pratique-INT.book Page 127 Friday, May 24, 2019 10:38 AM

Gérer les utilisateurs


127
CHAPITRE 5

Créons quelques comptes supplémentaires :


• Agnès Debuf (adebuf) ;
• Jean Mortreux (jmortreux) ;
• Fanny Banester (fbanester) ;
• Franck Teyssier (fteyssier).
Chacun d’eux sera créé à l’aide de la commande useradd. L’invocation de cette commande
requiert des droits d’administrateur. Dans un premier temps, nous allons acquérir ces droits
de façon peu élégante, en nous déconnectant et en nous reconnectant en tant que root.
Je lance la création de ma première utilisatrice :

# useradd -c "Agnès Debuf" adebuf


# passwd adebuf
Changement de mot de passe pour l'utilisateur adebuf.
Nouveau mot de passe : ********
Retapez le nouveau mot de passe : ********
passwd : mise à jour réussie de tous les jetons d'authentification.

Un coup d’œil rapide dans la page man de useradd(8) nous renseigne sur la signification
exacte de l’option -c, que vous avez probablement devinée dans le contexte.

-c, --comment COMMENTAIRE


Toute chaîne de texte. C'est généralement une description
courte du compte, elle est actuellement utilisée comme champ
pour le nom complet de l'utilisateur.

Notez qu’il y a une vérification sur la robustesse du mot de passe défini. Pour un utilisateur
quelconque, le système refuserait tout simplement de créer le mot de passe s’il est faible
(puisque la commande passwd peut être invoquée par un utilisateur pour changer son propre
mot de passe). En revanche, root a tous les droits, y compris celui de forcer l’utilisation d’un
mot de passe trop simple (ce que je vous déconseille néanmoins).

# useradd -c "Jean Mortreux" jmortreux


# passwd jmortreux
Changement de mot de passe pour l'utilisateur jmortreux.
Nouveau mot de passe : ****
MOT DE PASSE INCORRECT : Le mot de passe comporte moins de
8 caractères
Retapez le nouveau mot de passe : ****
passwd : mise à jour réussie de tous les jetons d'authentification.

Procédez de même pour créer les autres utilisateurs de la machine.


67738-Administration Linux par la pratique-INT.book Page 128 Friday, May 24, 2019 10:38 AM

Administration Linux par la pratique


128

Utiliser n’est pas administrer


Tout au long de notre initiation à la ligne de commande, nous avons travaillé en tant que simples
utilisateurs – à quelques rares exceptions près – pour créer, éditer, visualiser, déplacer, copier et
effacer des fichiers. Ces tâches ne mettaient pas en péril le fonctionnement du système ou les
données des autres utilisateurs et ne nécessitaient par conséquent aucun privilège spécifique. Il
n’en est plus de même pour la gestion des utilisateurs, qui comprend entre autres choses :
• la création d’un nouvel utilisateur ;
• la définition de son mot de passe ;
• la configuration de ses droits : à quoi aura-t-il accès dans le système ?
• la suppression éventuelle de l’utilisateur ainsi que de toutes ses données.

Changer d’identité et devenir root


Lors de l’installation du système, nous avons défini un mot de passe pour l’utilisateur root. Un
peu plus haut, nous avons eu besoin des privilèges de root pour créer quelques utilisateurs supplé-
mentaires, que nous avons acquis en nous déconnectant et en nous reconnectant. Or, il existe un
moyen bien plus simple grâce à la commande su (switch user, c’est-à-dire « changer d’utilisateur »).
Tapez ce qui suit, en saisissant le mot de passe root lorsque le système vous le demande :

[kikinovak@centosbox ~]$ su -
Mot de passe : **********
Dernière connexion : jeudi 15 juin 2017 à 14:01:26 CEST sur pts/0
[root@centosbox ~]#

Notez le tiret - qui suit la commande su. Il précise qu’il faut devenir root en récupérant
toutes les variables d’environnement de ce compte. Nous y reviendrons. Contentez-vous pour
l’instant de connaître la démarche.

ATTENTION Travailler en tant que root


Une mise en garde solennelle s’impose. En acquérant les droits de root, vous voilà en quelque sorte
détenteur du fameux bouton rouge. Cela ne veut pas dire que vous allez forcément déclencher une
guerre nucléaire, mais une simple commande bien sentie suffirait à enclencher une apocalypse numé-
rique sur votre système. En un mot : prudence. Et gare aux fautes de frappe !

S’il est utile de savoir comment acquérir les pleins pouvoirs sur la machine, il est tout aussi
indispensable de savoir comment revenir en sens inverse pour se débarrasser de tous ces
super-pouvoirs lorsqu’on n’en a plus besoin. Dans ce cas, c’est exactement la même com-
mande que pour quitter une session dans la console. Vous avez donc le choix entre les deux
commandes logout et exit, à moins que vous ne préfériez le raccourci clavier Ctrl+D.
67738-Administration Linux par la pratique-INT.book Page 129 Friday, May 24, 2019 10:38 AM

Gérer les utilisateurs


129
CHAPITRE 5

[root@centosbox ~]# exit


déconnexion
[kikinovak@centosbox ~]$

Savoir qui l’on est


La commande su ne nous permet pas seulement de devenir root. Si le système dispose d’un
utilisateur fteyssier, je pourrais très bien devenir fteyssier en invoquant la commande sui-
vante (et en saisissant son mot de passe) :

[kikinovak@centosbox ~]$ su - fteyssier


Mot de passe : ****
[fteyssier@centosbox ~]$

Là encore, notez l’utilisation du tiret - qui permet d’indiquer que vous souhaitez devenir un
autre utilisateur avec ses variables d’environnement. L’invite de commandes
([fteyssier@centosbox ~]$) nous indique qu’un changement d’identité a eu lieu. Pour le
vérifier, nous avons tout loisir de demander à notre système qui nous sommes, grâce à la com-
mande whoami (Who am I ?, « Qui suis-je ? »). Voici une petite démonstration pratique :

[kikinovak@centosbox ~]$ su - fteyssier


Mot de passe : ****
[fteyssier@centosbox ~]$ whoami
fteyssier
[fteyssier@centosbox ~]$ exit
déconnexion
[kikinovak@centosbox ~]$ whoami
kikinovak
[kikinovak@centosbox ~]$ su -
Mot de passe : **********
[root@centosbox ~]# whoami
root
[root@centosbox ~]# exit
déconnexion
[kikinovak@centosbox ~]$ whoami
kikinovak

Vous remarquerez que si j’invoque su sans autre argument que le tiret, cela revient exactement
à la même chose que su - root.

[kikinovak@centosbox ~]$ su -
Mot de passe : **********
[root@centosbox ~]#
67738-Administration Linux par la pratique-INT.book Page 130 Friday, May 24, 2019 10:38 AM

Administration Linux par la pratique


130

En savoir un peu plus sur les utilisateurs :


id, groups, finger
Chacun des utilisateurs que nous avons créés jusqu’ici possède un certain nombre de caracté-
ristiques, comme son UID unique, son GID, les groupes secondaires auxquels il appartient,
son répertoire d’utilisateur, son shell de connexion, etc. Voyons maintenant comment afficher
ces différentes informations. Commençons par nous-mêmes, en utilisant la commande id :

$ id
uid=1000(kikinovak) gid=1000(kikinovak) groupes=1000(kikinovak),
10(wheel) contexte=unconfined_u:unconfined_r:unconfined_t:
s0-s0:c0.c1023

Invoquée sans autre argument, la commande id nous affiche l’UID, le GID, ainsi que la liste
complète des groupes secondaires auxquels l’utilisateur est affecté. Elle nous affiche égale-
ment le contexte SELinux (Security Enhanced Linux), que nous allons laisser de côté pour
l’instant. SELinux est une technologie quelque peu complexe, que nous aborderons (beau-
coup) plus loin dans le deuxième tome de cet ouvrage.
Afficher l’UID (User Identification) de l’utilisateur :

$ id -u
1000

Afficher le GID (Group Identification) :

$ id -g
1000

Afficher le nom du groupe :

$ id -gn
kikinovak

Afficher les groupes dont l’utilisateur est membre :

$ id -G
1000 10

Afficher les noms des groupes dont l’utilisateur est membre :

$ id -Gn
kikinovak wheel
67738-Administration Linux par la pratique-INT.book Page 131 Friday, May 24, 2019 10:38 AM

Gérer les utilisateurs


131
CHAPITRE 5

Pour cette dernière commande, nous disposons d’une alternative plus courante :

$ groups
kikinovak wheel

Évidemment, personne ne vous demande de retenir toutes ces options par cœur. N’oubliez
pas que vous avez la page du manuel pour cela :

$ man id

Pour en savoir plus sur les autres utilisateurs du système, il suffit de fournir leur nom en argu-
ment. Ces informations sont accessibles à tous les utilisateurs non privilégiés du système :

$ id adebuf
uid=1001(adebuf) gid=1001(adebuf) groupes=1001(adebuf)
$ id jmortreux
uid=1002(jmortreux) gid=1002(jmortreux) groupes=1002(jmortreux)

Les arguments et les options peuvent évidemment être combinés à souhait, par exemple pour
afficher l’UID d’un autre utilisateur.

$ id -u fteyssier
1004

Enfin, la commande finger affiche quelques renseignements sur les utilisateurs du système
comme le nom, le répertoire utilisateur et le shell de connexion utilisé.

OUTIL Installer finger


La commande finger ne fait pas partie du système minimal, mais nous pouvons l’installer facilement.
# yum install finger

Une fois installée, la commande finger affiche ces informations :

$ finger fteyssier
Login: fteyssier Name: Franck Teyssier
Directory: /home/fteyssier Shell: /bin/bash
Last login ven. juin 16 10:49 (CEST) on pts/0
...
67738-Administration Linux par la pratique-INT.book Page 132 Friday, May 24, 2019 10:38 AM

Administration Linux par la pratique


132

La gestion des utilisateurs sous le capot

Comprendre le fichier /etc/passwd


Essayons de voir un peu plus en détail comment se passe la gestion des utilisateurs au niveau
du système. Affichez le contenu du fichier /etc/passwd :

$ less /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
...
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
chrony:x:997:995::/var/lib/chrony:/sbin/nologin
kikinovak:x:1000:1000:Kiki Novak:/home/kikinovak:/bin/bash
adebuf:x:1001:1001:Agnès Debuf:/home/adebuf:/bin/bash
jmortreux:x:1002:1002:Jean Mortreux:/home/jmortreux:/bin/bash
fbanester:x:1003:1003:Fanny Banester:/home/fbanester:/bin/bash
fteyssier:x:1004:1004:Franck Teyssier:/home/fteyssier:/bin/bash

Certains d’entre vous seront peut-être vaguement surpris voire inquiets de pouvoir lire ce
fichier sans autres privilèges. C’est tout à fait normal et nous y viendrons.
Le fichier /etc/passwd contient l’ensemble des informations qui régissent la connexion des
utilisateurs. Chaque ligne de ce fichier correspond à un utilisateur. Essayez de repérer l’entrée
qui correspond à votre humble personne :

kikinovak:x:1000:1000:Kiki Novak:/home/kikinovak:/bin/bash

Comment décrypter ce charabia ? Il s’agit en fait d’une série de champs séparés par des signes
deux-points, où l’on trouve dans l’ordre :
• l’identifiant de connexion (kikinovak) ;
• la lettre x, signifiant que le mot de passe crypté de l’utilisateur se situe dans le fichier /
etc/shadow ;
• l’UID (User Identification, ici 1000), que le système utilise plutôt que votre identifiant
pour gérer les droits d’accès de vos fichiers ;
• le GID (Group Identification, également 1000 ici), groupe primaire auquel appartient
l’utilisateur ;
• le nom complet de l’utilisateur (Kiki Novak) ;
• le répertoire de connexion (/home/kikinovak) ;
• le shell de connexion de l’utilisateur (/bin/bash).
67738-Administration Linux par la pratique-INT.book Page 133 Friday, May 24, 2019 10:38 AM

Gérer les utilisateurs


133
CHAPITRE 5

LE SAVIEZ-VOUS ? Le shell de connexion


Pour être précis, le shell de connexion est la commande que le système doit exécuter lorsque l’utilisateur
se connecte. En pratique, il s’agit de l’interpréteur de commandes de l’utilisateur.

Les utilisateurs système


Qui sont donc tous ces utilisateurs mystérieux sur votre système ? Vous n’avez pas défini ces
gens aux identifiants pour le moins curieux : daemon, operator, nobody… Rassurez-vous,
votre machine n’est peuplée ni par des démons, ni par des hommes invisibles. Il s’agit là des
utilisateurs système.
À titre d’exemple, si vous installez le serveur web Apache (yum install httpd), vous obtenez
un utilisateur système apache. Lorsque le serveur est lancé, le processus « n’appartient » pas à
l’utilisateur root, mais à l’utilisateur système apache. Il peut arriver (et dans le monde réel,
cela arrive effectivement) qu’une personne malintentionnée décide d’attaquer le serveur, en
exploitant une faille de sécurité. Or, si le serveur fonctionnait avec des droits root, cela ren-
drait l’attaquant tout-puissant sur la machine. Le recours à un utilisateur système limite donc
les dégâts dans un tel cas de figure. Je vous épargne les détails complexes d’une telle situation.
Retenez juste que l’existence des utilisateurs système est avant tout motivée par des considé-
rations de sécurité.
Dorénavant, nous pouvons établir une classification sommaire des utilisateurs sur notre
machine :
• l’administrateur root, l’utilisateur tout-puissant. Son UID est toujours égal à 0 ;
• les utilisateurs système, gérant les droits d’accès d’un certain nombre de services sur la
machine. Leur UID est compris entre 1 et 999 ;
• les utilisateurs « normaux », c’est-à-dire les personnes physiques comme vous et moi
(kikinovak, adebuf, jmortreux). Notre UID sera supérieur ou égal à 1 000.

Comprendre le fichier /etc/shadow


Au bon vieux temps, le fichier /etc/passwd contenait également les mots de passe des utilisa-
teurs. Ils étaient certes chiffrés, mais l’algorithme de chiffrement utilisé à l’époque n’était pas
très performant. Avec l’avènement des processeurs de plus en plus puissants, un attaquant
avait la perspective de décrypter les mots de passe en un temps raisonnable.
Pour cette raison, ils ont été délocalisés vers le fichier /etc/shadow. Il n’est pas accessible à
tout le monde, contrairement à /etc/passwd.

$ cat /etc/shadow
cat: /etc/shadow: Permission non accordée

Les permissions de ce fichier sont beaucoup plus restrictives. Seul root a le droit d’en afficher
le contenu.
67738-Administration Linux par la pratique-INT.book Page 134 Friday, May 24, 2019 10:38 AM

Administration Linux par la pratique


134

Figure 5–1
Les mots de passe des utilisateurs
sont délocalisés sous forme chiffrée
dans le fichier /etc/shadow.

À première vue, la syntaxe de ce fichier ressemble de très loin à celle que nous avons pu
trouver dans /etc/passwd :

kikinovak:$6$UwrchklB$5V36RvdDtVYdc9t0JwUGVBCjTi6Vtiu2QyVtAaI9o
IxnZpDAd49xUM4neWVVqGrzdwCmVnxSLhiL5YoSOm0rI/:17756:0:99999:7:::

Là aussi, nous disposons d’une série d’informations séparées par des symboles deux-points :
• l’identifiant de connexion (kikinovak) ;
• le mot de passe chiffré ($6$UwrchklB$5V...Om0rI/) ;
• la date du dernier changement de mot de passe (17756) ;
• l’âge minimum du mot de passe (0) ;
• l’âge maximum du mot de passe (99999) ;
• la période d’expiration du mot de passe (7) ;
• etc.
La syntaxe du fichier mérite quelques remarques.
• Chacun des identifiants de connexion (kikinovak, adebuf, jmortreux, etc.) est également
présent dans /etc/passwd. Ce champ peut donc être considéré comme un connecteur
entre les deux fichiers.
• Les mots de passe chiffrés commencent tous par $6$, ce qui signifie que l’algorithme de
hachage SHA-512 a été utilisé.
• Au cas où deux utilisateurs ont le même mot de passe, les empreintes correspondantes
dans /etc/shadow seront différentes grâce au salage.
67738-Administration Linux par la pratique-INT.book Page 135 Friday, May 24, 2019 10:38 AM

Gérer les utilisateurs


135
CHAPITRE 5

• La date de dernière modification du mot de passe (17756) est indiquée en nombre de jours
depuis le 1er janvier 1970.

CRYPTOGRAPHIE Salage
Le salage est une méthode utilisée en cryptographie. Elle permet de renforcer la sécurité des informa-
tions destinées à être hachées en ajoutant une donnée supplémentaire. Cette technique évite que deux
informations identiques conduisent à la même empreinte.

Les pages de manuel en ligne du système ne nous renseignent pas seulement sur le rôle et la
syntaxe des commandes. Les fichiers de configuration du système y sont également décrits en
détail.

$ apropos shadow
gpasswd (1) - Administrer /etc/group et /etc/gshadow
gshadow (5) - informations cachées sur les groupes
...
shadow (5) - fichier des mots de passe cachés
...
$ man 5 shadow

Trouver les utilisateurs physiques du système


Admettons que nous voulions afficher tous les vrais utilisateurs, c’est-à-dire tous ceux qui ne
sont pas des utilisateurs système. Comment nous y prendrions-nous ?
Une première approche consisterait à considérer que les vrais utilisateurs disposent tous d’un
shell de connexion, en l’occurrence /bin/bash. Il suffirait donc d’afficher toutes les lignes du
fichier /etc/passwd qui contiennent la chaîne de caractères /bin/bash ou, plus simplement,
bash. C’est tout à fait possible. J’en profite pour vous présenter la commande grep.

$ grep bash /etc/passwd


root:x:0:0:root:/root:/bin/bash
kikinovak:x:1000:1000:Kiki Novak:/home/kikinovak:/bin/bash
adebuf:x:1001:1001:Agnès Debuf:/home/adebuf:/bin/bash
jmortreux:x:1002:1002:Jean Mortreux:/home/jmortreux:/bin/bash
fbanester:x:1003:1003:Fanny Banester:/home/fbanester:/bin/bash
fteyssier:x:1004:1004:Franck Teyssier:/home/fteyssier:/bin/bash

L’opération ressemble à un succès. Même si root semble être un cas à part, les utilisateurs en
chair et en os sont tous là. Or, notre approche souffre d’un certain nombre de points faibles.
Si l’un de nos utilisateurs décide de choisir un autre shell de connexion que /bin/bash (ce qui
est tout à fait possible), il ne s’affichera plus. Essayons donc une approche différente.
Nous avons vu plus haut que ce qui distingue les utilisateurs « en chair et en os », c’est leur
UID supérieur ou égal à 1 000. Nous avons vu également que le fichier /etc/passwd était
organisé en colonnes séparées par des deux-points. Je vais me servir de l’outil de filtrage awk
67738-Administration Linux par la pratique-INT.book Page 136 Friday, May 24, 2019 10:38 AM

Administration Linux par la pratique


136

pour arriver à mes fins. GNU AWK est un véritable langage de traitement de lignes qui sert à
manipuler des fichiers au format texte. Voyons quelques exemples simples.
La première colonne du fichier /etc/passwd contient les noms d’utilisateurs.

$ awk -F: '{print $1}' /etc/passwd


root
bin
daemon
...
kikinovak
adebuf
jmortreux
fbanester
fteyssier

L’option -F indique à awk que le fichier /etc/passwd utilise les deux-points comme sépara-
teur et '{print $1}' signifie « affiche la première colonne ».
Les UID des utilisateurs figurent dans la troisième colonne. Je peux donc les « extraire » de la
sorte :

$ awk -F: '{print $3}' /etc/passwd


0
1
2
3
...
1000
1001
1002
1003
1004

À partir de là, j’ai la réponse à ma question. Il suffit que j’affiche la première colonne ($1) de
chaque ligne où le contenu de la troisième colonne ($3) est strictement supérieur à 999 :

$ awk -F: '$3 > 999 {print $1}' /etc/passwd


kikinovak
adebuf
jmortreux
fbanester
fteyssier
67738-Administration Linux par la pratique-INT.book Page 137 Friday, May 24, 2019 10:38 AM

Gérer les utilisateurs


137
CHAPITRE 5

Enfin, je peux combiner la commande précédente avec sort pour afficher le résultat par ordre
alphabétique :

$ awk -F: '$3 > 999 {print $1}' /etc/passwd | sort


adebuf
fbanester
fteyssier
jmortreux
kikinovak

Vue détaillée sur l’ajout d’un utilisateur


La commande useradd telle qu’on la trouve dans un système CentOS présente un comporte-
ment par défaut qui la rend immédiatement utilisable, sans que l’on ait trop à se casser la tête
sur les différentes options à spécifier. En résumé, que se passe-t-il lors de la création simple d’un
utilisateur sans autre option, c’est-à-dire en invoquant la commande useradd <identifiant> ?
• L’utilisateur reçoit un UID supérieur ou égal à 1 000. Tout laisse à penser (selon le contenu de
/etc/passwd) que le système choisit le premier UID disponible à partir de 1 000.
• Tous les utilisateurs sont affectés d’emblée à un groupe nommé d’après leur identifiant,
dont le GID est égal à l’UID. Dans notre exemple, jmortreux (UID 1002) est également
membre du groupe jmortreux (GID 1002).
• Un répertoire d’utilisateur est créé et c’est l’identifiant de l’utilisateur qui sert de base pour
le nommer. L’utilisatrice adebuf aura donc un répertoire /home/adebuf.
• Par défaut, c’est l’interpréteur de commandes Bash (/bin/bash) qui est utilisé.

CONFIGURATION Le comportement par défaut de useradd


Vous vous doutez probablement que les options par défaut de la commande useradd ne sont pas gra-
vées dans le marbre. En effet, elles sont fournies par les fichiers de configuration /etc/login.defs et
/etc/default/useradd.

Les données GECOS des utilisateurs


Nous avons utilisé l’option -c (ou --comment) pour créer les utilisateurs sur notre système, en
fournissant le prénom et le nom correspondant en argument. Ces données se retrouvent dans
le cinquième champ du fichier /etc/passwd, entre le GID et le répertoire utilisateur. La page
de manuel en ligne de ce fichier (man 5 passwd) nous dit qu’il s’agit du champ GECOS.

ACRONYME GECOS
GECOS signifie General Electric Comprehensive Operating System, du nom d’un système d’exploitation
mainframe créé originellement par la General Electric.
67738-Administration Linux par la pratique-INT.book Page 138 Friday, May 24, 2019 10:38 AM

Administration Linux par la pratique


138

Le champ GECOS est une relique datant de l’époque où les utilisateurs d’Unix dans les
entreprises et dans les universités se connectaient à un ordinateur central par le biais d’un ter-
minal. Il enregistre des informations sommaires sur un compte utilisateur, affichables avec la
commande finger.
Les informations GECOS sont accessibles à tous les utilisateurs :

$ finger fteyssier
Login: fteyssier Name: Franck Teyssier
Directory: /home/fteyssier Shell: /bin/bash
Never logged in.
No mail.
No Plan.

La commande chfn (change your finger information d’après la page man) permet de
modifier les informations GECOS, notamment :
• le nom en toutes lettres ;
• le bureau dans le bâtiment ;
• le numéro de téléphone professionnel ;
• le numéro de téléphone personnel.
Concrètement, voici à quoi cela ressemble :

[kikinovak@centosbox ~]$ chfn


Modification des renseignements finger pour kikinovak.
Nom [Kiki Novak]:
Bureau []: 101
Téléphone bureau []: 04 66 63 10 32
Téléphone domicile []: 06 51 80 12 12

Mot de passe :
Les renseignements finger ont été modifiés.

Ces informations sont désormais accessibles à tout le monde :

$ finger kikinovak
Login: kikinovak Name: Kiki Novak
Directory: /home/kikinovak Shell: /bin/bash
Office: 101, 04 66 63 10 32 Home Phone: 06 51 80 12 12
...

Sous le capot, elles sont stockées dans le cinquième champ du fichier /etc/passwd et utilisent
la virgule comme séparateur :

kikinovak:x:1000:1000:Kiki Novak,101,04 66 63 10 32,


06 51 80 12 12:/home/kikinovak:/bin/bash
67738-Administration Linux par la pratique-INT.book Page 139 Friday, May 24, 2019 10:38 AM

Gérer les utilisateurs


139
CHAPITRE 5

De nos jours, on ne renseigne plus guère que le nom des utilisateurs dans ce champ. Ceci
étant dit, c’est bien de connaître son rôle historique.

Le profil par défaut des nouveaux utilisateurs


Parmi les utilisateurs nouvellement créés, prenons-en un qui ne s’est pas encore connecté au
système :

# finger fteyssier
Login: fteyssier Name: Franck Teyssier
Directory: /home/fteyssier Shell: /bin/bash
Never logged in.
...

Au moment de la création de son compte, son répertoire d’utilisateur se trouve apparemment


vide :

# tree /home/fteyssier/
/home/fteyssier/

0 directories, 0 files

En fait, il n’est pas si vide que cela, si nous regardons d’un peu plus près :

# tree -a /home/fteyssier/
/home/fteyssier/
├── .bash_logout
├── .bash_profile
└── .bashrc

0 directories, 3 files

D’où sortent ces mystérieux fichiers .bash_logout, .bash_profile et .bashrc ? Jetons un œil
dans la page man de useradd(8), dans la section OPTIONS :

-k, --skel RÉP_SQUELETTE


Le répertoire squelette, qui contient les fichiers et répertoires qui seront copiés
dans le répertoire personnel de l'utilisateur, quand le répertoire personnel est créé
par useradd.

Cette option n'est valable que si l'option -m (ou --create-home) est utilisée.

Si cette option n'est pas précisée, le répertoire squelette est défini par la
variable SKEL dans /etc/default/useradd ou, par défaut, /etc/skel.
...
67738-Administration Linux par la pratique-INT.book Page 140 Friday, May 24, 2019 10:38 AM

Administration Linux par la pratique


140

Vérifions la définition de la variable SKEL dans le fichier /etc/default/useradd :

# grep SKEL /etc/default/useradd


SKEL=/etc/skel

Le répertoire squelette de notre système, c’est bien /etc/skel. Affichons son contenu en pre-
nant soin d’afficher les fichiers cachés :

# tree -a /etc/skel/
/etc/skel/
├── .bash_logout
├── .bash_profile
└── .bashrc

0 directories, 3 files

Cela ressemble effectivement au contenu de mon répertoire d’utilisateur nouvellement créé.


Pour en avoir le cœur net, tentons une petite expérience.

Personnaliser le profil par défaut des nouveaux utilisateurs


Nous pourrions très bien imaginer la confection d’un fichier de bienvenue pour les nouveaux
utilisateurs de notre système. Dans un premier temps, nous créons le message dans /etc/skel :

# cat > /etc/skel/LISEZ_MOI.txt << EOF


> Bienvenue sur votre nouveau système Linux !
> EOF

Notez que vous pourriez très bien vous servir de Vi pour éditer votre message.

À présent, créons un nouvel utilisateur fantasio :

# useradd -c "Fantasio" fantasio


# passwd fantasio

Avant même qu’il ne se connecte pour la première fois, penchons-nous sur le contenu de son
répertoire d’utilisateur :

# ls -la /home/fantasio/
total 16
drwx------. 2 fantasio fantasio 83 30 août 07:30 .
drwxr-xr-x. 8 root root 104 30 août 07:30 ..
-rw-r--r--. 1 fantasio fantasio 18 11 avril 02:53 .bash_logout
-rw-r--r--. 1 fantasio fantasio 193 11 avril 02:53 .bash_profile
-rw-r--r--. 1 fantasio fantasio 231 11 avril 02:53 .bashrc
-rw-r--r--. 1 fantasio fantasio 45 30 août 07:28 LISEZ_MOI.txt
67738-Administration Linux par la pratique-INT.book Page 141 Friday, May 24, 2019 10:38 AM

Gérer les utilisateurs


141
CHAPITRE 5

L’utilisation de /etc/skel ne se limite pas à l’ajout de documents par défaut ; de manière plus
générale, tout fichier peut être distribué aux nouveaux utilisateurs. On peut donc également
répliquer des configurations par défaut du bureau ou des logiciels et définir par exemple le
même fond d’écran et le même thème d’icônes par défaut pour tous les utilisateurs. Il suffit
pour cela de repérer le fichier (ou répertoire) de configuration en question et de le recopier
dans /etc/skel avant la création des utilisateurs.

Modifier le mot de passe d’un utilisateur


Nous avons vu que la création d’un nouveau compte comprend l’affectation d’un mot de passe
avec la commande passwd. Celle-ci n’est d’ailleurs pas réservée à l’administrateur. Appelée
par un simple utilisateur, elle lui servira à changer son mot de passe pour quelque chose de
plus personnalisé :

[fantasio@centosbox ~]$ passwd


Changement de mot de passe pour l'utilisateur fantasio.
Changement du mot de passe pour fantasio.
Mot de passe UNIX (actuel) :
Nouveau mot de passe :
Retapez le nouveau mot de passe :
passwd : mise à jour réussie de tous les jetons d'authentification.

AVERTISSEMENT Mot de passe trop simple


Il arrive assez souvent que les utilisateurs choisissent des mots de passe trop simples. Dans ce cas, le sys-
tème les en empêche et se charge de les sermonner :
$ passwd
Changement de mot de passe pour l'utilisateur fantasio.
Changement du mot de passe pour fantasio.
Mot de passe UNIX (actuel) :
Nouveau mot de passe :
MOT DE PASSE INCORRECT : Le mot de passe ne passe pas la vérification
dans le dictionnaire - trop simple/systématique
Nouveau mot de passe :
MOT DE PASSE INCORRECT : Le mot de passe comporte moins de
8 caractères
Notez que cette restriction ne vaut pas pour l’administrateur root. Autrement dit, si vous avez la mau-
vaise idée de définir un mot de passe simpliste comme « 1234 » ou « azerty » pour l’utilisateur
fantasio, vous devrez le faire comme ceci, en insistant un peu :
# passwd fantasio
67738-Administration Linux par la pratique-INT.book Page 142 Friday, May 24, 2019 10:38 AM

Administration Linux par la pratique


142

Associer les utilisateurs aux groupes


La commande groups présentée un peu plus haut nous a affiché les groupes auxquels appar-
tient l’utilisateur. Représentez-vous cette appartenance à un groupe comme une carte de
membre, qui vous ouvre les portes vers des lieux dont l’accès est normalement restreint.
Sur un système CentOS, chaque utilisateur nouvellement créé fait partie au minimum d’un
groupe nommé d’après son identifiant :

$ groups jmortreux
jmortreux : jmortreux

Les utilisateurs membres de certains groupes bénéficient de toute une série de « privilèges »,
qui leur donnent accès à certaines parties du système :

$ groups kikinovak
kikinovak : kikinovak wheel

Comment se fait-il que l’utilisateur kikinovak soit membre du groupe wheel ? Rappelez-
vous qu’il a été créé lors de l’installation initiale. Sur un système CentOS, le groupe wheel sert
avant tout à différencier ceux qui ont le droit de se servir de la commande sudo (nous y vien-
drons). Si nous avons coché la case Faire de cet utilisateur un administrateur, nous avons ajouté
notre utilisateur initial à ce groupe privilégié.
Admettons que je souhaite élever l’utilisateur jmortreux au rang d’administrateur. Je peux
l’ajouter au groupe wheel comme ceci :

# usermod -a -G wheel jmortreux

Notez que si jmortreux est connecté pendant cette opération, il faudra qu’il se déconnecte et
qu’il se reconnecte pour que l’ajout au groupe wheel prenne effet.
N’hésitez pas à ouvrir la page man usermod(8) pour avoir une idée un peu plus précise de ce
que nous venons de faire :
• usermod modifie un compte utilisateur ;
• l’option -a (comme --append) ajoute l’utilisateur à un groupe supplémentaire ;
• elle s’utilise conjointement avec l’option -G (--groups).

Comprendre le fichier /etc/group


Maintenant que vous êtes familiarisé avec le fonctionnement des fichiers /etc/passwd et
/etc/shadow, affichez le fichier /etc/group :
67738-Administration Linux par la pratique-INT.book Page 143 Friday, May 24, 2019 10:38 AM

Gérer les utilisateurs


143
CHAPITRE 5

# less /etc/group
root:x:0:
bin:x:1:
daemon:x:2:
sys:x:3:
...
wheel:x:10:kikinovak,jmortreux
cdrom:x:11:
mail:x:12:postfix
...
postdrop:x:90:
postfix:x:89:
chrony:x:996:
kikinovak:x:1000:
adebuf:x:1001:
jmortreux:x:1002:
fbanester:x:1003:
fteyssier:x:1004:
fantasio:x:1005:

Pour comprendre en détail la syntaxe de ce fichier, nous avons développé le bon réflexe :

# apropos group
# man 5 group

Tout comme pour les utilisateurs, nous avons ici :


• un groupe root avec un GID de 0 ;
• une série de groupes système avec des GID compris entre 1 et 999 ;
• les groupes correspondant aux utilisateurs, avec des GID supérieurs ou égaux à 1 000.
Dans l’exemple précédent, regardez la ligne qui définit le groupe wheel. Notez que les
membres de ce groupe sont énumérés avec une virgule comme séparateur et sans espace.

Supprimer un utilisateur d’un groupe


La manière la plus simple pour révoquer l’appartenance d’un utilisateur à un groupe, c’est
d’utiliser la commande gpasswd. Admettons que jmortreux ait mis en péril notre installation.
Nous allons le supprimer du groupe wheel :

# groups jmortreux
jmortreux : jmortreux wheel
# gpasswd -d jmortreux wheel
Retrait de l'utilisateur jmortreux du groupe wheel
# groups jmortreux
jmortreux : jmortreux

Là encore, jetez un œil dans man gpasswd(1) et repérez l’option -d comme --delete.
67738-Administration Linux par la pratique-INT.book Page 144 Friday, May 24, 2019 10:38 AM

Administration Linux par la pratique


144

Créer et supprimer des groupes


Bien évidemment, nous ne sommes pas limités à l’utilisation des groupes prédéfinis sur la
machine. En guise d’exemple, créons deux groupes formateurs et direction, puis ajoutons
les utilisateurs kikinovak, adebuf, jmortreux, fbanester et fteyssier à leurs groupes res-
pectifs, sachant que certains appartiennent aux deux groupes :

# groupadd formateurs
# groupadd direction
# usermod -a -G formateurs kikinovak
# usermod -a -G formateurs jmortreux
# usermod -a -G formateurs fteyssier
# usermod -a -G direction adebuf
# usermod -a -G direction jmortreux
# usermod -a -G direction fbanester
# usermod -a -G direction fteyssier

Pour apprécier le résultat de l’opération, ouvrez /etc/group et examinez les deux dernières
lignes du fichier. Vous pourriez très bien utiliser cat, more ou less pour visualiser /etc/group,
mais j’en profite en passant pour vous présenter la commande tail. Dans sa configuration par
défaut, tail affiche les dix dernières lignes du fichier fourni en argument. L’option -n 2 nous
limite aux deux dernières lignes :

# tail -n 2 /etc/group
formateurs:x:1006:kikinovak,jmortreux,fteyssier
direction:x:1007:adebuf,jmortreux,fbanester,fteyssier

Pour supprimer un groupe, utilisez la commande groupdel :

# groupdel formateurs
# groupdel direction

Supprimer un utilisateur
Vous voilà en mesure de créer des utilisateurs et de gérer leurs comptes. Il ne vous reste plus qu’à
savoir comment vous en débarrasser, le cas échéant. Comme un employé doit vider son bureau
et rendre son badge, il arrive qu’un utilisateur n’ait plus la place sur votre système. Dans ce cas,
vous serez amené à supprimer son compte. C’est l’objet de la commande userdel.
Appliquons-la sur l’utilisateur fantasio :

# userdel fantasio
67738-Administration Linux par la pratique-INT.book Page 145 Friday, May 24, 2019 10:38 AM

Gérer les utilisateurs


145
CHAPITRE 5

Malheureusement, il y a un détail auquel nous n’avons pas pensé :

# ls -l /home/
total 0
drwx------. 2 adebuf adebuf 62 27 août 09:42 adebuf
drwx------. 2 1005 1005 104 30 août 10:50 fantasio
drwx------. 2 fbanester fbanester 62 27 août 09:43 fbanester
drwx------. 2 fteyssier fteyssier 62 27 août 09:43 fteyssier
drwx------. 2 jmortreux jmortreux 62 27 août 09:43 jmortreux
drwx------. 3 kikinovak kikinovak 121 22 août 10:52 kikinovak

La commande userdel s’est chargée de supprimer l’utilisateur fantasio, mais pas son réper-
toire.

Vider l’eau du bain avec le bébé


Le répertoire /home/fantasio existe toujours et semble intact, à un détail près :

# ls -la /home/fantasio/
total 20
drwx------. 2 1005 1005 104 30 août 10:50 .
drwxr-xr-x. 8 root root 104 30 août 07:30 ..
-rw-------. 1 1005 1005 15 30 août 10:50 .bash_history
-rw-r--r--. 1 1005 1005 18 11 avril 02:53 .bash_logout
-rw-r--r--. 1 1005 1005 193 11 avril 02:53 .bash_profile
-rw-r--r--. 1 1005 1005 231 11 avril 02:53 .bashrc
-rw-r--r--. 1 1005 1005 45 30 août 07:28 LISEZ_MOI.txt

Les fichiers et répertoires de /home/fantasio sont toujours là, mais ils « appartiennent » à
présent à l’UID 1 005 et au GID 1 005. Admettons que vous ayez maintenant l’idée de créer
un nouveau compte et de lui affecter ces identifiants d’utilisateur et de groupe désormais
vacants. Il se retrouverait propriétaire de tous les fichiers de fantasio. Autrement dit :
fantasio a rendu son badge, mais il n’a vidé ni son bureau ni son casier et c’est le nouvel
employé qui a désormais la clé.
Lors de la suppression, il peut donc s’avérer nécessaire de supprimer le répertoire d’utilisateur
correspondant au compte. Cependant, si nous affichons la page man de la commande
userdel, nous lisons ceci :

OPTIONS
...
-r, --remove
Les fichiers présents dans le répertoire personnel de l'utilisateur seront supprimés
en même temps que le répertoire lui-même, ainsi que le répertoire d'attente des
courriels.
...
67738-Administration Linux par la pratique-INT.book Page 146 Friday, May 24, 2019 10:38 AM

Administration Linux par la pratique


146

Essayons cette option sur l’utilisatrice fbanester, que nous avons dans le collimateur depuis
un petit moment :

# userdel -r fbanester
# ls -l /home/
total 0
drwx------. 2 adebuf adebuf 62 27 août 09:42 adebuf
drwx------. 2 1005 1005 104 30 août 10:50 fantasio
drwx------. 2 fteyssier fteyssier 62 27 août 09:43 fteyssier
drwx------. 2 jmortreux jmortreux 62 27 août 09:43 jmortreux
drwx------. 3 kikinovak kikinovak 121 22 août 10:52 kikinovak

La commande userdel suivie de l’option -r a donc bien supprimé le compte utilisateur


fbanester ainsi que le répertoire utilisateur /home/fbanester avec toutes les données qu’il conte-
nait.

Administrer le système avec sudo


Au début de ce chapitre, nous avons vu qu’il était possible de changer d’identité grâce à la
commande su (switch user), notamment pour devenir root :

[kikinovak@centosbox ~]$ ls /boot/grub2/


ls: impossible d'ouvrir le répertoire /boot/grub2/:
Permission non accordée
[kikinovak@centosbox ~]$ su -
Mot de passe :
[root@centosbox ~]# ls /boot/grub2/
device.map fonts grub.cfg grubenv i386-pc locale

Une autre manière de faire est d’utiliser la commande sudo. Elle permet littéralement de
« faire (do) en se substituant à l’utilisateur (su) », en l’occurrence lancer une commande en
tant qu’administrateur. Dans l’exemple qui suit, notez bien que je saisis le mot de passe de
kikinovak et non pas celui de root :

[kikinovak@centosbox ~]$ ls /boot/grub2/


ls: impossible d'ouvrir le répertoire /boot/grub2/: Permission non accordée
[kikinovak@centosbox ~]$ sudo ls /boot/grub2/
[sudo] Mot de passe de kikinovak :
device.map fonts grub.cfg grubenv i386-pc locale

Lorsqu’un utilisateur invoque sudo pour la première fois, le système affiche un avertissement
solennel :

Nous espérons que vous avez reçu de votre administrateur système local les consignes
traditionnelles. Généralement, elles se concentrent sur ces trois éléments :

#1) Respectez la vie privée des autres.


#2) Réfléchissez avant d'utiliser le clavier.
#3) De grands pouvoirs confèrent de grandes responsabilités.
67738-Administration Linux par la pratique-INT.book Page 147 Friday, May 24, 2019 10:38 AM

Gérer les utilisateurs


147
CHAPITRE 5

Rappelez-vous que, lors de l’installation du système et de la création de l’utilisateur initial,


nous avons coché la case Faire de cet utilisateur un administrateur, ce qui a permis d’ajouter
kikinovak au groupe privilégié wheel. Le principal privilège de ce groupe est défini dans le
fichier /etc/sudoers :

## Allows people in group wheel to run all commands


%wheel ALL=(ALL) ALL

## Same thing without a password


# %wheel ALL=(ALL) NOPASSWD: ALL

Voilà comment se présentent les choses lorsque sudo est invoqué par un utilisateur qui ne dis-
pose pas de ce privilège :

[fteyssier@centosbox ~]$ sudo ls /boot/grub2/


[sudo] Mot de passe de fteyssier :
fteyssier n'apparaît pas dans le fichier sudoers. Cet événement sera signalé.

Le signalement en question a lieu dans le fichier /var/log/secure et ressemble à ceci :

Sep 1 08:14:17 centosbox sudo: fteyssier : user NOT in sudoers ; TTY=pts/1 ;


PWD=/home/fteyssier ; USER=root ; COMMAND=/bin/ls /boot/grub2/

POLITIQUE Utiliser su ou sudo ?


Dans le monde d’Unix et de Linux, il existe en gros deux écoles pour s’acquitter des tâches
administratives :
• travailler directement en tant que root lorsque cela est nécessaire ;
• se connecter en tant qu’utilisateur simple et utiliser sudo lorsqu’une tâche le requiert.
Certaines distributions – Ubuntu par exemple – favorisent explicitement l’approche avec sudo en désac-
tivant le compte root dans la configuration par défaut.
Quelle est donc la « meilleure » approche ici ? Je me garderai de trancher la question et je me contente-
rai d’attirer votre attention sur les principales différences entre les deux manières de faire :
1. Travailler directement en tant que root est certainement plus confortable.
2. Utiliser sudo n’a jamais empêché personne de se tirer dans le pied.
Le principal argument en faveur de sudo est sans doute la journalisation des opérations dans /var/
log/secure. Si vous travaillez en tant qu’utilisateur simple et si vous utilisez sudo, tout ce que vous
faites est enregistré dans ce fichier. Ce n’est pas le cas pour root. Essayez pour voir.
67738-Administration Linux par la pratique-INT.book Page 148 Friday, May 24, 2019 10:38 AM
67738-Administration Linux par la pratique-INT.book Page 149 Friday, May 24, 2019 10:38 AM

6
Gérer les droits d’accès

Une fois que les utilisateurs du système sont mis en place, la question des droits d’accès se pose. Définir
des permissions saines pour les utilisateurs et leur assurer un minimum de confidentialité, c’est le
b.a.-ba de la sécurité.

Qui a le droit de faire quoi ?


Dans le chapitre précédent, nous avons comparé un système multi-utilisateur au fonctionne-
ment d’une grande entreprise. Chaque employé possède son badge qui lui donne accès aux
locaux de l’entreprise. Il a son bureau où il range ses affaires, éventuellement aussi son casier
personnel. En principe, les employés partagent les ressources de l’entreprise, ce qui ne veut
pas forcément dire que tous les employés ont accès aux mêmes ressources. Beaucoup dis-
posent de leur propre bureau individuel, d’autres travaillent en équipe dans de grandes pièces
spacieuses, où l’accès aux ordinateurs, aux photocopieuses et aux documents est ouvert à tous
les membres de l’équipe. Quelques rares privilégiés ont un accès plus large : l’agent de sécu-
rité, le PDG ou le DRH. La métaphore peut ainsi être tressée et affinée, mais vous avez com-
pris le principe sous-jacent.
Considérons l’exemple suivant.
• Le système compte trois utilisateurs : adebuf, jmortreux et kikinovak. Supprimez tous
les autres utilisateurs que vous avez pu créer jusqu’ici.
67738-Administration Linux par la pratique-INT.book Page 150 Friday, May 24, 2019 10:38 AM

Administration Linux par la pratique


150

• Chaque utilisateur dispose de son propre répertoire (~) :

# ls /home/
adebuf jmortreux kikinovak

• Chacun va ranger ses données personnelles dans son répertoire utilisateur. Dans l’exemple,
chacun disposera d’un document « confidentiel » confectionné comme suit par exemple :

$ mkdir ~/Documents
$ cat > ~/Documents/Confidentiel.txt << EOF
> Ce document est confidentiel.
> Personne d'autre que moi ne doit pouvoir le lire.
> EOF

Au total, les répertoires utilisateur ressembleront donc à peu de chose près à ceci :

# tree /home/
/home/
├── adebuf
│ └── Documents
│ └── Confidentiel.txt
├── jmortreux
│ └── Documents
│ └── Confidentiel.txt
└── kikinovak
└── Documents
└── Confidentiel.txt

6 directories, 3 files

Qui a accès à quoi là-dedans ? Est-ce que jmortreux pourra lire le fichier Confidentiel.txt
de adebuf ? Est-ce que celle-ci pourra modifier le fichier Confidentiel.txt de kikinovak ?
En effet, il ne suffit pas que chaque utilisateur dispose de son propre répertoire au-dessous de
/home. Aussi faut-il que ses données soient à l’abri des autres utilisateurs de la machine. Le
but du jeu est que tout ce petit monde puisse se connecter à la machine. Le présent chapitre
se propose de répondre de façon détaillée à toutes ces questions.

Un exemple pratique
Les nouveaux utilisateurs de Linux sont souvent intimidés par les questions de permissions et
de droits d’accès, qu’ils perçoivent comme une nébuleuse complexe et impressionnante. Ici
comme ailleurs, je vous propose de rester fidèle à la devise du grand neurologue français
Charcot : « La théorie, c’est bon, mais ça n’empêche pas d’exister. »
67738-Administration Linux par la pratique-INT.book Page 151 Friday, May 24, 2019 10:38 AM

Gérer les droits d’accès


151
CHAPITRE 6

Pour commencer, créez un fichier droits.txt dans votre répertoire utilisateur :

$ cat > droits.txt << EOF


> echo "Voici la date : "
> date
> EOF

Rien ne vous empêche de créer et d’éditer ce fichier avec Vi. Finalement, vous devez juste
obtenir ceci :

$ cat droits.txt
echo "Voici la date : "
date

Comprendre les permissions dans l’affichage détaillé


Vous voilà donc avec votre fichier droits.txt. Qui en est le propriétaire ? Qui peut faire quoi
avec ? D’ailleurs, qu’est-ce qu’on peut bien faire avec un fichier ? En lire le contenu ? Le
modifier ? L’effacer ? Et puis quoi encore ?

$ ls -l droits.txt
-rw-rw-r--. 1 kikinovak kikinovak 29 2 sept. 15:57 droits.txt

Dans la partie droite de cet affichage détaillé, vous avez :


• le nom du fichier : droits.txt ;
• sa date de création : le 2 septembre à 15 h 57 ;
• sa taille : 29 octets.
Si vous ne tenez pas compte du 1 dans la deuxième colonne (oubliez-le pour l’instant1), la
partie gauche est réservée aux droits d’accès du fichier.
Nous avons vu, dans le chapitre sur la navigation dans la console, comment décrypter som-
mairement la suite de dix caractères dans la première colonne. Le moment est venu de nous y
intéresser d’un peu plus près.
• Le tout premier caractère, c’est-à-dire le tiret - initial de la suite -rw-rw-r--, nous
indique tout simplement qu’il s’agit d’un fichier.
• Les neuf caractères subséquents rw-rw-r-- se décomposent en une série de trois fois trois
caractères, respectivement rw-, rw- et r--.
– Les caractères r, w, x et - symbolisent ce que l’on a le droit de faire avec le fichier : lire
(r comme read), écrire (w comme write), exécuter (x comme e[x]ecute) ou... rien du tout
(- comme « rien »).

1. Tel ce prof de yoga qui dit à ses élèves : « Ne pensez pas à cet éléphant rose ! »
67738-Administration Linux par la pratique-INT.book Page 152 Friday, May 24, 2019 10:38 AM

Administration Linux par la pratique


152

– La première suite de trois caractères (rw-) concerne le propriétaire du fichier.


– La deuxième (rw-) concerne le groupe.
– La troisième (r--) définit les droits de tous les autres utilisateurs.
• Le propriétaire du fichier est désigné dans la troisième colonne : kikinovak.
• La quatrième colonne donne le groupe du fichier : kikinovak.
Notre affichage signifie donc : « Le fichier droits.txt appartient à l’utilisateur kikinovak et
au groupe kikinovak. Le propriétaire du fichier et les membres du groupe ont le droit de le
lire et de le modifier (rw-). Tous les autres ont seulement le droit de le lire (r--). »

ALTERNATIVE Les groupes selon les distributions


Certaines distributions comme Red Hat Enterprise Linux, CentOS, Fedora, Debian et Ubuntu créent un
groupe du même nom pour chaque utilisateur, dont l’utilisateur est le seul membre par défaut.
D’autres distributions comme Slackware ou SUSE rangent tous les utilisateurs dans un groupe users.
Ainsi, lors de la création d’un fichier, son propriétaire sera toujours l’utilisateur, mais le fichier appartient
au groupe users.

Dans tous les cas, les droits d’accès concernent trois classes d’utilisateurs :
• le propriétaire du fichier (user : u) ;
• le groupe (group : g) ;
• le reste du monde, les autres (others : o).

Rendre un fichier exécutable


Peut-être vous en êtes-vous déjà vaguement douté, mais notre fichier droits.txt contient du
code exécutable. C’est un programme, eh oui ! Un script, plus exactement. Alors comment
l’exécuter ?
Dans un premier temps, nous allons définir des droits d’exécution pour le propriétaire du
fichier :

$ chmod u+x droits.txt


$ ls -l droits.txt
-rwxrw-r--. 1 kikinovak kikinovak 29 2 sept. 15:57 droits.txt

Les droits concernant le propriétaire sont passés de rw- à rwx, qui signifie : « L’utilisateur
kikinovak a le droit de lire ce fichier, le modifier ou l’effacer, mais aussi l’exécuter. » Et c’est
ce que nous allons faire :

$ ./droits.txt
Voici la date :
lun. sept. 3 07:31:40 CEST 2018
67738-Administration Linux par la pratique-INT.book Page 153 Friday, May 24, 2019 10:38 AM

Gérer les droits d’accès


153
CHAPITRE 6

VOUS VENEZ DE WINDOWS Fichiers exécutables


À la différence de Windows, la possibilité d’exécuter un fichier n’est aucunement liée à un quelconque
suffixe comme .EXE ou .COM. Sous Linux, cette caractéristique est essentiellement liée au système de
droits d’accès.

Vous voyez que les membres du groupe kikinovak ont le droit de lire et de modifier ce
fichier (rw-) et que tous les autres ont seulement le droit de le lire (r--). Comment empêcher
complètement ces derniers d’accéder à mon fichier ? Tout simplement avec la commande
suivante :

$ chmod go-rw droits.txt


$ ls -l droits.txt
-rwx------. 1 kikinovak kikinovak 29 2 sept. 15:57 droits.txt

Effectivement, les classes d’utilisateurs group (g) et others (o) n’ont plus le droit de rien faire,
comme le montre le ------ final.
Un système Linux permet d’attribuer des droits d’accès aux fichiers avec une précision quasi-
chirurgicale.

Ajouter et retirer les droits de lecture et d’écriture


Donnons maintenant le droit à tout le monde (a comme all) de lire le fichier :

$ chmod a+r droits.txt


$ ls -l droits.txt
-rwxr--r--. 1 kikinovak kikinovak 29 2 sept. 15:57 droits.txt

Ici, les trois classes d’utilisateurs (user, group et others) obtiennent des droits de lecture.
De façon analogue, pour retirer les droits de lecture au groupe et aux autres, il suffit d’invo-
quer la commande suivante :

$ chmod g-r,o-r droits.txt

Ou, plus simplement :

$ chmod go-r droits.txt


$ ls -l droits.txt
-rwx------. 1 kikinovak kikinovak 29 2 sept. 15:57 droits.txt
67738-Administration Linux par la pratique-INT.book Page 154 Friday, May 24, 2019 10:38 AM

Administration Linux par la pratique


154

DROITS D’ACCÈS La méthode directive


Dans les exemples jusqu’ici, nous avons vu deux approches dans la définition des droits :
• une méthode additive, qui ajoute des droits à certaines catégories d’utilisateurs ;
• une méthode soustractive, qui retire des droits à certaines catégories d’utilisateurs.
En dehors de ces deux approches, la méthode directive définit des droits très précis pour chaque classe
d’utilisateurs. Ainsi, la commande suivante donne tous les droits au seul propriétaire :
$ chmod u=rwx,g=,o= droits.txt
Et si je veux rétablir les permissions initiales de mon fichier en utilisant la méthode directive, voici com-
ment je dois m’y prendre :
$ chmod u=rw,g=rw,o=r droits.txt

Une autre approche : la notation numérique


À côté de la notation « ugo » (user, group, others), il existe une autre façon de définir les droits
d’accès des fichiers et des répertoires. Si je vous la montre, ce n’est pas pour compliquer les
choses, mais parce qu’elle est également très répandue et que vous risquez de tomber dessus
un jour ou l’autre : je parle de la notation numérique.
Nous avons vu qu’il existe trois catégories d’utilisateurs, qui peuvent bénéficier de trois droits
d’accès différents.
Tableau 6–1 Classes d’utilisateurs et permissions
user group others
rwx rwx rwx

Maintenant, affectons à chacun de ces droits une valeur numérique.


Tableau 6–2 Valeur numérique des permissions
r (read, lecture) 4
w (write, écriture) 2
x (e[x]ecute, exécution) 1

Il suffit alors d’additionner les valeurs respectives de ces droits pour les définir. Prenons
quelques exemples.

Attribuer tous les droits à tout le monde


Donnons des droits de lecture, d’écriture et d’exécution pour tout le monde :
• utilisateur : 4 (lecture) + 2 (écriture) + 1 (exécution) = 7 ;
• groupe : 4 (lecture) + 2 (écriture) + 1 (exécution) = 7 ;
• autres : 4 (lecture) + 2 (écriture) + 1 (exécution) = 7.
67738-Administration Linux par la pratique-INT.book Page 155 Friday, May 24, 2019 10:38 AM

Gérer les droits d’accès


155
CHAPITRE 6

En pratique, cela donne :

$ chmod 777 droits.txt


$ ls -l droits.txt
-rwxrwxrwx. 1 kikinovak kikinovak 29 2 sept. 15:57 droits.txt

Retirer et ajouter des droits


Maintenant, laissons à l’utilisateur le droit de lire et d’écrire, en retirant tous les droits aux
autres :
• utilisateur : 4 (lecture) + 2 (écriture) + 0 (exécution) = 6 ;
• groupe : 0 (lecture) + 0 (écriture) + 0 (exécution) = 0 ;
• autres : 0 (lecture) + 0 (écriture) + 0 (exécution) = 0.

$ chmod 600 droits.txt


$ ls -l droits.txt
-rw-------. 1 kikinovak kikinovak 29 2 sept. 15:57 droits.txt

Essayons autre chose : l’utilisateur a le droit de lire et d’écrire, le groupe et tous les autres ont
seulement celui de lire :
• utilisateur : 4 (lecture) + 2 (écriture) + 0 (exécution) = 6 ;
• groupe : 4 (lecture) + 0 (écriture) + 0 (exécution) = 4 ;
• autres : 4 (lecture) + 0 (écriture) + 0 (exécution) = 4.

$ chmod 644 droits.txt


$ ls -l droits.txt
-rw-r--r--. 1 kikinovak kikinovak 29 2 sept. 15:57 droits.txt

Les deux modes de notation sont strictement équivalents. Autrement dit, le dernier exemple
aurait très bien pu être défini ainsi :

$ chmod u=rw,go=r droits.txt


$ ls -l droits.txt
-rw-r--r--. 1 kikinovak kikinovak 29 2 sept. 15:57 droits.txt

Notez là encore la contraction de g=r,o=r en go=r.


67738-Administration Linux par la pratique-INT.book Page 156 Friday, May 24, 2019 10:38 AM

Administration Linux par la pratique


156

RÉCAPITULATIF Toutes les combinaisons de droits


Il n’est peut-être pas inutile de dresser un petit tableau récapitulatif de toutes les combinaisons de droits
possibles (en notation rwx ou numérique), étant donné qu’il n’y en a pas un nombre infini. Huit au total,
pour être précis :
--- 0
--x 1
-w- 2
-wx 3 (= 2+1)
r-- 4
r-x 5 (= 4+1)
rw- 6 (= 4+2)
rwx 7 (= 4+2+1)

LE CONSEIL DU CHEF Quelle est la meilleure méthode ?


En règle générale, les administrateurs Unix chevronnés ainsi que les frimeurs ont tendance à préférer
cette dernière méthode, étant donné qu’elle est plus « obscure ». Pour ma part, j’ai décidé de vous mon-
trer les deux manières de faire, car vous risquez de les rencontrer l’une comme l’autre dans des pages de
documentation. Après, je vous conseille tout simplement d’utiliser celle qui vous convient le mieux.

Les permissions par défaut : umask


Vous vous êtes peut-être demandé d’où viennent les droits initiaux des fichiers.
Créons un fichier :

$ touch droits2.txt
$ ls -l droits2.txt
-rw-rw-r--. 1 kikinovak kikinovak 0 3 sept. 08:49 droits2.txt

Je vois que droits2.txt est créé d’emblée avec une structure rw-rw-r--. Qui ou quoi décide
des permissions pour les fichiers nouvellement créés ?
Il faut savoir que, sur un système Linux, il n’est pas possible de créer un fichier qui possède
d’emblée les droits d’exécution. Cela signifie que les permissions maximales que je peux
obtenir pour un fichier nouvellement créé, c’est rw-rw-rw-, autrement dit 666. Diable !
Or, si je regarde de plus près mon fichier droits2.txt, il est affublé d’une structure de droits
rw-rw-r--, c’est-à-dire 664 en notation numérique. Si je pars du principe que mes droits plé-
niers s’élèvent à 666 et que je dispose de 664, j’en conclus maussadement que je me suis fait
gruger de 002 au passage.
67738-Administration Linux par la pratique-INT.book Page 157 Friday, May 24, 2019 10:38 AM

Gérer les droits d’accès


157
CHAPITRE 6

Le responsable de cette restriction se nomme umask. Le seul rôle de ce réglage est de sous-
traire des droits lors de la création de fichiers.

$ umask
0002

Il est toutefois possible de le changer :

$ umask 0022

POUR LES CURIEUX Pourquoi quatre chiffres ?


Pourquoi la valeur de umask comporte-t-elle quatre chiffres alors que je n’en ai évoqué que trois ? Nous
occuper du premier nous mènerait trop loin... Sachez donc qu’il y a quatre positions à définir en tout,
mais que pour le moment, nous ne nous occuperons pas de la première. En revanche, on peut effective-
ment écrire umask 002 dans la commande, au lieu de 0002, pour le même résultat.

La conséquence de cette redéfinition est immédiate. En effet, lorsque je crée un nouveau


fichier avec un umask de 0022, ses droits par défaut sont désormais de 644 :

$ touch droits3.txt
$ ls -l droits3.txt
-rw-r--r--. 1 kikinovak kikinovak 0 3 sept. 08:59 droits3.txt

Maintenant, soyons carrément permissifs :

$ umask 0000
$ touch droits4.txt
$ ls -l droits4.txt
-rw-rw-rw-. 1 kikinovak kikinovak 0 3 sept. 08:59 droits4.txt

Le fichier droits4.txt a les droits en lecture et écriture pour tout le monde, ce qui est le
maximum possible à la création.
La valeur de umask est redéfinie à chaque fois que vous vous connectez à la machine.

SOUS LE CAPOT La valeur par défaut de umask


Jetez un œil dans le fichier /etc/profile, aux alentours de la ligne 55. Je ne vous demande pas de lire
ce genre de fichier comme la page des actualités locales du Midi Libre. Sachez juste que c’est là qu’est
définie la valeur par défaut de umask.
67738-Administration Linux par la pratique-INT.book Page 158 Friday, May 24, 2019 10:38 AM

Administration Linux par la pratique


158

Gérer les droits d’accès aux répertoires


Depuis le début de cette section, nous avons essentiellement manipulé des fichiers. Qu’en
est-il des répertoires ? Eh bien, voyons par nous-mêmes...
Avant de faire quoi que ce soit, assurez-vous de ne pas être root et de redéfinir votre umask
d’utilisateur à 0002. Dans le doute, déconnectez-vous de votre session et reconnectez-vous.
Dans un précédent exercice, nous avions créé un répertoire test/. S’il est encore présent dans
votre répertoire d’utilisateur, effacez-le :

$ rm -rf test/

Maintenant, recréez-le et affichez ses propriétés détaillées :

$ mkdir test
$ ls -ld test/
drwxrwxr-x. 2 kikinovak kikinovak 6 3 sept. 09:29 test/

Tiens ! Contrairement à ce que j’ai pu énoncer plus haut, les droits d’exécution sont bel et
bien définis d’emblée. Non content de cela, ils sont définis pour tout le monde !

RAPPEL d comme « répertoire »


Remarquez au passage que, comme il s’agit cette fois d’un répertoire, le premier caractère est un d
(directory) au lieu du tiret - qui représente un fichier.

L’explication pour cette anomalie apparente est simple, car les droits d’exécution n’ont pas la
même signification pour un répertoire que pour un fichier. À y regarder de près, c’est même
normal, car cela n’a pas de sens de vouloir « exécuter un répertoire ». Le x ici signifie simple-
ment qu’on a le droit de se placer dans le répertoire avec la commande cd et d’en afficher le
contenu.
Faisons la preuve par l’exemple pour nous en assurer. Dans ce répertoire test/, créons trois
fichiers fichier1, fichier2 et fichier3, puis revenons au point de départ :

$ cd test/
$ touch fichier1 fichier2 fichier3
$ ls -l
total 0
-rw-rw-r--. 1 kikinovak kikinovak 0 3 sept. 09:38 fichier1
-rw-rw-r--. 1 kikinovak kikinovak 0 3 sept. 09:38 fichier2
-rw-rw-r--. 1 kikinovak kikinovak 0 3 sept. 09:38 fichier3
$ cd ..

À partir du répertoire d’utilisateur, nous pouvons très bien afficher le contenu de test/, grâce
à un simple ls test/ ou ls -l test/, et y revenir en invoquant un simple cd test/.
67738-Administration Linux par la pratique-INT.book Page 159 Friday, May 24, 2019 10:38 AM

Gérer les droits d’accès


159
CHAPITRE 6

ASTUCE Créer des fichiers à la louche


Notez que nous aurions pu créer nos trois fichiers avec la commande suivante :
$ touch fichier{1,2,3}

Maintenant, retirons les droits d’exécution au répertoire, pour tout le monde tant que nous y
sommes. Nous avons donc le choix :

$ chmod a-x test/

Ou, en utilisant la notation numérique :

$ chmod 664 test/

Dans un cas comme dans l’autre, voici ce que nous obtenons :

$ ls -ld test/
drw-rw-r--. 2 kikinovak kikinovak 54 3 sept. 09:38 test/

Voyons ce que cette dernière opération a eu comme incidence sur l’accès au répertoire :

$ cd test/
-bash: cd: test/: Permission non accordée

Dans ce cas, pouvons-nous au moins en afficher le contenu de l’extérieur ? L’entrée est blo-
quée, mais essayons de nous hisser sur la pointe des pieds et de jeter un œil curieux par-dessus
le mur. Est-ce que nous voyons quelque chose ?

$ ls -l test/
...
total 0
-????????? ? ? ? ? ? fichier1
-????????? ? ? ? ? ? fichier2
-????????? ? ? ? ? ? fichier3

Oui, mais non. Pas vraiment. Tout ce que nous devinons, c’est que ce répertoire contient trois
fichiers fichier1, fichier2 et fichier3. Quant à obtenir des informations détaillées, il n’en
est pas question.
Allons plus loin dans le verrouillage et ôtons les droits de lecture au répertoire. Là encore,
mettons tout le monde à la même enseigne :

$ chmod a-r test/


$ ls -ld test/
d-w--w----. 2 kikinovak kikinovak 54 3 sept. 09:38 test/
67738-Administration Linux par la pratique-INT.book Page 160 Friday, May 24, 2019 10:38 AM

Administration Linux par la pratique


160

EN PRATIQUE Droit d’écriture sans droit de lecture ?


Je me permets de vous signaler au passage qu’il est assez peu usuel de garder un droit d’écriture sans
avoir le droit de lecture. Dans la réalité quotidienne, nous aurions plutôt quelque chose du genre :
$ chmod a-rwx test/
… ou encore :
$ chmod 000 test/
Dans les deux cas, cela donnerait :
$ ls -ld test/
d---------. 2 kikinovak kikinovak 54 3 sept. 09:38 test/

Essayons d’afficher le contenu de ce répertoire :

$ ls -l test/
/bin/ls: impossible d'ouvrir le répertoire test/: Permission non accordée

Que se passe-t-il maintenant si je restitue à l’utilisateur les droits de lecture et d’exécution,


mais pas ceux d’écriture ?

$ chmod u+rx test/


$ ls -ld test/
dr-x------. 2 kikinovak kikinovak 54 3 sept. 09:38 test/

Essayez d’effectuer les manipulations suivantes :


1 afficher le contenu du répertoire avec ls -l ;
2 changer de répertoire courant avec cd ;
3 afficher le contenu des fichiers (vides, mais ce n’est pas grave) avec cat ;
4 renommer un fichier avec mv ;
5 créer un fichier fichier4 avec touch.
Nous pouvons conclure de cette dernière expérience que le minimum syndical en permissions
pour travailler sans entraves dans un répertoire est le suivant :

$ chmod u+rwx test/

Respectivement :

$ chmod 700 test/

Soit :

$ ls -ld test/
drwx------. 2 kikinovak kikinovak 54 3 sept. 09:38 test/
67738-Administration Linux par la pratique-INT.book Page 161 Friday, May 24, 2019 10:38 AM

Gérer les droits d’accès


161
CHAPITRE 6

Changer le propriétaire et le groupe d’un fichier


Le propriétaire et le groupe d’un fichier sont-ils immuables ? A priori, vous vous dites que
non. Vous commencez à comprendre que Linux est un système extrêmement flexible et cela
vous étonnerait qu’il y ait des choses que l’on ne puisse pas changer. La réponse est : oui, mais
pas n’importe comment. Et surtout, pas n’importe qui.
Prenons un exemple pour illustrer la chose. En tant que root, copiez n’importe quel fichier
du système dans votre répertoire utilisateur :

# cp -v /etc/yum.conf /home/kikinovak/
« /etc/yum.conf » -> « /home/kikinovak/yum.conf »

Deux précautions s’imposent ici. La première, c’est que votre répertoire utilisateur ne soit pas
/home/kikinovak, mais plutôt /home/<votre_identifiant>. Ça, vous l’aurez compris. En
revanche, n’utilisez pas ~ pour le répertoire utilisateur, mais /root.
Redevenez un utilisateur normal (exit, logout ou Ctrl+D) : assurez-vous de vous retrouver
dans votre répertoire d’utilisateur (cd sans arguments le cas échéant) et regardez de près ce
nouveau fichier :

$ ls -l yum.conf
-rw-r--r--. 1 root root 970 3 sept. 10:14 yum.conf

Il se trouve dans votre répertoire, mais il appartient à l’utilisateur root et au groupe root.
Essayons de changer cela avec une commande spécialement conçue pour ce genre
d’opération : chown (change owner, changer de propriétaire) :

$ man chown
NOM
chown - Modifier le propriétaire et le groupe d'un fichier
...

Après un coup d’œil sur la syntaxe de la commande, je me lance :

$ chown kikinovak:kikinovak yum.conf


chown: modification du propriétaire de « yum.conf »: Opération non permise

Apparemment, le système se rebiffe. Je vais donc essayer autre chose : redevenir root et attri-
buer ce fichier /home/kikinovak/yum.conf à l’utilisateur kikinovak et au groupe kikinovak.

$ su -
Mot de passe :
# chown kikinovak:kikinovak /home/kikinovak/yum.conf
67738-Administration Linux par la pratique-INT.book Page 162 Friday, May 24, 2019 10:38 AM

Administration Linux par la pratique


162

Je redeviens l’utilisateur commun des mortels que j’étais avant et je vérifie :

# exit
déconnexion
$ ls -l yum.conf
-rw-r--r--. 1 kikinovak kikinovak 970 3 sept. 10:14 yum.conf

Vous rappelez-vous la commande sudo décrite à la fin du chapitre précédent ? Elle nous
aurait permis d’opérer le changement de propriétaire en une seule commande :

$ sudo chown kikinovak:kikinovak yum.conf

Pas de cadeaux !
Cette fois-ci, l’opération s’est déroulée comme prévu. Le fichier m’appartient désormais et je
suis tellement content... que je décide d’en faire cadeau à un autre utilisateur présent sur le
système, par exemple à jmortreux.

$ whoami
kikinovak
$ chown jmortreux:jmortreux yum.conf
chown: modification du propriétaire de « yum.conf »: Opération non permise

Je constate alors avec consternation que Linux est un système pour utilisateurs radins : on ne
peut même pas faire cadeau de ses fichiers à un autre utilisateur.
Essayons de tirer une conclusion de tout cela.
• Un utilisateur normal ne peut pas s’attribuer des fichiers qui appartiennent à quelqu’un d’autre.
• Il ne peut pas non plus attribuer ses propres fichiers à d’autres utilisateurs sur le système.
• L’administrateur root peut attribuer des fichiers à tous les utilisateurs, à sa guise.
• Il peut aussi, inversement, s’attribuer des fichiers appartenant aux autres utilisateurs.
67738-Administration Linux par la pratique-INT.book Page 163 Friday, May 24, 2019 10:38 AM

7
Chercher une aiguille
dans une botte de foin

Un système Linux comme le serveur CentOS que vous avez installé est composé de dizaines voire de
centaines de milliers de fichiers et de répertoires, sans compter les données. Il arrive parfois que l’on
ait à chercher un certain fichier ou un certain répertoire dans tout ce fatras. Et là, comment faire ?
Naviguer manuellement dans tous les répertoires et les sous-répertoires jusqu’à ce que l’on trouve ce
que l’on cherche ? Essayez donc, mais vous n’irez probablement pas bien loin ; autant chercher une
aiguille dans une botte de foin, voire dans un continent de granges. Heureusement pour nous, notre
système Linux comporte toute une panoplie d’outils de recherche aussi simples que puissants.

Chercher l’emplacement d’un fichier dont


on connaît le nom
Partons tout de suite d’un cas de figure très concret. Vous vous rappelez que le fichier qui
contient la configuration de la boucle locale s’appelle ifcfg-lo, mais vous ne vous souvenez
plus de son emplacement exact. Que faire alors ? Essayez ceci, en tant que root :

# find / -name 'ifcfg-lo'


/etc/sysconfig/network-scripts/ifcfg-lo
67738-Administration Linux par la pratique-INT.book Page 164 Friday, May 24, 2019 10:38 AM

Administration Linux par la pratique


164

La commande peut se lire de la sorte :


• « Trouve (find)…
• … en dessous du répertoire racine (/)…
• … tous les fichiers qui s’appellent ifcfg-lo (-name 'ifcfg-lo'). »
Le fichier recherché se trouve dans le répertoire /etc/sysconfig/network-scripts.
Essayons avec un autre nom de fichier, au hasard tout en choisissant bien :

# find / -name '.bashrc'


/etc/skel/.bashrc
/root/.bashrc
/home/kikinovak/.bashrc
/home/adebuf/.bashrc
/home/jmortreux/.bashrc

J’obtiens pas moins de cinq résultats, situés respectivement dans /etc/skel, dans /root ainsi
que dans les répertoires d’utilisateur respectifs de kikinovak, adebuf et jmortreux.

Limiter la recherche à certains répertoires


Admettons que j’aie une vague idée des bottes de foin dans lesquelles il faut chercher et que je
veuille restreindre mon périmètre de recherche. Je pourrais sommer find d’effectuer sa
recherche en dessous du répertoire /etc :

# find /etc -name '.bashrc'


/etc/skel/.bashrc

Je pourrais faire la même chose pour /home :

# find /home -name '.bashrc'


/home/kikinovak/.bashrc
/home/adebuf/.bashrc
/home/jmortreux/.bashrc

Zone interdite
Pourquoi vaut-il mieux être root pour se lancer dans la recherche d’un fichier de configura-
tion du système ? Essayez donc d’effectuer la recherche suivante en tant que simple utilisateur
et voyez le résultat :

$ find /etc -name 'ifcfg-lo'


find: ‘/etc/grub.d’: Permission non accordée
find: ‘/etc/lvm/archive’: Permission non accordée
find: ‘/etc/lvm/backup’: Permission non accordée
find: ‘/etc/lvm/cache’: Permission non accordée
67738-Administration Linux par la pratique-INT.book Page 165 Friday, May 24, 2019 10:38 AM

Chercher une aiguille dans une botte de foin


165
CHAPITRE 7

find: ‘/etc/polkit-1/rules.d’: Permission non accordée


find: ‘/etc/polkit-1/localauthority’: Permission non accordée
find: ‘/etc/pki/CA/private’: Permission non accordée
find: ‘/etc/pki/rsyslog’: Permission non accordée
/etc/sysconfig/network-scripts/ifcfg-lo
...

Songez à ce que nous avons vu dans le chapitre précédent sur les permissions. Certains réper-
toires de votre système sont à l’abri des regards curieux des simples utilisateurs, ce qui aura
forcément une incidence sur le fonctionnement des outils de recherche. En l’occurrence, la
commande find invoquée en tant que simple utilisateur vous servira si votre recherche porte
effectivement sur le contenu de votre propre répertoire :

$ pwd
/home/kikinovak
$ find . -name '.bashrc'
./.bashrc

Si la syntaxe de cette dernière commande vous laisse perplexe, rappelez-vous que le point
signifie « ici ». Notez que j’aurais aussi bien pu écrire :

$ find /home/kikinovak -name '.bashrc'


/home/kikinovak/.bashrc

Ou encore :

$ find ~ -name '.bashrc'


/home/kikinovak/.bashrc

LE CONSEIL DU CHEF Syntaxe : utiliser les apostrophes


Vous avez remarqué que le nom du fichier recherché figure entre une paire d’apostrophes : '...'. Dans
les exemples que nous venons de voir, l’utilisation des apostrophes n’est pas obligatoire, mais je vous
conseille de prendre de bonnes habitudes et de les utiliser quand même. Nous verrons bientôt des cas de
figure où leur omission produirait des erreurs. En revanche, vous êtes libre d’utiliser des apostrophes ' ou
des guillemets ", cela n’a pas d’importance.

Faire fi des avertissements


Notre précédente recherche en tant que simple utilisateur nous a affiché une multitude
d’avertissements relatifs aux permissions. Or, au beau milieu des accès non accordés, notre
fichier ifcfg-lo a bel et bien été trouvé et affiché comme résultat de recherche valide :

$ find /etc -name 'ifcfg-lo'


find: ‘/etc/grub.d’: Permission non accordée
find: ‘/etc/lvm/archive’: Permission non accordée
67738-Administration Linux par la pratique-INT.book Page 166 Friday, May 24, 2019 10:38 AM

Administration Linux par la pratique


166

find: ‘/etc/lvm/backup’: Permission non accordée


...
/etc/sysconfig/network-scripts/ifcfg-lo
find: ‘/etc/selinux/targeted/active’: Permission non accordée
find: ‘/etc/selinux/final’: Permission non accordée
find: ‘/etc/dhcp’: Permission non accordée
...

Une astuce consiste ici à ne pas afficher les avertissements et les erreurs, en redirigeant ceux-
ci vers le vide-ordures de notre système, si l’on peut dire :

$ find /etc -name 'ifcfg-lo' 2> /dev/null


/etc/sysconfig/network-scripts/ifcfg-lo

Rien ne vous empêche d’opter ainsi pour l’équivalent numérique de la pensée positive. En
revanche, gardez à l’esprit que find vous affichera uniquement les fichiers et les répertoires
auxquels vous avez effectivement accès :

$ find / -name '.bashrc' 2> /dev/null


/etc/skel/.bashrc
/home/kikinovak/.bashrc

Interrompre une recherche


La commande find présente un seul désavantage. Elle n’est pas toujours très rapide. Il peut
arriver que vous souhaitiez interrompre une recherche en cours. Dans ce cas, il suffit
d’appuyer sur Ctrl+C, la combinaison de touches pour interrompre un processus.

Chercher des fichiers dont on ne connaît


pas le nom exact
Il arrive assez souvent d’oublier une partie du nom du fichier recherché. Dans ce cas, il vous
faudra recourir aux caractères de substitution.
Par exemple, vous cherchez un fichier pour modifier la configuration de votre serveur SSH.
Tout ce que vous savez, c’est que son nom commence par ssh et que le tout se situe en des-
sous de /etc. Dans ce cas, il suffit de saisir :

# find /etc -name 'ssh*'


/etc/pam.d/sshd
/etc/systemd/system/multi-user.target.wants/sshd.service
/etc/sysconfig/sshd
/etc/ssh
/etc/ssh/sshd_config
67738-Administration Linux par la pratique-INT.book Page 167 Friday, May 24, 2019 10:38 AM

Chercher une aiguille dans une botte de foin


167
CHAPITRE 7

/etc/ssh/ssh_config
/etc/ssh/ssh_host_rsa_key
/etc/ssh/ssh_host_rsa_key.pub
/etc/ssh/ssh_host_ecdsa_key
/etc/ssh/ssh_host_ecdsa_key.pub
/etc/ssh/ssh_host_ed25519_key
/etc/ssh/ssh_host_ed25519_key.pub
/etc/selinux/targeted/active/modules/100/ssh

Si vous vous rappelez que c’est un fichier dont le nom finit par config et qui se situe en des-
sous de /etc/ssh, vous taperez :

# find /etc/ssh -name '*config'


/etc/ssh/sshd_config
/etc/ssh/ssh_config

Évidemment, vous pouvez combiner les jokers à votre guise.


Par ailleurs, l’option -iname rend la recherche insensible à la casse, c’est-à-dire qu’elle igno-
rera l’utilisation des majuscules et des minuscules dans les noms de fichiers et de répertoires :

# find /etc -iname 'readme'


/etc/grub.d/README
/etc/rc.d/init.d/README
/etc/pki/ca-trust/README
/etc/pki/ca-trust/extracted/README
/etc/pki/ca-trust/extracted/java/README
/etc/pki/ca-trust/extracted/openssl/README
/etc/pki/ca-trust/extracted/pem/README
/etc/pki/ca-trust/source/README

Chercher selon d’autres critères que le nom

Chercher en fonction de la taille


La taille d’un fichier constitue également un critère de recherche. L’exemple suivant nous
affichera par ordre alphabétique tous les programmes dans /usr/bin dont la taille dépasse
cinq cents kilo-octets :

# find /usr/bin -size +500k | sort


/usr/bin/bash
/usr/bin/dgawk
/usr/bin/dwp
/usr/bin/gpg2
...
67738-Administration Linux par la pratique-INT.book Page 168 Friday, May 24, 2019 10:38 AM

Administration Linux par la pratique


168

Appliquer une commande sur les fichiers trouvés


Il se peut que vous vouliez soumettre le résultat de votre recherche à un traitement. Concrète-
ment, imaginez que vous souhaitiez obtenir un listing plus détaillé des fichiers retournés par
notre dernière recherche. Évidemment, vous pourriez très bien invoquer ls -l manuellement
sur chacun des fichiers trouvés, mais ce serait un peu fastidieux. Dans ce cas, il vaut mieux
utiliser l’option -exec de find :

# find /usr/bin -size +500k -exec ls -l {} \;


-rwxr-xr-x. 1 root root 964544 11 avril 02:53 /usr/bin/bash
-rwxr-xr-x. 1 root root 514168 28 juin 2017 /usr/bin/dgawk
-rwxr-xr-x. 1 root root 525272 9 juin 2014 /usr/bin/troff
-rwxr-xr-x. 1 root root 3178120 11 avril 07:38 /usr/bin/dwp
-rwxr-xr-x. 1 root root 910072 11 avril 01:54 /usr/bin/vi
...

La syntaxe de cette option vous paraîtra un peu moins biscornue si vous considérez que la
paire d’accolades {} symbolise « le résultat de la recherche ». Sinon, la dernière opération
s’effectue plus simplement en utilisant xargs, une commande qui sert à « construire et exé-
cuter des lignes de commande à partir de l’entrée standard » (d’après la page de manuel
xargs(1)). Essayez :

# find /usr/bin -size +500k | xargs ls -l


-rwxr-xr-x. 1 root root 964544 11 avril 02:53 /usr/bin/bash
-rwxr-xr-x. 1 root root 514168 28 juin 2017 /usr/bin/dgawk
-rwxr-xr-x. 1 root root 3178120 11 avril 07:38 /usr/bin/dwp
-rwxr-xr-x. 1 root root 749928 5 nov. 2016 /usr/bin/gpg2
...

Chercher par type


Dans l’état actuel des choses, notre plate-forme d’entraînement manque cruellement de
fichiers. À part une série de répertoires du genre test, test1 ou test2 et des fichiers
titi.txt et autres toto.txt, nous n’avons pas grand-chose à nous mettre sous la dent pour
l’instant. Nous allons remédier à cela, en copiant par exemple tout le contenu de /etc dans
notre répertoire d’utilisateur. Nous devons effectuer cette manipulation avec les droits root,
faute de quoi nous aurons quelques problèmes de permissions :

# cp -R /etc /home/kikinovak

Si vous préférez que cela se fasse en mode « bavard », ajoutez l’option -v :

# cp -Rv /etc /home/kikinovak


67738-Administration Linux par la pratique-INT.book Page 169 Friday, May 24, 2019 10:38 AM

Chercher une aiguille dans une botte de foin


169
CHAPITRE 7

Attribuez l’ensemble de cette arborescence à votre utilisateur et redevenez ce dernier :

# chown -R kikinovak:kikinovak /home/kikinovak/etc


# exit

Dans cette arborescence en dessous de ~/etc, nous trouvons essentiellement deux choses :
• des répertoires et des sous-répertoires ;
• des fichiers.
Cherchons tous les répertoires et sous-répertoires dans cette arborescence, sans tenir compte
des fichiers. C’est l’option -type de find qui nous donnera le résultat escompté :

$ find ~/etc -type d

Le résultat de cette recherche dépasse la taille d’un écran et il faut admettre qu’il n’est pas très
éloquent. Essayons d’obtenir un affichage plus détaillé :

$ find ~/etc -type d | xargs ls -ld | less

Chercher selon les droits d’accès


En faisant dérouler la liste, nous constatons que les droits d’accès ne sont pas les mêmes pour
tous les répertoires. Beaucoup sont en rwxr-xr-x (755), mais on trouve aussi des occurrences
de rwxr-x--- (750) et de rwx------ (700).
L’option -perm permet de les isoler :

$ find ~/etc/ -type d -perm 750 | xargs ls -ld | less


...

$ find ~/etc/ -type d -perm 700 | xargs ls -ld | less


...

Cas pratique : attribuer des permissions à un ensemble de fichiers


Admettons maintenant que nous souhaitions définir des droits rwxr-xr-x pour tous les
répertoires contenus dans ~/etc. Combinons le résultat de la recherche précédente avec une
commande chmod :

$ find ~/etc -type d -exec chmod 0755 {} \;

Oui, je sais, on dirait qu’un chat a marché sur le clavier. Réitérez la recherche de répertoires
combinée avec un affichage détaillé des résultats :

$ find ~/etc -type d -exec ls -ld {} \;


67738-Administration Linux par la pratique-INT.book Page 170 Friday, May 24, 2019 10:38 AM

Administration Linux par la pratique


170

Vous constatez qu’à présent tous les répertoires ont des droits d’accès rwxr-xr-x identiques.
Procédons de manière similaire pour les fichiers. Pour les trouver, il faut combiner find avec
l’option -type f :

$ find ~/etc -type f -exec ls -l {} \;

Attribuons-leur à tous une permission rw-r--r-- (644) :

$ find ~/etc -type f -exec chmod 644 {} \;

Jetez un œil rapide au résultat de la commande pour en avoir le cœur net.

ASTUCE Utiliser -exec ou xargs en combinaison avec find ?


Certains remarqueront que la syntaxe avec xargs paraît bien plus simple et se demanderont à juste titre
pourquoi je ne l’utilise pas d’emblée. Tentez l’expérience et vous verrez que vous aurez des problèmes
avec les fichiers et les répertoires dont le nom contient des espaces ou autres caractères spéciaux.

L’exemple que je viens de vous donner n’est abstrait que dans le sens où les données sur les-
quelles nous l’avons appliqué sont à utilité discutable. Il existe cependant des cas de figure sur
lesquels il peut s’appliquer tel quel, notamment dans l’assainissement des droits pour toutes
les données importées à partir de certains périphériques de stockage de masse.

LE SAVIEZ-VOUS ? Périphériques et systèmes de fichiers


Nous verrons plus loin les différents systèmes de fichiers sous Linux. Pour l’instant, sachez que la plupart
des périphériques amovibles comme les disques externes, les clés USB et autres lecteurs MP3 sont for-
matés avec un système de fichiers FAT32.
C’est un système de fichiers rudimentaire, utilisé par les anciens systèmes Windows, mais théoriquement
toujours valable. Il présente le grand avantage (le seul d’ailleurs) d’être géré aussi bien par Microsoft
Windows que par Mac OS X ou Linux. Parmi ses inconvénients (déjà plus nombreux), on trouve l’absence
de gestion des permissions de fichiers. Résultat de l’affaire : lorsque vous importez des fichiers et des
répertoires à partir d’un tel périphérique, vous vous retrouvez avec des rwxrwxrwx partout. Dans ce cas,
une des premières choses à faire, c’est de restituer des droits d’accès un peu plus sains.
On trouve un nombre surprenant de vendeurs de matériel informatique dans le sud de la France qui for-
matent les disques durs externes en NTFS (New Technology File System), un système de fichiers proprié-
taire utilisé par Windows depuis sa version 2000. C’est un peu comme si votre pompiste faisait le plein
de votre mobylette avec du gasoil.

Chercher du texte à l’intérieur d’un fichier


Nous venons de voir un outil efficace et flexible pour retrouver des fichiers dans notre sys-
tème, mais existe-t-il un moyen de retrouver du texte à l’intérieur de ces fichiers ? Oui et c’est
là que grep entre en jeu.
67738-Administration Linux par la pratique-INT.book Page 171 Friday, May 24, 2019 10:38 AM

Chercher une aiguille dans une botte de foin


171
CHAPITRE 7

grep est un filtre qui retrouve des chaînes de caractères, non seulement dans un fichier, mais
aussi dans une arborescence touffue. C’est un outil de recherche puissant et sophistiqué, sur
lequel il serait aisé de rédiger des chapitres aussi complexes que rébarbatifs. Au lieu de cela,
nous allons nous limiter à quelques exemples pratiques utilisables au quotidien.
Pour commencer, affichez le contenu de votre fichier /etc/passwd :

$ cat /etc/passwd

Rappelez-vous que ce fichier contient des renseignements sur tous les utilisateurs du système,
c’est-à-dire l’administrateur root, les utilisateurs système et les utilisateurs « réels ».
Dans un chapitre précédent, je vous ai montré qu’il était possible de filtrer cet affichage, pour
ne visualiser que les lignes qui contiennent une certaine chaîne de caractères, en l’occurrence
bash. Voici ce que nous avions fait :

$ cat /etc/passwd | grep bash


root:x:0:0:root:/root:/bin/bash
kikinovak:x:1000:1000:Kiki Novak:/home/kikinovak:/bin/bash
adebuf:x:1001:1001:Agnès Debuf:/home/adebuf:/bin/bash
jmortreux:x:1002:1002:Jean Mortreux:/home/jmortreux:/bin/bash

Nous pouvons aussi écrire plus simplement :

$ grep bash /etc/passwd


root:x:0:0:root:/root:/bin/bash
kikinovak:x:1000:1000:Kiki Novak:/home/kikinovak:/bin/bash
adebuf:x:1001:1001:Agnès Debuf:/home/adebuf:/bin/bash
jmortreux:x:1002:1002:Jean Mortreux:/home/jmortreux:/bin/bash

Cette dernière commande signifie en français : « affiche-moi toutes les lignes du fichier
/etc/passwd qui contiennent la chaîne de caractères bash. »
Comme -iname pour find, l’option -i rend la recherche insensible à la casse :

$ grep -i jean /etc/passwd


jmortreux:x:1002:1002:Jean Mortreux:/home/jmortreux:/bin/bash

Cette syntaxe fonctionne pour des chaînes de caractères comme pour des mots simples. Dès
que le terme recherché contient des caractères tels que des espaces, nous devons employer des
guillemets :

$ grep "Agnès Debuf" /etc/passwd


adebuf:x:1001:1001:Agnès Debuf:/home/adebuf:/bin/bash
67738-Administration Linux par la pratique-INT.book Page 172 Friday, May 24, 2019 10:38 AM

Administration Linux par la pratique


172

Dans certains cas, il s’avère pratique d’afficher le numéro de la ligne à laquelle se trouve la
chaîne de caractères en question. C’est particulièrement utile pour les fichiers un peu plus
longs et c’est l’option -n qui s’en charge :

$ grep -n "imaps" /etc/services


262:imaps 993/tcp # IMAP over SSL
263:imaps 993/udp # IMAP over SSL

Dans ce dernier exemple, les occurrences de la chaîne de caractères recherchée se situent aux
lignes 262 et 263 du fichier /etc/services.
Suivant le nombre de résultats trouvés, grep peut être une commande extrêmement bavarde.
Heureusement, il existe plusieurs façons d’obtenir un résultat plus lisible. Reprenons donc
notre commande :

$ grep bash /etc/passwd

Au lieu d’afficher toutes les lignes contenant la chaîne de caractères bash, nous allons nous
contenter d’afficher leur nombre :

$ grep -c bash /etc/passwd


4

Cette simple commande m’indique donc combien d’utilisateurs de ma machine utilisent le


shell Bash.

Chercher du texte dans une série de fichiers


La recherche d’une chaîne de caractères peut porter sur plusieurs fichiers à la fois. Vous verrez
cependant que cela pose très vite des problèmes en termes de lisibilité. Pour illustrer ceci,
recherchons la chaîne de caractères PS1 dans tous les fichiers du répertoire /etc. Travaillez en
tant que root pour éviter les problèmes de permissions :

# grep "PS1" /etc/*


grep: /etc/alternatives: est un dossier
grep: /etc/audisp: est un dossier
grep: /etc/audit: est un dossier
grep: /etc/bash_completion.d: est un dossier
/etc/bashrc:if [ "$PS1" ]; then
/etc/bashrc: [ "$PS1" = "\\s-\\v\\\$ " ] && PS1="[\u@\h \W]\\$ "
/etc/bashrc: # if [ "$PS1" ]; then
/etc/bashrc: # PS1="[\u@\h:\l \W]\\$ "
/etc/bashrc: if [ "$PS1" ]; then
grep: /etc/binfmt.d: est un dossier
grep: /etc/chkconfig.d: est un dossier
...
67738-Administration Linux par la pratique-INT.book Page 173 Friday, May 24, 2019 10:38 AM

Chercher une aiguille dans une botte de foin


173
CHAPITRE 7

Le résultat de cette opération ressemble à un succès partiel. L’occurrence de PS1 est bien
détectée dans les fichiers /etc/bashrc et /etc/sudoers, au beau milieu d’une avalanche
d’avertissements. En effet, grep ne peut chercher du texte que dans des fichiers au format
texte… et pas dans des répertoires à proprement parler.
Comme nous l’avons vu précédemment, nous pouvons faire fi des erreurs en les redirigeant
vers /dev/null. Recommençons :

# grep "PS1" /etc/* 2> /dev/null


/etc/bashrc:if [ "$PS1" ]; then
/etc/bashrc: [ "$PS1" = "\\s-\\v\\\$ " ] && PS1="[\u@\h \W]\\$ "
/etc/bashrc: # if [ "$PS1" ]; then
/etc/bashrc: # PS1="[\u@\h:\l \W]\\$ "
/etc/bashrc: if [ "$PS1" ]; then
/etc/sudoers:Defaults env_keep += "MAIL PS1 PS2 QTDIR ..."

Essayons maintenant de chercher la chaîne de caractères TERM dans les fichiers du répertoire /etc :

# grep "TERM" /etc/* 2> /dev/null

Les résultats de la recherche inondent la console et l’ensemble souffre d’un manque de lisibilité.
Dans certains cas, l’abondance des occurrences rend ce genre de requête à peu près inutilisable.
Retentons avec l’option -l, qui nous affiche simplement le nom des fichiers dans lesquels il y
a au moins une occurrence :

# grep -l "TERM" /etc/* 2> /dev/null


/etc/bashrc
/etc/csh.cshrc
/etc/DIR_COLORS
/etc/DIR_COLORS.256color
/etc/DIR_COLORS.lightbgcolor

Maintenant, essayons la même chose avec une approche différente. L’option -maxdepth 1
indique à find de ne pas descendre dans les sous-répertoires pour sa recherche :

# find /etc -maxdepth 1 -type f | xargs grep -l "TERM"


/etc/bashrc
/etc/csh.cshrc
/etc/DIR_COLORS.lightbgcolor
/etc/DIR_COLORS.256color
/etc/DIR_COLORS
67738-Administration Linux par la pratique-INT.book Page 174 Friday, May 24, 2019 10:38 AM

Administration Linux par la pratique


174

Affiner la recherche
Pareillement, il arrive qu’une chaîne de caractères présente de très nombreuses occurrences
dans un fichier, ce qui ne facilite pas exactement la recherche :

$ grep "at" /etc/services

Vous constatez que la chaîne de caractères at semble omniprésente dans ce fichier ; c’est
normal, puisqu’elle fait partie d’un grand nombre de mots de la langue anglaise. Dans ce cas,
nous pouvons peaufiner notre recherche, par exemple en lançant une requête sur toutes les
lignes qui commencent par at :

$ grep "^at" /etc/services


at-rtmp 201/tcp # AppleTalk routing
at-rtmp 201/udp
at-nbp 202/tcp # AppleTalk name binding
at-nbp 202/udp
at-echo 204/tcp # AppleTalk echo
at-echo 204/udp
at-zis 206/tcp # AppleTalk zone information
at-zis 206/udp
...

De façon analogue, je peux également rechercher toutes les lignes qui finissent par une cer-
taine chaîne de caractères, par exemple toutes celles du fichier /etc/services qui comportent
DNS à la fin :

$ grep "DNS$" /etc/services


menandmice-dns 1337/tcp # menandmice DNS
menandmice-dns 1337/udp # menandmice DNS
mdns 5353/tcp # Multicast DNS
mdns 5353/udp # Multicast DNS

Les possibilités de grep sont extrêmement variées. C’est un véritable couteau suisse de la
recherche de chaînes de caractères dans un système de fichiers. Nous nous arrêterons là pour
l’instant. Les applications de grep que nous avons vues jusqu’ici nous permettent déjà de faire
un bon bout de chemin dans la pratique.
67738-Administration Linux par la pratique-INT.book Page 175 Friday, May 24, 2019 10:38 AM

Chercher une aiguille dans une botte de foin


175
CHAPITRE 7

Obtenir des informations sur son matériel


Voyons maintenant une série d’applications pratiques des techniques de filtrage avec la com-
mande lspci, qui liste les périphériques installés dans votre machine.

$ lspci

OUTIL Ajouter la commande lspci au système


La commande lspci ne fait pas partie d’une installation minimale de CentOS. Elle est fournie par le
paquet pciutils :
$ sudo yum install pciutils

Figure 7–1
La commande lspci nous fournit
toute une série de renseignements
sur notre matériel.

Pour extraire des renseignements plus précis dans tout ce flot d’informations, il suffit que je
combine la commande lspci avec grep. Admettons que j’aie juste besoin de me renseigner
sur la carte vidéo de ma machine :

$ lspci | grep -i vga


00:02.0 VGA compatible controller: Intel Corporation 82G33/G31 Express Integrated
Graphics Controller (rev 02)

Il en va de même pour la carte son :

$ lspci | grep -i audio


00:1b.0 Audio device: Intel Corporation NM10/ICH7 Family High Definition Audio
Controller (rev 01)

Et voici la commande pour la carte Ethernet :

$ lspci | grep -i eth


02:00.0 Ethernet controller: Broadcom Corporation NetLink BCM5787 Gigabit Ethernet
PCI Express (rev 02)
67738-Administration Linux par la pratique-INT.book Page 176 Friday, May 24, 2019 10:38 AM

Administration Linux par la pratique


176

Je peux filtrer l’affichage de /proc/cpuinfo pour connaître le nombre de processeurs sur la


machine. Voilà ce que cela donne sur ma station de travail munie d’un processeur Intel
Core i7 :

$ cat /proc/cpuinfo | grep "processor"


processor : 0
processor : 1
processor : 2
processor : 3
processor : 4
processor : 5
processor : 6
processor : 7

L’utilisation de grep ne s’arrête pas là, mais je pense que les exemples présentés vous ont aidé
à en saisir le principe.
67738-Administration Linux par la pratique-INT.book Page 177 Friday, May 24, 2019 10:38 AM

8
Créer et manipuler des liens

Jusqu’ici, notre prise en main du système Linux consistait essentiellement à manipuler des fichiers et
des répertoires. À l’occasion de nos travaux pratiques, peut-être avez-vous remarqué ici ou là, la
présence de fichiers mystérieux qui ne semblent tomber ni dans l’une ni dans l’autre de ces deux
catégories.

Les liens symboliques


Si vous affichez les détails du fichier /bin/sh, vous obtenez ceci :

$ ls -l /bin/sh
lrwxrwxrwx. 1 root root 4 22 juin 07:52 /bin/sh -> bash

Cet OVNI (Objet virtuel non identifié) est un lien ; plus exactement, un lien symbolique.
Dans l’affichage détaillé, il est identifié non pas par un tiret (fichier) ou un d (directory, c’est-
à-dire répertoire), mais par un l comme link, autrement dit un lien.
Notez la petite flèche -> qui pointe vers un autre nom de fichier, en l’occurrence bash. Il faut
donc lire : /bin/sh est un lien symbolique qui pointe vers le fichier bash situé dans le même
répertoire.
67738-Administration Linux par la pratique-INT.book Page 178 Friday, May 24, 2019 10:38 AM

Administration Linux par la pratique


178

Créer des liens symboliques


Le meilleur moyen de maîtriser un nouvel objet, c’est de faire comme les enfants : jouer avec.
Dans votre répertoire d’utilisateur, créez un répertoire test_liens, placez-vous dedans, puis
créez un fichier texte.txt avec un peu de contenu (bidon, certes) :

$ mkdir test_liens
$ cd test_liens/
$ cat > texte.txt << EOF
> Première ligne
> Deuxième ligne
> Troisième ligne
> EOF

Maintenant, créons un lien symbolique vers ce fichier :

$ ln -s texte.txt lien.txt

Voyons le résultat de cette opération :

$ ls -l
total 4
lrwxrwxrwx. 1 ... 9 16 sept. 09:40 lien.txt -> texte.txt
-rw-rw-r--. 1 ... 49 16 sept. 09:40 texte.txt

Arrêtons-nous là et essayons d’établir un état des lieux sommaire :


• les permissions rwxrwxrwx semblent pour le moins insolites ;
• les deux fichiers n’ont pas la même taille : 9 octets pour l’un, 49 octets pour l’autre ;
• dans la console, lien.txt apparaît non pas en blanc sur fond noir, mais en turquoise.
Nous pouvons déjà expliquer les différences de taille. Le fichier texte.txt comprend en gros
49 caractères, si l’on additionne y compris les retours chariot. Quant à lien.txt, il pointe
vers « texte.txt », c’est-à-dire vers un nom de fichier comptant exactement 9 caractères.
Pouvons-nous afficher le contenu de lien.txt ?

$ cat lien.txt
Première ligne
Deuxième ligne
Troisième ligne

Vu sous cet angle, le contenu des deux fichiers est identique. Voyons si nous pouvons ajouter
du contenu :

$ echo "Quatrième ligne" >> lien.txt


$ cat lien.txt
Première ligne
Deuxième ligne
Troisième ligne
Quatrième ligne
67738-Administration Linux par la pratique-INT.book Page 179 Friday, May 24, 2019 10:38 AM

Créer et manipuler des liens


179
CHAPITRE 8

Regardons à nouveau le listing détaillé :

$ ls -l
total 4
lrwxrwxrwx. 1 ... 9 16 sept. 09:40 lien.txt -> texte.txt
-rw-rw-r--. 1 ... 66 16 sept. 09:50 texte.txt

Nous constatons que, depuis que nous avons ajouté du texte à lien.txt, la taille de ce dernier
n’a pas changé. En revanche, c’est bien texte.txt qui compte désormais 66 au lieu de
49 octets.

À quoi servent les liens symboliques ?


Les liens symboliques sont omniprésents sur un système Linux. Notre installation minimale
en compte déjà plus de 9 000 (notez que l’argument de l’option -type est bien un L
minuscule) :

# find / -type l 2> /dev/null | wc -l


9030

APPLICATION Commande wc
Non, ce n’est pas ce que vous pensez. La commande wc (word count) sert à compter les octets, les mots
ou les lignes d’un fichier. Avec l’option -l, elle affiche le nombre de sauts de ligne. Reportez-vous à sa
page man pour plus d’informations.

Exemple n°1 : awk


Dans le chapitre sur la gestion des utilisateurs, nous avons utilisé awk pour extraire des infor-
mations du fichier /etc/passwd. AWK est un langage de programmation et il en existe plu-
sieurs implémentations.

$ ls -l /usr/bin/awk
lrwxrwxrwx. 1 root root 4 22 juin 07:52 /usr/bin/awk -> gawk

Sur notre système, /usr/bin/awk pointe vers gawk, ce qui signifie que lorsque nous invoquons
awk, c’est en réalité la commande gawk qui est utilisée sous le capot. Plus précisément, on dira
que GNU AWK (gawk) est l’implémentation de AWK sur notre système.

Exemple n°2 : ex
L’éditeur ex (raccourci pour EXtended) a été utilisé sur les systèmes Unix depuis la fin des
années 1970. La commande /usr/bin/ex existe encore sur notre système Linux, sous forme
de lien symbolique qui pointe vers l’éditeur Vi :
67738-Administration Linux par la pratique-INT.book Page 180 Friday, May 24, 2019 10:38 AM

Administration Linux par la pratique


180

$ ls -l /usr/bin/ex
lrwxrwxrwx. 1 root root 2 22 juin 07:53 /usr/bin/ex -> vi

On peut y voir une forme d’hommage envers la tradition. Plutôt que de rendre une com-
mande obsolète, on va la faire pointer vers une implémentation plus récente.

Exemple n°3 : gpg


Le lien symbolique utilisé pour l’outil de chiffrement gpg (GNU Privacy Guard) répond pro-
bablement à une logique similaire :

$ ls -l /usr/bin/gpg
lrwxrwxrwx. 1 root root 4 22 juin 07:54 /usr/bin/gpg -> gpg2

Conclusion
Dans tous ces cas de figure, les liens symboliques servent manifestement à accéder à un pro-
gramme (gawk, vi, gpg2) avec un nom habituel (awk, ex, gpg).

Lequel est le vrai ?


Un lien symbolique n’est pas seulement susceptible de pointer vers un fichier, mais également
vers un répertoire. Replacez-vous dans le répertoire ~/test_liens en tant qu’utilisateur et
saisissez les commandes suivantes :

$ ln -s /tmp/ depot
$ ls -l
total 4
lrwxrwxrwx. 1 ... 5 17 sept. 08:56 depot -> /tmp/
lrwxrwxrwx. 1 ... 9 16 sept. 09:40 lien.txt -> texte.txt
-rw-rw-r--. 1 ... 66 16 sept. 09:50 texte.txt

Nous l’avons dit plus haut : /tmp est un répertoire temporaire, comme son nom le suggère.
Affichez le contenu de ce répertoire :

$ ls /tmp/
systemd-private-6eab...-chronyd.service-wBmOBA
systemd-private-80a2...-chronyd.service-H7mM7j
systemd-private-8b6e...-chronyd.service-R2I0Pf

Sans rentrer dans les détails, notons que ces données temporaires appartiennent à chronyd,
un service qui se charge d’ajuster l’horloge système en consultant des sources de temps
externes.
67738-Administration Linux par la pratique-INT.book Page 181 Friday, May 24, 2019 10:38 AM

Créer et manipuler des liens


181
CHAPITRE 8

Et maintenant, voyez ce que contient le répertoire depot :

$ ls depot/
systemd-private-6eab...-chronyd.service-wBmOBA
systemd-private-80a2...-chronyd.service-H7mM7j
systemd-private-8b6e...-chronyd.service-R2I0Pf

Il ne s’agit pas d’une copie du contenu de /tmp, mais bel et bien des mêmes données. Autre-
ment dit, le lien symbolique depot fonctionne comme un représentant à part entière du
répertoire /tmp vers lequel il pointe.

Casser un lien symbolique


Que se passe-t-il maintenant si la cible d’un lien symbolique vient à disparaître ? Nous
n’allons pas effacer notre répertoire /tmp, ce serait une très mauvaise idée, mais nous pouvons
tenter l’expérience avec le fichier texte.txt, la cible du lien symbolique lien.txt.
Figure 8–1
Ici, nous cassons un lien
symbolique en supprimant sa cible.

Un lien dont la cible a disparu est un « lien cassé » (broken link). Dans notre terminal, le lien
cassé apparaît en rouge sur fond noir, un choix de couleur qui suggère que quelque chose ne
tourne pas rond.
Nous pourrions très bien recréer la cible moyennant un simple touch. Le fichier serait certes
vide, son ancien contenu serait perdu, mais le lien « saurait » que sa cible existe et ne
rouspéterait plus.
Figure 8–2
Pour réparer un lien cassé, il suffit
de recréer sa cible.
67738-Administration Linux par la pratique-INT.book Page 182 Friday, May 24, 2019 10:38 AM

Administration Linux par la pratique


182

Effacer un lien symbolique


Nous avons vu comment il est possible d’associer des fichiers et des répertoires à des liens sym-
boliques. Voyons maintenant comment lever cette association, c’est-à-dire effacer des liens :

$ ls -l
total 4
lrwxrwxrwx. 1 ... 5 17 sept. 08:56 depot -> /tmp/
lrwxrwxrwx. 1 ... 9 16 sept. 09:40 lien.txt -> texte.txt
-rw-rw-r--. 1 ... 66 17 sept. 09:17 texte.txt
$ rm lien.txt
$ ls -l
total 4
lrwxrwxrwx. 1 ... 5 17 sept. 08:56 depot -> /tmp/
-rw-rw-r--. 1 ... 66 17 sept. 09:17 texte.txt

Ce qu’il faut retenir ici, c’est que la suppression d’un lien symbolique par le biais de la
commande rm n’entraîne en aucun cas la suppression de la cible. En effet, texte.txt est
toujours là.
Il en va de même pour un lien symbolique qui pointe vers un répertoire :

$ ls -l
total 4
lrwxrwxrwx. 1 ... 5 17 sept. 08:56 depot -> /tmp/
-rw-rw-r--. 1 ... 66 17 sept. 09:17 texte.txt
$ rm depot
$ ls -ld /tmp/
drwxrwxrwt. 10 root root 4096 17 sept. 09:50 /tmp/

Ici, nous utilisons bien un simple rm, car depot n’est pas un répertoire à proprement parler.
C’est un lien symbolique pointant vers un répertoire. Vous ne pourrez donc pas utiliser rmdir
pour supprimer ce genre de lien.

COMPLÉTION AUTOMATIQUE Gare à la barre oblique !


Méfiez-vous de la complétion automatique lorsque vous supprimez un lien symbolique qui pointe vers un
répertoire. Notez bien que, dans l’exemple, j’ai écrit rm depot et non pas rm depot/ avec la barre oblique
finale. Dans le cas contraire, je me serais retrouvé confronté à un problème quelque peu ubuesque :
$ ls -l
total 4
lrwxrwxrwx. 1 ... 5 17 sept. 11:15 depot -> /tmp/
-rw-rw-r--. 1 ... 66 17 sept. 09:17 texte.txt
$ rm depot/
rm: impossible de supprimer « depot/ »: est un dossier
$ rmdir depot/
rmdir: échec de suppression de « depot »: N'est pas un dossier
67738-Administration Linux par la pratique-INT.book Page 183 Friday, May 24, 2019 10:38 AM

Créer et manipuler des liens


183
CHAPITRE 8

Les liens physiques

Un nom de fichier alternatif


Il existe une autre catégorie de liens : les liens physiques. La désignation de « lien » peut
prêter à confusion dans ce cas ; il vaut mieux y voir quelque chose de l’ordre d’un « nom de
fichier alternatif ». En principe, un lien symbolique n’est rien d’autre qu’un petit fichier qui
pointe vers un autre fichier, nous l’avons vu. La suppression du lien symbolique ne change
rien au fichier original en soi, qui reste intact. Un lien physique, en revanche, constitue une
référence supplémentaire à un emplacement du système de fichiers. C’est bien un seul et
même fichier, mais accessible à partir d’un autre endroit et sous un autre nom. Un exemple
éclaircira la nuance.
Videz le répertoire ~/test_liens et (re)créez-y un fichier texte.txt, comme pour le premier
cas de figure :

$ cat > texte.txt << EOF


> Première ligne
> Deuxième ligne
> Troisième ligne
> EOF

À présent, créez un lien physique vers texte.txt. C’est très simple, il suffit d’omettre
l’option -s de la commande ln :

$ ln texte.txt lien.txt
$ ls -l
total 8
-rw-rw-r--. 2 kikinovak kikinovak 49 17 sept. 11:30 lien.txt
-rw-rw-r--. 2 kikinovak kikinovak 49 17 sept. 11:30 texte.txt

Là aussi, arrêtons-nous un instant pour apprécier le résultat :


• le lien physique n’apparaît pas en turquoise dans le terminal, mais en blanc (ou noir) sur
fond bleu ;
• ses permissions sont identiques à celles du fichier cible ;
• apparemment, il a également la même taille que la cible : 49 octets dans l’exemple.
Le moment est venu de vous dévoiler solennellement la signification de la deuxième colonne
du listing détaillé. Dans l’exemple, notez le 2 dans la deuxième colonne après les droits
d’accès. Il s’agit tout simplement du nombre de liens physiques du fichier.
67738-Administration Linux par la pratique-INT.book Page 184 Friday, May 24, 2019 10:38 AM

Administration Linux par la pratique


184

Un lien physique a la vie dure


Vous avez du mal à croire qu’un lien physique se comporte en tous points comme le fichier
vers lequel il pointe ? Pour en avoir le cœur net, il suffit de supprimer l’original de l’exemple et
de voir ce qui se passe :

$ ls
lien.txt texte.txt
$ rm texte.txt
$ ls -l
total 4
-rw-rw-r--. 1 kikinovak kikinovak 49 17 sept. 11:30 lien.txt
$ cat lien.txt
Première ligne
Deuxième ligne
Troisième ligne

Ici, nous avons supprimé texte.txt, mais le fichier a en quelque sorte bénéficié d’une
seconde vie, sous forme du lien physique lien.txt. Pour nous débarrasser une bonne fois
pour toutes du fichier et de son contenu, il faudra donc également supprimer lien.txt.

EN SAVOIR PLUS Hard ou soft ?


Les liens symboliques et physiques sont souvent désignés par les termes anglais soft link et hard link.
Notez une restriction importante concernant la deuxième catégorie : un lien physique doit obligatoire-
ment pointer vers un fichier dans le même système de fichiers, c’est-à-dire que la cible ne peut pas se
situer sur une autre partition que le lien. Si vous ne comprenez pas cette dernière précision, ce n’est pas
bien grave.
67738-Administration Linux par la pratique-INT.book Page 185 Friday, May 24, 2019 10:38 AM

9
Gérer les processus

La gestion des processus de Linux vous permet, par exemple, d’héberger des sites web, d’envoyer et de
recevoir du courrier pour plusieurs domaines, de faire tourner un serveur de messagerie instantanée
en même temps qu’une webradio, le tout sur une seule et même machine. Chaque programme que
vous démarrez devient un processus. Si vous démarrez le même programme plusieurs fois, il en
résultera une série de processus.

Linux, un système multitâche


Linux est un système multitâche, ce qui veut dire que vous pouvez exécuter des programmes
en parallèle, comme bon vous semble. Chaque programme occupe une certaine quantité de
ressources, notamment de mémoire vive (RAM) et de processeur (CPU). Par conséquent, un
nombre croissant de processus a pour effet de ralentir le système.
Tous ces programmes ne tournent pas vraiment en même temps, à proprement parler.
Chaque processus reçoit un peu de temps de calcul, à tour de rôle, et cette répartition des res-
sources s’effectue tellement rapidement que l’utilisateur humain a l’illusion que tout se passe
simultanément. Tous les processus sont soigneusement séparés les uns des autres, ce qui
signifie qu’une application mal codée qui « plante » n’entraînera pas le reste du système dans
sa déconfiture.
Tous les systèmes Linux contiennent une série d’outils pour surveiller et gérer les processus.
Nous allons en présenter quelques-uns en détail, sous forme d’un atelier pratique agrémenté
d’un zeste de théorie.
67738-Administration Linux par la pratique-INT.book Page 186 Friday, May 24, 2019 10:38 AM

Administration Linux par la pratique


186

Surveiller un processus : ps
Connectez-vous à votre console Linux – directement ou à distance via SSH – et invoquez la
commande suivante :

$ ps

Elle vous retourne un petit bilan qui ressemble au résultat ci-après. Ne vous inquiétez pas si
les numéros ne sont pas les mêmes que sur ma machine. C’est normal.

PID TTY TIME CMD


1263 pts/0 00:00:00 bash
8412 pts/0 00:00:00 ps

Les plus curieux d’entre vous ont probablement déjà parcouru la page du manuel en ligne de
ps(1) pour avoir une idée de ce qu’ils viennent de faire. Et ils ont trouvé la définition suivante :

ps - Afficher l'état des processus en cours.

La commande ps présente en quelque sorte un cliché instantané des processus en cours.


Invoquée sans autre argument, elle se limite aux processus de la console active. Ce qui nous
intéresse ici, ce sont les deux colonnes PID et CMD. PID (Process IDentifier) est un nombre
unique qui identifie un processus sans ambiguïté. Quant à la colonne CMD (Command), elle
correspond à la commande qui a déclenché le processus.
La colonne TTY nous indique le terminal à partir duquel le processus a été lancé. Dans
l’exemple précédent, pts/0 correspond à mon terminal graphique, étant donné que je me suis
connecté à distance depuis mon ordinateur portable. Si j’avais invoqué la commande ps direc-
tement dans la première console, le résultat aurait ressemblé à quelque chose comme ceci :

PID TTY TIME CMD


1263 tty1 00:00:00 bash
8412 tty1 00:00:00 ps

Enfin, TIME indique le temps processeur utilisé par le processus, ce qu’il ne faut pas confondre
avec le temps réel écoulé depuis le lancement du processus. L’information 00:00:00 signifie
tout simplement que bash et ps utilisent tout au plus une fraction de seconde de temps CPU
depuis leur lancement, ce qui est tout à fait normal.
Dans notre exemple, le shell Bash « tourne » avec le PID 1 263. La commande ps – qui est
également un processus – affiche le PID 8 412. Tous les processus en cours ont reçu un iden-
tifiant unique se situant entre 1 et 32 767. Chaque nouveau processus se voit attribuer le pro-
chain PID disponible. Lorsqu’un processus est terminé d’une façon ou d’une autre (voir ci-
après), il libère son PID. Une fois que le PID maximum est atteint, le prochain nouveau pro-
cessus sera doté du plus petit identifiant disponible.
67738-Administration Linux par la pratique-INT.book Page 187 Friday, May 24, 2019 10:38 AM

Gérer les processus


187
CHAPITRE 9

Afficher les processus en cours


Maintenant que nous avons compris le principe, essayons d’aller un peu plus loin. La
commande ps accepte un certain nombre d’arguments, dont voici les plus fréquemment uti-
lisés. Notez qu’ils sont invoqués sans le tiret initial :
• x affiche l’ensemble de vos propres processus (ou process) en cours.
• a ajoute les processus de tous les autres utilisateurs à la liste.
• u fournit des renseignements supplémentaires comme le propriétaire du processus (USER),
l’utilisation de processeur (%CPU) ou de la mémoire (%MEM).

SYNTAXE Avec ou sans tiret ?


La syntaxe des arguments de la commande ps peut prêter à confusion, selon la présence ou l’absence du
tiret initial. Retenez simplement que ps a ne signifie pas la même chose que ps -a. Les curieux consul-
teront la page man 1 ps pour les détails.

L’option x affiche l’ensemble de mes processus dans toutes les consoles, ainsi que ceux qui ne
sont rattachés à aucune console. Dans l’exemple qui suit, je me suis connecté à distance
(sshd) à ma machine :

$ ps x
PID TTY STAT TIME COMMAND
1245 ? S 0:00 sshd: kikinovak@pts/0
1246 pts/0 Ss 0:00 -bash
1266 pts/0 R+ 0:00 ps x

La sortie de ps aux est assez longue. Même sur une installation minimale, le système lance
près de 90 processus, dont trois appartiennent à l’utilisateur connecté.
Figure 9–1
Notre système réduit affiche déjà
une quantité significative de
processus.
67738-Administration Linux par la pratique-INT.book Page 188 Friday, May 24, 2019 10:38 AM

Administration Linux par la pratique


188

Compter les processus


Vous vous demandez peut-être comment j’ai fait pour compter tous ces processus. C’est
l’occasion de vous rappeler la philosophie Unix : combiner des outils qui ne font qu’une seule
chose. Pour avoir la liste complète de tous les processus en cours sur la machine, je dois uti-
liser la commande suivante :

$ ps ax

Le nombre de processus correspond à peu de choses près au nombre de lignes renvoyées par la
commande précédente. La ligne d’en-têtes des colonnes ne correspond pas à un processus ;
supprimons-la de l’affichage en utilisant l’option -v (ou --invert-match) de grep :

$ ps ax | grep -v COMMAND

À partir de là, je peux donc reprendre ma commande et la combiner avec wc pour obtenir le
nombre de lignes, c’est-à-dire le nombre de processus en cours :

$ ps ax | grep -v COMMAND | wc -l
89

Nous obtenons un total de 89 processus. De la même manière, si je veux savoir combien de


ces processus m’appartiennent, il suffit que j’invoque seulement l’option x. Si le résultat vous
surprend, n’oubliez pas que wc est un processus comme les autres :

$ ps x | grep -v COMMAND | wc -l
4

Envoyer un signal à un processus : kill


Maintenant, tentez l’expérience suivante :
1 Ouvrez une deuxième console avec Alt+F2 ou en initiant une autre connexion distante
avec SSH dans une deuxième fenêtre.
2 Dans la deuxième console, lancez la commande top, qui vous affiche « à chaud » l’état des
processus en cours. Nous la verrons en détail un peu plus loin. Notez que l’affichage de
top est actualisé toutes les deux secondes.
3 Revenez dans la première console avec Alt+F1 et affichez vos processus en cours avec ps x.
Notez le PID de la commande top. Sur ma machine, c’est 1 318 ; sur la vôtre, ce sera pro-
bablement un autre identifiant.
4 Invoquez la commande kill suivie du PID que vous venez de noter : kill 1318 ici dans
mon cas.
5 Notez les conséquences de cette commande dans la deuxième console. L’affichage de top
s’est arrêté et nous retrouvons l’invite de commande.
67738-Administration Linux par la pratique-INT.book Page 189 Friday, May 24, 2019 10:38 AM

Gérer les processus


189
CHAPITRE 9

Est-ce que nous aurions « tué » la commande top, comme le suggère le nom de la
commande ? kill est en effet susceptible de se révéler un véritable assassin et de terminer des
processus avec l’équivalent numérique d’un coup de massue sur la tête. Néanmoins, il a pro-
cédé autrement ici.

CLIN D’ŒIL Gentils ou méchants tueurs ?


C’est un peu comme dans la vraie vie, où vous avez les gentils tueurs et les méchants tueurs. Les gentils
tueurs vous laissent le temps de mettre de l’ordre dans vos affaires, de rédiger votre testament, de vous
raser, d’arranger votre nœud de cravate, etc. Les méchants tueurs ne posent pas de questions et vous
balancent directement dans le ravin, rasé ou pas.

kill invoqué sans arguments est un gentil tueur, c’est-à-dire qu’il laisse au processus le temps de
s’arrêter proprement, de ranger à leur place toutes les données en cours d’utilisation. En revanche,
si on le lui précise explicitement, kill montre les crocs et devient impitoyable, ce qui est parfois
nécessaire face à un processus qui a décidé de faire des siennes et de bloquer la machine.
Chose plus importante encore, kill n’est pas qu’un tueur, comme son nom le laisserait croire.
Il sait faire bien plus que cela. Pour en avoir la certitude, l’option -l vous affichera la liste
complète de ses compétences :

$ kill -l
1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP
6) SIGABRT 7) SIGBUS 8) SIGFPE 9) SIGKILL 10) SIGUSR1
11) SIGSEGV 12) SIGUSR2 13) SIGPIPE 14) SIGALRM 15) SIGTERM
...

Non, nous n’allons pas examiner les soixante-quatre options en détail. Nous avons juste com-
pris que kill permettait d’envoyer toute une série de signaux à des processus et nous allons
en tester quelques-uns.

Arrêter et relancer un processus


Fermez la deuxième console – ou la deuxième session SSH – et affichez l’ensemble de vos
processus en cours, en notant leur PID :

$ ps x
PID TTY STAT TIME COMMAND
1926 ? S 0:00 sshd: kikinovak@pts/0
1927 pts/0 Ss 0:00 -bash
1944 pts/0 R+ 0:00 ps x
67738-Administration Linux par la pratique-INT.book Page 190 Friday, May 24, 2019 10:38 AM

Administration Linux par la pratique


190

Maintenant, ouvrez une deuxième console – ou initiez une deuxième session distante avec
SSH – et réitérez la commande depuis la première console :

$ ps x
PID TTY STAT TIME COMMAND
1926 ? S 0:00 sshd: kikinovak@pts/0
1927 pts/0 Ss 0:00 -bash
1963 ? S 0:00 sshd: kikinovak@pts/2
1964 pts/2 Ss+ 0:00 -bash
1981 pts/0 R+ 0:00 ps x

Notez le PID du shell Bash de la deuxième console (1 964 sur ma machine) et envoyez le
signal suivant au processus en cours :

$ kill -STOP 1964

Maintenant, basculez vers la deuxième console. Vous ne voyez rien ? Essayez donc de saisir
n’importe quelle commande. Le curseur clignote encore, mais la console ne réagit plus. C’est
normal : vous venez de l’arrêter en lui envoyant un SIGSTOP. Pour la relancer, rien n’est plus
simple. Envoyez un SIGCONT au processus interrompu :

$ kill -CONT 1964

À présent, vous pouvez continuer à utiliser votre shell normalement. Réinvoquez kill -l et
repérez SIGSTOP et SIGCONT dans la liste des signaux. Vous voyez qu’ils sont affublés respecti-
vement des identifiants de signal 19 et 18. Nous aurions également pu invoquer les deux der-
nières commandes comme ceci :

$ kill -19 1964


$ kill -18 1964

Terminer et tuer un processus


Dans la panoplie des signaux de kill, deux nous intéressent particulièrement : SIGTERM et
SIGKILL. Le premier est une manière « sympathique » de terminer un processus. Lorsque
vous lancez la commande top et que vous l’interrompez avec la touche Q (comme quit), c’est
un SIGTERM que vous envoyez. Nous aurions pu nous y prendre comme ceci pour arrêter top
proprement depuis une deuxième console :

$ kill -TERM 1318

Un coup d’œil sur la page de manuel de kill nous apprend que c’est TERM qui est utilisé si
aucun signal n’est spécifié. Utilisez cette méthode si vous souhaitez terminer un programme
dans les règles de l’art.
67738-Administration Linux par la pratique-INT.book Page 191 Friday, May 24, 2019 10:38 AM

Gérer les processus


191
CHAPITRE 9

Il arrive parfois que cela ne soit pas possible. Personne n’est parfait et les programmeurs
n’échappent pas à cette règle. Même dans le monde GNU/Linux, il arrive qu’un programme
fasse des siennes et plante. Si nous n’avons pas d’application mal codée sous la main, nous
pouvons du moins simuler l’arrêt d’un processus récalcitrant :
1 Affichez les processus de votre console avec ps x.
2 Ouvrez une deuxième console locale ou distante.
3 Identifiez le processus bash de cette deuxième console.
4 Envoyez un kill -TERM à ce processus.
5 Invoquez à nouveau ps x depuis la première console.
6 Que constatez-vous ?
Sous Linux, une application – ou un processus – qui refuse d’obtempérer ne vous obligera pas
à redémarrer la machine à coups de pied. Avant d’en venir à ces extrémités, il suffit de lui
envoyer un petit SIGKILL et le tour est joué. Concrètement, si nous reprenons notre exemple :

$ kill -KILL 1301

Ou alors :

$ kill -9 1301

Cette fois-ci, le processus bash a bien été arrêté (et même « tué » à proprement parler), ce qui
a entraîné la fermeture de la session.

S’adresser à un processus par son nom : killall


L’utilisation de la commande kill nécessite dans tous les cas de connaître le PID du processus
auquel vous vous adressez. Si cette démarche vous paraît fastidieuse, la commande killall
constitue une alternative plus confortable. killall appelle un chat un chat, si l’on peut dire, et
permet de gérer les processus en utilisant le nom du programme plutôt que son PID.

OUTIL Installer killall


La commande killall est contenue dans le paquet psmisc, qui ne fait pas partie d’une installation
minimale :
$ sudo yum install psmisc

Pour tester killall, reprenez l’exemple cité plus haut. Ouvrez une console, affichez
l’ensemble des processus avec ps x, ouvrez une deuxième console (locale ou distante), lancez
la commande top, revenez dans la première console et invoquez la commande suivante pour
terminer top dans les règles de l’art :

$ killall top
67738-Administration Linux par la pratique-INT.book Page 192 Friday, May 24, 2019 10:38 AM

Administration Linux par la pratique


192

Maintenant, relancez top dans la deuxième console et « tuez » l’application depuis la pre-
mière console :

$ killall -KILL top

Les signaux à fournir en argument sont les mêmes que pour kill et vous pouvez aussi utiliser
la syntaxe numérique :

$ killall -9 top

Utiliser kill ou killall ?


La principale différence entre kill et killall réside dans le fait que killall s’adresse à tous
les processus qui portent le nom fourni en argument. Un exemple illustrera ceci. Lancez trois
ou quatre consoles locales ou distantes. Chacune de ces consoles initie un shell Bash :

$ ps x | grep -v grep | grep bash


1621 pts/0 Ss 0:00 -bash
1645 pts/1 Ss+ 0:00 -bash
1669 pts/2 Ss+ 0:00 -bash
1693 pts/3 Ss+ 0:00 -bash

Maintenant, essayez ceci :

$ killall -9 bash

Toutes les sessions ont été fermées abruptement. Nous pouvons en conclure que killall
s’adresse à toutes les instances d’un processus qui portent le même nom. Au cas où l’on sou-
haite s’adresser à un processus individuellement, il faudra recourir à kill.

Les processus dans tous leurs états


Vous avez sans doute remarqué la présence d’une colonne STAT supplémentaire dans l’affi-
chage de ps avec certains arguments. Il s’agit de l’état (status) du processus en question. Voici
quelques états que l’on peut rencontrer :
• S (sleeping) désigne un processus endormi.
• R (running) signifie que le processus est en cours d’exécution.
• Z (zombie) concerne les processus terminés dont le processus parent n’a pas pu lire le code
retour.
• SW (swap) veut dire que le processus est non seulement endormi, mais qu’il a été délocalisé
dans la mémoire d’échange. Rappelez-vous, il s’agit d’une portion du disque dur spéciale-
ment réservée pour les cas de figure où la mémoire vive ne suffit pas pour faire tourner
correctement tous les processus actifs.
67738-Administration Linux par la pratique-INT.book Page 193 Friday, May 24, 2019 10:38 AM

Gérer les processus


193
CHAPITRE 9

Un lien de parenté : pstree


Nous venons d’évoquer le terme de « processus parent ». Sachez que les processus d’un sys-
tème Linux s’organisent de façon hiérarchique. Le premier programme lancé au démarrage
de votre machine est init (systemd). Arrêtons-nous un instant et voyons ce qui se passe
lorsque vous allumez votre serveur (ne vous inquiétez pas si vous ne comprenez pas tout, nous
aurons l’occasion de revenir dessus) :
1 Le matériel de la machine est initialisé par le BIOS.
2 Le secteur de démarrage (MBR ou Master Boot Record) est chargé. Il exécute le chargeur
de démarrage (bootloader, en l’occurrence GRUB).
3 Le chargeur de démarrage lance le noyau (kernel).
4 Le noyau initialise les périphériques.
5 Il charge les modules (ou pilotes ou drivers) correspondants.
6 Il monte le système de fichiers racine.
7 Il exécute init (systemd), le programme responsable du démarrage de tous les processus
utilisateurs, avec le PID 1. Sur notre système, il se présente sous la forme d’un lien sym-
bolique /sbin/init qui pointe vers /lib/systemd/systemd.
8 À son tour, init (systemd) exécute un ensemble de scripts.
9 Le serveur est en état de marche.
La commande pstree – également fournie par le paquet psmisc – affiche l’organisation hié-
rarchique de tous les processus en cours sur votre système :

$ pstree
systemd─┬─NetworkManager─┬─dhclient
│ └─2*[{NetworkManager}]
├─agetty
├─auditd───{auditd}
├─chronyd
├─crond
├─dbus-daemon───{dbus-daemon}
├─firewalld───{firewalld}
├─irqbalance
├─lvmetad
├─master─┬─pickup
│ └─qmgr
├─polkitd───5*[{polkitd}]
├─rsyslogd───2*[{rsyslogd}]
├─sshd───sshd───sshd───bash───pstree
├─systemd-journal
├─systemd-logind
├─systemd-udevd
└─tuned───4*[{tuned}]
67738-Administration Linux par la pratique-INT.book Page 194 Friday, May 24, 2019 10:38 AM

Administration Linux par la pratique


194

Notez que, en haut à gauche, vous retrouvez init (systemd), le père de tous les processus.
Une autre façon de prendre en compte la hiérarchie des processus consiste à utiliser ps avec
les arguments nécessaires :

$ ps axfl
F UID PID PPID PRI NI VSZ RSS WCHAN STAT TTY ...
1 0 2 0 20 0 0 0 kthrea S ? ...
1 0 3 2 20 0 0 0 smpboo S ? ...
1 0 5 2 0 -20 0 0 worker S< ? ...

Figure 9–2
L’organisation hiérarchique des
processus mise en évidence par ps.

Ici, c’est l’option l (lettre L) qui se charge d’expliciter les liens de famille entre les différents
processus. Juste à côté de la colonne PID, la colonne PPID (Parent Process Identifier) affiche les
identifiants respectifs des processus parents. Notez que le processus init (systemd) avec le
PID 1 n’est le fils de personne. Son PPID est égal à 0.

Massacre familial
Vous pouvez tenter une petite expérience – similaire à ce que nous avons fait un peu plus
haut – pour mieux cerner la notion de filiation entre processus.
1 Ouvrez une console et affichez l’ensemble des processus avec ps x.
2 Ouvrez une deuxième console locale ou distante et lancez la commande top.
3 Revenez dans la première console et affichez la hiérarchie des processus avec ps axfl.
Voici ce que j’obtiens sur ma machine :

$ ps axfl
...
... 0:00 /usr/sbin/sshd -D
... 0:00 \_ sshd: kikinovak [priv]
... 0:00 | \_ sshd: kikinovak@pts/0
... 0:00 | \_ -bash
... 0:00 | \_ ps axfl
... 0:00 \_ sshd: kikinovak [priv]
... 0:00 \_ sshd: kikinovak@pts/1
... 0:00 \_ -bash
... 0:00 \_ top
...
67738-Administration Linux par la pratique-INT.book Page 195 Friday, May 24, 2019 10:38 AM

Gérer les processus


195
CHAPITRE 9

Dans la hiérarchie des processus, bash avec le PID 2026 (sur ma machine) est juste au-dessus
de top. Je décide de tuer ce processus :

$ kill -9 2026

J’affiche l’ensemble de mes processus dans la première console. Comme il fallait s’y attendre,
la dernière commande kill a engendré un petit massacre familial, car en tuant le processus
père (le shell bash), nous avons également tué le fils (la commande top).

Tirer à vue sur tout ce qui bouge ?


Pour éviter que les frappes chirurgicales ne se transforment en boucherie générale, les pro-
cessus sont régis par un système de droits d’accès similaire à celui qui s’applique sur les
fichiers et les répertoires. Rappelez-vous que l’option u de ps affiche le propriétaire de chaque
processus, dans la première colonne intitulée USER.
Notre installation minimale comporte un serveur SSH qui tourne en tant que service sshd :

$ ps ax | grep -v grep | grep sshd


990 ? Ss 0:00 /usr/sbin/sshd -D
1237 ? Ss 0:00 sshd: kikinovak [priv]
1241 ? S 0:00 sshd: kikinovak@pts/0

Les deux premiers processus appartiennent à root, le dernier à l’utilisateur kikinovak :

$ ps aux | grep -v grep | grep sshd


root 990 ... Ss 11:56 0:00 /usr/sbin/sshd -D
root 1237 ... Ss 11:56 0:00 sshd: kikinovak [priv]
kikinov+ 1241 ... S 11:56 0:00 sshd: kikinovak@pts/0

Essayons d’arrêter le serveur SSH en tant que simple utilisateur :

$ kill 990
-bash: kill: (990) - Opération non permise

Un utilisateur du commun des mortels ne peut donc pas afficher tous les processus en cours
sur la machine pour ensuite tirer à vue sur tout ce qui bouge. En revanche, là comme ailleurs,
root peut tout se permettre. Il a donc la possibilité de mettre fin à tous les processus de
n’importe quel utilisateur du système :
• les processus des utilisateurs physiques (ex. kikinovak, adebuf, jmortreux) ;
• les processus des utilisateurs système (ex. postfix, chrony) ;
• ses propres processus, c’est-à-dire ceux qui appartiennent à root.
67738-Administration Linux par la pratique-INT.book Page 196 Friday, May 24, 2019 10:38 AM

Administration Linux par la pratique


196

Surveiller l’utilisation des processus de la machine : top


L’administrateur système est particulièrement concerné par le contrôle des processus dans
deux cas de figure :
• lorsque le système est installé sur une machine peu performante en termes de processeur
et de mémoire vive ;
• lorsqu’un processus décide de faire des siennes en monopolisant les ressources disponibles,
ce qui résulte en un serveur « dur d’oreille » voire carrément bloqué.
Le serveur de production sur lequel j’héberge les données de mon entreprise est une machine
dotée d’un processeur quatre cœurs et d’une quantité ahurissante de mémoire vive1. Je peux
donc faire tourner simultanément des serveurs d’horloge atomique, de noms, web, de courrier
électronique, de messagerie instantanée, de flux audio et d’autres choses encore sans ressentir
le moindre ralentissement prohibitif au niveau des services hébergés. Si j’essayais d’obtenir la
même configuration sur le serveur bas de gamme qui me sert de « bac à sable » – doté d’un
processeur bicœur et d’une quantité relativement modeste de mémoire vive – il y a fort à
parier que le système serait très vite complètement saturé. Dans ce cas, il faudrait utiliser les
ressources de la machine avec plus de parcimonie.
Il existe un moyen fort pratique de mesurer exactement la consommation en ressources de
chaque processus : c’est l’outil top, que nous avons déjà eu l’occasion de voir. Pour le lancer,
invoquez simplement son nom :

$ top

Figure 9–3
L’outil top surveille la gourmandise
des processus en temps réel.

1. Trente millions de fois plus que la mémoire vive de l’ordinateur monocarte 8080 avec lequel je jouais durant mon
adolescence au début des années 1980.
67738-Administration Linux par la pratique-INT.book Page 197 Friday, May 24, 2019 10:38 AM

Gérer les processus


197
CHAPITRE 9

L’affichage par défaut de top classe les processus par ordre décroissant de consommation de
puissance de calcul (CPU). Si vous souhaitez obtenir des renseignements plus pertinents sur
la consommation en mémoire vive, vous pouvez le faire comme suit :
1 Appuyez sur Maj+F pour afficher la fenêtre de gestion des champs (Fields Management).
2 Utilisez les touches FlècheHaut et FlècheBas pour naviguer dans la fenêtre.
3 Mettez le champ %MEM=Memory Usage en surbrillance.
4 Appuyez sur S (sort) pour définir la mémoire vive comme nouveau critère de tri.
5 Quittez la fenêtre de sélection des champs en appuyant sur Q.
À présent, top vous affiche l’ensemble des processus actifs classés par ordre décroissant de
consommation de mémoire. Les processus les plus gourmands figurent en tête.
Figure 9–4
Ici, les processus sont classés par
ordre décroissant de consommation
en mémoire.

Pour revenir au mode d’affichage initial, procédez de manière similaire :


1 Appuyez sur Maj+F pour afficher la fenêtre de gestion des champs (Fields Management).
2 Mettez le champ %CPU=CPU Usage en surbrillance.
3 Appuyez sur S pour définir la consommation processeur comme nouveau critère de tri.
4 Quittez la sélection des champs en appuyant sur Q.
Dans sa configuration par défaut, top calcule la consommation moyenne des processeurs. La
touche 1 permet de basculer vers l’affichage individuel de chaque processeur. Appuyez une
seconde fois sur 1 pour revenir au mode d’affichage par défaut.

LE CONSEIL DU CHEF Pour les serveurs peu puissants


Si votre serveur est peu performant, top vous aidera à identifier les applications un peu trop gour-
mandes en ressources et à les configurer avec circonspection.
67738-Administration Linux par la pratique-INT.book Page 198 Friday, May 24, 2019 10:38 AM
67738-Administration Linux par la pratique-INT.book Page 199 Friday, May 24, 2019 10:38 AM

10
Gérer les services

Un peu plus tôt dans cet ouvrage, nous avons eu l’occasion de parler des « services », ces logiciels qui
tournent en tâche de fond pendant que l’utilisateur fait autre chose. C’est un peu comme un serveur
(un vrai, en chair et en os) dans un café, discrètement à l’affût dans un coin, attendant que vous dai-
gniez interrompre la lecture de votre journal pour commander un café et deux croissants1. Certains
de ces services sont indispensables pour le fonctionnement cohérent du système et doivent être lancés
au démarrage de la machine. D’autres sont facultatifs et dépendent de l’utilisation spécifique que
vous faites de votre serveur. Le présent chapitre vous propose une introduction facile et pratique à la
gestion des services sous CentOS.

Une confusion babylonienne


Un homme demande à son ami aveugle : « Veux-tu boire un verre de lait ? » Son ami lui
répond : « Qu’est-ce que c’est, le lait ? — C’est un liquide blanc, qu’on donne surtout à boire
aux enfants. — Blanc, qu’est-ce que c’est ? — Blanc, c’est une couleur. C’est la couleur… des
cygnes, par exemple. — Des cygnes ? — Oui, tu sais, c’est un animal avec un cou très long et un
peu tordu. — Tordu ? — Oui, regarde, je vais poser mon bras sur la table et tu vas tâter mon
coude et mon avant-bras, comme ça tu auras une idée. » L’aveugle tripote le bras de son ami
pendant quelque temps et finit par lui dire : « Oui, je veux bien un verre de lait, s’il te plaît. »
Je me demande si l’inventeur de cette blague n’a pas lu les chapitres sur la gestion des services
dans les manuels d’administration Linux les plus courants. Les choses que l’on y trouve sont

1. Cet exemple est résolument utopique. Dans un café français qui se respecte, c’est le client qui est à l’affût du serveur.
67738-Administration Linux par la pratique-INT.book Page 200 Friday, May 24, 2019 10:38 AM

Administration Linux par la pratique


200

certes justes, mais la présentation complexe de l’enchevêtrement des mécanismes risque fort
de frustrer le lecteur pourtant doté d’une dose saine de curiosité. Ajoutons à cela le fait que la
gestion des services a connu un bouleversement considérable ces dernières années, car les
développeurs du monde du libre adorent réinventer la roue en échafaudant des systèmes
d’initialisation de plus en plus révolutionnaires et qui apportent une solution à tous les pro-
blèmes qui n’existaient pas au départ. Bref, bienvenue dans la confusion babylonienne de la
gestion des services sous Linux. « Tout cela est bien vrai », soupirait Candide face aux
démonstrations ampoulées du philosophe Pangloss, « mais il faut cultiver notre jardin. » C’est
ce que nous allons faire. Un peu de jardinage, donc. Un râteau, une bêche et c’est parti.

Qu’est-ce qu’un service ?


Pour avoir une idée de ce qu’est un service, nous n’avons qu’à en prendre un au hasard sur
notre machine pour le regarder de près :

$ ps ax | grep -v grep | grep sshd


1016 ? Ss 0:00 /usr/sbin/sshd -D
1267 ? Ss 0:00 sshd: kikinovak [priv]
1271 ? S 0:00 sshd: kikinovak@pts/0

Le service OpenSSH (/usr/sbin/sshd) attend en permanence des connexions depuis des


clients. Lorsqu’il reçoit une requête, il se charge d’établir une connexion sécurisée après une
authentification.
Un service connaît principalement deux états :
• marche ;
• arrêt.
C’est un peu comme le moteur d’une voiture. Soit il est démarré, soit il ne tourne pas. Après,
savoir si vous le laissez tourner au point mort ou si vous embrayez, c’est une autre histoire…

Arrêter et (re)démarrer un service


Dans une voiture, je coupe le contact pour arrêter le moteur. Je peux faire pareil pour un ser-
vice, après avoir acquis les droits d’administrateur :

$ sudo systemctl stop sshd

Vous serez peut-être vaguement surpris de ne pas avoir été déconnecté. Essayez de lancer une
deuxième session à distance :

[kikinovak@alphamule:~] $ ssh centosbox


ssh: connect to host centosbox port 22: Connection refused
67738-Administration Linux par la pratique-INT.book Page 201 Friday, May 24, 2019 10:38 AM

Gérer les services


201
CHAPITRE 10

Pour relancer le service, je dois invoquer la commande suivante :

$ sudo systemctl start sshd

Le serveur est à nouveau accessible depuis une machine distante :

[kikinovak@alphamule:~] $ ssh centosbox


kikinovak@centosbox's password:

Dans certaines situations, il est nécessaire de redémarrer un service, par exemple après avoir
apporté des modifications à sa configuration, pour que celles-ci soient prises en compte :

$ sudo systemctl restart sshd

Le « redémarrage » n’est pas véritablement une fonctionnalité à part. Pour le système, il s’agit
simplement d’une commande stop suivie d’une commande start.

EXEMPLE PRATIQUE Interdire les connexions SSH de l’utilisateur root


Dans la configuration par défaut de CentOS 7, le serveur OpenSSH accepte les connexions distantes de
l’utilisateur root. Pour renforcer la sécurité de leurs machines, certains administrateurs interdisent à
root de se connecter directement.
Pour mettre en place cette politique, il faut éditer le fichier /etc/ssh/sshd_config. Repérez la direc-
tive PermitRootLogin, décommentez la ligne en supprimant le dièse # initial et passez la
directive à no :
PermitRootLogin no
Redémarrez le service SSH pour prendre en compte les modifications :
$ sudo systemctl restart sshd

Recharger la configuration d’un service


Certains services – dont OpenSSH – sont capables de prendre en compte une nouvelle confi-
guration sans pour autant passer par un redémarrage :

$ sudo systemctl reload sshd

La commande reload offre une manière plus gracieuse de recharger la configuration d’un ser-
vice. Pour vous entraîner, reprenez l’exemple précédent en bloquant et en autorisant successive-
ment l’accès distant pour l’utilisateur root. Cette fois-ci, utilisez reload au lieu de restart.
67738-Administration Linux par la pratique-INT.book Page 202 Friday, May 24, 2019 10:38 AM

Administration Linux par la pratique


202

Activer un service au démarrage de la machine


La commande systemctl est un véritable couteau suisse qui gère l’initialisation et les services
de la machine. Jetez un coup d’œil sur la page de manuel systemctl(1) ; vous serez sans
doute surpris par la pléthore d’options existantes. Là comme ailleurs, nous n’allons pas nous
décourager face à l’abondance ; nous nous contentons de mettre un pied devant l’autre.
Affichez les services installés et actifs. Notez en passant que vous avez le droit d’effectuer
cette opération en tant que simple utilisateur :

$ systemctl list-units --type service

Figure 10–1
La liste de tous les services actifs
sur notre système.

Repérez le service OpenSSH dans la liste. Éventuellement, filtrez les résultats :

$ systemctl list-units --type service | grep sshd


sshd.service loaded active running OpenSSH server daemon

L’option list-unit-files affiche l’ensemble des services installés, indépendamment de leur état :

$ systemctl list-unit-files –-type service


67738-Administration Linux par la pratique-INT.book Page 203 Friday, May 24, 2019 10:38 AM

Gérer les services


203
CHAPITRE 10

Figure 10–2
La liste complète de tous les
services disponibles sur le système.

Là aussi, repérez sshd.service dans la liste :

$ systemctl list-unit-files –-type service | grep sshd


sshd-keygen.service static
sshd.service enabled
sshd@.service static

Désactivez le service en utilisant l’option disable. Vous vous doutez probablement que ce
genre d’opération requiert certains privilèges :

$ sudo systemctl disable sshd

Notez bien que le service n’est pas arrêté pour autant :

$ ps ax | grep -v grep | grep sshd


1267 ? Ss 0:00 sshd: kikinovak [priv]
1271 ? S 0:00 sshd: kikinovak@pts/0
1528 ? Ss 0:00 /usr/sbin/sshd -D

L’option status est bien plus pratique pour afficher l’état d’un service :

$ systemctl status sshd


67738-Administration Linux par la pratique-INT.book Page 204 Friday, May 24, 2019 10:38 AM

Administration Linux par la pratique


204

Figure 10–3
Le serveur OpenSSH est
à l’écoute sur notre machine.

Quelle est donc la portée de la directive disable ? Pour en avoir le cœur net, redémarrez la
machine et affichez l’ensemble des services :

$ systemctl list-units –-type service


$ systemctl list-unit-files –-type service

Repérez sshd.service dans l’affichage des résultats des deux commandes, puis vérifiez son état :

$ systemctl status sshd

En effet, la directive disable n’a pas arrêté le service OpenSSH. Elle a juste empêché son
lancement au prochain démarrage.
Inversement, la directive enable active le lancement du service au prochain démarrage :

$ sudo systemctl enable sshd

Les cibles systemd


Les cibles systemd (ou targets) représentent les différents modes opératoires de notre système.
Elles permettent de démarrer une machine avec juste les services requis pour une tâche définie.

$ systemctl list-units --type target


UNIT LOAD ACTIVE SUB DESCRIPTION
basic.target loaded active active Basic System
...
multi-user.target loaded active active Multi-User System
...
network.target loaded active active Network
...
$ systemctl get-default
multi-user.target

La cible multi-user.target représente ici l’état final de notre système au démarrage. Les
autres cibles comme basic.target ou network.target constituent autant d’étapes intermé-
diaires pour atteindre cet état final.
67738-Administration Linux par la pratique-INT.book Page 205 Friday, May 24, 2019 10:38 AM

Gérer les services


205
CHAPITRE 10

Dans la pratique quotidienne, nous aurons essentiellement affaire à deux cibles :


• multi-user.target
• graphical.target
Pour les opérations de dépannage, nous utiliserons les deux cibles suivantes :
• rescue.target
• emergency.target

ENVIRONNEMENT Serveurs et postes de travail


La distinction entre multi-user.target et graphical.target a un sens sur les machines dotées
d’un environnement graphique, comme les postes de travail ou les stations de travail. Sur les serveurs
sans environnement graphique, on définira multi-user.target comme cible par défaut.

Démarrer en mode de secours


Les cibles rescue.target et emergency.target servent à dépanner un système qui ne démarre
pas normalement. En l’occurrence, le démarrage s’effectue avec un nombre de services réduit et
permet à l’administrateur root d’ouvrir une console pour chercher la cause de la panne.
1 Redémarrez la machine.
2 Lorsque l’écran du chargeur de démarrage GRUB s’affiche, appuyez sur la touche E (edit).
3 Naviguez dans les paramètres de démarrage avec les touches fléchées.
4 Repérez la ligne avec les paramètres du kernel. Elle commence par linux16 /vmlinuz-
3.10.0-quelquechose et se termine par des options de démarrage comme rhgb et quiet.
5 Ajoutez l’option systemd.unit=rescue.target à la fin de cette ligne. Le clavier est en
QWERTY américain par défaut, vous devrez donc tâtonner un peu.
6 Démarrez en utilisant la combinaison de touches Ctrl+X.
7 Lorsque l’invite de commande vous affiche Welcome to emergency mode, fournissez le
mot de passe root pour ouvrir une console.
Figure 10–4
Le chargeur de démarrage GRUB
permet de démarrer en mode de
secours.
67738-Administration Linux par la pratique-INT.book Page 206 Friday, May 24, 2019 10:38 AM

Administration Linux par la pratique


206

En temps normal – c’est-à-dire en mode multi-user.target – notre installation minimale


lance pas moins de trente-sept services. Voyons comment les choses se présentent
maintenant :

# systemctl list-units --type service


...
19 loaded units listed.

Nous constatons que le mode de secours n’affiche plus que dix-neuf services actifs, soit près
de la moitié du mode normal. Si cela ne vous semble pas si minimal que ça, sachez que nous
pouvons faire mieux.
Réitérez l’expérience précédente en éditant les paramètres de démarrage de GRUB, mais en
remplaçant rescue.target par emergency.target.
L’invite de commande Welcome to emergency mode reste la même et vous devez fournir le
mot de passe root comme vous l’avez fait auparavant pour ouvrir une console. C’est le
nombre de services chargés qui fait la différence :

# systemctl list-units --type service


...
2 loaded units listed.

Cette fois-ci, nous sommes bien passés en mode « minimum syndical ». Rien ne tourne sur
notre machine en dehors du shell de secours (emergency.service) et des fichiers journaux
(systemd-journald.service) du système.

Changer de cible à la volée


Admettons que nous souhaitions basculer du mode de fonctionnement normal multi-
user.target vers le mode de secours rescue.target. Nous pouvons le faire directement, sans
passer par un redémarrage et la modification des options du kernel dans GRUB :

$ sudo systemctl isolate rescue.target

Le système fait mine de redémarrer, mais au bout de quelques secondes, vous vous retrouvez
confronté à l’invite du mode de secours :

Welcome to emergency mode!

Une fois que vous vous êtes connecté à la console de secours, procédez à l’inverse pour bas-
culer directement vers le mode de fonctionnement normal :

# systemctl isolate multi-user.target


67738-Administration Linux par la pratique-INT.book Page 207 Friday, May 24, 2019 10:38 AM

Gérer les services


207
CHAPITRE 10

Afficher l’état du système


Est-ce qu’il y a moyen de savoir si tout s’est bien passé ? Est-ce que tous les services ont été
lancés comme prévu ? C’est la directive status qui nous le dira.

$ systemctl status
? centosbox.microlinux.lan
State: running
Jobs: 0 queued
Failed: 0 units
...

À quoi ressemblerait un échec au démarrage ? Je vais utiliser une astuce pour vous en faire
une simulation.
1 Redémarrez la machine.
2 Éditez les options de GRUB et démarrez avec le paramètre
systemd.unit=emergency.target.
3 Connectez-vous à la console de secours minimale.
4 Basculez directement vers le mode de fonctionnement normal avec systemctl isolate
multi-user.target.
Une fois que j’ai effectué cette manipulation, j’affiche l’état de mon système :

$ systemctl status
? centosbox.microlinux.lan
State: degraded
Jobs: 0 queued
Failed: 1 units
...

Le statut degraded apparaît en rouge et me suggère qu’il y a eu un problème quelque part…


mais où ? C’est l’option --failed qui me le dira :

$ systemctl --failed
UNIT LOAD ACTIVE SUB ...
? systemd-vconsole-setup.service loaded failed failed ...

Je tente de démarrer manuellement ce service :

$ sudo systemctl start systemd-vconsole-setup

J’affiche à nouveau l’état du système :

$ systemctl status
? centosbox.microlinux.lan
State: running
67738-Administration Linux par la pratique-INT.book Page 208 Friday, May 24, 2019 10:38 AM

Administration Linux par la pratique


208

Jobs: 0 queued
Failed: 0 units
...

Apparemment, tout est rentré dans l’ordre.

Définir la cible par défaut


En temps normal – c’est-à-dire si nous ne modifions pas les paramètres de démarrage de
GRUB – notre système démarre en mode multi-user.target :

$ systemctl get-default
multi-user.target

Je peux modifier la cible par défaut :

$ sudo systemctl set-default rescue.target

Au prochain redémarrage, le système m’affichera directement l’invite du mode de secours :

Welcome to emergency mode!

Le mode de secours rescue.target correspond désormais au mode de fonctionnement


« normal » de ma machine :

# systemctl get-default
rescue.target

Pour redéfinir la cible multi-user.target comme mode de fonctionnement par défaut, je


dois invoquer la commande suivante :

# systemctl set-default multi-user.target

CAS PRATIQUE Basculer entre les cibles sur un poste de travail


Dans la pratique quotidienne, on utilisera systemctl set-default et systemctl isolate princi-
palement sur les postes de travail ou les stations de travail pour basculer entre le mode graphique
(graphical.target) et le mode texte (multi-user.target).
Lorsque je dois changer une carte graphique dans un poste client, je commence par basculer vers le
mode texte :
$ sudo systemctl set-default multi-user.target
$ sudo systemctl isolate multi-user.target
67738-Administration Linux par la pratique-INT.book Page 209 Friday, May 24, 2019 10:38 AM

Gérer les services


209
CHAPITRE 10

Une fois que j’ai apporté les modifications nécessaires à mon système, je teste d’abord si l’affichage gra-
phique fonctionne correctement :
$ sudo systemctl isolate graphical.target
Si tout se passe comme prévu, je redéfinis le mode graphique par défaut :
$ sudo systemctl set-default graphical.target
Dans ce contexte, le mode multi-user.target est considéré comme une sorte de mode de secours
qui me permet de manipuler mon poste de travail sans affichage graphique.

Éteindre et redémarrer la machine


Tout comme pour le démarrage, le système doit suivre une certaine procédure pour arrêter
tous les services. L’extinction du système nécessite de tuer les processus dans un ordre cohé-
rent et de faire le ménage dans les systèmes de fichiers avant l’arrêt des disques. C’est la com-
mande halt qui s’en charge :

$ sudo halt -p

L’option -p (poweroff) se charge d’éteindre la machine lors de l’arrêt du système. Consultez la


page de manuel halt(8) pour en savoir plus.
La commande reboot a le même effet que halt, au détail près que la machine redémarre au
lieu de s’éteindre :

$ sudo reboot

Alternativement, nous pouvons invoquer systemctl avec les options respectives poweroff et
reboot pour arrêter et redémarrer le système :

$ sudo systemctl poweroff

Lorsque je suis directement connecté à ma console, je peux également utiliser la combinaison


de touches Ctrl+Alt+Suppr pour redémarrer.

VOUS VENEZ DE WINDOWS Ctrl+Alt+Suppr


Les utilisateurs de systèmes Microsoft Windows seront probablement bien familiarisés avec la combinai-
son de touches Ctrl+Alt+Suppr, qui sert à afficher un mot de leur sponsor en cas de plantage d’une
application. Sachez que, sous Linux, il s’agit là du raccourci clavier normal pour redémarrer une machine
en mode console.
67738-Administration Linux par la pratique-INT.book Page 210 Friday, May 24, 2019 10:38 AM

Administration Linux par la pratique


210

APERÇU HISTORIQUE La gestion des services et du démarrage sous Unix et Linux


Les lecteurs de mon ouvrage Débuter avec Linux paru en 2017 et basé sur Slackware ont eu l’occasion de
découvrir le système d’initialisation BSD. Ce système « brut de décoffrage » reste fidèle à la philosophie
Unix aussi bien qu’au principe KISS (Keep It Simple Stupid) et se base sur une série de scripts shell pour
gérer les services et les niveaux d’exécution.
Red Hat Enterprise Linux, CentOS et Debian ont longtemps utilisé la procédure System V, avec des niveaux
d’exécution organisés différemment. D’autres systèmes d’initialisation ont vu le jour petit à petit, comme
Upstart, développé par Canonical et adopté pendant quelque temps par Ubuntu et Fedora, ou encore
OpenRC, utilisé par Gentoo depuis ses débuts. Actuellement, l’écrasante majorité des distributions a décidé
d’adopter systemd, une alternative à System V spécifiquement conçue pour le noyau Linux.
L’adoption de systemd a suscité une série de controverses sans précédent dans le monde du libre. En
résumé, les objections ne portent pas tant sur ses mérites en tant que système d’initialisation, mais sur le
fait qu’il s’est imposé de force au détriment des solutions alternatives en s’étendant de façon tentacu-
laire dans des domaines qui n’ont plus rien à voir avec l’initialisation à proprement parler, sans oublier
qu’il casse volontairement la compatibilité Posix avec les systèmes non-Linux comme la famille des BSD.
Quoi qu’il en soit, systemd a bel et bien gagné la bataille et s’est progressivement imposé un peu par-
tout. En dépit de son côté « usine à gaz », il constitue une solution robuste qui offre quelques fonction-
nalités fort pratiques pour les administrateurs système, sans oublier le mérite d’abolir les différences inu-
tiles entre les distributions Linux.
67738-Administration Linux par la pratique-INT.book Page 211 Friday, May 24, 2019 10:38 AM

11
Accéder aux
périphériques amovibles

« Où sont les données de mon CD-Rom ? Comment accéder à ma clé USB ? » Voilà ce que l’on est sûr
de retrouver dans le palmarès des questions les plus fréquemment posées par des utilisateurs venant de
Microsoft Windows. Linux n’utilise pas les lettres de l’alphabet pour désigner ses périphériques et
c’est en vain que vous chercherez des lecteurs A:, C:, D:, E: ou F:. Au lieu de cela, les périphériques
sont inclus directement dans la hiérarchie du système de fichiers. Si cela vous paraît obscur, le présent
chapitre vous expliquera tout en détail, pas à pas. Suivez le guide.

Les fichiers de périphérique


Pour commencer, jetez un œil au répertoire /dev. Son nom provient du mot device qui
signifie « périphérique ». Faites un petit ls pour en afficher le contenu. La première chose qui
saute aux yeux, c’est la couleur de tous ces fichiers : jaune ! Ce ne sont vraisemblablement pas
des fichiers comme tous les autres. Cette première suspicion est d’ailleurs étayée par l’affi-
chage détaillé :

$ ls -l /dev/sda
brw-rw----. 1 root disk 8, 0 3 nov. 10:06 /dev/sda
$ ls -l /dev/input/mouse0
crw-rw----. 1 root input 13, 32 3 nov. 10:06 /dev/input/mouse0
67738-Administration Linux par la pratique-INT.book Page 212 Friday, May 24, 2019 10:38 AM

Administration Linux par la pratique


212

Le b et le c initiaux nous indiquent qu’il ne s’agit ni de fichiers classiques, ni de répertoires.


Nous trouvons certes une série de liens symboliques, mais ceux-ci semblent pointer vers les
mêmes fichiers mystérieux à l’intérieur de ce répertoire :

$ ls -l /dev/cdrom
lrwxrwxrwx. 1 root root 3 3 nov. 10:06 /dev/cdrom -> sr0

Les fichiers contenus dans /dev sont des fichiers de périphérique, (device files) : chacun repré-
sente (ou symbolise) un périphérique bien spécifique sur votre système. Ils ne contiennent pas
de données à proprement parler, mais servent à communiquer avec le noyau.
Dans l’affichage détaillé, les lettres b et c différencient respectivement les périphériques de
type bloc (block devices) et ceux de type caractère (character devices) :
• le disque dur, par exemple, est un périphérique bloc : il lit ou écrit des données sous forme
de blocs de taille fixe ;
• la souris, le clavier, la console ou encore la carte audio sont des périphériques caractère : ils
lisent ou écrivent un flux d’octets en série.
Quant aux deux chiffres qui apparaissent avant la date, ce sont les numéros majeur et mineur :

$ ls -l /dev/sda?
brw-rw----. 1 root disk 8, 1 3 nov. 10:06 /dev/sda1
brw-rw----. 1 root disk 8, 2 3 nov. 10:06 /dev/sda2

SHELL Le caractère de substitution « ? »


Tout comme l’astérisque, *, le point d’interrogation, ?, est un caractère de substitution. Alors que le pre-
mier représente une suite de caractères quelconque, le second est un joker pour un seul caractère quel-
conque.

SIGNIFICATION Numéro majeur et numéro mineur


Le numéro majeur donne une indication sur le pilote du noyau qui gère le périphérique en question. Le
numéro mineur sert à différencier des périphériques similaires, par exemple les différentes partitions d’un
disque dur.
Pour la plupart, les pilotes et leur numéro majeur figurent sur la page suivante :
B https://www.kernel.org/doc/Documentation/admin-guide/devices.txt

• Les noms des disques durs (SCSI, SATA, IDE, USB, Firewire) commencent par sd
(SCSI Disk). La lettre qui suit dépend d’une part du branchement, d’autre part de l’ordre
des branchements : sda, sdb, sdc, sdd, etc.
• Les lecteurs CD/DVD SCSI seront répertoriés en tant que sr ou scd (SCSI CD).
• Les périphériques d’entrée comme le clavier et la souris sont symbolisés par les fichiers
dans le répertoire /dev/input.
• Etc.
67738-Administration Linux par la pratique-INT.book Page 213 Friday, May 24, 2019 10:38 AM

Accéder aux périphériques amovibles


213
CHAPITRE 11

Certains fichiers ne correspondent pas vraiment à un périphérique physique, concret et tan-


gible. Ils remplissent une fonction bien spécifique dans le système :
• /dev/null est une sorte de « nirvana numérique », un véritable trou noir vers lequel on
peut envoyer des données qui sont censées disparaître, par exemple les messages de la
console que l’on ne souhaite pas afficher.
• /dev/zero est une source inépuisable de zéros, que l’on utilise parfois pour en remplir cer-
tains fichiers jusqu’à une taille prédéfinie.
• /dev/random et /dev/urandom génèrent des nombres aléatoires.

La notion de montage/démontage
Pour donner l’accès aux divers périphériques ainsi qu’aux systèmes de fichiers qu’ils
contiennent, il faut établir une connexion entre le périphérique d’un côté et l’arborescence du
système de fichiers Linux de l’autre. Lorsque le périphérique est inclus dans cette arbores-
cence, on dit qu’il est « monté ». Un peu de pratique vous permettra de comprendre cette
façon de procéder.

Monter manuellement un CD ou un DVD


Commençons par le lecteur CD/DVD. Dans un premier temps, il nous faut connaître son
fichier de périphérique. La cible du lien symbolique /dev/cdrom nous fournit déjà une pre-
mière piste :

$ ls -l /dev/cdrom
lrwxrwxrwx. 1 root root 3 3 nov. 16:13 /dev/cdrom -> sr0

Pour en avoir le cœur net, nous utiliserons la commande lsblk (list block devices), qui affiche
les périphériques de type bloc du système. Notez le périphérique /dev/sr0 (type rom) tout en
bas de la liste :

$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 20G 0 disk
├─sda1 8:1 0 1G 0 part /boot
└─sda2 8:2 0 19G 0 part
├─centos_centosbox-root 253:0 0 17G 0 lvm /
└─centos_centosbox-swap 253:1 0 2G 0 lvm [SWAP]
sr0 11:0 1 1024M 0 rom
67738-Administration Linux par la pratique-INT.book Page 214 Friday, May 24, 2019 10:38 AM

Administration Linux par la pratique


214

VIRTUALISATION Accéder au lecteur CD/DVD depuis une machine virtuelle


Vous pouvez très bien accéder à votre lecteur CD/DVD depuis un système invité installé dans VirtualBox.
Ouvrez la configuration de la machine virtuelle et, dans l’onglet Stockage, vérifiez si vous avez sélec-
tionné le Lecteur de l’hôte dans le contrôleur IDE, avec le Mode direct activé.

Figure 11–1 La configuration du lecteur CD/DVD pour la machine virtuelle.

Pour la machine virtuelle qui tourne dans ma station de travail, c’est sr0. Il se peut que, chez
vous, ce soit scd0, sdb, etc., mais peu importe. La cible du lien symbolique /dev/cdrom et la
liste fournie par lsblk vous le diront.
Insérez par exemple le DVD d’installation dans le lecteur et invoquez la commande suivante,
en prenant soin de remplacer /dev/sr0 par le fichier correspondant à votre lecteur. Comme
vous vous en doutez, vous pouvez bien évidemment remplacer /dev/sr0 par le lien symbo-
lique correspondant /dev/cdrom :

$ sudo mount -v -t iso9660 /dev/cdrom /mnt


...
mount : /dev/sr0 monté sur /mnt.

Maintenant, allez voir dans le répertoire /mnt :

$ cd /mnt
$ ls
CentOS_BuildTag images repodata
EFI isolinux RPM-GPG-KEY-CentOS-7
EULA LiveOS RPM-GPG-KEY-CentOS-Testing-7
GPL Packages TRANS.TBL
67738-Administration Linux par la pratique-INT.book Page 215 Friday, May 24, 2019 10:38 AM

Accéder aux périphériques amovibles


215
CHAPITRE 11

Effectivement, /mnt contient les données du DVD d’installation. Naviguez un peu dans les
répertoires avec cd, vous verrez que tout y est. Le DVD est effectivement « monté » sur /mnt.
Voici quelques explications sur la commande :
• mount sert à monter un périphérique et qui requiert les privilèges de l’administrateur (sudo) ;
• -v indique à mount d’opérer en mode « bavard » ;
• -t est l’option qui précise le système de fichiers (ici, iso9660, utilisé sur un CD ou
un DVD) ;
• /dev/cdrom est le fichier de périphérique qui représente le lecteur de CD/DVD ou, plus
exactement, un lien symbolique qui pointe vers celui-ci ;
• /mnt est le point de montage, autrement dit le répertoire où les données du périphérique
seront accessibles.

Démonter le CD ou le DVD
Pour procéder en sens inverse, c’est-à-dire pour retirer le contenu du DVD de notre système
de fichiers, il suffit de le « démonter ». Pour ce faire, placez-vous en dehors de l’arborescence
de /mnt (par exemple, en invoquant cd sans arguments) et lancez la commande suivante :

$ sudo umount -v /mnt


umount: /mnt (/dev/sr0) démonté

L’option -v demande simplement à la commande umount de nous tenir informés de ce qu’elle


fait. Jetez un œil dans /mnt :

$ ls /mnt

Il ne reste plus rien ; le répertoire est désormais vide. Il semblerait que nous ayons réussi le
montage et le démontage d’un périphérique. Avant d’aborder les questions de détail, essayons
de faire la même chose avec notre clé USB.

Monter et démonter manuellement une clé USB


Avant de pouvoir faire quoi que ce soit, il faut d’abord connaître le fichier de périphérique qui
la représente.
Puisque le répertoire /dev contient tous les fichiers symbolisant les périphériques de la
machine, on pourrait :
1 afficher le contenu de /dev avec ls ;
2 brancher la clé USB et attendre quelques secondes ;
3 afficher une nouvelle fois le contenu de /dev en repérant une éventuelle nouvelle entrée
nommée sdquelque_chose.
67738-Administration Linux par la pratique-INT.book Page 216 Friday, May 24, 2019 10:38 AM

Administration Linux par la pratique


216

Oui, ce serait possible. C’est assez fréquent que l’on fasse les choses de manière passablement
compliquée, pour se rendre compte ensuite (parfois des années plus tard) qu’il existe un autre
moyen, beaucoup plus élégant et surtout plus simple. C’est le cas ici.

VIRTUALISATION Accéder à la clé USB depuis une machine virtuelle


Tout comme pour le lecteur CD/DVD, vous pouvez accéder à votre clé USB depuis un système invité ins-
tallé dans VirtualBox, mais vous devez l’enregistrer au préalable. Insérez la clé USB, ouvrez la configura-
tion de la machine virtuelle et, dans l’onglet USB, cliquez sur l’icône ornée d’un petit signe « + » pour
ajouter la clé à la liste des disques externes gérés par le système invité.
Dans la configuration par défaut de VirtualBox, vous ne pouvez utiliser que l’USB 1.1, mais ce n’est pas
bien grave, vu que nous ne nous en servons qu’à des fins de démonstration.

Figure 11–2 L’enregistrement de la clé USB permet d’y accéder depuis la machine virtuelle.

Lorsque vous branchez un périphérique USB, le noyau en prend note dans son journal, le
fichier /var/log/messages. Regardez ce que ce fichier contient :

$ sudo cat /var/log/messages

Du charabia ? Je suis d’accord avec vous. Mais peut-être pas si charabia que ça, comme vous
allez le voir tout de suite. Rappelez-vous la commande tail que nous avons utilisée dans le
chapitre 5, pour afficher la fin d’un fichier :

$ sudo tail /var/log/messages

Le comportement par défaut de tail ressemble à celui de head. Il affiche dix lignes, pas plus.
Cependant, une option bien particulière sert à suivre en direct l’évolution d’un fichier lorsque
des données s’y ajoutent :

$ sudo tail -f /var/log/messages


67738-Administration Linux par la pratique-INT.book Page 217 Friday, May 24, 2019 10:38 AM

Accéder aux périphériques amovibles


217
CHAPITRE 11

Maintenant, branchez votre clé USB et attendez un peu. Au bout de quelques secondes, vous
verrez apparaître une série de messages ressemblant à ce qui suit :

...
Nov 4 09:49:30 centosbox kernel: sdb: sdb1
Nov 4 09:49:30 centosbox kernel: sd 5:0:0:0: [sdb] Attached SCSI removable disk
...

Le noyau nous envoie une bonne quinzaine de lignes, dans lesquelles nous retrouvons facile-
ment l’information qui nous intéresse. Le fichier de périphérique correspondant à notre
clé USB est donc sdb et la partition contenant le système de fichiers est sdb1. Attention, sur
votre machine ce sera peut-être autre chose : sdc1, sdd1, sde1, etc. Appuyez sur Ctrl+C pour
interrompre tail -f et récupérer la main sur la console. Si vous êtes scrupuleux, vérifiez
l’information délivrée par le noyau :

$ ls -l /dev/sdb1
brw-rw----. 1 root disk 8, 17 4 nov. 09:49 /dev/sdb1

Enfin, la commande lsblk nous aurait également permis d’identifier notre clé USB en tant
que périphérique bloc de type disk :

$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 20G 0 disk
├─sda1 8:1 0 1G 0 part /boot
└─sda2 8:2 0 19G 0 part
├─centos_centosbox-root 253:0 0 17G 0 lvm /
└─centos_centosbox-swap 253:1 0 2G 0 lvm [SWAP]
sdb 8:16 1 7,2G 0 disk
└─sdb1 8:17 1 7,2G 0 part
sr0 11:0 1 1024M 0 rom

LE SAVIEZ-VOUS ? Système de fichiers d’une clé USB


Les clés USB sont normalement formatées en FAT, un système de fichiers originaire de Microsoft. Il ne brille
pas spécialement par ses performances, bien au contraire. Néanmoins, c’est le seul qui soit lisible aussi bien
par Windows, Linux que Mac OS X, d’où l’intérêt de préférer ce dénominateur commun pour le formatage.

Là encore, remplacez /dev/sdb1 par le fichier de périphérique symbolisant votre clé USB :

$ sudo mount -v -t vfat /dev/sdb1 /mnt


mount : /dev/sdb1 monté sur /mnt.

Essayons de traduire cette dernière commande en français : « monte (mount) la clé USB (/dev/
sdb1) qui contient un système de fichiers FAT (-t vfat) sur le point de montage /mnt (/mnt) et
dis-nous ce que tu fais (-v). »
67738-Administration Linux par la pratique-INT.book Page 218 Friday, May 24, 2019 10:38 AM

Administration Linux par la pratique


218

Voyons si le contenu de la clé apparaît bien en dessous de /mnt :

$ ls /mnt
Eyrolles
INFRES-Groupe-1.pdf
INFRES-Groupe-2.pdf
System Volume Information

Bravo ! Il ne nous reste plus qu’à démonter la clé. Sortons de l’arborescence /mnt (cd sans
arguments, par exemple), puis invoquons la commande suivante :

$ sudo umount -v /mnt


umount: /mnt (/dev/sdb1) démonté

Là aussi, nous pouvons vérifier que /mnt ne contient plus rien après le démontage du périphé-
rique.

QUELQUES REMARQUES Du montage et du démontage


Les premiers essais de montage/démontage en ligne de commande ont été concluants. Quelques
remarques s’imposent.
• Les options -v et -t ont été utilisées à des fins pédagogiques. Elles sont facultatives. Ainsi, vous
auriez pu vous contenter d’évoquer mount /dev/cdrom /mnt pour monter le DVD et mount
/dev/sdb1 /mnt pour la clé. Essayez.
• Les anglophones parmi vous objecteront que le contraire de mount serait plutôt unmount. Pourquoi
alors dit-on umount ? Cela tient au fait que beaucoup d’informaticiens ont un rapport problématique
à l’orthographe. Le n a dû se perdre en route quelque part. C’est aussi bête que cela.
• La commande umount accepte en argument aussi bien le point de montage que le nom du fichier de
périphérique. Pour démonter le CD/DVD, nous aurions pu écrire aussi bien umount /dev/cdrom que
umount /mnt. Pareillement, la clé USB aurait pu être démontée par le biais de la commande
umount /dev/sdb1.
• Notons enfin que, sur un poste de travail Linux, la gestion des périphériques se fait de manière tout
aussi transparente que sous Microsoft Windows ou Mac OS X. Par « transparent », entendez que, si
vous utilisez un environnement de bureau comme GNOME, KDE ou Xfce, il suffit généralement d’insé-
rer le périphérique en question et de cliquer sur une icône pour accéder à son contenu.

Scier la branche sur laquelle on est assis


Pourquoi faut-il quitter l’arborescence du point de montage avant de démonter un
périphérique ? Pour la simple raison que le système refuse de vous laisser scier la branche sur
laquelle vous êtes assis. Ce point mérite une illustration détaillée, car il s’agit d’une erreur qui
revient fréquemment. Insérez le DVD et montez-le :

$ sudo mount /dev/cdrom /mnt


67738-Administration Linux par la pratique-INT.book Page 219 Friday, May 24, 2019 10:38 AM

Accéder aux périphériques amovibles


219
CHAPITRE 11

Placez-vous à la racine du DVD :

$ cd /mnt

Maintenant, à partir de /mnt, essayez de démonter le lecteur et voyez ce que le système


vous dit :

$ sudo umount /mnt


umount: /mnt : cible occupée.

Tant que vous vous trouvez dans l’arborescence /mnt, vous ne pourrez donc tout simplement
pas procéder au démontage.

Éjecter un DVD ou un CD-Rom : eject


Voici une commande qui amuse beaucoup les enfants (et les administrateurs restés jeunes
dans l’âme) : eject. Assurez-vous de vous trouver en dehors de toute arborescence de point
de montage et essayez-la :

$ sudo eject

Si tout se passe bien, le tiroir du lecteur CD/DVD s’ouvre. Pour le refermer, invoquez sim-
plement ceci :

$ sudo eject -t

EXCEPTION Utiliser eject sur un lecteur slim


La commande eject -t ne fonctionnera pas sur les lecteurs slim, qui sont conçus différemment. Ils
s’ouvrent automatiquement, mais leur fermeture est manuelle.

La commande eject combine le démontage et l’éjection d’un périphérique. Autrement dit, si


votre DVD est monté, ce n’est pas la peine d’invoquer umount ; eject s’en charge. Comme
umount, eject accepte en argument le nom d’un périphérique, à condition que celui-ci soit
éjectable bien sûr. Invoquée sans arguments, la commande agit sur le périphérique défini par
défaut. Pour le connaître, utilisez l’option -d :

$ eject -d
eject: périphérique par défaut : « /dev/cdrom »

Normalement, eject fonctionne avec les lecteurs CD/DVD et les graveurs, ainsi qu’avec les
lecteurs ZIP, même si ces derniers sont tombés en désuétude.
67738-Administration Linux par la pratique-INT.book Page 220 Friday, May 24, 2019 10:38 AM

Administration Linux par la pratique


220

ASTUCE Une utilisation abusive d’eject


Les administrateurs de salles de serveurs utilisent parfois eject de manière abusive, à condition que les
machines soient équipées de lecteurs optiques : ils invoquent cette commande pour... savoir où se trouve
physiquement la machine sur laquelle ils sont connectés.

Monter plusieurs périphériques en même temps


Jusque-là, le point de montage /mnt nous a servi pour tous nos tests successifs avec le lecteur
DVD et la clé USB. Certains d’entre vous se sont peut-être demandé s’il était possible de
monter les deux conjointement.
Au départ, /mnt est juste un répertoire vide qui fait office de point de montage par conven-
tion. En théorie, rien ne nous empêche d’en créer d’autres où bon nous semble. En pratique,
nous pouvons très bien combiner la création de nouveaux points de montage avec le respect
des conventions.

$ sudo mkdir -v /mnt/{cdrom,disk}


mkdir: création du répertoire « /mnt/cdrom »
mkdir: création du répertoire « /mnt/disk »

Je me sers du point de montage /mnt/cdrom pour monter le lecteur DVD :

$ sudo mount /dev/cdrom /mnt/cdrom

Quant à la clé USB, elle est montée sur /mnt/disk :

$ sudo mount /dev/sdb1 /mnt/disk

À partir de là, les contenus respectifs du DVD et de la clé USB sont accessibles dans les deux
arborescences distinctes.

Obtenir des informations sur les périphériques montés


Pour savoir si un périphérique est monté ou non, il suffit d’invoquer la commande mount sans
le moindre argument. Cette opération ne requiert pas de privilèges d’administrateur :

$ mount
sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime,...)
proc on /proc type proc (rw,nosuid,nodev,noexec,relatime)
devtmpfs on /dev type devtmpfs (rw,nosuid,seclabel,...)
...
67738-Administration Linux par la pratique-INT.book Page 221 Friday, May 24, 2019 10:38 AM

Accéder aux périphériques amovibles


221
CHAPITRE 11

Pour l’instant, intéressez-vous juste à la dernière ligne de cet exemple :

/dev/sr0 on /mnt/cdrom type iso9660 (ro,relatime)

Si vous avez tout bien suivi jusqu’ici, la lecture de cette information ne devrait pas vous poser
trop de problèmes. La ligne nous dit simplement que le périphérique /dev/sr0 est monté sur
/mnt/cdrom, que le système de fichiers est l’ISO 9 660 et qu’il est monté en lecture seule
(ro pour read only).
Si je monte ma clé USB sur /mnt/disk et que j’invoque mount, j’obtiens ceci :

/dev/sdb1 on /mnt/disk type vfat (rw,relatime,...)

Dans ce cas, l’information se lit comme suit : /dev/sdb1 est monté sur /mnt/disk, le périphé-
rique est formaté en FAT et il est accessible en lecture et écriture (rw pour read/write).
Par ailleurs, le fichier /etc/mtab donne les mêmes informations sur les périphériques montés
que mount sans argument, à quelques détails près :

$ cat /etc/mtab
...
/dev/sr0 /mnt/cdrom iso9660 ro,relatime 0 0
/dev/sdb1 /mnt/disk vfat rw,relatime,... 0 0

Là encore, notez la présence du DVD et de la clé USB sur les deux dernières lignes, montés
respectivement sur /mnt/cdrom et /mnt/disk.
Il reste encore beaucoup de choses à dire sur le montage des systèmes de fichiers, notamment
sur l’organisation de ces derniers sur le ou les disque(s) dur(s). Je vous propose de voir cela
dans le prochain chapitre, qui nous fournira l’occasion de mettre en application directe les
compétences nouvellement acquises. Pour l’instant, laissez reposer un peu la pâte et digérez ce
que vous avez appris jusqu’ici.
67738-Administration Linux par la pratique-INT.book Page 222 Friday, May 24, 2019 10:38 AM
67738-Administration Linux par la pratique-INT.book Page 223 Friday, May 24, 2019 10:38 AM

12
Partitionner et formater
un disque dur

Dans l’imaginaire de beaucoup d’administrateurs en herbe, les mots « partitionnement » et


« formatage » semblent occuper les mêmes zones cérébrales que « file d’attente à la préfecture »,
« tumeur bénigne » ou « extraction de dent de sagesse ». Ce chapitre vous prend par la main et vous
guide pas à pas dans l’organisation d’un disque dur, dans le but de dissiper toutes les craintes
irrationnelles que vous avez pu développer à ce sujet.

Le partitionnement automatique
Lors de l’installation initiale de CentOS 7 en mode « poule », nous avons opté pour le parti-
tionnement automatique. Le but de l’opération était de disposer d’un système Linux fonc-
tionnel pour nous entraîner, sans nous soucier des menus détails de l’organisation du système
sous le capot.
Dans la configuration par défaut, l’installateur organise le disque en utilisant le gestionnaire
de volumes logiques LVM (Logical Volume Manager). Il s’agit là d’une couche d’abstraction
entre le système de fichiers et les partitions, qui permet une approche plus souple dans l’orga-
nisation du disque.
Nous aurons l’occasion d’aborder cette manière de faire les choses un peu plus loin dans cet
ouvrage. Pour l’instant, LVM constitue tout au plus une couche de complexité inutile dont
67738-Administration Linux par la pratique-INT.book Page 224 Friday, May 24, 2019 10:38 AM

Administration Linux par la pratique


224

nous allons nous débarrasser, afin de mieux comprendre les bases de l’organisation d’un
disque dur sous Linux.
Tout au long de ce chapitre, nous allons procéder à une série de réinstallations successives
d’un système minimal CentOS 7, en optant pour le partitionnement manuel, avec des
schémas de partitionnement allant du cas de figure le plus rudimentaire à des scénarios un
peu plus élaborés. Suivez le guide !

Les tables de partitionnement MBR et GPT


Les informations de partitionnement sont actuellement gérées par deux procédures
distinctes :
• MBR (Master Boot Record) ;
• GPT (GUID Partition Tables).
Les concepts de partitionnement basés sur les tables de partitions MBR remontent à l’époque
MS-DOS, ce qui explique tout un ensemble de limitations et de règles plus ou moins farfe-
lues. Ce concept reste pourtant valable pour à peu près tous les disques durs utilisés dans des
PC Windows et/ou Linux jusqu’en 2012. Dans ce cas de figure, la table de partitions est
stockée dans le MBR, c’est-à-dire le premier secteur du disque dur.
GPT est un standard créé il y a quelque temps déjà pour éviter les nombreuses limitations
liées au MBR. Les ordinateurs de la marque Apple utilisent GPT depuis 2005. Les machines
Windows y ont migré depuis la présentation de Windows 8 à l’automne 2012. L’UEFI, le
remplaçant du BIOS, exige l’utilisation d’une table de partitionnement GPT.
En théorie, le partitionnement GPT est censé avoir remplacé le modèle MBR depuis belle
lurette. En pratique, ce dernier reste largement répandu et nous retrouvons ce paradigme
classique où une technologie obsolète a la vie dure et refuse de céder la place au progrès.

Identifier le type de partitionnement sur mon système


Lors de l’installation en mode « poule » de CentOS, c’est l’installateur qui a sélectionné auto-
matiquement le type de partitionnement qu’il fallait utiliser sous le capot.
• Dans la majorité des cas, nous retrouverons un partitionnement MBR, notamment avec
les BIOS traditionnels, les BIOS modernes en mode legacy et les installations dans Vir-
tualBox avec la configuration par défaut.
• Le partitionnement GPT ne sera utilisé que sur des systèmes où l’UEFI a remplacé
le BIOS.
Pour savoir quel est le type de partitionnement utilisé sur votre machine, invoquez la com-
mande suivante :

$ sudo fdisk -l /dev/sda 2> /dev/null | grep ^Type


Type d'étiquette de disque : dos
67738-Administration Linux par la pratique-INT.book Page 225 Friday, May 24, 2019 10:38 AM

Partitionner et formater un disque dur


225
CHAPITRE 12

Ici, j’ai utilisé fdisk avec l’option -l pour afficher la table de partitions de mon disque sda, en
faisant fi des éventuels messages d’erreur et en filtrant l’affichage pour obtenir la ligne qui me
renseigne sur le type d’étiquette du disque. L’étiquette dos correspond à une table de
partitionnement MBR.
Sur une machine UEFI, la même commande m’affiche un type d’étiquette gpt :

$ sudo fdisk -l /dev/sda 2> /dev/null | grep ^Type


Type d'étiquette de disque : gpt

Pour éviter la confusion, nous allons commencer par traiter le partitionnement MBR, étant
donné que c’est le cas de figure que nous allons rencontrer le plus souvent sous CentOS 7.
Une fois que nous serons à l’aise avec cette manière traditionnelle de faire les choses, nous
attaquerons les tables de partitions GPT et les outils pour les gérer.

Le schéma de partitionnement le plus simple


Pour commencer, nous allons choisir le schéma de partitionnement le plus simple pour notre
installation. Un système Linux a besoin d’au moins deux partitions :
• une partition d’échange ou swap ;
• une partition principale.

La partition d’échange
La partition swap est une sorte de mémoire virtuelle de votre machine, une extension dans le
cas où vous arriveriez aux limites de la mémoire vive. Lorsque ce cas de figure se présente,
c’est-à-dire si la RAM arrive à saturation, son contenu est délocalisé sur cette zone du disque
pour éviter de bloquer le système. La taille de la partition swap sera égale à celle de la
mémoire vive disponible.

Les systèmes de fichiers pour la partition principale


Une fois que nous aurons créé notre swap, la partition principale occupera simplement tout
l’espace restant du disque. L’installateur de CentOS propose une multitude de systèmes de
fichiers au choix pour la formater :
• ext2 (second extended file system) est le système de fichiers historique de GNU/Linux ;
• ext3 est un autre système de fichiers GNU/Linux, une évolution d’ext2. Ce qui le carac-
térise principalement, c’est l’utilisation d’un fichier journal. On arrive ainsi à éviter la
longue phase de récupération lors d’un arrêt brutal de la machine ;
• ext4 est le successeur d’ext3. C’est le système de fichiers que nous utiliserons pour forma-
ter notre partition principale ;
67738-Administration Linux par la pratique-INT.book Page 226 Friday, May 24, 2019 10:38 AM

Administration Linux par la pratique


226

• en dehors de cela, il existe une multitude de systèmes de fichiers comme xfs, jfs,
reiserfs ou btrfs, qui ont chacun des avantages et des inconvénients. L’installateur de
CentOS utilise xfs par défaut pour formater le disque dur si l’on opte pour le partitionne-
ment automatique.

Retour à la case départ


Démarrez une installation fraîche de CentOS 7, comme nous avons pu le faire au chapitre 3.
Si vous disposez d’une machine virtuelle sous VirtualBox, vous avez le choix :
• créez une nouvelle machine virtuelle ;
• ou écrasez le système invité existant.
Dans tous les cas, renseignez la langue du système, le fuseau horaire et la disposition du cla-
vier comme nous avons pu le faire auparavant. Désactivez le service Kdump, activez l’inter-
face réseau et renseignez le nom d’hôte. Ensuite, cliquez sur Destination de l’installation.
Figure 12–1
Cette fois-ci, nous optons pour le
partitionnement manuel.
67738-Administration Linux par la pratique-INT.book Page 227 Friday, May 24, 2019 10:38 AM

Partitionner et formater un disque dur


227
CHAPITRE 12

Supprimer les partitions existantes


Figure 12–2
Ici, nous écrasons un système
CentOS 7.5 installé. Cliquez sur la
petite flèche à gauche du nom du
système pour afficher les partitions
existantes.

Figure 12–3
Sélectionnez n’importe quelle
partition, puis cliquez sur le petit
bouton « - » en bas à gauche de
l’écran pour la supprimer.
67738-Administration Linux par la pratique-INT.book Page 228 Friday, May 24, 2019 10:38 AM

Administration Linux par la pratique


228

Figure 12–4
Cochez la case en franglais pour
supprimer toutes les partitions du
disque et confirmez par un clic sur
le bouton de suppression.

Créer la partition d’échange


Figure 12–5
Nous n’utilisons pas LVM.
Sélectionnez le schéma de
partitionnement standard dans le
menu déroulant.
67738-Administration Linux par la pratique-INT.book Page 229 Friday, May 24, 2019 10:38 AM

Partitionner et formater un disque dur


229
CHAPITRE 12

Figure 12–6
Cliquez sur le bouton « + » en bas
à gauche de l’écran pour ajouter un
point de montage pour la partition
d’échange.

Figure 12–7
Sélectionnez le point de montage
« swap » et définissez sa taille. Elle
sera égale à la quantité de RAM
disponible, par exemple « 1 Gio ».
67738-Administration Linux par la pratique-INT.book Page 230 Friday, May 24, 2019 10:38 AM

Administration Linux par la pratique


230

Figure 12–8
Définissez l’étiquette « swap »
pour la partition (facultatif) et
cliquez sur « Mise à jour des
paramètres ».

ASTUCE Quelle est la quantité de RAM dans ma machine ?


La combinaison de touches Ctrl+Alt+F2 vous permet d’ouvrir une console virtuelle depuis l’installateur.
Invoquez alors la commande free -m pour afficher la quantité de RAM disponible dans votre machine.
Revenez au menu principal de l’installateur avec Ctrl+Alt+F6. Si vous installez une machine virtuelle
dans VirtualBox, utilisez les raccourcis clavier respectifs Ctrl+F2 et Ctrl+F6.

Créer la partition principale


Figure 12–9
Cliquez sur le bouton « + » en bas
à gauche de l’écran pour ajouter un
point de montage pour la partition
principale.
67738-Administration Linux par la pratique-INT.book Page 231 Friday, May 24, 2019 10:38 AM

Partitionner et formater un disque dur


231
CHAPITRE 12

Figure 12–10
Sélectionnez le point de
montage « / » sans renseigner la
capacité souhaitée, afin d’utiliser la
totalité de l’espace disponible.

Figure 12–11
Sélectionnez le système de fichiers
« ext4 » dans le menu déroulant,
définissez l’étiquette « root » pour
la partition (facultatif) et cliquez sur
« Mise à jour des paramètres ».
67738-Administration Linux par la pratique-INT.book Page 232 Friday, May 24, 2019 10:38 AM

Administration Linux par la pratique


232

Figure 12–12
Cliquez sur le bouton « Terminé »
en haut à gauche pour passer à
l’écran suivant.

Figure 12–13
L’installateur vous affiche un
récapitulatif des opérations.
Confirmez en acceptant les
modifications, ce qui vous ramène
à l’écran principal.

Démarrez l’installation du système, définissez un mot de passe pour root, ajoutez un utilisa-
teur normal et allez boire un café en attendant l’installation du système minimal.
67738-Administration Linux par la pratique-INT.book Page 233 Friday, May 24, 2019 10:38 AM

Partitionner et formater un disque dur


233
CHAPITRE 12

État des lieux


Au terme du redémarrage initial, connectez-vous en tant qu’utilisateur normal et invoquez la
commande mount :

$ mount | grep sda


/dev/sda1 on / type ext4 (rw,relatime,seclabel,data=ordered)

Dans le chapitre précédent, nous avons vu que la commande mount invoquée sans argument
affiche l’ensemble des systèmes de fichiers montés. Les principes qui s’appliquent pour les
disques externes restent valables pour les disques internes. Concrètement, je vois que la première
partition de mon disque dur (/dev/sda1) correspond à ma partition principale (/), que le sys-
tème de fichiers utilisé est l’ext4 et que le tout est accessible en lecture et en écriture (rw).
Dans les systèmes Linux, c’est le fichier /etc/fstab (file systems table) qui me renseigne sur
l’organisation des systèmes de fichiers. Jetons un œil dans ce fichier.

$ cat /etc/fstab
#
# /etc/fstab
...
UUID=cda1238d-fe40-483d-86cb-2e14c2e4eff1 / ext4 defaults 1 1
UUID=f26e0fbb-11d2-4363-9eff-ea108939933b swap swap defaults 0 0

La page de manuel en ligne fstab(5) nous renseigne sur la syntaxe de ce fichier. Chaque
ligne contient une série de six champs, séparés par des espaces ou des tabulations, qui
décrivent respectivement :
• le périphérique bloc à monter ;
• le point de montage ;
• le type de système de fichiers ;
• les options de montage ;
• deux indications pour la sauvegarde et la vérification de l’intégrité du système.
Les éléments potentiellement déroutants dans notre fichier /etc/fstab, ce sont les périphé-
riques désignés par les UUID, c’est-à-dire les premiers champs qui commencent par
UUID=quelquechose.

Comprendre les UUID


L’UUID (Universally Unique IDentifier) est un identifiant universel unique. Il s’agit là d’une
chaîne de caractères théoriquement unique au monde qui identifie sans ambiguïté chaque
élément de notre système, en l’occurrence chaque partition de notre disque dur. Ce n’est pas
de la magie noire et, pour savoir quelle partition correspond à quel UUID, il suffit de jeter un
œil dans le répertoire /dev/disk/by-uuid :
67738-Administration Linux par la pratique-INT.book Page 234 Friday, May 24, 2019 10:38 AM

Administration Linux par la pratique


234

$ ls -l /dev/disk/by-uuid/
total 0
... cda1238d-fe40-483d-86cb-2e14c2e4eff1 -> ../../sda1
... f26e0fbb-11d2-4363-9eff-ea108939933b -> ../../sda2

Le répertoire contient deux liens symboliques commençant par cda123 et f26e0f sur mon
système et qui pointent respectivement vers /dev/sda1 et /dev/sda2.
Pour mieux comprendre les UUID, tentez une expérience pratique. Éditez le fichier /etc/fstab
et remplacez chaque UUID par le périphérique qu’il est censé représenter, en vous méfiant des
fautes de frappe potentiellement fatales. Vous devrez obtenir quelque chose comme ceci :

/dev/sda1 / ext4 defaults 1 1


/dev/sda2 swap swap defaults 0 0

Redémarrez le système. Vous constatez qu’il est toujours fonctionnel.

EXPLICATION Quel est l’intérêt des UUID ?


Actuellement, nous n’utilisons qu’un seul disque dur. Admettons que nous souhaitions en ajouter un
après l’installation du système (et c’est d’ailleurs ce que nous allons faire un peu plus loin dans ce cha-
pitre). Dans certains cas, il est théoriquement possible que le noyau décide de renommer les disques
durs. Le nouveau serait nommé sda et l’ancien disque sda deviendrait sdb. Il en résulterait que notre
système ne démarrerait plus. Le recours aux UUID permet donc d’identifier les disques et les partitions de
façon persistante.

DÉTAIL Pourquoi les partitions ont-elles été inversées ?


Les lecteurs attentifs auront sans doute remarqué que l’ordre des partitions sda1 et sda2 n’est pas celui
que nous avions défini lors du partitionnement manuel. Cela est dû au fait que le programme d’installa-
tion a rectifié le tir en reléguant la partition d’échange vers la fin du disque.
Nous n’allons pas trop rentrer dans les détails mécaniques de géométrie de disque. Retenez juste le fait
qu’il est plus logique de ranger la partition d’échange à la fin d’un disque dur et de réserver le début du
disque au système à proprement parler, étant donné que ces secteurs – physiquement situés au centre –
sont un peu plus rapides d’accès pour les têtes de lecture.

Un schéma de partitionnement un peu plus élaboré


Après cette première prise en main du partitionnement manuel de l’installateur, je vous pro-
pose un deuxième exercice pour vous mettre à l’aise avec la procédure. Voici un schéma de
partitionnement courant, que j’utilise sur mon ordinateur portable :
• une partition /boot de 500 Mo, formatée en ext2 ;
• une partition swap dont la taille équivaut à la RAM disponible ;
• une partition principale occupant l’espace restant, formatée en ext4.
67738-Administration Linux par la pratique-INT.book Page 235 Friday, May 24, 2019 10:38 AM

Partitionner et formater un disque dur


235
CHAPITRE 12

Préparation du disque
1 Dans le menu principal de l’installateur, cliquez sur Destination de l’installation.
2 Vérifiez si le disque est bien sélectionné.
3 Cochez Je vais configurer le partitionnement et cliquez sur Terminé.
4 Supprimez toutes les partitions existantes.
5 Dans le menu déroulant, sélectionnez Partition standard au lieu de LVM.

Créer la partition /boot


1 Cliquez sur le bouton + pour créer un nouveau point de montage.
2 Créez le point de montage /boot avec une capacité de 500 Mio.
3 Sélectionnez le système de fichiers ext2.
4 Définissez l’étiquette boot (facultatif).
5 Confirmez en cliquant sur Mise à jour des paramètres.

Créer la partition d’échange


1 Cliquez sur le bouton + pour créer un autre point de montage.
2 Créez le point de montage swap en spécifiant sa capacité en Gio, par exemple 1 Gio.
3 Définissez l’étiquette swap (facultatif).
4 Confirmez en cliquant sur Mise à jour des paramètres.

Créer la partition principale


1 Cliquez sur le bouton + pour créer un dernier point de montage.
2 Créez le point de montage / sans spécifier la capacité souhaitée. La partition occupera
alors tout l’espace restant du disque.
3 Sélectionnez le système de fichiers ext4.
4 Définissez l’étiquette root (facultatif).
5 Confirmez en cliquant sur Mise à jour des paramètres, puis sur Terminé.
6 Notez en passant que, là aussi, la partition d’échange est reléguée à la fin du disque par
l’installateur.
67738-Administration Linux par la pratique-INT.book Page 236 Friday, May 24, 2019 10:38 AM

Administration Linux par la pratique


236

Figure 12–14
Un schéma de partitionnement
un peu plus élaboré, avec
une partition /boot.

État des lieux


Une fois l’installation terminée, voyons comment se présente le système sous le capot. Invo-
quez la commande mount en filtrant les résultats pour les partitions du disque dur :

$ mount | grep sda


/dev/sda2 on / type ext4 (rw,relatime,seclabel,data=ordered)
/dev/sda1 on /boot type ext2 (rw,relatime,seclabel)

Notre fichier /etc/fstab comporte une ligne de plus pour la partition /boot :

$ cat /etc/fstab
#
# /etc/fstab
...
UUID=fafb15c9-34f5-423f-9278-6c0... / ext4 defaults 1 1
UUID=e92c97c7-3930-4be3-befc-536... /boot ext2 defaults 1 2
UUID=978cc24b-99dd-460a-a567-89d... swap swap defaults 0 0

Jetons un œil dans /dev/disk/by-uuid pour retrouver les correspondances entre les partitions
et les UUID :

$ ls -l /dev/disk/by-uuid/
total 0
... 978cc24b-99dd-460a-a567-89d9feb70b81 -> ../../sda3
... e92c97c7-3930-4be3-befc-536d93589aa3 -> ../../sda1
... fafb15c9-34f5-423f-9278-6c024b486cf0 -> ../../sda2
67738-Administration Linux par la pratique-INT.book Page 237 Friday, May 24, 2019 10:38 AM

Partitionner et formater un disque dur


237
CHAPITRE 12

Comprendre les étiquettes


Lors de l’installation du système, nous avons défini des étiquettes boot, root et swap pour les
partitions respectives. Cette opération n’était pas strictement nécessaire, mais nous pouvons
voir ici à quoi elle sert. Le rôle des étiquettes est similaire à celui des UUID. En effet, regar-
dons dans /dev/disk/by-label :

$ ls -l /dev/disk/by-label/
total 0
lrwxrwxrwx. 1 root root 10 10 nov. 08:00 boot -> ../../sda1
lrwxrwxrwx. 1 root root 10 10 nov. 08:00 root -> ../../sda2
lrwxrwxrwx. 1 root root 10 10 nov. 08:00 swap -> ../../sda3

Les étiquettes sont une autre manière d’obtenir un nommage persistant pour les partitions du
système. Là aussi, je peux tenter l’expérience en éditant /etc/fstab et en remplaçant les
UUID par les étiquettes correspondantes. Voici à quoi cela ressemble sur mon système :

LABEL=root / ext4 defaults 1 1


LABEL=boot /boot ext2 defaults 1 2
LABEL=swap swap swap defaults 0 0

Afficher l’espace occupé et l’espace disponible


La commande df (disk free) nous renseigne sur l’espace occupé et l’espace disponible au sein
des systèmes de fichiers. L’option -h (--human-readable) affiche les résultats dans un format
plus lisible :

$ df -h
Sys. de fichiers Taille Utilisé Dispo Uti% Monté sur
/dev/sda2 19G 1,1G 17G 7% /
...
/dev/sda1 485M 93M 367M 21% /boot
...

EXERCICE Une partition pour /home


Faisons maintenant un petit exercice pratique pour nous familiariser davantage avec les concepts de par-
titionnement et de systèmes de fichiers. Cette fois-ci, effectuez une installation minimale de CentOS en
respectant le schéma de partitionnement suivant :
• une partition /boot de 500 Mo étiquetée boot et formatée en ext2 ;
• une partition swap d’une taille égale à la RAM disponible, étiquetée swap ;
• une partition principale de 5 Go étiquetée root et formatée en ext4 ;
• une partition /home étiquetée home, occupant l’espace restant et formatée en ext4.
67738-Administration Linux par la pratique-INT.book Page 238 Friday, May 24, 2019 10:38 AM

Administration Linux par la pratique


238

Vous devrez obtenir quelque chose comme ceci :


$ df -h | grep sda
/dev/sda3 4,8G 962M 3,6G 21% /
/dev/sda1 485M 93M 367M 21% /boot
/dev/sda2 14G 41M 13G 1% /home
Partant de là, éditez /etc/fstab et remplacez les UUID par les étiquettes correspondantes.

Ajouter un disque à une installation existante


Les différents scénarios de partitionnement et de formatage que nous avons vus jusqu’ici ont
tous pu être mis en pratique avec l’interface graphique de l’installateur de CentOS. Nous
abordons maintenant un cas de figure où nous ne disposons plus de cet outil plus ou moins
convivial, que les administrateurs durs à cuire appellent un « clicodrome ».
Notre point de départ, ce sera le schéma de partitionnement que nous avons vu précédem-
ment, à savoir :
• une partition /boot de 500 Mo, formatée en ext2 ;
• une partition swap dont la taille équivaut à la RAM disponible ;
• une partition principale occupant l’espace restant, formatée en ext4.
Concrètement, notre disque dur sda est organisé en trois partitions sda1, sda2 et sda3 :

$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 20G 0 disk
├─sda1 8:1 0 500M 0 part /boot
├─sda2 8:2 0 18,5G 0 part /
└─sda3 8:3 0 1G 0 part [SWAP]
sr0 11:0 1 1024M 0 rom

Insérer et connecter le deuxième disque dur


Si vous disposez d’une installation physique de CentOS sur un serveur ou un PC faisant
office de serveur, insérez le deuxième disque et connectez-le. Allumez la machine et vérifiez
si les deux disques apparaissent bien dans le BIOS.
67738-Administration Linux par la pratique-INT.book Page 239 Friday, May 24, 2019 10:38 AM

Partitionner et formater un disque dur


239
CHAPITRE 12

Figure 12–15
La première étape consiste
à ajouter le disque physiquement
en vérifiant s’il apparaît bien
dans le BIOS du système.

Ajouter un disque dans une machine virtuelle


Vous pouvez très bien ajouter un deuxième disque à un système invité installé dans VirtualBox.
1 Éteignez le système invité et cliquez sur Configuration.
2 Ouvrez l’onglet Stockage et repérez le Contrôleur SATA.
3 Cliquez-droit sur le Contrôleur SATA et sélectionnez Ajouter un disque dur.
4 Dans la fenêtre subséquente, cliquez sur Créer un nouveau disque.
5 Confirmez le type de fichier de disque dur VDI par défaut.
6 Confirmez la taille dynamiquement allouée du fichier.
7 Nommez le disque Disque2 et définissez sa taille, par exemple 20,00 Gio.
8 Terminez en cliquant sur Créer.
Figure 12–16
VirtualBox permet d’ajouter
un disque dur à une installation
existante.
67738-Administration Linux par la pratique-INT.book Page 240 Friday, May 24, 2019 10:38 AM

Administration Linux par la pratique


240

Figure 12–17
Ici, on ajoute un disque
d’une taille de 20 Go.

Figure 12–18
Notre machine virtuelle dispose
désormais d’un deuxième
disque dur.

Vérifier la prise en charge du deuxième disque


Une fois que le nouveau disque dur est installé dans la machine – physique ou virtuelle – il
faut démarrer le système. Voyons tout d’abord s’il s’affiche en tant que nouveau
périphérique bloc :

$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 20G 0 disk
├─sda1 8:1 0 500M 0 part /boot
├─sda2 8:2 0 18,5G 0 part /
└─sda3 8:3 0 1G 0 part [SWAP]
sdb 8:16 0 20G 0 disk
sr0 11:0 1 1024M 0 rom

L’affichage de lsblk me montre bien la présence d’un deuxième disque sdb non partitionné
en dessous du disque sda et de ses trois partitions sda1, sda2 et sda3.
67738-Administration Linux par la pratique-INT.book Page 241 Friday, May 24, 2019 10:38 AM

Partitionner et formater un disque dur


241
CHAPITRE 12

Partitionner le deuxième disque


Nous utiliserons fdisk pour créer une partition de type Linux sur le disque sdb :

$ sudo fdisk /dev/sdb

Appuyez sur N pour créer une nouvelle partition et confirmez successivement toutes les
valeurs proposées par défaut :

Commande (m pour l'aide) : n


Type de partition :
p primaire (0 primaire(s), 0 étendue(s), 4 libre(s))
e étendue
Sélection (p par défaut) : [Entrée]
Utilisation de la réponse p par défaut
Numéro de partition (1-4, 1 par défaut) : [Entrée]
Premier secteur (2048-41943039, 2048 par défaut) : [Entrée]
Utilisation de la valeur 2048 par défaut
Dernier secteur, +secteur ou +taille{K,M,G} (2048-41943039, 41943039 par défaut) :
[Entrée]
Utilisation de la valeur 41943039 par défaut
La partition 1 de type Linux et de taille 20 GiB est configurée

J’affiche la table des partitions en appuyant sur la touche P (print) :

Commande (m pour l'aide) : p

Disque /dev/sdb : 21.5 Go, 21474836480 octets, 41943040 secteurs


Unités = secteur de 1 × 512 = 512 octets
Taille de secteur (logique / physique) : 512 octets / 512 octets
taille d'E/S (minimale / optimale) : 512 octets / 512 octets
Type d'étiquette de disque : dos
Identifiant de disque : 0x5926af91

Périph. Amorçage Début Fin Blocs Id. Système


/dev/sdb1 2048 41943039 20970496 83 Linux

Ici, je viens de créer une partition de type Linux (83). J’appuie sur W (write) pour écrire la
nouvelle table de partitions sur le disque :

Commande (m pour l'aide) : w


La table de partitions a été altérée.

Appel d'ioctl() pour relire la table de partitions.


Synchronisation des disques.
67738-Administration Linux par la pratique-INT.book Page 242 Friday, May 24, 2019 10:38 AM

Administration Linux par la pratique


242

Je dispose bien d’une nouvelle partition /dev/sdb1 :

$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 20G 0 disk
├─sda1 8:1 0 500M 0 part /boot
├─sda2 8:2 0 18,5G 0 part /
└─sda3 8:3 0 1G 0 part [SWAP]
sdb 8:16 0 20G 0 disk
└─sdb1 8:17 0 20G 0 part
sr0 11:0 1 1024M 0 rom

Formater le deuxième disque


Maintenant que mon nouveau disque est partitionné, je peux le formater. Nous avons vu un
peu plus haut que, sous Linux, je dispose de toute une série de systèmes de fichiers au choix
comme ext2, ext3, ext4 ou xfs. Dans cet exemple, j’opte pour ext4 :

$ sudo mkfs -t ext4 /dev/sdb1


mke2fs 1.42.9 (28-Dec-2013)
...

Une fois que j’ai formaté la partition, je peux éventuellement l’étiqueter :

$ sudo e2label /dev/sdb1 data

L’étiquetage n’est pas obligatoire, mais il permet d’organiser les choses un peu plus
proprement :

$ ls -l /dev/disk/by-label/
total 0
lrwxrwxrwx. 1 root root 10 12 nov. 14:45 boot -> ../../sda1
lrwxrwxrwx. 1 root root 10 12 nov. 15:12 data -> ../../sdb1
lrwxrwxrwx. 1 root root 10 12 nov. 14:45 root -> ../../sda2
lrwxrwxrwx. 1 root root 10 12 nov. 14:45 swap -> ../../sda3

Ensuite, je crée le point de montage /data qui me permettra d’accéder aux données de mon
nouveau disque :

$ sudo mkdir -v /data


mkdir: création du répertoire « /data »

Dans un premier temps, je monte le disque manuellement :

$ sudo mount -v -t ext4 /dev/sdb1 /data


67738-Administration Linux par la pratique-INT.book Page 243 Friday, May 24, 2019 10:38 AM

Partitionner et formater un disque dur


243
CHAPITRE 12

AVERTISSEMENT Alerte SELinux


Lors de la première tentative de montage du disque, vous serez probablement confronté au message
d’erreur suivant :
mount : /data ne contient pas d'étiquettes SELinux.
SELinux est un mécanisme de sécurité que nous aborderons dans le deuxième tome de cet ouvrage. Pour
l’instant, vous pouvez résoudre le problème en invoquant la commande suivante :
$ sudo restorecon -R /data

J’aurais pu invoquer la commande de montage plus simplement :

$ sudo mount /dev/sdb1 /data

Et puisque nous avons vu que les UUID et les étiquettes identifient les partitions sans ambi-
guïté, nous aurions très bien pu nous y prendre comme ceci :

$ sudo mount LABEL=data /data

Dans un cas comme dans l’autre, vérifions si le disque est bien monté :

$ mount | grep sdb1


/dev/sdb1 on /data type ext4 (rw,relatime,seclabel,data=ordered)

Nous pouvons d’ores et déjà écrire des données sur le deuxième disque. N’oubliez pas que
nous n’avons pas encore défini de permissions particulières pour cette arborescence. Pour
l’instant, /data appartient à l’utilisateur root et au groupe root :

$ cd /data/
$ sudo mkdir repertoiretest
$ sudo touch repertoiretest/fichiertest

Vous serez peut-être vaguement surpris de trouver un répertoire lost+found à la racine du


disque. C’est tout à fait normal. Linux utilise ce répertoire lors des tests d’intégrité des sys-
tèmes de fichiers.

$ ls -l
total 20
drwx------. 2 root root 16384 12 nov. 15:09 lost+found
drwxr-xr-x. 2 root root 4096 14 nov. 08:32 repertoiretest

Tout fonctionne comme prévu et nous pouvons démonter le disque à la main :

$ cd
$ sudo umount /data
67738-Administration Linux par la pratique-INT.book Page 244 Friday, May 24, 2019 10:38 AM

Administration Linux par la pratique


244

Il ne reste plus qu’à éditer /etc/fstab en fournissant les informations de ce nouveau système
de fichiers :

/dev/sdb1 /data ext4 defaults 0 2

Si l’on veut faire les choses plus proprement, on peut identifier le disque par son UUID :

UUID=f0546cee-35cf-455f-be6f-ea3... /data ext4 defaults 0 2

Alternativement, on pourra utiliser l’étiquette du disque :

LABEL=data /data ext4 defaults 0 2

Croisez les doigts et redémarrez. Vérifiez si le disque a bien été monté automatiquement au
démarrage du système :

$ mount | grep sdb1


/dev/sdb1 on /data type ext4 (rw,relatime,seclabel,data=ordered)

Le deuxième disque est désormais inclus dans mon système. Dorénavant, je dispose de 20 Go
d’espace supplémentaire dans l’arborescence /data :

$ df -h | grep sd
/dev/sda2 19G 1,2G 17G 7% /
/dev/sda1 485M 93M 367M 21% /boot
/dev/sdb1 20G 45M 19G 1% /data

PARTITIONNEMENT Splendeur et misère des tables de partitions MBR


Il y aurait encore beaucoup de choses à dire sur les tables de partitions MBR. Au lieu de cela, je préfère
vous fournir une synthèse rapide des possibilités et surtout des limitations.
Les disques munis d’un MBR distinguent trois types de partitions :
1. primaire
2. étendue
3. logique
Un disque peut être muni d’un maximum de quatre partitions primaires, ce qui constitue une limitation
considérable. C’est pourquoi on a la possibilité de définir une partition étendue à la place d’une des pri-
maires. À l’intérieur de cette partition étendue, on pourra ensuite créer une série de partitions logiques.
Certains outils de partitionnement – par exemple, le programme d’installation de CentOS – ne dis-
tinguent pas les différents types de partitions en surface et gèrent la répartition des types de partitionne-
ment automatiquement sous le capot.
67738-Administration Linux par la pratique-INT.book Page 245 Friday, May 24, 2019 10:38 AM

Partitionner et formater un disque dur


245
CHAPITRE 12

Une partition étendue ne constitue qu’une sorte de conteneur pour les partitions logiques. Le stockage
des données à proprement parler s’effectue sur les partitions primaires et/ou logiques. Attention, ne
confondez pas le « type de partitions » avec celui que l’on utilise dans un autre contexte pour indiquer le
système d’exploitation censé occuper la partition ou le rôle joué par la partition : Windows, Linux, Linux
swap, Linux RAID, BSD, etc.
Avec un MBR, Linux peut gérer un maximum de quinze partitions, dont un maximum de onze logiques. En
conséquence, la meilleure solution consiste à créer les trois primaires dans un premier temps, puis la parti-
tion étendue qui occupera tout le reste du disque et que l’on remplira de partitions logiques selon le besoin.
La taille maximale d’une telle partition est de deux téraoctets. Il existe une poignée d’astuces pour utili-
ser le partitionnement MBR avec des disques allant jusqu’à quatre téraoctets, mais il vaut mieux éviter
de sauter à travers des cerceaux en feu et passer directement au partitionnement GPT.

Partitionnement manuel d’un système UEFI


Précédemment, nous avons défini un schéma de partitionnement relativement simple
constitué de trois partitions : /boot, swap et la principale. Est-ce que nous pouvons parti-
tionner un système UEFI de la même manière ? Oui, il suffit d’ajouter une partition EFI au
début du disque.
Figure 12–19
Sur un système UEFI, commencez
par créer une partition /boot/efi et
définissez une capacité de 200 Mio.
67738-Administration Linux par la pratique-INT.book Page 246 Friday, May 24, 2019 10:38 AM

Administration Linux par la pratique


246

Figure 12–20
Définissez éventuellement
l’étiquette « efi » pour cette
partition.

Figure 12–21
Créez les autres partitions comme
de coutume. Notez qu’ici nous
définissons une taille de 1 Gio pour
la partition /boot.

DISTINCTION UEFI ou BIOS traditionnel ?


Comment savoir à coup sûr si vous disposez d’un système UEFI ? L’installateur de CentOS vous le dira.
Une fois que vous avez sélectionné le partitionnement manuel et que vous définissez le premier point de
montage, vérifiez la présence d’une entrée /boot/efi dans le menu déroulant Point de montage. Si elle ne
s’affiche pas, c’est que vous êtes en présence d’un BIOS traditionnel.
67738-Administration Linux par la pratique-INT.book Page 247 Friday, May 24, 2019 10:38 AM

Partitionner et formater un disque dur


247
CHAPITRE 12

Une fois que le système est installé, voilà comment cela se présente :

$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 20G 0 disk
├─sda1 8:1 0 200M 0 part /boot/efi
├─sda2 8:2 0 1G 0 part /boot
├─sda3 8:3 0 17,8G 0 part /
└─sda4 8:4 0 1G 0 part [SWAP]
sr0 11:0 1 1024M 0 rom

L’installateur a choisi automatiquement une table de partitions GPT pour le


partitionnement :

$ sudo fdisk -l /dev/sda 2> /dev/null | grep ^Type


Type d'étiquette de disque : gpt

Ajouter un disque avec une table de partitions GPT


Si je veux ajouter un deuxième disque à cette installation, il va falloir que j’utilise une table de
partitions GPT. Notez que rien ne m’empêche d’utiliser le partitionnement GPT sur une
installation traditionnelle. Dans l’exemple ci-après, je vais transformer mon deuxième disque
MBR en disque GPT.
Tout d’abord, je supprime l’entrée correspondante dans /etc/fstab :

UUID=f0546cee-35cf-455f-be6f-ea3... /data ext4 defaults 0 2

Je démonte le disque manuellement :

$ sudo umount /data

Je supprime la table de partitions du disque en utilisant la commande dd :

$ sudo dd if=/dev/zero of=/dev/sdb bs=512 count=64


64+0 enregistrements lus
64+0 enregistrements écrits
32768 octets (33 kB) copiés, 0,0455244 s, 720 kB/s

Pour supprimer la table de partitions, nous la remplissons de zéros. Plus exactement, nous
utilisons dd pour écrire 64 blocs de 512 zéros sur le début du disque sdb. Consultez la page de
manuel de dd pour les détails.
67738-Administration Linux par la pratique-INT.book Page 248 Friday, May 24, 2019 10:38 AM

Administration Linux par la pratique


248

Effectivement, le disque n’affiche plus aucune partition :

$ sudo fdisk -l /dev/sdb


Disque /dev/sdb : 21.5 Go, 21474836480 octets, 41943040 secteurs
Unités = secteur de 1 × 512 = 512 octets
Taille de secteur (logique / physique) : 512 octets / 512 octets
taille d'E/S (minimale / optimale) : 512 octets / 512 octets

Il existe plusieurs solutions pour le partitionnement GPT d’un disque. Pour ma part, j’ai une
préférence marquée pour l’outil gdisk, qui fonctionne à peu de chose près comme fdisk, sauf
qu’il écrit des tables de partitions GPT.

PARTITIONNEMENT L’outil gdisk


L’outil de partitionnement gdisk ne fait pas partie d’une installation minimale de CentOS. Vous pouvez
l’installer comme ceci :
$ sudo yum install gdisk

Lancez gdisk en fournissant le disque sdb en argument :

$ sudo gdisk /dev/sdb


GPT fdisk (gdisk) version 0.8.6

Partition table scan:


MBR: not present
BSD: not present
APM: not present
GPT: not present

Creating new GPT entries.

Command (? for help):

La création d’une nouvelle partition se fait comme avec fdisk. Appuyez sur N et confirmez
successivement toutes les valeurs proposées par défaut :

Command (? for help): n


Partition number (1-128, default 1): [Entrée]
First sector (34-41943006, default = 2048) or
{+-}size{KMGTP}: [Entrée]
Last sector (2048-41943006, default = 41943006) or
{+-}size{KMGTP}: [Entrée]
Current type is 'Linux filesystem'
Hex code or GUID (L to show codes, Enter = 8300): [Entrée]
Changed type of partition to 'Linux filesystem'
67738-Administration Linux par la pratique-INT.book Page 249 Friday, May 24, 2019 10:38 AM

Partitionner et formater un disque dur


249
CHAPITRE 12

Affichez la table des partitions en appuyant sur la touche P (print) :

Command (? for help): p


Disk /dev/sdb: 41943040 sectors, 20.0 GiB
Logical sector size: 512 bytes
Disk identifier (GUID): 1434FD39-81E3-4FC3-97FD-31C304AE4D84
Partition table holds up to 128 entries
First usable sector is 34, last usable sector is 41943006
Partitions will be aligned on 2048-sector boundaries
Total free space is 2014 sectors (1007.0 KiB)

Number Start (sector) End (sector) Size Code Name


1 2048 41943006 20.0 GiB 8300 Linux filesystem

Nous venons de créer une partition de type Linux (8300). Appuyons sur W (write) pour
l’écrire sur le disque :

Command (? for help): w

Final checks complete. About to write GPT data. THIS WILL OVERWRITE EXISTING
PARTITIONS!!

Do you want to proceed? (Y/N): y


OK; writing new GUID partition table (GPT) to /dev/sdb.
The operation has completed successfully.

Notre deuxième disque dispose bel et bien d’une table de partitions GPT :

$ sudo fdisk -l /dev/sdb 2> /dev/null | grep ^Type


Type d'étiquette de disque : gpt

DÉTAIL Le type de partition


Les lecteurs attentifs auront probablement noté que la partition disposait d’un identifiant 8300, par
opposition à l’identifiant 83 pour le partitionnement MBR.

À partir de là, nous pouvons formater, étiqueter et monter notre disque GPT exactement
comme nous l’avons fait pour le disque MBR :

$ sudo mkfs -t ext4 /dev/sdb1


$ sudo e2label /dev/sdb1 data
$ sudo mount /dev/sdb1 /data
...
67738-Administration Linux par la pratique-INT.book Page 250 Friday, May 24, 2019 10:38 AM

Administration Linux par la pratique


250

PARTITIONNEMENT Les GUID Partition Tables (GPT)


Avec les tables GPT, chacune des partitions est identifiée grâce à un Global Unique Identifier (GUID).
Une table GPT offre théoriquement de la place pour 128 partitions, mais Linux n’en gère que les
15 premières. Toutes les partitions sont égales, c’est-à-dire que l’on ne fait plus la distinction entre les
partitions primaires, étendues et logiques. Chaque partition peut avoir une taille théorique de 273 octets,
autrement dit près d’un milliard de téraoctets. Cela devrait suffire pour quelque temps.
La table de partitions se situe dans les premiers 32 × 512 = 17 408 octets du disque dur. Une copie de
ces informations se situe dans les 17 derniers kilo-octets du disque.
Pour des raisons de sécurité, la table de partitions GPT commence par des informations de partitionne-
ment MBR pour suggérer aux outils compatibles MBR que l’ensemble du disque est déjà utilisé par une
seule partition.
En principe, le partitionnement GPT peut être utilisé sur tous (!) les disques durs. En revanche, il n’y a que
les systèmes d’exploitation modernes qui sachent gérer ce type de partitionnement :
1. les distributions Linux actuelles ;
2. Mac OS X ;
3. toutes les versions 64-bits de Windows depuis XP.

Supprimer une table de partitions GPT


Nous avons vu précédemment que, pour supprimer une table de partitions MBR, il suffisait
d’écrire directement une série de zéros – ou n’importe quelle série d’octets aléatoire – sur le
premier secteur du disque. Cette procédure ne fonctionne pas avec les tables de partitions
GPT. Si nous voulons réinitialiser un disque GPT – pour appliquer un partitionnement
MBR par exemple – nous devons nous y prendre autrement.
La manière la plus simple consiste à utiliser l’outil gdisk. Assurez-vous que le disque n’est
plus monté, puis ouvrez-le :

$ sudo gdisk /dev/sdb


GPT fdisk (gdisk) version 0.8.6

Partition table scan:


MBR: protective
BSD: not present
APM: not present
GPT: present

Found valid GPT with protective MBR; using GPT.

Command (? for help):

La touche X nous donne accès aux fonctionnalités avancées de gdisk :

Command (? for help): x

Expert command (? for help):


67738-Administration Linux par la pratique-INT.book Page 251 Friday, May 24, 2019 10:38 AM

Partitionner et formater un disque dur


251
CHAPITRE 12

Une fois que le mode expert est activé, la touche Z (zap GPT data structures and exit)
supprime la table de partitions :

Expert command (? for help): z


About to wipe out GPT on /dev/sdb. Proceed? (Y/N): y
GPT data structures destroyed! You may now partition the disk using fdisk or other
utilities.
Blank out MBR? (Y/N): y

À partir de là, le disque est proprement réinitialisé :

$ sudo gdisk -l /dev/sdb


GPT fdisk (gdisk) version 0.8.6

Partition table scan:


MBR: not present
BSD: not present
APM: not present
GPT: not present

Formater un disque dur externe ou une clé USB


Dans le chapitre précédent, nous avons vu que les clés USB sont normalement formatées en FAT,
un système de fichiers géré aussi bien par Microsoft Windows que par Mac OS X ou Linux.
Dans mon quotidien professionnel, il m’arrive de temps en temps qu’un client vienne me voir
parce qu’il n’arrive pas à accéder à sa clé USB ou à son disque dur externe. Voici les deux cas
de figure les plus fréquents auxquels je suis confronté :
• la clé USB est formatée en NTFS et n’est pas accessible sous Mac OS X ;
• le disque dur externe a été formaté en HFS+ sous Mac OS X et n’est pas accessible sous
Microsoft Windows.
Le meilleur moyen pour rétablir l’interopérabilité entre les systèmes, c’est de vider les données du
disque externe sur une machine capable de le gérer avant de le reformater de manière appropriée.
Dans l’exemple qui suit, je dispose d’une clé USB d’une capacité nominale de 8 Go, que je
souhaite formater de manière appropriée. Voyons comment les choses se présentent :

$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 20G 0 disk
├─sda1 8:1 0 500M 0 part /boot
├─sda2 8:2 0 18,5G 0 part /
└─sda3 8:3 0 1G 0 part [SWAP]
sdb 8:16 1 7,2G 0 disk
├─sdb1 8:17 1 1,7G 0 part
└─sdb2 8:18 1 2,3M 0 part
sr0 11:0 1 1024M 0 rom
67738-Administration Linux par la pratique-INT.book Page 252 Friday, May 24, 2019 10:38 AM

Administration Linux par la pratique


252

La clé USB sdb comporte deux partitions sdb1 et sdb2. Je pourrais théoriquement m’inté-
resser au détail des partitions en invoquant fdisk -l /dev/sdb. Au lieu de cela, je vais sim-
plement supprimer la table de partitions de la clé pour commencer sur des bases saines :

$ sudo dd if=/dev/zero of=/dev/sdb bs=512 count=64


64+0 enregistrements lus
64+0 enregistrements écrits
32768 octets (33 kB) copiés, 0,122878 s, 267 kB/s

À partir de là, j’invoque fdisk pour créer une nouvelle table de partitions sur la clé :

$ sudo fdisk /dev/sdb

Je crée une nouvelle partition en confirmant les valeurs proposées par défaut :

Commande (m pour l'aide) : n


Type de partition :
p primaire (0 primaire(s), 0 étendue(s), 4 libre(s))
e étendue
Sélection (p par défaut) : [Entrée]
Utilisation de la réponse p par défaut
Numéro de partition (1-4, 1 par défaut) : [Entrée]
Premier secteur (2048-15124991, 2048 par défaut) : [Entrée]
Utilisation de la valeur 2048 par défaut
Dernier secteur, +secteur ou +taille{K,M,G} (2048-15124991, 15124991 par défaut) :
[Entrée]
Utilisation de la valeur 15124991 par défaut
La partition 1 de type Linux et de taille 7,2 GiB est configurée

J’affiche la table de partitions :

Commande (m pour l'aide) : p


...
Périphérique Amorçage Début Fin Blocs Id. Système
/dev/sdb1 2048 15124991 7561472 83 Linux

Dans la configuration par défaut, fdisk crée des partitions de type Linux (83). Je vais
changer le type de ma partition grâce à la touche T (type) :

Commande (m pour l'aide) : t


Partition 1 sélectionnée
Code Hexa (taper L pour afficher tous les codes) :

Si j’appuie sur L (list), fdisk m’affiche l’ensemble des types de partitions qu’il est capable de
gérer. Essayez, vous verrez qu’il en existe une quantité impressionnante. Le type qui nous
intéresse ici, c’est W95 FAT32, ou encore 0b pour les intimes :
67738-Administration Linux par la pratique-INT.book Page 253 Friday, May 24, 2019 10:38 AM

Partitionner et formater un disque dur


253
CHAPITRE 12

Code Hexa (taper L pour afficher tous les codes) :0b


Type de partition « Linux » modifié en « W95 FAT32 »

Voyons comment se présente la table de partitions :

Commande (m pour l'aide) : p


...
Périphérique Amorçage Début Fin Blocs Id. Système
/dev/sdb1 2048 15124991 7561472 b W95 FAT32

À présent, je peux écrire les modifications sur le disque :

Commande (m pour l'aide) : w


La table de partitions a été altérée.

Appel d'ioctl() pour relire la table de partitions.


Synchronisation des disques.

Nous avons fait la moitié du chemin. La clé USB dispose désormais d’une partition de type
W95 FAT32. Il ne reste plus qu’à la formater. Nous utiliserons la commande mkdosfs fournie par le
paquet dosfstools. Installez ce paquet (sudo yum install dosfstools), puis formatez la clé :

$ sudo mkdosfs -v /dev/sdb1


mkfs.fat 3.0.20 (12 Jun 2013)
Auto-selecting FAT32 for large filesystem
/dev/sdb1 has 239 heads and 62 sectors per track,
logical sector size is 512,
using 0xf8 media descriptor, with 15122944 sectors;
filesystem has 2 32-bit FATs and 8 sectors per cluster.
FAT size is 14740 sectors, and provides 1886679 clusters.
There are 32 reserved sectors.
Volume ID is 57c26d7b, no volume label.

À partir de là, vous pouvez utiliser la clé comme nous l’avons vu dans le chapitre précédent :

$ sudo mount -v /dev/sdb1 /mnt


mount : /dev/sdb1 monté sur /mnt.
$ mount | grep sdb
/dev/sdb1 on /mnt type vfat (rw,relatime,...)
67738-Administration Linux par la pratique-INT.book Page 254 Friday, May 24, 2019 10:38 AM
67738-Administration Linux par la pratique-INT.book Page 255 Friday, May 24, 2019 10:38 AM

13
Gérer les archives compressées

Qu’est-ce qu’une archive compressée et à quoi cela peut-il bien servir ? Si le terme de compression ne
vous évoque absolument rien, imaginez une grande marmite pleine de soupe. Vous lui faites subir
toute une série de processus, vous la déshydratez... et vous obtenez une boîte de bouillons cubes que
vous pouvez transporter assez aisément.
Autre image, qui illustre davantage le terme d’archivage, pensez à votre dernier déménagement.
Toute la vaisselle, toutes les casseroles, tous les bibelots sur les étagères se sont retrouvés bien
empaquetés et ficelés dans des cartons. Il suffisait alors d’appeler les copains pour faire quelques allers-
retours entre l’appartement et le camion.

Les différents formats d’archivage


Les archives compressées sont omniprésentes dans le quotidien informatique et elles sont uti-
lisées à des fins très variées. À titre d’exemple, lorsque vous souhaitez envoyer vos photos de
vacances par courrier électronique, il sera bien plus commode d’envoyer une archive plutôt
que d’ajouter chaque photo individuellement en pièce jointe. Étant donné que, de nos jours,
la taille moyenne des photos – c’est-à-dire leur poids en mégaoctets – est assez importante,
vous utiliserez plutôt un service de transfert de fichiers en ligne et, dans certains cas, la
confection préalable d’une archive sera obligatoire. Une archive compressée représente égale-
ment le format idéal pour effectuer une sauvegarde de vos données. Enfin, l’utilisation de
fichiers compressés pour le transfert sur Internet vous fait économiser de la bande passante.
67738-Administration Linux par la pratique-INT.book Page 256 Friday, May 24, 2019 10:38 AM

Administration Linux par la pratique


256

Si vous avez l’habitude de Windows, vous avez certainement déjà croisé des fichiers .zip et
.rar sur votre disque. Ces types de fichiers ne sont pas inconnus à Linux, mais les deux for-
mats d’archives compressées les plus largement répandus sous ce système sont les fichiers
.tar.gz et .tar.bz2. Derrière ces extensions, quelque peu énigmatiques pour un néophyte,
se cachent en réalité trois programmes, trois petits outils. tar rassemble plusieurs fichiers et
répertoires en une archive, gzip et bzip2 se chargent de la compression.
Ces formats sont très bien gérés par les différents systèmes d’exploitation. Linux sait gérer les
archives au format .zip et .rar grâce aux outils unzip et unrar. Inversement, lorsque vous
travaillez sous Windows, vous trouverez des outils libres pour traiter les archives au format
.tar.gz et .tar.bz2. Dans ce chapitre, nous nous concentrerons sur les deux principaux for-
mats natifs de Linux.

Compresser et décompresser un fichier

Compresser et décompresser un fichier avec gzip


gzip (GNU Zip) constitue l’outil de compression standard sous Linux. Il fait une chose et
une seule : gérer la compression de fichiers simples. Il ne sait pas constituer des archives, c’est
tar qui s’en charge. Cherchons dans notre système un fichier au hasard, sur lequel nous pour-
rions nous entraîner :

$ cp /etc/services .
$ ls -lh services
-rw-r--r--. 1 ... 655K 22 nov. 07:44 services

L’affichage détaillé nous montre qu’il s’agit d’un fichier texte assez important en termes de
taille : 655 kilo-octets. C’est pour cela que je l’ai choisi. Essayons de le compacter :

$ gzip services

gzip remplace le fichier d’origine par une version plus compacte, comportant l’extension de
fichier supplémentaire .gz :

$ ls -lh services.gz
-rw-r--r--. 1 ... 133K 22 nov. 07:44 services.gz

Dans cet exemple, la compression est assez conséquente : le fichier résultant est environ cinq
fois plus petit que l’original.
67738-Administration Linux par la pratique-INT.book Page 257 Friday, May 24, 2019 10:38 AM

Gérer les archives compressées


257
CHAPITRE 13

LE CONSEIL DU CHEF Quel type de fichiers compresser avec gzip ?


La compression varie selon un certain nombre de facteurs. gzip n’aura pas beaucoup d’effet sur des for-
mats de fichiers comportant une compression initiale, comme le MP3 ou le JPEG. En revanche, il fonction-
nera très bien avec les fichiers au format texte simple ou les images Bitmap non compressées.

Pour décompresser un fichier .gz, vous avez deux possibilités :

$ gzip -d services.gz

Ou alors, ce qui revient exactement au même :

$ gunzip services.gz

Compresser et décompresser un fichier avec bzip2


L’outil bzip2 est un outil de compression au même titre que gzip, au détail près qu’il utilise
un algorithme un peu plus performant.

OUTIL Installer bzip2


L’outil bzip2 ne fait pas partie de notre installation minimale.
$ sudo yum install bzip2

Reprenons l’exemple précédent, avec le fichier services :

$ bzip2 services

Il en résulte un fichier compressé portant l’extension de fichier supplémentaire .bz2. Regar-


dons ce fichier de plus près :

$ ls -lh services.bz2
-rw-r--r--. 1 ... 122K 22 nov. 07:44 services.bz2

Effectivement, le taux de compression est légèrement supérieur à celui proposé par gzip. Le
fichier compressé ne pèse plus que 122 kilo-octets, contre 133 avec gzip.
Pour décompresser un fichier compacté à l’aide de bzip2, nous avons également le choix entre
deux commandes, qui ont exactement le même effet :

$ bzip2 -d services.bz2

Ou :

$ bunzip2 services.bz2
67738-Administration Linux par la pratique-INT.book Page 258 Friday, May 24, 2019 10:38 AM

Administration Linux par la pratique


258

Manipuler les archives avec tar

Créer une archive avec tar


gzip et bzip2 ne gèrent que la compression d’un seul fichier fourni en argument. Pour créer
une archive, nous aurons recours à la commande tar. Là aussi, un exemple pratique nous
aidera à comprendre le fonctionnement de l’outil en question.
Pour commencer, il nous faut un répertoire contenant quelques fichiers. Je crée donc, au hasard,
un répertoire ~/config et j’y place tous les fichiers *.conf que je trouve dans l’arborescence de
/etc en faisant fi des avertissements relatifs aux droits d’accès. Notez que la première barre
oblique inverse (antislash) \ après la commande find indique un passage à la ligne, étant donné
que la commande ne tient pas en une seule ligne. Vous pourrez vous en passer.

$ mkdir config
$ find /etc -name '*.conf' 2> /dev/null \
> -exec cp {} ~/config/ \;
$ ls config/
00-keyboard.conf namespace.conf
20-nproc.conf NetworkManager.conf
99-sysctl.conf nm-dispatcher.conf
access.conf nm-ifcfg-rh.conf
...

Nous allons rassembler tous ces fichiers contenus dans ~/config pour en constituer une
archive avec la commande tar :

$ tar cvf config.tar config/


config/
config/vconsole.conf
config/20-nproc.conf
config/sepermit.conf
config/listen.conf
config/plymouthd.conf
config/namespace.conf
config/grub2.conf
config/dracut.conf
...

Le nom du programme (tape archiver) révèle son utilisation initiale : tar a servi en premier
lieu à la gestion d’archives sur bande magnétique. Voici une petite explication de l’exemple
que nous venons de voir :
• tar reçoit l’ordre de créer (create) une archive avec l’option -c ;
• la commande nous dit ce qui se passe en coulisse avec l’option -v ;
• le premier argument (config.tar) sera interprété comme le nom de l’archive grâce à
l’option -f (file).
67738-Administration Linux par la pratique-INT.book Page 259 Friday, May 24, 2019 10:38 AM

Gérer les archives compressées


259
CHAPITRE 13

Voici un exemple plus général pour vous familiariser avec la syntaxe de tar pour la création
d’une archive. Nous créons trois fichiers fichier1, fichier2 et fichier3 et les rassemblons
dans un fichier archive.tar :

$ touch fichier1 fichier2 fichier3


$ tar -cvf archive.tar fichier1 fichier2 fichier3
fichier1
fichier2
fichier3

Extraire les fichiers d’une archive


Avant de « déballer » notre archive, nous allons la déplacer dans un répertoire nouvellement
créé. En effet, étant donné que les fichiers d’origine sont toujours en place, une extraction
dans le même répertoire ne changerait rien et écraserait tous les fichiers existants.

$ mkdir repertoire
$ mv config.tar repertoire/
$ cd repertoire/
$ tar -xvf config.tar
config/
config/vconsole.conf
config/20-nproc.conf
config/sepermit.conf
config/listen.conf
config/plymouthd.conf
config/namespace.conf
config/grub2.conf
config/dracut.conf
...

Dans l’autre sens, c’est donc l’option -x (extract) qui procède au dépaquetage de l’archive.

Combiner l’archivage et la compression


Essayons de créer une archive compressée en reprenant l’exemple du début. Nous pouvons
très bien :
• créer l’archive avec tar ;
• compresser l’archive avec gzip ou bzip2.
Voici ce que cela donnerait en pratique :

$ tar -cvf config.tar config/


$ gzip config.tar
$ ls -lh config.tar.gz
-rw-rw-r--. 1 ... 30K 22 nov. 10:39 config.tar.gz
67738-Administration Linux par la pratique-INT.book Page 260 Friday, May 24, 2019 10:38 AM

Administration Linux par la pratique


260

Et avec bzip2 :

$ gunzip config.tar.gz
$ bzip2 config.tar
$ ls -lh config.tar.bz2
-rw-rw-r--. 1 ... 26K 22 nov. 10:39 config.tar.bz2

Cependant, il est possible de faire encore plus simple. tar comporte une série d’options qui
servent à créer une archive et la compresser à la volée. Effacez les archives compressées de
l’exercice précédent et gardez seulement le répertoire ~/config et son contenu. Maintenant,
créez une archive compressée avec les options suivantes :

$ tar -cvzf config.tar.gz config/


$ ls -lh config.tar.gz
-rw-rw-r--. 1 ... 30K 22 nov. 10:43 config.tar.gz

Si vous souhaitez créer une archive compressée avec bzip2, il suffira de remplacer l’option -z
par -j :

$ tar -cvjf config.tar.bz2 config/


$ ls -lh config.tar.bz2
-rw-rw-r--. 1 ... 26K 22 nov. 10:45 config.tar.bz2

Notez la différence de taille entre les deux archives :

$ ls -lh config.tar.*
-rw-rw-r--. 1 ... 26K 22 nov. 10:45 config.tar.bz2
-rw-rw-r--. 1 ... 30K 22 nov. 10:43 config.tar.gz

Extraire une archive compressée


Inversement, l’extraction d’une archive compressée peut également s’effectuer d’une traite :
• pour une archive .tar.gz :

$ tar -xvzf config.tar.gz

• et pour une archive .tar.bz2 :

$ tar -xvjf config.tar.bz2

Remarque
Les options de tar sont souvent utilisées sans le tiret initial. Vous pouvez donc écrire de la même façon
tar -xvjf ou tar xvjf, cela n’a aucune incidence sur le fonctionnement de la commande.
67738-Administration Linux par la pratique-INT.book Page 261 Friday, May 24, 2019 10:38 AM

14
Premiers pas sur le réseau

À partir du moment où vous connectez deux ou plusieurs ordinateurs et où vous envoyez des données
d’une machine à l’autre, vous fonctionnez en réseau. Ce chapitre vous prend par la main et vous
initie pas à pas aux bases du réseau sous Linux, en partant d’un cas pratique simple.

Une confusion babylonienne


La communication est un besoin essentiel pour l’être humain, au même titre que respirer,
boire et manger. De nos jours, on peut filer la métaphore et légitimement considérer que la
communication avec d’autres machines fait partie du minimum syndical que l’on peut exiger
d’un ordinateur, à plus forte raison lorsqu’il s’agit d’un serveur. Le hic, c’est que la communi-
cation entre les ordinateurs est une chose très complexe, probablement autant que celle entre
les humains. Ça parle plusieurs langues, ça utilise des patois différents, ça crée des malen-
tendus, ça entend de travers, ça monopolise le discours, c’est sourd comme un pot et parfois
stupide comme un pot. Bref, c’est la pagaille.
Là encore, il existe une série d’ouvrages sur le sujet, toute la gamme allant de « pour les nuls »
à « pour les pros ». En règle générale, ils comprennent une histoire exhaustive des réseaux
depuis la guerre froide et ARPANET, suivie d’une introduction détaillée à l’algèbre binaire,
octale et hexadécimale. Vous feuilletez ces livres de plus en plus vite, puis vous les reposez en
vous sentant progressivement envahi par une vague nausée existentielle. MAC ? ARP ? IP ?
TCP ? UDP ? DHCP ? DNS ? NTP ? HTTP ? FTP ? Comment vous en sortir ?
67738-Administration Linux par la pratique-INT.book Page 262 Friday, May 24, 2019 10:38 AM

Administration Linux par la pratique


262

Je prends donc le parti de vous initier aux réseaux et à leur fonctionnement par une approche
résolument pratique, en mettant les mains à la pâte, avec un minimum de théorie. Nous avan-
cerons par étapes successives, en partant du cas de figure le plus simple. Puis, peu à peu,
lorsque vous aurez digéré les notions de base, je vous présenterai des configurations un peu
plus sophistiquées, quitte à rectifier le tir et à reprendre les simplifications abusives dont je me
serai rendu coupable. Le tout part d’un exemple très concret, le cas de figure le plus simple :
une machine locale reliée à Internet par le biais d’un modem routeur ADSL.

Prérequis matériel et logiciel

Le modem routeur ADSL


Lorsque vous souscrivez un abonnement Internet ADSL auprès d’un des grands fournisseurs
d’accès, celui-ci vous fournit un modem routeur. Que vous soyez abonné chez Nerim,
Orange, Free, SFR ou autre, le principe technique de la connexion à Internet sera le même.
Ce qui changera, c’est la forme du boîtier de votre modem et quelques menus détails dans la
configuration.
Figure 14–1
Le modem routeur Netgear que
j’utilise pour la connexion à
Internet dans mon bureau.

Figure 14–2
À l’arrière du modem routeur,
la prise ADSL est branchée à la
prise du téléphone. Les deux prises
Ethernet sont reliées à des
machines locales ou à un switch.
67738-Administration Linux par la pratique-INT.book Page 263 Friday, May 24, 2019 10:38 AM

Premiers pas sur le réseau


263
CHAPITRE 14

Questions de câblage
Le modem routeur est peut-être équipé d’un point d’accès Wi-Fi, mais nous n’allons pas l’uti-
liser, du moins pas tout de suite. Dans un premier temps, notre configuration de base nécessi-
tera en tout et pour tout deux câbles (sans compter l’alimentation du modem, bien sûr) :
• le câble reliant la prise téléphonique au modem. Il vous faudra probablement songer à ins-
taller un filtre. Normalement, une feuille explicative livrée avec le modem détaille ce
genre de chose de manière assez claire ;
• le câble Ethernet reliant le modem routeur à la carte Ethernet du serveur.
Figure 14–3
Un câble Ethernet.

Choisir le bon type de câble


Il existe deux types de câbles Ethernet : plat et croisé. Les branchements des fils aux connec-
teurs ne sont pas les mêmes selon le type de câble. Attention à ne pas les confondre, vous ris-
queriez de passer des heures à vous demander pourquoi votre réseau ne fonctionne pas. Les
câbles croisés sont uniquement utilisés pour les connexions directes de PC à PC. Ce n’est pas
ce qu’il nous faut ici. Pour les connexions entre l’ordinateur et le modem, nous devons utiliser
un câble plat.
Les câbles réseau sont classés en différentes catégories en fonction de leurs niveaux de perfor-
mances. Repérez des indications comme Cat 5, Cat 5E ou Cat 6 imprimées sur le câble.
• Les Cat 5E et Cat 6 répondent à des normes plus élevées de transmission de données et
peuvent effectuer des transferts à 1 000 Mbps. C’est ce qu’il nous faut.
• Les Cat 5 ou inférieurs plafonnent à 100 Mbps, voire moins, et nous éviterons de les uti-
liser.
Notez que les connecteurs d’un câble Ethernet sont plus généralement connus sous le nom de
« connecteurs RJ45 ».
67738-Administration Linux par la pratique-INT.book Page 264 Friday, May 24, 2019 10:38 AM

Administration Linux par la pratique


264

La carte Ethernet
Si nous procédons méthodiquement, nous devons d’abord nous poser la question : le serveur
dispose-t-il d’une carte Ethernet ? Si oui, est-elle branchée correctement ? Bien sûr, nous
pouvons jeter un coup d’œil sur les branchements de la machine, ce qui nécessite parfois de
grimper derrière le meuble où il est rangé. Alternativement, nous pouvons rester assis devant
et nous contenter d’invoquer la commande suivante :

$ lspci | grep -i eth


02:00.0 Ethernet controller: Intel Corporation 82574L Gigabit Network Connection
03:00.0 Ethernet controller: Intel Corporation 82574L Gigabit Network Connection

La machine en question est un HP Proliant Microserver qui fait office de passerelle dans
mon bureau. Le résultat de la commande lspci nous montre qu’elle est équipée de deux
cartes réseau Intel identiques.
Attention : cette commande nous dit uniquement qu’une carte Ethernet est bien présente physi-
quement sur le serveur. Cela ne veut pas forcément dire que la carte est effectivement gérée par le
système d’exploitation. Si nous voulons savoir ce que ce dernier – en l’occurrence le noyau –
« pense » du périphérique en question, nous devons utiliser la commande suivante :

$ dmesg | grep -i network


... e1000e: Intel(R) PRO/1000 Network Driver - 3.2.6-k
... e1000e ... eth0: Intel(R) PRO/1000 Network Connection
... e1000e ... eth1: Intel(R) PRO/1000 Network Connection

Le résultat de cette dernière commande nous montre que, apparemment, le kernel reconnaît
les deux cartes Ethernet. Dans le cas contraire, nous aurions eu droit à un message d’erreur de
ce genre :

eth0: unknown interface: No such device

Ce n’est pas le cas (heureusement) et nous savons que le kernel est capable de gérer le matériel
avec le module e1000e. Il est peut-être utile de s’attarder un moment sur cette notion de
« module ».

Les pilotes sous Linux


Un module, ce n’est rien d’autre que ce que vous connaissez peut-être par ailleurs sous le nom
de pilote (driver, en anglais), c’est-à-dire un bout de code qui permet au système d’exploita-
tion de communiquer avec le matériel et donc de le gérer. Sur un système Linux, la com-
mande lsmod sert à afficher le statut des modules.
67738-Administration Linux par la pratique-INT.book Page 265 Friday, May 24, 2019 10:38 AM

Premiers pas sur le réseau


265
CHAPITRE 14

$ lsmod
...
ata_generic 12923 0
pata_acpi 13053 0
i2c_algo_bit 13413 0
drm_kms_helper 179394 0
e1000e 248519 0
...

Filtrons ce résultat s’il est trop long :

$ lsmod | grep e1000


e1000e 248519 0
ptp 19231 1 e1000e

Les modules se trouvent dans /lib/modules, dans le répertoire correspondant à la version du


noyau en cours. Concrètement, le pilote de notre carte se trouve donc dans l’arborescence
/lib/modules/3.10.0-957.el7.x86_64, dans le sous-répertoire kernel/drivers/net/
ethernet/intel/e1000, et c’est le fichier e1000.ko.xz. L’extension .ko signifie kernel object et
.xz nous indique qu’il s’agit d’un fichier compressé. C’est précisément ce fichier qui est
chargé par le noyau pour gérer une carte Ethernet équipée d’une puce Intel 82574L.
Prenons un autre exemple pour illustrer ceci. Le vieux PC reconditionné qui me sert de « bac
à sable » pour tester certaines configurations de serveur est équipé de deux cartes réseau bas
de gamme :

$ lspci | grep -i eth


07:04.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL-8100/8101L/8139 PCI
Fast Ethernet Adapter (rev 10)
3f:00.0 Ethernet controller: Broadcom Inc. and subsidiaries NetXtreme BCM5755 Gigabit
Ethernet PCI Express (rev 02)

Ces deux cartes semblent être prises en charge par le noyau :

$ dmesg | grep -i ethernet


... 8139cp: 8139cp: 10/100 PCI Ethernet driver v1.3 ...
... 8139too: 8139too Fast Ethernet driver 0.9.28
... tg3 ... eth1: attached PHY is 5755 (10/100/1000Base-T Ethernet) ...

SYSTÈME Les messages du noyau


Vous aurez remarqué que les messages du noyau varient en fonction du type de la carte réseau. Sur la
première machine, j’ai filtré dmesg avec le terme network ; sur la deuxième, j’ai utilisé ethernet.
67738-Administration Linux par la pratique-INT.book Page 266 Friday, May 24, 2019 10:38 AM

Administration Linux par la pratique


266

Les deux cartes en question sont donc gérées par les modules 8139cp, 8139too et tg3, situés
dans l’arborescence /lib/modules/3.10.0-957.el7.x86_64 :

$ cd /lib/modules/3.10.0-957.el7.x86_64/
$ find . -name 'tg3*'
./kernel/drivers/net/ethernet/broadcom/tg3.ko.xz
$ find . -name '8139*'
./kernel/drivers/net/ethernet/realtek/8139too.ko.xz
./kernel/drivers/net/ethernet/realtek/8139cp.ko.xz

Principe de fonctionnement des réseaux

Afficher la configuration des interfaces réseau


Après avoir vérifié que mes cartes Ethernet sont gérées, j’invoque la commande suivante :

$ ip address

Figure 14–4
Invoquée sans autre argument, la
commande ip address affiche la
configuration des interfaces réseau.

Le résultat de la commande ip address se décompose en trois sections dans notre exemple :


lo, enp7s4 et enp63s0. La partie lo (comme localhost) désigne la boucle locale, une interface
qui représente approximativement le journal intime de votre machine et qui lui permet de
soliloquer. Laissons-la de côté pour l’instant. Les interfaces qui nous intéressent plus particu-
lièrement sont tout ce qui n’est pas lo, en l’occurrence enp7s4 et enp63s0. Considérons donc
la section enp63s0 et essayons de lire les informations qui nous concernent.

$ ip address show enp63s0


3: enp63s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group
default qlen 1000
link/ether 00:19:bb:e3:31:ce brd ff:ff:ff:ff:ff:ff
inet 192.168.0.12/24 brd 192.168.0.255 scope global noprefixroute dynamic enp63s0
valid_lft 79304sec preferred_lft 79304sec
inet6 fe80::ebc5:8c3:26c4:1a13/64 scope link noprefixroute
valid_lft forever preferred_lft forever
67738-Administration Linux par la pratique-INT.book Page 267 Friday, May 24, 2019 10:38 AM

Premiers pas sur le réseau


267
CHAPITRE 14

L’adresse MAC de votre carte


La ligne link/ether 00:19:bb:e3:31:ce identifie la carte réseau d’un point de vue purement
matériel. Il s’agit d’une série de six chiffres hexadécimaux séparés par des symboles deux-
points qui constitue l’empreinte digitale de votre carte Ethernet, en quelque sorte. Cette
empreinte ou adresse MAC (Media Access Control, rien à voir avec les ordinateurs de la marque
Apple) est normalement unique au monde. Nous pouvons tranquillement l’ignorer pour nos
besoins de configuration, mais sachez au moins de quoi il s’agit.
Si nous avions voulu limiter l’affichage à l’adresse MAC, nous aurions utilisé la commande
suivante :

$ ip link show enp63s0


3: enp63s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DEFAULT
group default qlen 1000
link/ether 00:19:bb:e3:31:ce brd ff:ff:ff:ff:ff:ff

À SAVOIR Système décimal et système hexadécimal


Dans le système décimal, on compte de un à dix. Dans le système hexadécimal, on compte de un à seize.
On dispose donc des « chiffres » supplémentaires A, B, C, D, E et F.

L’adresse IP et le réseau
L’adresse IP inet 192.168.0.12 caractérise ma machine dans le réseau. Autrement dit,
192.168.0.12 est l’adresse IP de mon ordinateur dans le réseau local 192.168.0.0/24. Je laisse de
côté la valeur brd 192.168.0.255 (brd pour broadcast) et je me concentre sur la notation
inet 192.168.0.12/24.

Le /24 signifie ici que mon réseau peut disposer d’un maximum de 254 hôtes distincts. Vous
vous demanderez probablement comment j’en viens à cette conclusion. Dans le cas présent, je
retire 24 de 32, j’obtiens 8, puis j’effectue l’opération 28-2 = 254. Gardez cette formule
magique dans un coin de la tête, nous y reviendrons un peu plus loin.
Normalement, chaque ordinateur dans un réseau possède une adresse IP, une série de quatre
nombres a.b.c.d : a et d sont compris entre 1 et 254, b et c peuvent prendre toutes les valeurs
comprises entre 0 et 255. Tentez l’expérience : lancez ip address sur votre machine pour
noter votre adresse IP et votre réseau. Vous aurez quelque chose comme 192.168.1.10 ou
10.23.2.4 (ou autre chose) pour l’adresse IP et /24 ou /23 ou /16 (ou autre chose) pour le réseau.
Théoriquement, tous les ordinateurs de la terre se répartissent donc des adresses IP allant de
1.0.0.1 à 254.255.255.254. Je dis bien théoriquement et je prie les puristes de bien vouloir fermer
les yeux. Mais à quelques (gros) détails près, c’est ce qui se passe en réalité.

IPv4 et IPv6
Vous vous demandez peut-être ce que signifie inet6 fe80::ebc5:8c3:26c4:1a13/64. Il s’agit
là tout simplement d’un nouveau protocole d’adressage IP, dans la mesure où un protocole
réseau mis au point vers la fin des années 1990 peut être qualifié de « nouveau ».
67738-Administration Linux par la pratique-INT.book Page 268 Friday, May 24, 2019 10:38 AM

Administration Linux par la pratique


268

Les adresses IP que nous traitons dans ce chapitre font partie du protocole IPv4 à 32 bits :
grosso modo, quatre nombres de 0 à 255 (en notation décimale), séparés par des points. Le
hic avec ce protocole, c’est que le nombre d’adresses distinctes possibles est non seulement
limité, mais véritablement épuisé dans certains pays. Les adresses IP existantes y ont effecti-
vement toutes été attribuées.
IPv6 constitue le remède à cette pénurie d’adresses. C’est un protocole à 128 bits ; le nombre
d’adresses possibles passe donc de 232 à 2128. En contrepartie, les adresses IP du futur ressem-
bleront à quelque chose du genre fe80::ebc5:8c3:26c4:1a13.

FUTUR IPv6
Le protocole IPv6 est l’avenir du réseau et, dans l’état actuel des choses, il le restera pour un bon
moment.

Vous pouvez très bien afficher l’adresse IPv4 en faisant fi de l’IPv6 :

$ ip -family inet address show enp63s0


3: enp63s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group
default qlen 1000
inet 192.168.0.12/24 brd 192.168.0.255 scope global noprefixroute dynamic enp63s0
valid_lft 74036sec preferred_lft 74036sec

Les adresses IP

Un peu de pratique
Voici une petite expérience amusante pour illustrer la notion d’adresse IP. Prenons au hasard
un nom de site web suffisamment connu, par exemple www.google.fr. Ouvrons un terminal et
invoquons la commande suivante :

$ host www.google.fr
www.google.fr has address 172.217.22.131
www.google.fr has IPv6 address 2a00:1450:4007:816::2003

OUTIL La commande host


La commande host fait partie du paquet bind-utils.
$ sudo yum install bind-utils

La commande me retourne deux réponses : une adresse IPv4 172.217.22.131 et une adresse
IPv6 dont je ne me préoccupe pas.
Maintenant, ouvrez un navigateur web sur votre poste de travail, effacez le contenu de la
barre d’adresses et mettez-y http://172.217.22.131. Que constatez-vous ?
67738-Administration Linux par la pratique-INT.book Page 269 Friday, May 24, 2019 10:38 AM

Premiers pas sur le réseau


269
CHAPITRE 14

Figure 14–5
Voici la machine 172.217.22.131,
Google pour les intimes.

Notez au passage que Mozilla Firefox – comme tous les navigateurs modernes – remplace
aussitôt l’adresse IP saisie dans la barre d’adresses par le nom de domaine correspondant, dès
l’ouverture de la page. Non content de cela, vous serez redirigé vers le protocole sécurisé
HTTPS. Enfin, vous vous doutez probablement que derrière la machine www.google.fr se
cache en réalité tout un parc de machines.
L’expérience ne fonctionne pas avec n’importe quel nom de domaine, puisqu’elle dépend de la
configuration du serveur web correspondant. Vous pouvez quand même la retenter avec un
autre site, par exemple www.centos.org.
Sans aller chercher plus loin, vous commencez à avoir une idée un peu plus concrète de l’uti-
lité d’une adresse IP. Maintenant, revenons à notre réseau local et à notre machine. J’ai les
informations suivantes :
• mon adresse IP est 192.168.0.12 ;
• mon réseau est 192.168.0.0/24.

Un peu de théorie
Chaque adresse IP se subdivise en une partie réseau et une partie hôte. Prenons deux
exemples.
• J’ai un réseau 192.168.0.0/24. Rappelez-vous la formule magique que nous avons vue un
peu plus haut. Je retire 24 de 32, j’obtiens 8 et j’effectue l’opération 28-2 = 254. Je peux
donc configurer un réseau de 254 hôtes différents, avec des adresses IP allant de
192.168.0.1 à 192.168.0.254. Ces machines pourront toutes communiquer entre elles.
67738-Administration Linux par la pratique-INT.book Page 270 Friday, May 24, 2019 10:38 AM

Administration Linux par la pratique


270

• J’ai un réseau 192.168.0.0/16. Je retire 16 de 32, j’obtiens 16 et j’effectue l’opération


216-2 = 65 534. Je peux donc configurer un réseau de 65 534 hôtes différents, avec des
adresses IP allant de 192.168.0.1 à 192.168.255.254. Ces machines pourront également
toutes communiquer entre elles.
Pour différencier la partie réseau de la partie hôte dans une adresse IP, on utilise souvent le
masque de sous-réseau. L’outil ip préfère la notation CIDR (Classless Inter-Domain Routing),
qui donne le numéro du réseau suivi par une barre oblique et le nombre de bits à 1 dans la
notation binaire du masque de sous-réseau. Pour trouver le masque de sous-réseau de
192.168.0.12/24, je peux utiliser l’outil ipcalc qui fait partie de mon système de base :

$ ipcalc --netmask 192.168.0.12/24


NETMASK=255.255.255.0
$ ipcalc --netmask 192.168.0.12/16
NETMASK=255.255.0.0

Un sous-réseau est un groupe de machines dont les adresses IP respectent un certain ordre. Il
peut être défini à l’aide de deux éléments :
• le réseau (network prefix) : quelque chose comme 192.168.0.0 ou 10.23.2.0 ;
• le masque de sous-réseau (subnet mask) : quelque chose comme 255.255.255.0 ou
255.255.0.0.
À première vue, on ne voit pas trop comment ces deux éléments sont censés définir l’ensemble
des adresses IP d’un sous-réseau. Or, il suffit de les convertir en binaire pour mieux comprendre.
Le masque définit l’emplacement des bits dans une adresse IP qui sont communs au sous-réseau.
Voici par exemple les formes binaires de 192.168.0.0 et 255.255.255.0 :

192.168.0.0 : 11000000 10101000 00000000 00000000


255.255.255.0 : 11111111 11111111 11111111 00000000

Et voici la même conversion pour 10.23.2.0 et 255.255.0.0 :

10.23.2.0 : 00001010 00010111 00000010 00000000


255.255.0.0 : 11111111 11111111 00000000 00000000

Dans chacun des exemples, je peux faire varier les bits qui ne sont pas en gras (la partie à
droite) pour obtenir une adresse IP valide dans le sous-réseau.

Peaufiner l’affichage des adresses IP


L’outil ip dispose de toute une série d’options d’affichage, que nous allons explorer ici. Reve-
nons à la commande que nous avons invoquée un peu plus haut :
67738-Administration Linux par la pratique-INT.book Page 271 Friday, May 24, 2019 10:38 AM

Premiers pas sur le réseau


271
CHAPITRE 14

$ ip address show enp63s0


3: enp63s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group
default qlen 1000
link/ether 00:19:bb:e3:31:ce brd ff:ff:ff:ff:ff:ff
inet 192.168.0.12/24 brd 192.168.0.255 scope global noprefixroute dynamic enp63s0
valid_lft 81643sec preferred_lft 81643sec
inet6 fe80::ebc5:8c3:26c4:1a13/64 scope link noprefixroute
valid_lft forever preferred_lft forever

Nous avons vu que l’option -family inet nous limite à l’affichage de l’adresse IPv4 :

$ ip -family inet address show enp63s0


3: enp63s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group
default qlen 1000
inet 192.168.0.12/24 brd 192.168.0.255 scope global noprefixroute dynamic enp63s0
valid_lft 81563sec preferred_lft 81563sec

L’option -color met de la couleur dans l’affichage du résultat et le rend beaucoup plus lisible :

$ ip -color -family inet address show enp63s0


3: enp63s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group
default qlen 1000
inet 192.168.0.12/24 brd 192.168.0.255 scope global noprefixroute dynamic enp63s0
valid_lft 81530sec preferred_lft 81530sec

Enfin, l’option -oneline rassemble toutes les informations en une seule ligne :

$ ip -color -oneline -family inet address show enp63s0


3: enp63s0 inet 192.168.0.12/24 brd 192.168.0.255 scope global noprefixroute
dynamic enp63s0\ valid_lft 81469sec preferred_lft 81469sec

Jusqu’ici, j’ai fait exprès de détailler les options longues parce qu’elles sont plus parlantes. Jetez un
œil dans la page de manuel de la commande ip(8) ; vous verrez que chaque option comprend
également une version courte. La dernière commande aurait donc pu être invoquée comme ceci :

$ ip -c -o -4 a s enp63s0
3: enp63s0 inet 192.168.0.12/24 brd 192.168.0.255 scope global noprefixroute
dynamic enp63s0\ valid_lft 81267sec preferred_lft 81267sec

Établir un contact avec une machine distante : ping


Retenons le fait que les machines d’un même réseau sont capables de communiquer entre
elles. Pour l’instant, notre réseau ne comporte que deux machines, si l’on peut dire : le serveur
Linux et le routeur. En effet, le routeur est aussi une machine (ou un hôte), même s’il n’est
doté ni d’un clavier ni d’un écran. Il contient un petit système d’exploitation embarqué
(Linux, eh oui !) et il s’acquitte des quelques tâches simples pour lesquelles il est construit.
67738-Administration Linux par la pratique-INT.book Page 272 Friday, May 24, 2019 10:38 AM

Administration Linux par la pratique


272

Normalement, un routeur est livré avec une adresse IP fixe préconfigurée par défaut, indiquée
sur la petite note explicative qui l’accompagne. À titre d’exemple, les Livebox de chez Orange
sont souvent préconfigurées avec une adresse 192.168.1.1. Dans notre cas, le routeur Netgear
livré par Nerim a une adresse IP par défaut 192.168.0.1. Voyons voir si j’arrive à établir une
liaison avec le routeur. Pour cela, j’utilise la commande ping, qui dit en quelque sorte « Allô,
il y a quelqu’un ? » :

$ ping -c 4 192.168.0.1
PING 192.168.0.1 (192.168.0.1) 56(84) bytes of data.
64 bytes from 192.168.0.1: icmp_seq=1 ttl=64 time=0.464 ms
64 bytes from 192.168.0.1: icmp_seq=2 ttl=64 time=0.351 ms
64 bytes from 192.168.0.1: icmp_seq=3 ttl=64 time=0.350 ms
64 bytes from 192.168.0.1: icmp_seq=4 ttl=64 time=0.345 ms

--- 192.168.0.1 ping statistics ---


4 packets transmitted, 4 received, 0% packet loss, time 3000ms
rtt min/avg/max/mdev = 0.345/0.377/0.464/0.053 ms

Le routeur a répondu !

Le routeur : un centre de tri pour paquets numériques


Je viens d’insister sur le fait que les machines d’un même réseau peuvent communiquer entre
elles. Dans ce cas, comment se fait-il qu’on puisse communiquer, par exemple, avec la machine
172.217.22.131 (en affichant la page d’accueil de www.google.fr stockée sur la machine en ques-
tion), alors que celle-ci ne fait manifestement pas partie de notre réseau 192.168.0.0/24 ?
Réponse : parce que nous passons par le routeur. Ce dernier est défini en tant que passerelle
(gateway), qui sert à faire communiquer votre machine avec le monde extérieur. L’information que
vous envoyez ou que vous recevez transite sur le réseau sous forme de paquets. Si une passerelle est
définie, tous les paquets qui ne concernent pas le réseau local sont envoyés par cette porte vers le
monde extérieur. La commande ip route show indique si la passerelle est définie correctement :

$ ip route show
default via 192.168.0.1 dev enp63s0 proto dhcp metric 100
192.168.0.0/24 dev enp63s0 proto kernel scope link src 192.168.0.12 metric 100

Sous les pavés numériques, la plage d’adresses IP privées


La commande ip address vous a retourné votre adresse IP sous la forme inet
192.168.0.12. Même si le nom le suggère, cette adresse n’est pas normalement « joignable » à
partir d’Internet. Elle fait partie de la plage standardisée d’adresses IP privées réservées aux
réseaux locaux privés :
• 10.0.0.0 à 10.255.255.255
• 172.16.0.0 à 172.31.255.255
• 192.168.0.0 à 192.168.255.255
67738-Administration Linux par la pratique-INT.book Page 273 Friday, May 24, 2019 10:38 AM

Premiers pas sur le réseau


273
CHAPITRE 14

Bien sûr, la solution la plus simple consisterait à utiliser une adresse publique. Le hic, c’est
que vous devez acheter celle-ci chez un fournisseur d’accès. Un abonnement à Internet vous
fournit en général une seule adresse publique pour vous rattacher au monde extérieur. C’est
largement suffisant si vous n’utilisez qu’une seule machine. Pour configurer votre réseau
domestique, il vous faudrait acheter un bloc d’adresses entier, ce qui revient très cher, mais
rassurez-vous, il existe une solution au problème.

Relier le public et le privé


Un routeur est un hôte un peu spécial, qui assure la communication entre deux réseaux. Il fait
transiter les paquets d’un réseau à un autre. Dans les réseaux domestiques, c’est le plus sou-
vent le modem routeur ADSL qui assume ce rôle. Dans le réseau local d’une TPE ou d’une
PME – comme dans le bureau où j’écris ces lignes – c’est souvent une machine un peu spé-
ciale, un serveur équipé d’au moins deux cartes réseau, qui fait office de passerelle vers le
monde extérieur. Dans un cas comme dans l’autre, à partir du moment où nous avons un
réseau local avec plusieurs machines, tous les hôtes du réseau utilisent cette passerelle pour
communiquer avec les machines en dehors du réseau.
Sans trop entrer dans les détails, l’astuce du routeur consiste à manipuler les paquets qu’il fait
transiter. Côté Internet, le routeur dispose d’une adresse publique. Il se fait donc passer lui-
même pour l’expéditeur de chaque paquet qu’il envoie sur Internet. La procédure s’inverse
pour les paquets entrants : la passerelle remplace l’adresse de destination par l’adresse IP
privée de la machine qui attend une réponse d’Internet.

À RETENIR
S’il ne fallait retenir que cela : dans un réseau local privé, la passerelle vous permet de communiquer
avec Internet.

Le système de noms de domaine : l’annuaire d’Internet


Maintenant, comment s’y retrouver dans toute cette jungle d’adresses IP ? Est-ce qu’il faut se
constituer un agenda, comme dans le bon vieux temps où les téléphones avaient juste un
cadran et rien d’autre ? Eh non, ce n’est pas nécessaire grâce à DNS, le système de noms de
domaine (Domain Name System). Les humains savent passablement mémoriser et gérer des
noms comme www.google.fr ou www.centos.org. Le système de noms de domaine nous épargne
donc la tâche pénible de devoir mémoriser des adresses comme 172.217.22.131 ou 85.12.30.226.
Vous pouvez d’ailleurs filer la métaphore avec les numéros de téléphone en considérant DNS
comme un service d’annuaire global.
Les serveurs DNS (qu’on appelle aussi « serveurs de noms ») sont organisés de façon hiérar-
chique. Lorsqu’un serveur n’arrive pas à résoudre un certain nom, c’est-à-dire à fournir une
adresse IP correspondante, il envoie à son tour une requête au prochain serveur dans la hié-
rarchie et ainsi de suite. Chaque client doit donc connaître au moins un serveur DNS pour
ensuite se faufiler dans cette hiérarchie.
67738-Administration Linux par la pratique-INT.book Page 274 Friday, May 24, 2019 10:38 AM

Administration Linux par la pratique


274

Lorsque nous avons invoqué la commande host un peu plus haut, nous avons fait exactement
cela : nous avons envoyé une requête à un serveur de noms en lui fournissant un nom de
domaine et il nous a gracieusement retourné une adresse IP.

Configurer une connexion à Internet


Tentons un petit récapitulatif. Quel est le minimum syndical dont nous avons besoin pour
configurer une connexion à Internet ? Ici, je vais partir du principe que le matériel est correc-
tement géré par le système :
• une adresse IP pour la machine ;
• un masque de sous-réseau pour la machine ;
• l’adresse IP de la passerelle ;
• au moins une adresse IP de serveur DNS.
C’est tout. Ces quatre conditions suffisent pour vous connecter à Internet.
Dans notre exemple, nous n’avons pas vraiment configuré quoi que ce soit. Nous nous
sommes contentés d’afficher les détails de la configuration. D’où nous viennent donc ces
données ?

UN PEU DE MAGIE Configuration autonome


Il y a quelques années, un vendeur de matériel informatique locala à qui je demandais des détails sur la
configuration d’un de ses réseaux sur lequel je devais intervenir m’a expliqué que ses machines étaient
sous Windows et qu’elles se configuraient « elles-mêmes, comme ça, toutes seules, au démarrage, c’est
automatique, vous voyez ? » Notre système Linux serait-il doté du même pouvoir de configuration auto-
magique que les systèmes Windows vendus dans le Gard ?

a. Le patron d’une entreprise informatique qui installe des réseaux pour des clients professionnels. Vous avez peut-être
un bel avenir devant vous. Armez-vous jusqu’aux dents de compétences informatiques en terminant la lecture de ce livre
et foncez !

Configuration dynamique : DHCP


La réponse à notre question est simple et elle s’appelle DHCP (Dynamic Host Configuration
Protocol). Ce sigle désigne le protocole d’allocation dynamique d’adresses IP.
Dans la configuration par défaut de CentOS, les messages de démarrage du système sont
remplacés par une simple barre de progression horizontale en bas de l’écran. Lorsqu’on
appuie sur la touche [Échap] pour les faire apparaître, ils défilent à une telle allure qu’on n’a
pas vraiment le temps de les lire.
Si nous voulons en savoir un peu plus sur ce qui s’est passé lors du dernier démarrage, nous
pouvons jeter un œil dans le fichier /var/log/messages. En cherchant un peu, nous tombons
sur la partie qui nous intéresse :
67738-Administration Linux par la pratique-INT.book Page 275 Friday, May 24, 2019 10:38 AM

Premiers pas sur le réseau


275
CHAPITRE 14

Jan 22 08:55:07 ... dhcp4 (enp63s0): address 192.168.0.12


Jan 22 08:55:07 ... dhcp4 (enp63s0): plen 24 (255.255.255.0)
Jan 22 08:55:07 ... dhcp4 (enp63s0): gateway 192.168.0.1
Jan 22 08:55:07 ... dhcp4 (enp63s0): lease time 86400
Jan 22 08:55:07 ... dhcp4 (enp63s0): nameserver '192.168.0.1'

En clair, notre machine a requis un bail DHCP (DHCP lease). Le serveur DHCP attribue alors
l’adresse 192.168.0.12 et le masque de sous-réseau 255.255.255.0 à notre machine, pour une durée
d’un jour (86 400 secondes). Enfin, l’adresse IP de la passerelle 192.168.0.1 (gateway) est égale-
ment définie, ainsi que le serveur DNS (nameserver) avec la même adresse IP.
Votre routeur intègre un serveur DHCP. C’est lui qui se charge de configurer votre machine
par magie au moment du démarrage.

Paramétrer le serveur DHCP intégré dans le modem routeur


Votre modem routeur est un hôte à part entière, dépourvu d’un clavier et d’un écran. Ce
genre de petite machine se configure en général par le biais d’une interface web, en ouvrant
un navigateur à l’adresse IP de la « boîte noire ».
Dans l’exemple ci-après, mon ordinateur portable est connecté au point d’accès Wi-Fi du
routeur et je lance Mozilla Firefox à l’adresse http://192.168.0.1. Dans l’interface de navigation,
cherchons la page pour configurer le serveur DHCP : Avancé>Paramétrage>Paramétrage du
LAN (Local Area Network, autrement dit réseau local).
Figure 14–6
L’interface de configuration
du routeur.
67738-Administration Linux par la pratique-INT.book Page 276 Friday, May 24, 2019 10:38 AM

Administration Linux par la pratique


276

• L’Adresse IP du routeur (192.168.0.1 dans l’exemple) est préconfigurée, mais vous voyez
qu’elle n’est pas immuable.
• Il en va de même pour le Masque de sous-réseau IP (255.255.255.0).
• En dessous de la case Utiliser le routeur comme serveur DHCP, les deux champs Adresse IP de
début et Adresse IP de fin définissent la plage (192.168.0.10 à 192.168.0.240 dans l’exemple)
que le serveur DHCP va attribuer de façon dynamique aux machines du réseau local.
Remarquons que les adresses entre 192.168.0.2 et 192.168.0.9 ainsi que celles entre
192.168.0.241 et 192.168.0.254 ne sont pas attribuées. Nous verrons bientôt l’intérêt de
réserver une plage d’adresses non attribuées par DHCP.

La configuration DHCP en détail


Il est temps maintenant de voir comment notre ordinateur est configuré « en DHCP ».
Lorsque j’ai installé CentOS en mode « poule » sur mon serveur « bac à sable », l’installateur
a reconnu que l’interface enp63s0 correspondait à la carte réseau active et l’a configurée en
DHCP. Voyons maintenant ce que cela a donné sous le capot et rendons-nous dans le réper-
toire /etc/sysconfig/network-scripts. Comme son nom le suggère, ce répertoire contient
toute une série de fichiers qui gèrent la configuration réseau de la machine. Intéressons-nous
plus particulièrement à la série de fichiers dont le nom commence par ifcfg :

$ cd /etc/sysconfig/network-scripts/
$ ls -l ifcfg-*
-rw-r--r--. 1 root root 314 18 janv. 11:13 ifcfg-enp63s0
-rw-r--r--. 1 root root 281 18 janv. 11:13 ifcfg-enp7s4
-rw-r--r--. 1 root root 254 24 août 12:23 ifcfg-lo

Ne vous inquiétez pas si vous ne voyez pas la même chose que dans l’exemple. Chacun des
fichiers ifcfg-* correspond à une interface réseau de la machine. La configuration de mon
interface enp63s0 est donc écrite dans le fichier ifcfg-enp63s0.

LE CONSEIL DU CHEF Vérifier le type de fichiers avec file


Il est temps que j’ouvre une petite parenthèse et que je vous présente la commande file. Lorsque vous
vous demandez ce que peut bien contenir un fichier, de quel type il est – si c’est un fichier texte, une
image, un document PDF, un binaire exécutable ou autre chose – la commande file vous le dit. Certes,
dans de nombreux cas, un suffixe de fichier (comme .txt ou .jpg) vous en informe, mais sachez que ce
suffixe ne vous garantit rien. En d’autres termes, il est possible de tricher en renommant le fichier. Pour
en avoir le cœur net, utilisez la commande file. Les non-dupes n’errent pas toujours...

Voyons d’abord de quel type de fichier il s’agit :

$ file ifcfg-enp63s0
ifcfg-enp63s0: ASCII text
67738-Administration Linux par la pratique-INT.book Page 277 Friday, May 24, 2019 10:38 AM

Premiers pas sur le réseau


277
CHAPITRE 14

C’est un fichier texte ASCII. Ce qui m’importe ici, c’est qu’il soit lisible et que je puisse affi-
cher son contenu à l’aide d’outils comme cat, less, head ou de mon éditeur de texte préféré :

$ cat ifcfg-enp63s0
TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="dhcp"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="enp63s0"
UUID="c0cac50e-1bdd-4548-941c-94ab1daab851"
DEVICE="enp63s0"
ONBOOT="yes"

LE SAVIEZ-VOUS ? Texte ASCII


ASCII ou American Standard Code for Information Interchange signifie qu’il s’agit de texte simple, c’est-
à-dire pas écrit par des mangeurs de grenouilles et de fromages qui cavalent sur la table. Ce texte ne
contient donc pas de caractères comme ç, é, ô ou autres horreurs du genre.

Ce fichier ifcfg-enp63s0 a été généré automatiquement lors de l’installation de la machine,


mais rien ne m’empêche de l’éditer à la main pour l’adapter à mes besoins. Je m’intéresserai
particulièrement aux lignes suivantes :
• DEVICE="enp63s0" – Un device, c’est un périphérique. En l’occurrence, c’est l’interface
réseau en question, c’est-à-dire notre carte Ethernet.
• BOOTPROTO="dhcp" – Cette ligne indique que la machine doit demander sa
configuration IP à un serveur DHCP sur le réseau.
• ONBOOT="yes" – L’interface est activée au démarrage.
Théoriquement, ces trois lignes devraient suffire pour une configuration correcte de notre
machine. Après tout, vous n’avez qu’à essayer pour vous en assurer. Identifiez le fichier ifcfg-*
correspondant à l’interface réseau reliée au routeur et éditez-le pour qu’il ressemble à ceci :

# /etc/sysconfig/network-scripts/ifcfg-enp63s0
DEVICE=enp63s0
ONBOOT=yes
BOOTPROTO=dhcp

• La ligne qui commence par un dièse (#) est un commentaire.


• Songez à remplacer enp63s0 par le nom de l’interface sur votre machine.
• Les guillemets autour des valeurs sont facultatifs et je les ai supprimés.
67738-Administration Linux par la pratique-INT.book Page 278 Friday, May 24, 2019 10:38 AM

Administration Linux par la pratique


278

Redémarrez votre machine. Vous constatez, non sans émerveillement (ip address) que la
configuration réseau semble toujours fonctionnelle.
Le serveur DHCP nous a donc fourni l’adresse IP, le masque de sous-réseau, la passerelle et
l’adresse du serveur DNS. Comment faisons-nous pour connaître ce dernier, d’ailleurs ? C’est
le fichier /etc/resolv.conf qui nous le dira :

$ cat /etc/resolv.conf
# Generated by NetworkManager
nameserver 192.168.0.1

Le serveur de noms utilisé ici est donc celui qui est intégré dans le routeur.

À quoi sert NetworkManager ?


Dans la configuration par défaut, le réseau est géré par NetworkManager, un utilitaire déve-
loppé par Red Hat depuis 2004, qui a pour but de simplifier l’utilisation des réseaux sous
Linux, notamment ceux sans fil. NetworkManager facilite la vie des utilisateurs de Linux sur
les ordinateurs portables et leur permet de passer d’un réseau à un autre en deux clics.
En revanche, il ne sert pas à grand-chose sur un serveur et, contrairement à ce qui se dit dans
les blogs un peu partout sur le Web, NetworkManager n’est pas nécessaire pour la gestion du
réseau. C’est juste une couche d’abstraction et de complexité supplémentaire, dont on peut
aisément se passer.
Là encore, il suffit d’essayer pour en avoir le cœur net. Je désactive NetworkManager sur ma
machine et je redémarre :

$ sudo systemctl disable NetworkManager


$ sudo reboot

Après le redémarrage, je vérifie si NetworkManager est bien inactif :

$ systemctl status NetworkManager


? NetworkManager.service - Network Manager
Loaded: loaded (/usr/lib/systemd/system/NetworkManager.service; disabled; vendor
preset: enabled)
Active: inactive (dead)
Docs: man:NetworkManager(8)

Ma configuration réseau semble toujours intacte :

$ ip -4 -o address show enp63s0


3: enp63s0 inet 192.168.0.12/24 brd 192.168.0.255 scope global dynamic enp63s0\
valid_lft 85380sec preferred_lft 85380sec
67738-Administration Linux par la pratique-INT.book Page 279 Friday, May 24, 2019 10:38 AM

Premiers pas sur le réseau


279
CHAPITRE 14

Je note tout au plus une petite différence au niveau de mon fichier /etc/resolv.conf, qui
n’est plus généré par NetworkManager :

$ cat /etc/resolv.conf
; generated by /usr/sbin/dhclient-script
nameserver 192.168.0.1

PHILOSOPHIE Le principe KISS


En désactivant un composant manifestement inutile, nous obéissons au principe KISS (Keep It Simple,
Stupid !), que l’on pourrait traduire par « Ne complique pas tout, imbécile ! ». Il s’agit d’un principe phi-
losophique qui évite toute complexité inutile et préconise avant tout une approche simple, élégante et
minimaliste.

Configuration statique
Jusque-là, c’est le serveur DHCP qui a « décidé » de la configuration IP de notre machine. Il
est possible de faire autrement, en configurant notre machine de manière statique. Sur un
serveur, c’est même la manière orthodoxe de procéder.
Nous avons vu que le minimum syndical pour configurer une connexion à Internet, c’était
une adresse IP et un masque de sous-réseau pour la machine, une adresse IP de passerelle et
– au moins – une autre pour un serveur DNS. Oublions allègrement notre serveur DHCP et
décidons les choses nous-mêmes, en éditant /etc/sysconfig/network-scripts/ifcfg-
enp63s0 ou l’équivalent de ce fichier sur votre machine.

La première chose qu’il faut indiquer à ifcfg-enp63s0, c’est de ne plus configurer la carte
Ethernet par le biais du serveur DHCP, mais statiquement :

BOOTPROTO=static

IMPORTANT Règles à respecter dans le choix d’une adresse IP


• D’une part, l’adresse IP doit appartenir au même réseau que les autres machines, le routeur en l’occur-
rence. Si votre routeur est 192.168.0.1 avec un masque de sous-réseau 255.255.255.0 et si vous défi-
nissez une adresse 192.168.3.2 avec un masque 255.255.255.0, vous n’irez pas bien loin, étant donné
que les deux adresses IP appartiennent à des réseaux différents. Les deux machines ne pourront pas
s’envoyer de ping.
• D’autre part, il ne doit pas y avoir de conflit d’adresses, c’est-à-dire que toutes les machines du réseau
doivent avoir des adresses IP bien distinctes. Dans une salle de classe, ce n’est pas bien grave si deux
élèves répondent au nom de « Tom » ; l’institutrice fera la distinction et tranchera en cas de confusion.
Dans un réseau informatique en revanche, c’est très ennuyeux si deux machines ont la même
adresse IP ; vous ne pourrez pas en montrer une du doigt et lui dire : « Non, pas toi, l’autre ! »
• Enfin, pour faire les choses proprement, prenez l’habitude de définir les adresses IP statiques en
dehors de la plage d’adresses attribuées par le serveur DHCP. Comme cela, si quelqu’un vient se
connecter à l’improviste à votre réseau, avec son ordinateur portable par exemple, il ne se verra pas
attribuer une adresse déjà utilisée par ailleurs.
67738-Administration Linux par la pratique-INT.book Page 280 Friday, May 24, 2019 10:38 AM

Administration Linux par la pratique


280

Dans notre exemple, je choisis l’adresse IP 192.168.0.250 pour ma machine. D’une part, elle
n’est utilisée par aucune autre machine dans le réseau. D’autre part, elle se situe en dehors de
la plage d’adresses attribuées par le serveur DHCP. Pour ce faire, j’indique ceci dans ifcfg-
enp63s0 :

IPADDR=192.168.0.250
NETMASK=255.255.255.0

La configuration de la passerelle se fait dans /etc/sysconfig/network :

# /etc/sysconfig/network
GATEWAY=192.168.0.1

REMARQUE À propos de la méthode employée


Une remarque s’impose ici. Je ne vous ai pas montré la méthode pure et dure pour configurer le réseau à
la main. Si j’avais voulu faire cela, nous nous serions essentiellement servi de la seule commande ip. J’ai
opté pour cette approche, qui me semble plus viable pour un débutant.

Renseigner les serveurs DNS


Il ne nous reste plus qu’un détail à régler pour rendre notre configuration statique fonction-
nelle. Éditez /etc/resolv.conf et indiquez l’adresse du serveur DNS, précédée de la direc-
tive nameserver :

# /etc/resolv.conf
nameserver 127.0.0.1

Si vous souhaitez utiliser les serveurs DNS de Cloudflare, vous éditerez /etc/resolv.conf
comme suit :

# /etc/resolv.conf
nameserver 1.1.1.1
nameserver 1.0.0.1

DNS Cloudflare
Les serveurs DNS fournis par Cloudflare sont rapides et respectent votre vie privée. Malheureusement,
vous ne pourrez pas les utiliser avec certaines Livebox, étant donné que les ingénieurs de chez Orange
ont eu la mauvaise idée de considérer l’adresse IP publique 1.1.1.1 comme une adresse privée utilisée
par la puce du modem.
67738-Administration Linux par la pratique-INT.book Page 281 Friday, May 24, 2019 10:38 AM

Premiers pas sur le réseau


281
CHAPITRE 14

Alternativement, vous pouvez utiliser les serveurs DNS fournis par Google :

# /etc/resolv.conf
nameserver 8.8.8.8
nameserver 8.8.4.4

Redémarrez pour prendre en compte la nouvelle configuration. Notez que nous aurions très bien
pu nous passer d’un redémarrage, mais je n’ai pas voulu compliquer les choses inutilement.
Testez la connexion en envoyant un ping vers une machine extérieure :

$ ping -c 4 www.google.fr

Diagnostiquer le réseau en cas de panne


Tout cela vous paraît bien compliqué ? Sachez que dans l’écrasante majorité des cas, les para-
mètres réseau d’une machine se définissent lors de son installation. Une fois que c’est fait,
c’est assez rare que l’on soit obligé de remettre les mains à la pâte.
En contrepartie, il peut arriver que quelque chose coince dans le réseau et, dans ce cas, la
connaissance des principes de base et d’une poignée d’outils de diagnostic fera toute la diffé-
rence. Le jour où votre connexion à Internet sera interrompue pour une raison inconnue, vous
ne resterez plus « comme le bœuf devant la nouvelle porte de l’étable », comme on dit dans
mon pays natal.
Les mécaniciens dans les garages BMW disposent de véritables checklists qui les aident à faire
face de façon un peu plus systématique à toute une série de dysfonctionnements éventuels. Nous
pourrions nous amuser à établir notre propre liste de détails à vérifier pour le cas d’une connexion
à Internet défaillante. La liste ne sera pas forcément exhaustive, mais cela vous aidera.
1 La carte réseau est-elle physiquement installée dans la machine ? La question peut
paraître stupide, mais il arrive qu’un utilisateur qui garde le serveur sous son bureau lui
donne un coup de pied par inadvertance1 et, de ce fait, déloge la carte Ethernet de son
emplacement. Si la commande lspci | grep -i eth ne vous retourne rien, il faudra
ouvrir le serveur et remettre la carte réseau en place.
2 La carte est-elle correctement gérée par le système ? Que disent ip address et dmesg
| grep -i eth ?
3 La machine est-elle censée être configurée en IP dynamique (DHCP) ou en IP statique ?
4 L’interface est-elle activée ? Si vous invoquez ip address, est-ce que vous voyez bien
state UP ?
5 Sommes-nous physiquement reliés au modem routeur ? Arrivons-nous à envoyer un ping
à ce dernier ? Là aussi, les petites languettes sur les connecteurs RJ45 s’arrachent parfois et

1. D’où l’expression « administrer un coup de pied »...


67738-Administration Linux par la pratique-INT.book Page 282 Friday, May 24, 2019 10:38 AM

Administration Linux par la pratique


282

il en résulte de simples faux contacts. Une petite lumière verte sur la prise Ethernet vous
indique si le contact est bon.
6 Parvenons-nous à envoyer un ping à d’autres machines du réseau ? Dans le cas contraire,
avons-nous des doublons dans le réseau ? Y a-t-il un conflit d’adresses IP quelque part ?
7 Arrivons-nous à pinguer une adresse IP sur Internet ? Essayez par exemple 8.8.8.8 ou
8.8.4.4 (les deux serveurs DNS de Google), ou les DNS de votre FAI. Si cela ne marche
pas, c’est probablement un problème de passerelle mal définie. Vérifiez le résultat de
ip route show et regardez la définition de GATEWAY si votre configuration est statique.
8 Essayez de pinguer un nom de domaine comme google.fr ou yahoo.fr. Si vous arrivez à
joindre des adresses IP sur Internet, alors que la résolution de noms de domaine échoue,
c’est à coup sûr un problème de DNS mal renseigné. Dans ce cas, vérifiez le contenu de
/etc/resolv.conf et voyez si les adresses IP des serveurs DNS y figurent bien.

TRADITION ifconfig et route


Les commandes ifconfig et route fournies par le paquet net-tools sont officiellement considérées
comme obsolètes et c’est la commande ip – plus fonctionnelle et plus flexible – qui est censée les rem-
placer. Dans la pratique quotidienne, les administrateurs du monde entier continuent allègrement à utili-
ser les anciennes commandes et vous risquez de tomber dessus tôt ou tard, par exemple en lisant des
pages de documentation un peu anciennes. Je vais donc vous les présenter très brièvement.
Installer les commandes réseau obsolètes :
$ sudo yum install net-tools
Afficher la configuration des interfaces réseau actives :
$ ifconfig
enp63s0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.0.250 netmask 255.255.255.0 broadcast 192.168.0.255
inet6 fe80::219:bbff:fee3:31ce prefixlen 64 scopeid 0x20<link>
ether 00:19:bb:e3:31:ce txqueuelen 1000 (Ethernet)
...
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1000 (Boucle locale)
...
Afficher toutes les interfaces réseau disponibles :
$ ifconfig -a
enp63s0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.0.250 netmask 255.255.255.0 broadcast 192.168.0.255
inet6 fe80::219:bbff:fee3:31ce prefixlen 64 scopeid 0x20<link>
ether 00:19:bb:e3:31:ce txqueuelen 1000 (Ethernet)
...
enp7s4: flags=4098<BROADCAST,MULTICAST> mtu 1500
ether 00:27:19:f1:bc:3a txqueuelen 1000 (Ethernet)
...
67738-Administration Linux par la pratique-INT.book Page 283 Friday, May 24, 2019 10:38 AM

Premiers pas sur le réseau


283
CHAPITRE 14

lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536


inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1000 (Boucle locale)
...
Afficher la table de routage :
$ route -n
Table de routage IP du noyau
Destination Passerelle Genmask Indic Metric Ref Use Iface
0.0.0.0 192.168.0.1 0.0.0.0 UG 0 0 0 enp63s0
169.254.0.0 0.0.0.0 255.255.0.0 U 1003 0 0 enp63s0
192.168.0.0 0.0.0.0 255.255.255.0 U 0 0 0 enp63s0
67738-Administration Linux par la pratique-INT.book Page 284 Friday, May 24, 2019 10:38 AM
67738-Administration Linux par la pratique-INT.book Page 285 Friday, May 24, 2019 10:38 AM

15
Installer et gérer des logiciels

L’installation, la mise à jour et la suppression de logiciels constituent une partie significative des
tâches qui incombent à l’administrateur d’un serveur Linux. C’est aussi un domaine qui différencie
de manière fondamentale l’univers de Windows et celui de Linux. Non content de cela, c’est
également là que l’on verra diverses façons de gérer les paquets logiciels selon les familles de
distributions Linux.

Petit aperçu pour les utilisateurs de Windows


Certains d’entre vous ont peut-être déjà eu l’occasion d’installer un logiciel sous Windows.
Pour installer Mozilla Thunderbird, par exemple, vous vous rendez sur le site web correspon-
dant (https://www.mozilla.org/fr/thunderbird) et vous cliquez sur Téléchargement gratuit en dessous
de la présentation du logiciel. Ensuite, vous lancez l’assistant d’installation en double-
cliquant sur l’icône du fichier Thunderbird Setup.exe téléchargé ; vous confirmez successive-
ment les choix par défaut et le tour est joué. Pour installer par exemple le lecteur multimédia
VLC, vous vous rendez sur le site http://www.videolan.org/vlc, cliquez sur Télécharger VLC, passez
la publicité, téléchargez le fichier vlc-3.0.6-win32.exe, le lancez en double-cliquant dessus,
choisissez la langue, acceptez la licence, définissez le profil par défaut et le dossier cible et
vous terminez l’installation.
Le jour où vous ne souhaitez plus utiliser les logiciels en question, vous vous rendez dans le
Panneau de Configuration, ouvrez la rubrique Programmes>Désinstaller un programme, cliquez
droit sur la ligne du programme, choisissez Désinstaller et le logiciel en question sera supprimé
67738-Administration Linux par la pratique-INT.book Page 286 Friday, May 24, 2019 10:38 AM

Administration Linux par la pratique


286

de votre disque dur. Il n’en restera rien… à part quelques obscurs griffonnages dans la base de
registres, résidus quasiment négligeables à condition de ne pas répéter trop souvent les opéra-
tions d’installation et de désinstallation.
L’installation de logiciels sous Linux est radicalement différente, à tel point que je n’essaierai
même pas de relever d’éventuelles similitudes comme point de départ de mon explication. Au
lieu de cela, je traiterai la question en revenant à la case départ, ou presque. Là encore, nous met-
trons un pied devant l’autre en appliquant chaque chose apprise sur un exemple pratique. Une
fois que vous aurez saisi les principes de base, nous pourrons comparer les différentes approches.

Installer des logiciels depuis le code source


Pour commencer, nous allons effectuer un petit retour à l’âge de pierre. Nos ancêtres sous
Unix et Linux chassaient l’ours à mains nues et compilaient toutes leurs applications depuis le
code source. Nous allons faire pareil, sous forme d’un atelier pratique qui vous permettra de
bien comprendre les bases de la gestion logicielle.
Si nous partons d’un système CentOS 7 minimal, nous avons besoin d’une poignée d’outils
pour construire des applications :
• le jeu de compilateurs GCC (GNU Compiler Collection) ;
• l’analyseur syntaxique GNU Bison ;
• l’analyseur lexical Flex ;
• le navigateur Links pour récupérer les archives de code source.
Non, nous n’allons pas nous amuser à construire nos outils de construction depuis le code
source. Cela nous mènerait trop loin. Nous allons donc tricher un peu en empruntant un
raccourci :

$ sudo yum install gcc bison flex links

Les archives de code source seront rangées dans un répertoire ~/src :

$ mkdir -v src
mkdir: création du répertoire « src »
$ cd src/

Atelier pratique n° 1 : Joe’s Own Editor


Notre premier exercice consistera à compiler l’éditeur de texte JOE (Joe’s Own Editor) depuis
son code source. JOE est un éditeur léger de la famille Emacs, conçu pour Unix.
Depuis le répertoire ~/src, j’ouvre le navigateur Links à l’adresse du site de JOE :

$ links https://joe-editor.sourceforge.io
67738-Administration Linux par la pratique-INT.book Page 287 Friday, May 24, 2019 10:38 AM

Installer et gérer des logiciels


287
CHAPITRE 15

Figure 15–1
Le site web de JOE dans le
navigateur Links.

APPLICATION Naviguer sur le Web en mode texte avec Links


Links est un navigateur en mode texte, à l’ergonomie très rudimentaire. Il utilise le clavier comme seule inter-
face et ne gère pas la souris. Il ne prend pas en compte non plus certaines fonctionnalités avancées du Web
comme le JavaScript, les images, les vidéos, etc. On évitera donc de l’utiliser pour naviguer sur Internet au quo-
tidien. En contrepartie, Links nous sera utile lorsque nous travaillerons sur une machine dépourvue d’interface
graphique et que nous souhaiterons récupérer une archive de code source hébergée sur un site web.
Pour l’utiliser, il suffit de lancer links et de fournir le nom d’un site en argument :
$ links https://www.centos.org
Ou encore :
$ links mirror.centos.org
La navigation sur une page web se fait de manière très rudimentaire.
• La touche [FlècheBas] permet de sauter d’un lien à un autre, dans l’ordre où ils se présentent sur la page.
• [FlècheHaut] fait revenir vers le lien précédent.
• Pour suivre un lien, appuyez sur Entrée lorsque vous êtes dessus.
• [FlècheGauche] revient à la page précédente.
• Sur une page longue, on peut chercher un lien et/ou du contenu en utilisant la touche /. Une interface
de recherche de texte s’affiche et il suffit de saisir la chaîne de caractères désirée.
• Les fichiers au format texte simple (README, ChangeLog.txt, HOWTO.txt, etc.) sont directement
affichés dans Links. Là aussi, la touche [FlècheGauche] sert à quitter le document et revenir à la page
précédente.
• Pour télécharger un fichier, on utilisera la touche D (comme Download). Il suffit de vérifier le nom du
fichier téléchargé et de confirmer par OK. Une barre de progression s’affiche alors. Le fichier télé-
chargé est enregistré dans le répertoire courant, c’est-à-dire celui à partir duquel on a invoqué links.
• La touche Q permet de quitter Links.
67738-Administration Linux par la pratique-INT.book Page 288 Friday, May 24, 2019 10:38 AM

Administration Linux par la pratique


288

Une fois qu’on est sur la page d’accueil du projet, voici ce qu’il faut faire pour récupérer le
code source de JOE :
1 Ouvrir le lien JOE 4.6 source.
2 Confirmer l’URL de téléchargement qui s’affiche.
3 Enregistrer le fichier joe-4.6.tar.gz.
4 Quitter Links.
Je décompresse l’archive de code source et je me place dans le répertoire nouvellement créé :

$ tar xvzf joe-4.6.tar.gz


joe-4.6/
joe-4.6/charmaps/
joe-4.6/charmaps/klingon.in
joe-4.6/setup.hint
joe-4.6/missing
joe-4.6/config.sub
joe-4.6/acinclude.m4
joe-4.6/README.md
joe-4.6/Makefile.am
joe-4.6/po/
...
$ cd joe-4.6/

En règle générale, les archives de code source fournissent des informations succinctes dans
une série de fichiers README, INSTALL, NEWS, etc. Jetez un œil dans les fichiers README.md,
INSTALL.md et NEWS.md pour avoir une idée de ce qu’ils contiennent.

À quelques détails près, la séquence configure / make / make install est commune à la plu-
part des applications écrites en C pour les systèmes Unix et Linux. C’est ce que nous allons
utiliser ici :

$ ./configure
...
$ make
...
$ sudo make install

La dernière commande a installé l’ensemble des fichiers qui constituent l’application dans
l’arborescence /usr/local.
• Le fichier binaire exécutable joe se retrouve dans /usr/local/bin, ainsi que rjoe, jmacs,
jpico et jstar.
• Les fichiers de configuration sont rangés dans /usr/local/etc/joe.
• Les pages de manuel en ligne figurent dans /usr/local/share/man.
• Les traductions, les modèles de couleurs et autres fichiers auxiliaires sont installés dans
/usr/local/share/joe.
67738-Administration Linux par la pratique-INT.book Page 289 Friday, May 24, 2019 10:38 AM

Installer et gérer des logiciels


289
CHAPITRE 15

L’éditeur JOE est désormais installé sur votre système. Vous pouvez afficher la page de
manuel en ligne :

$ man joe

Testez-le pour éditer un fichier :

$ joe test.txt

Une fois que vous avez tapé un peu de texte, utilisez les touches Ctrl+K et X pour enregistrer
les modifications et quitter l’éditeur.
Félicitations, vous venez de compiler votre première application depuis son code source !

Atelier pratique n° 2 : TCPdump


Forts de cette première expérience, essayons maintenant de compiler une autre application
depuis son code source. TCPdump est un analyseur de paquets en ligne de commande, qui
surveille ce qui se passe sur les interfaces réseau d’une machine. Pour la construction, nous
allons procéder comme pour l’éditeur JOE. Dans un premier temps, nous devons récupérer le
code source sur le site du projet :

$ cd src/
$ links https://www.tcpdump.org

Sur la page d’accueil, suivez le lien Downloads, téléchargez le fichier tcpdump-4.9.2.tar.gz


et quittez Links.
Là encore, je décompresse l’archive de code source et je me place dans le répertoire nouvelle-
ment créé :

$ tar xvzf tcpdump-4.9.2.tar.gz


$ cd tcpdump-4.9.2/

Je lance la première séquence pour la construction :

$ ./configure

La série de tests mouline pendant quelques secondes et s’interrompt en affichant le message


d’erreur suivant :

...
checking for local pcap library... not found
checking for pcap-config... no
checking for main in -lpcap... no
configure: error: see the INSTALL doc for more info
67738-Administration Linux par la pratique-INT.book Page 290 Friday, May 24, 2019 10:38 AM

Administration Linux par la pratique


290

Je prends le message au pied de la lettre et je regarde dans le fichier INSTALL.txt :

$ less INSTALL.txt
If you have not built libpcap, and your system does not have libpcap installed,
install libpcap first. Your system might provide a version of libpcap that can be
installed; if so, to compile tcpdump you might need to install a "developer" version
of libpcap as well as the "run-time" version. You can also install tcpdump.org's
version of libpcap; see the README file in this directory for the ftp location.
...

Le fichier INSTALL.txt m’explique que TCPdump a besoin de la bibliothèque libpcap pour


fonctionner. Cette bibliothèque est également fournie par la page web du projet :

$ cd ..
$ links https://www.tcpdump.org

Je suis le lien Downloads, je télécharge le fichier libpcap-1.9.0.tar.gz un peu plus bas sur la
page de téléchargement et je quitte Links.
Je décompresse l’archive de code source et je me place dans le répertoire nouvellement créé :

$ tar xvzf libpcap-1.9.0.tar.gz


$ cd libpcap-1.9.0/

Je jette un œil dans les fichiers README.md et INSTALL.md, puis je lance la construction de la
bibliothèque :

$ less README.md
...
$ less INSTALL.md
...
$ ./configure
...
$ make
...
$ sudo make install

B.A.-BA Qu’est-ce qu’une bibliothèque ?


Un programme n’est pas forcément un bloc monolithique ; il se sert souvent d’un ensemble de fonctions
qui sont définies dans une bibliothèque partagée. Cette dernière ne peut pas s’exécuter directement,
mais contient du code que l’on veut éviter de réécrire chaque fois qu’un programme doit exécuter une
fonction similaire, par exemple calculer un cosinus ou capturer du trafic réseau.

Maintenant que libpcap est installée, je retente ma chance avec TCPdump :

$ cd ../tcpdump-4.9.2/
67738-Administration Linux par la pratique-INT.book Page 291 Friday, May 24, 2019 10:38 AM

Installer et gérer des logiciels


291
CHAPITRE 15

Apparemment, la bibliothèque libpcap est bien détectée :

$ ./configure
...
checking for pcap_list_datalinks... yes
checking for pcap_free_datalinks... yes
checking for pcap_set_datalink... yes
...

Il ne me reste plus qu’à lancer la compilation et l’installation :

$ make
...
$ sudo make install

Je consulte la page de manuel en ligne :

$ man tcpdump

Pour tester TCPdump, je lance la commande suivante depuis une session à distance et
j’observe ce qui se passe :

$ sudo /usr/local/sbin/tcpdump
09:25:29.433317 IP centosbox.microlinux.lan.ssh > alphamule.microlinux.lan.34224:
Flags [P.], seq 2571276:2571504, ack 1693, win 328, options [nop,nop,TS val 4042672
ecr 2009968125], length 228
...

Inconvénients d’une installation depuis le code source


Nous venons d’installer deux petites applications depuis le code source. À première vue,
l’opération s’est plutôt bien déroulée. Est-ce que cette façon de procéder présente des
inconvénients ? Oui ; plusieurs même.
• La compilation d’une petite application comme JOE ou TCPdump prend quelques
minutes tout au plus. Or, dès que nous souhaitons construire une application un peu plus
importante, les temps de compilation deviennent parfois assez longs.
• Certaines applications présentent une véritable cascade de dépendances enchevêtrées,
qu’il faudra compiler et installer dans un ordre cohérent tout en respectant les éventuels
problèmes de compatibilité entre les différentes versions.
• Les opérations de maintenance s’avèrent aussi fastidieuses que l’installation initiale. Si je veux
mettre à jour une application construite depuis le code source, je dois d’abord savoir quels
sont les fichiers qui ont été installés par l’opération make install avant de les supprimer, ce
qui n’est pas toujours évident. Dans certains cas, je peux invoquer un make uninstall depuis
la racine du code source, mais cette possibilité n’est pas toujours donnée.
67738-Administration Linux par la pratique-INT.book Page 292 Friday, May 24, 2019 10:38 AM

Administration Linux par la pratique


292

Essayons de faire un brin de ménage sur notre système en supprimant joe, libpcap et
tcpdump :

$ cd ~/src/joe-4.6/
$ sudo make uninstall
...
$ cd ../libpcap-1.9.0/
$ sudo make uninstall
...
$ cd ../tcpdump-4.9.2/
$ sudo make uninstall
...

Regardons dans l’arborescence /usr/local ; nous constatons non sans un certain dépit que le
ménage n’a pas été fait très proprement. Les répertoires d’installation etc/joe, share/joe et
share/doc/joe sont restés en place et il nous reste un binaire sbin/tcpdump.4.9.2 qui a
manifestement été oublié par le script de suppression make uninstall de tcpdump.

$ sudo rmdir /usr/local/etc/joe


$ sudo rmdir /usr/local/share/doc/joe/
$ sudo rm -rf /usr/local/share/joe/
$ sudo rm /usr/local/sbin/tcpdump.4.9.2

ASTUCE Garder la trace des fichiers installés


À partir du moment où je sais que les fichiers résultant de la compilation vont être installés dans /usr/
local, je peux utiliser l’astuce suivante pour en garder la trace :
$ sudo make install
$ find /usr/local -mmin 1 > liste.txt
Ici, find m’affiche tout ce qui a été créé ou modifié durant la dernière minute dans l’arborescence /usr/
local et le résultat de la recherche est redirigé dans un fichier liste.txt. D’un certain point de vue,
c’est le gestionnaire de paquets le plus rudimentaire qui existe.

POUR ALLER PLUS LOIN Linux From Scratch


Linux From Scratch (LFS pour les intimes) est un projet pédagogique qui vise à construire sa propre distri-
bution Linux de A à Z à partir des sources des logiciels :
B http://www.linuxfromscratch.org/
Une traduction en français existe à l’adresse :
B http://fr.linuxfromscratch.org/
Notez que LFS s’adresse aux utilisateurs confirmés de Linux. Comprenez par là que le public idéal du pro-
jet, c’est l’informaticien chevronné qui adore construire des cathédrales avec des allumettes ou mettre en
bouteille des maquettes de grands voiliers pour se changer les idées.
67738-Administration Linux par la pratique-INT.book Page 293 Friday, May 24, 2019 10:38 AM

Installer et gérer des logiciels


293
CHAPITRE 15

Anatomie d’un paquet RPM


Nous avons vu que la distribution de logiciels par le biais d’archives de code source n’était pas
très pratique pour les utilisateurs et les administrateurs. Cette manière de faire a donc été
remplacée par les systèmes de paquets, parfois aussi appelés paquetages.
En règle générale, un paquet comprend tout ce qui est nécessaire pour faire fonctionner un
logiciel :
• les fichiers binaires précompilés ;
• les informations de dépendances ;
• la documentation en ligne ;
• les modèles de fichiers de configuration.
Regardons de plus près à quoi ressemblent les paquets logiciels fournis par CentOS. Pour ce
faire, nous pouvons utiliser le support d’installation ou les dépôts en ligne. Si j’utilise le DVD
minimal de CentOS 7.6, je parcours son contenu comme suit :

$ sudo mount /dev/cdrom /mnt/


$ cd /mnt/Packages/
$ ls
acl-2.2.51-14.el7.x86_64.rpm
aic94xx-firmware-30-6.el7.noarch.rpm
aide-0.15.1-13.el7.x86_64.rpm
alsa-firmware-1.0.28-2.el7.noarch.rpm
alsa-lib-1.1.6-2.el7.x86_64.rpm
alsa-tools-firmware-1.1.0-1.el7.x86_64.rpm
atk-2.28.1-1.el7.x86_64.rpm
...
xz-5.2.2-1.el7.x86_64.rpm
xz-libs-5.2.2-1.el7.x86_64.rpm
yum-3.4.3-161.el7.centos.noarch.rpm
yum-metadata-parser-1.1.4-10.el7.x86_64.rpm
yum-plugin-fastestmirror-1.1.31-50.el7.noarch.rpm
zip-3.0-11.el7.x86_64.rpm
zlib-1.2.7-18.el7.x86_64.rpm

Maintenant, cherchez et affichez les paquets suivants :


• bash
• kernel
• openssl
• postfix
Voici ce que vous obtenez :
• bash-4.2.46-31.el7.x86_64.rpm
• kernel-3.10.0-957.el7.x86_64.rpm
• openssl-1.0.2k-16.el7.x86_64.rpm
67738-Administration Linux par la pratique-INT.book Page 294 Friday, May 24, 2019 10:38 AM

Administration Linux par la pratique


294

• postfix-2.10.1-7.el7.x86_64.rpm
Le nom de chaque paquet fournit une série d’informations :
• le nom de l’application ou du paquet : bash, kernel, openssl, postfix ;
• la version : 4.2.46, 3.10.0, 1.0.2k, 2.10.1 ;
• le numéro de build : 31, 957, 16, 7 ;
• la version de RHEL/CentOS : el7 ;
• l’architecture du paquet : x86_64 ;
• le suffixe .rpm.

Installer et gérer des paquets logiciels avec RPM


Le premier outil que nous utiliserons, c’est l’ancêtre RPM de Red Hat (RPM Package
Manager). RPM est un gestionnaire de paquets en ligne de commande capable d’installer, de
supprimer et de mettre à jour des paquets. Il permet également d’effectuer des requêtes sur les
paquets ou d’en vérifier l’intégrité.
Figure 15–2
RPM, le gestionnaire de paquets
de Red Hat.

UN PEU D’HISTOIRE L’ancêtre RPM


RPM a été utilisé pour la première fois en 1995 par la société Red Hat pour sa distribution. Par la suite, il
a été adopté par d’autres distributions, telles que SUSE, Mandriva ou ALT Linux.

RPM est un outil puissant, qui souffre cependant d’une réputation quelque peu sulfureuse.
Au premier abord, son utilisation paraît encombrante et peu flexible. D’ailleurs, les distribu-
tions basées sur RPM disposent toutes d’au moins un autre gestionnaire un peu plus
maniable : Yum (que nous verrons un peu plus loin) pour Red Hat Enterprise Linux et
CentOS, DNF pour Fedora, Zypper pour OpenSUSE. Ces outils ne viennent pas pour
autant remplacer RPM. Ils peuvent très bien être utilisés conjointement ; c’est d’ailleurs ce
que nous ferons par la suite. Les options de RPM sont nombreuses et je ne vous présenterai
ici que les commandes les plus usuelles. Considérez-les comme un bagage de départ pour
fonctionner au quotidien.
67738-Administration Linux par la pratique-INT.book Page 295 Friday, May 24, 2019 10:38 AM

Installer et gérer des logiciels


295
CHAPITRE 15

Trouver des paquets RPM


Le support d’installation minimal ne contient que très peu de paquets en dehors du système
de base. Nous pouvons nous servir d’un support d’installation plus fourni, comme le DVD ou
la clé USB confectionnés à partir du fichier CentOS-7-x86_64-DVD-1810.iso, ou encore récu-
pérer les paquets RPM sur un miroir de téléchargement en ligne :

$ mkdir -v RPMS
mkdir: création du répertoire « RPMS »
$ cd RPMS/
$ links http://mirror.centos.org

En partant de la racine du miroir de téléchargement, suivez le lien centos-7, choisissez la ver-


sion (7.6.1810), allez dans le sous-répertoire os (comme Operating System), choisissez la bonne
architecture (x86_64 est la seule disponible) et rendez-vous dans le répertoire Packages.
Pour commencer, récupérez les deux paquets suivants :
• nano-2.3.1-10.el7.x86_64.rpm
• net-tools-2.0-0.24.20131004git.el7.x86_64.rpm

Installer un paquet RPM


Installez le paquet nano grâce à l’option -i. Songez à utiliser la complétion automatique pour
éviter d’avoir à taper le nom à rallonge du paquet avec toutes les informations de version :

$ sudo rpm -i nano-2.3.1-10.el7.x86_64.rpm

Et voilà ! C’est fait. L’éditeur Nano est désormais disponible sur votre machine.

$ man nano
$ nano

Supprimer un paquet RPM


Pour supprimer une application installée, invoquez rpm avec l’option -e. Le simple nom du
paquet en argument est suffisant :

$ sudo rpm -e nano


67738-Administration Linux par la pratique-INT.book Page 296 Friday, May 24, 2019 10:38 AM

Administration Linux par la pratique


296

PRÉCISION Les avantages d’une installation avec RPM


RPM est assez laconique pour l’installation et la suppression des paquets. Il s’exécute et c’est tout.
Contrairement à un système comme Windows, la suppression d’un logiciel sous Linux ne laisse pas de
traces sur le système, si ce n’est les données produites avec le logiciel en question. Autrement dit, vous
pouvez joyeusement installer et désinstaller autant de programmes que vous voulez, et même autant de
fois que vous voulez, cela n’entraînera en aucun cas un quelconque ralentissement du système à moyen
ou à long terme.

Mode bavard ou laconique ?


L’installation peut s’effectuer en mode « bavard » :

$ sudo rpm -ivh net-tools-2.0-0.24.20131004git.el7.x86_64.rpm


Préparation... ################## [100%]
Mise à jour / installation...
1:net-tools-2.0-0.24.20131004git.el################# [100%]

L’option -v (verbose) rend RPM plus loquace et l’option -h se charge de dessiner les barres de
progression avec le signe dièse.
Il en va de même pour la suppression d’un paquet :

$ sudo rpm -ev net-tools


Préparation des paquets...
net-tools-2.0-0.24.20131004git.el7.x86_64

J’en profite pour attirer votre attention sur l’option --test, que j’utilise de temps en temps.
Elle permet de tester l’installation avant d’installer quoi que ce soit et peut même être invo-
quée sans les droits d’administrateur :

$ rpm -ivh --test nano-2.3.1-10.el7.x86_64.rpm


Préparation... ################################# [100%]
$ rpm -ivh --test net-tools-2.0-0.24.20131004git.el7.x86_64.rpm
Préparation... ################################# [100%]

Gérer les dépendances entre les paquets RPM


La compilation de tcpdump et de la bibliothèque libpcap depuis le code source nous a sensi-
bilisés pour la gestion des dépendances.
67738-Administration Linux par la pratique-INT.book Page 297 Friday, May 24, 2019 10:38 AM

Installer et gérer des logiciels


297
CHAPITRE 15

Récupérons le paquet binaire tcpdump-4.9.2-3.el7.x86_64.rpm depuis le miroir de téléchar-


gement et voyons ce que donnerait une tentative d’installation :

$ rpm -ivh --test tcpdump-4.9.2-3.el7.x86_64.rpm


erreur : Dépendances requises:
libpcap >= 14:1.5.3-10 est nécessaire pour tcpdump-14:4.9.2-3.el7.x86_64
libpcap.so.1()(64bit) est nécessaire pour tcpdump-14:4.9.2-3.el7.x86_64

Je relance Links et je refais un tour sur les archives en ligne pour récupérer le paquet libpcap-
1.5.3-11.el7.x86_64.rpm.

CONFUSION Quel paquet choisir ?


Lors de votre recherche du paquet libpcap, vous avez probablement été dérouté par la présence de pas
moins de quatre paquets quasiment similaires :
• libpcap-1.5.3-11.el7.i686.rpm
• libpcap-1.5.3-11.el7.x86_64.rpm
• libpcap-devel-1.5.3-11.el7.i686.rpm
• libpcap-devel-1.5.3-11.el7.x86_64.rpm
Dans un premier temps, notez la différence entre les paquets 64-bits (x86_64) et 32-bits (i686). Puis,
repérez les paquets de développement munis du suffixe -devel, qui vous serviront uniquement si vous
souhaitez compiler des applications.

Je teste et j’installe libpcap :

$ rpm -ivh --test libpcap-1.5.3-11.el7.x86_64.rpm


Préparation... #################### [100%]
$ sudo rpm -ivh libpcap-1.5.3-11.el7.x86_64.rpm
Préparation... #################### [100%]
Mise à jour / installation...
1:libpcap-14:1.5.3-11.el7 ################### [100%]

Maintenant que la dépendance est satisfaite, je peux installer tcpdump :

$ rpm -ivh --test tcpdump-4.9.2-3.el7.x86_64.rpm


Préparation... #################### [100%]
$ sudo rpm -ivh tcpdump-4.9.2-3.el7.x86_64.rpm
Préparation... #################### [100%]
Mise à jour / installation...
1:tcpdump-14:4.9.2-3.el7 ################### [100%]
67738-Administration Linux par la pratique-INT.book Page 298 Friday, May 24, 2019 10:38 AM

Administration Linux par la pratique


298

Essayons d’installer une autre application pour nous familiariser avec la gestion des dépen-
dances. Lynx est un navigateur en mode texte comme Links, avec quelques améliorations.
Récupérez le paquet lynx et essayez de l’installer :

$ rpm -ivh --test lynx-2.8.8-0.3.dev15.el7.x86_64.rpm


erreur : Dépendances requises:
redhat-indexhtml est nécessaire pour lynx-2.8.8-0.3.dev15.el7.x86_64

Le problème ici, c’est que le miroir de téléchargement de CentOS ne semble fournir aucun
paquet redhat-indexhtml. Or, si nous effectuons une recherche sur la chaîne de caractères
indexhtml, nous trouvons un paquet centos-indexhtml. Récupérons-le et installons-le :

$ rpm -ivh --test centos-indexhtml-7-9.el7.centos.noarch.rpm


Préparation... #################### [100%]
$ sudo rpm -ivh centos-indexhtml-7-9.el7.centos.noarch.rpm
Préparation... #################### [100%]
Mise à jour / installation...
1:centos-indexhtml-7-9.el7.centos ################### [100%]

Apparemment, l’installation de ce paquet a satisfait la dépendance manquante :

$ rpm -ivh --test lynx-2.8.8-0.3.dev15.el7.x86_64.rpm


Préparation... #################### [100%]
$ sudo rpm -ivh lynx-2.8.8-0.3.dev15.el7.x86_64.rpm
Préparation... #################### [100%]
Mise à jour / installation...
1:lynx-2.8.8-0.3.dev15.el7 ################### [100%]

Mettre à jour des paquets avec RPM


Pour montrer le fonctionnement de la mise à jour manuelle, je crée d’abord un répertoire
~/updates dans lequel je range les paquets téléchargés.

$ mkdir -v updates
mkdir: création du répertoire « updates »
$ cd updates/
$ links http://mirror.centos.org

En partant de la racine du miroir de téléchargement, suivez le lien centos-7 et choisissez la


version (7.6.1810). Cette fois-ci, allez dans le sous-répertoire updates, choisissez l’architecture
x86_64 et placez-vous dans le répertoire Packages.
Pour commencer, téléchargez les mises à jour pour les deux paquets suivants :
• python-perf
• tzdata
67738-Administration Linux par la pratique-INT.book Page 299 Friday, May 24, 2019 10:38 AM

Installer et gérer des logiciels


299
CHAPITRE 15

La mise à jour se fait avec l’option -U comme update. Essayez d’abord avec le paquet python-
perf:

$ rpm -Uvh --test python-perf-3.10.0-957.1.3.el7.x86_64.rpm


Préparation... #################### [100%]
$ sudo rpm -Uvh python-perf-3.10.0-957.1.3.el7.x86_64.rpm
Préparation... #################### [100%]
Mise à jour / installation...
1:python-perf-3.10.0-957.1.3.el7 ################### [ 50%]
Nettoyage/suppression...
2:python-perf-3.10.0-957.el7 ################### [100%]

Procédez de même avec le paquet tzdata.


La mise à jour de paquets avec RPM nous confronte parfois à un problème de dépendances
un peu particulier. Retournez dans le répertoire des mises à jour du miroir de téléchargement
et récupérez celles pour les deux paquets suivants :
• ipset
• ipset-libs
La tentative d’actualisation du paquet ipset échoue parce que ce dernier a manifestement
besoin d’une version plus récente de la dépendance ipset-libs :

$ rpm -Uvh --test ipset-6.38-3.el7_6.x86_64.rpm


erreur : Dépendances requises:
ipset-libs(x86-64) = 6.38-3.el7_6 est nécessaire pour ipset-6.38-3.el7_6.x86_64

Or, si nous essayons de mettre à jour ipset-libs, le gestionnaire nous informe qu’il constitue
une dépendance pour le paquet ipset dans la version installée :

$ rpm -Uvh ipset-libs-6.38-3.el7_6.x86_64.rpm


erreur : Dépendances requises:
ipset-libs(x86-64) = 6.38-2.el7 est nécessaire pour (déjà installé) ipset-6.38-
2.el7.x86_64

Pour sortir de ce cercle vicieux, on peut effectuer la mise à jour des deux paquets « à la louche » :

$ rpm -Uvh --test ipset-6.38-3.el7_6.x86_64.rpm \


ipset-libs-6.38-3.el7_6.x86_64.rpm
Préparation... #################### [100%]
$ sudo rpm -Uvh ipset-6.38-3.el7_6.x86_64.rpm \
ipset-libs-6.38-3.el7_6.x86_64.rpm
Préparation... #################### [100%]
Mise à jour / installation...
1:ipset-libs-6.38-3.el7_6 ################### [ 25%]
2:ipset-6.38-3.el7_6 ################### [ 50%]
Nettoyage/suppression…
3:ipset-6.38-2.el7 ################### [ 75%]
4:ipset-libs-6.38-2.el7 ################### [100%]
67738-Administration Linux par la pratique-INT.book Page 300 Friday, May 24, 2019 10:38 AM

Administration Linux par la pratique


300

À SAVOIR Les mises à jour


Si une mise à jour est disponible pour un paquet, c’est qu’elle corrige très probablement un bogue ou
une faille de sécurité. Vous avez donc tout intérêt à garder votre système à jour.

La suppression des paquets RPM revisitée


Un peu plus haut, nous avons vu brièvement comment supprimer un seul paquet RPM. Pour
désinstaller plusieurs programmes à la fois, utilisez simplement une liste d’éléments séparés
par des espaces. Là encore, vous pouvez très bien tester le bon déroulement de l’opération
avant de vous lancer :

$ rpm -ev --test firewalld chrony


Préparation des paquets…
$ sudo rpm -ev firewalld chrony
Préparation des paquets…
firewalld-0.5.3-5.el7.noarch
chrony-3.2-2.el7.x86_64

Un paquet peut être nécessaire pour le bon fonctionnement d’un autre :

$ rpm -ev --test centos-indexhtml


erreur : Dépendances requises:
redhat-indexhtml est nécessaire pour (déjà installé) lynx-2.8.8-
0.3.dev15.el7.x86_64

Pour supprimer un paquet sans vérifier les dépendances, on peut éventuellement utiliser l’option
--nodeps. En temps normal, il vaut mieux l’éviter, étant donné qu’elle va très certainement casser
la cohérence de votre système. Quoi qu’il en soit, utilisez-la en connaissance de cause :

$ sudo rpm -ev --nodeps centos-indexhtml


Préparation des paquets…
centos-indexhtml-7-9.el7.centos.noarch

Obtenir des informations sur les paquets RPM

Sur les paquets installés


Les fonctions de requête de RPM commencent par l’option -q comme query. Ici, je vérifie si
le paquet vim-minimal est installé sur mon système :

$ rpm -q vim-minimal
vim-minimal-7.4.160-5.el7.x86_64
67738-Administration Linux par la pratique-INT.book Page 301 Friday, May 24, 2019 10:38 AM

Installer et gérer des logiciels


301
CHAPITRE 15

Maintenant, j’affiche la liste complète des paquets installés :

$ rpm -qa

Cette dernière commande résulte en un joyeux défilement de quelques centaines de paquets


en vrac. On va donc mettre un peu d’ordre là-dedans. Si vous préférez une liste classée par
ordre alphabétique, tapez :

$ rpm -qa | sort

Et, puisque le résultat dépasse de loin la taille d’un écran :

$ rpm -qa | sort | less

Pour effectuer une recherche insensible à la casse, avec un nom de paquet partiel :

$ rpm -qa | grep -i grub


grub2-common-2.02-0.76.el7.centos.noarch
grubby-8.28-25.el7.x86_64
grub2-tools-minimal-2.02-0.76.el7.centos.x86_64
grub2-tools-2.02-0.76.el7.centos.x86_64
grub2-pc-2.02-0.76.el7.centos.x86_64
grub2-pc-modules-2.02-0.76.el7.centos.noarch
grub2-tools-extra-2.02-0.76.el7.centos.x86_64
grub2-2.02-0.76.el7.centos.x86_64

L’option --last affiche la liste de tous les paquets RPM installés par ordre décroissant de
date d’installation :

$ rpm -qa --last | less

Pour afficher la liste des cinq derniers paquets installés, vous pourrez donc taper ceci :

$ rpm -qa --last | head -n 5


ipset-libs-6.38-3.el7_6.x86_64
ipset-6.38-3.el7_6.x86_64
python-perf-3.10.0-957.1.3.el7.x86_64
tcpdump-4.9.2-3.el7.x86_64
libpcap-1.5.3-11.el7.x86_64

Certaines options nous permettent d’examiner de plus près le contenu proprement dit d’un
paquet installé. Pour afficher la liste des fichiers installés par un paquet, par exemple, saisissez
la commande suivante :
67738-Administration Linux par la pratique-INT.book Page 302 Friday, May 24, 2019 10:38 AM

Administration Linux par la pratique


302

$ rpm -ql tcpdump


/usr/sbin/tcpdump
/usr/sbin/tcpslice
/usr/share/doc/tcpdump-4.9.2
/usr/share/doc/tcpdump-4.9.2/CHANGES
/usr/share/doc/tcpdump-4.9.2/CREDITS
/usr/share/doc/tcpdump-4.9.2/LICENSE
/usr/share/doc/tcpdump-4.9.2/README.md
/usr/share/man/man8/tcpdump.8.gz
/usr/share/man/man8/tcpslice.8.gz

Pour afficher la liste des fichiers de documentation d’un paquet installé :

$ rpm -qd vim-minimal


/usr/share/man/man1/ex.1.gz
/usr/share/man/man1/rvi.1.gz
/usr/share/man/man1/rview.1.gz
/usr/share/man/man1/vi.1.gz
/usr/share/man/man1/view.1.gz
/usr/share/man/man1/vim.1.gz
/usr/share/man/man5/virc.5.gz

Et pour en savoir plus sur les fichiers de configuration d’un paquet installé :

$ rpm -qc openssh-clients


/etc/ssh/ssh_config

L’option -f indique à quel paquet appartient un fichier :

$ rpm -qf /etc/yum.conf


yum-3.4.3-161.el7.centos.noarch

Pour afficher les informations générales concernant un paquet :

$ rpm -qi tcpdump


Name : tcpdump
Epoch : 14
Version : 4.9.2
Release : 3.el7
Architecture: x86_64
...
Description :
Tcpdump is a command-line tool for monitoring network traffic.
Tcpdump can capture and display the packet headers on a particular network interface
or on all interfaces. Tcpdump can display all of the packet headers, or just the ones
that match particular criteria. Install tcpdump if you need a program to monitor
network traffic.
67738-Administration Linux par la pratique-INT.book Page 303 Friday, May 24, 2019 10:38 AM

Installer et gérer des logiciels


303
CHAPITRE 15

Ces options de requête sont combinables à souhait, comme le montrent les exemples sui-
vants. Pour afficher les informations à propos d’un fichier ou d’une commande :

$ rpm -qif /etc/virc

Pour afficher la liste des fichiers de configuration d’une commande :

$ rpm -qcf /usr/bin/ssh

Et pour en savoir plus sur les fichiers de documentation d’une commande :

$ rpm -qdf /usr/bin/yum

Sur des paquets non installés


Les options de requête présentées jusqu’ici ne concernaient que les paquets installés.
L’option -p effectue des requêtes sur des paquets RPM non installés. Ainsi, pour afficher la
liste des fichiers contenus dans un paquet non installé, on utilisera :

$ rpm -qpl net-tools-2.0-0.24.20131004git.el7.x86_64.rpm


/bin/netstat
/sbin/arp
/sbin/ether-wake
/sbin/ifconfig
/sbin/ipmaddr
/sbin/iptunnel
/sbin/mii-diag
/sbin/mii-tool
/sbin/nameif
/sbin/plipconfig
/sbin/route
/sbin/slattach

Là aussi, on pourra limiter les requêtes aux fichiers de configuration (-qpc) ou de documenta-
tion (-qpd).

Avantages et inconvénients d’une installation avec RPM


L’installation et la maintenance de paquets binaires avec l’outil RPM présente indéniable-
ment une série d’avantages par rapport à la compilation depuis le code source.
• L’installation d’un paquet binaire est plus rapide et évite de « spammer » le système avec
des fichiers éparpillés un peu partout.
• La suppression d’un paquet RPM se fait proprement.
• La mise à jour d’un paquet s’effectue en une simple commande.
67738-Administration Linux par la pratique-INT.book Page 304 Friday, May 24, 2019 10:38 AM

Administration Linux par la pratique


304

Tout cela n’empêche que RPM reste un outil obtus à utiliser au quotidien.
• Il gère les dépendances, mais il ne vous aide pas à les résoudre. Concrètement, si RPM
rouspète parce qu’il lui manque telle et telle dépendance, c’est à vous d’aller dénicher le
bon paquet dans la bonne version, ce qui n’est pas toujours évident.
• Il arrive assez souvent que les dépendances en question refusent de s’installer à leur tour
parce qu’elles requerront d’autres dépendances. J’ai évité de vous présenter ce cas de figure
en détail. Si vous souhaitez en avoir une vague idée, essayez d’installer le paquet
vim-enhanced avec l’outil RPM, en partant d’un système minimal.
• Le téléchargement et l’installation des mises à jour restent également une procédure labo-
rieuse.
Si j’ai décidé de vous confronter dans un premier temps à une façon quelque peu archaïque de
gérer les logiciels, c’est d’une part pour vous donner une idée un tout petit peu plus concrète
de ce qui peut se passer lorsqu’on installe, met à jour et supprime un logiciel. D’autre part,
RPM n’est pas complètement tombé en désuétude, loin de là, et tout administrateur système
se retrouve tôt ou tard dans des situations où ce gestionnaire de paquets rudimentaire rend de
bons et loyaux services.

Installer et gérer des paquets logiciels avec Yum


Le moment est donc venu de vous présenter Yum (Yellowdog Updater Modified), un gestion-
naire de paquets en ligne de commande, tout comme RPM. À la différence de ce dernier, il
gère automatiquement le téléchargement des paquets et la résolution des dépendances, ce qui
augmente considérablement le confort d’utilisation au quotidien.
Figure 15–3
Yum, le gestionnaire de paquets confortable
développé par Yellow Dog.

UN PEU D’HISTOIRE Yum


Yum est une réécriture complète de Yup (Yellowdog Updater), le gestionnaire de mises à jour utilisé par
Yellow Dog Linuxa, une distribution basée sur CentOS et Fedora et développée pour les ordinateurs équi-
pés d’un processeur PowerPC comme les Macintosh d’Apple d’avant 2006. La distribution Yellow Dog
Linux n’est plus maintenue depuis 2009.
a. « Pourquoi Yellow Dog ? » – « Pourquoi Red Hat ? »

Installer un paquet avec Yum


Pour illustrer le fonctionnement de Yum, utilisons-le pour installer tcpdump. Avant tout,
enlevons avec rpm -e les deux paquets libpcap et tcpdump précédemment installés ; puis, sai-
sissons la commande suivante :
67738-Administration Linux par la pratique-INT.book Page 305 Friday, May 24, 2019 10:38 AM

Installer et gérer des logiciels


305
CHAPITRE 15

$ sudo yum install tcpdump


Modules complémentaires chargés : fastestmirror
Loading mirror speeds from cached hostfile
* base: mirrors.atosworldline.com
* extras: mirror.plusserver.com
* updates: miroir.univ-lorraine.fr
Résolution des dépendances
--> Lancement de la transaction de test
---> Le paquet tcpdump.x86_64 14:4.9.2-3.el7 sera installé
--> Traitement de la dépendance : libpcap >= 14:1.5.3-10 pour le
paquet : 14:tcpdump-4.9.2-3.el7.x86_64
--> Traitement de la dépendance : libpcap.so.1()(64bit) pour le
paquet : 14:tcpdump-4.9.2-3.el7.x86_64
--> Lancement de la transaction de test
---> Le paquet libpcap.x86_64 14:1.5.3-11.el7 sera installé
--> Résolution des dépendances terminée

Dépendances résolues

==========================================================
Package Architecture Version Dépôt Taille
==========================================================
Installation :
tcpdump x86_64 14:4.9.2-3.el7 base 421 k
Installation pour dépendances :
libpcap x86_64 14:1.5.3-11.el7 base 138 k

Résumé de la transaction
==========================================================
Installation 1 Paquet (+1 Paquet en dépendance)

Taille totale des téléchargements : 559 k


Taille d'installation : 1.3 M
Is this ok [y/d/N]:

L’écran affiche alors pléthore d’informations. Essayons de comprendre un peu ce qui se passe.
Dans un premier temps, Yum se connecte aux miroirs de téléchargement (base, extras et
updates) pour récupérer la liste des paquets disponibles en ligne. Il identifie le paquet
recherché (tcpdump) et se charge de résoudre les dépendances requises. Il en trouve une
(libpcap), comme il faut s’y attendre. Au bout de cette opération, Yum affiche un tableau
récapitulatif qui résume ce qu’il a l’intention de faire : télécharger et installer le paquet
tcpdump comme prévu, de même que la dépendance requise libpcap. Il suffit de confirmer
par Y (yes) et Yum s’exécute :

Is this ok [y/d/N]: y
Downloading packages:
attention : /var/cache/yum/x86_64/7/base/packages/libpcap-1.5.3-11.el7.x86_64.rpm:
Entête V3 RSA/SHA256 Signature, clé ID f4a80eb5: NOKEY
67738-Administration Linux par la pratique-INT.book Page 306 Friday, May 24, 2019 10:38 AM

Administration Linux par la pratique


306

La clé publique pour libpcap-1.5.3-11.el7.x86_64.rpm n'est pas installée


(1/2): libpcap-1.5.3-11.el7.x86_64.rpm | 138 kB 00:00:00
(2/2): tcpdump-4.9.2-3.el7.x86_64.rpm | 421 kB 00:00:00
---------------------------------------------------------------
Total 978 kB/s | 559 kB 00:00:00
Récupération de la clé à partir de file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
Importation de la clef GPG 0xF4A80EB5 :
ID utilisateur : CentOS-7 Key (CentOS 7 Official Signing Key)
Empreinte : 6341 ab27 53d7 8a78 a7c2 7bb1 24c6 ...
Paquet : centos-release-7-6.1810.2.el7.centos.x86_64
Provient de : /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
Est-ce correct [o/N] :

AVERTISSEMENT RPMDB a été modifiée


Yum vous affichera probablement le message suivant :
Avertissement : RPMDB a été modifiée par une autre application que yum.
RPMDB est la base de données des paquets installés sur le système. Yum nous informe ici que cette base
a été modifiée par un autre gestionnaire de paquets, en l’occurrence RPM. Il s’agit là d’un avertissement
bénin. Pour régler le problème, vous invoquez la commande suivante :
$ sudo yum history sync

Lors de la première utilisation d’une archive de téléchargement, Yum vous demande s’il doit
importer la clé GPG. Il s’agit d’une clé numérique qui sert à garantir d’authenticité des
paquets téléchargés.

LE SAVIEZ-VOUS ? GPG
GNU Privacy Guard, de son petit nom GPG, est un clone libre de PGP (Pretty Good Privacy). Tous deux
sont des systèmes de signature et chiffrement de l’information reposant sur un système de clés que l’on
s’échange afin de pouvoir décrypter ou vérifier l’information.
Pour en savoir plus sur GPG, je vous conseille la lecture de l’excellent ouvrage PGP & GPG – Email for the
Practical Paranoid de Michael W. Lucas, dont la traduction française est disponible chez Eyrolles :
R PGP & GPG – Assurer la confidentialité de ses e-mails et fichiers, Michael W. Lucas, Eyrolles 2006,
ISBN 978-2-212-12001-1

Répondez simplement par O (oui) :

Est-ce correct [o/N] : o


Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
Installation : 14:libpcap-1.5.3-11.el7.x86_64 1/2
Installation : 14:tcpdump-4.9.2-3.el7.x86_64 2/2
Vérification : 14:tcpdump-4.9.2-3.el7.x86_64 1/2
Vérification : 14:libpcap-1.5.3-11.el7.x86_64 2/2
67738-Administration Linux par la pratique-INT.book Page 307 Friday, May 24, 2019 10:38 AM

Installer et gérer des logiciels


307
CHAPITRE 15

Installé :
tcpdump.x86_64 14:4.9.2-3.el7

Dépendances installées :
libpcap.x86_64 14:1.5.3-11.el7

Terminé !

Vous avez envie de retenter l’expérience ? Désinstallez les paquets centos-indexhtml et lynx
avec rpm -e, puis invoquez simplement ceci :

$ sudo yum install lynx

L’option -y évite la demande de confirmation :

$ sudo yum -y install lynx

Supprimer des paquets avec Yum


La suppression d’un paquet se fait grâce à l’option remove. Là aussi, Yum se charge automati-
quement de rétablir l’intégrité du système :

$ sudo yum remove centos-indexhtml

Rappelez-vous que RPM nous interdisait la suppression de ce paquet tant que lynx (qui en
dépend) était installé. Voyons ce qu’en pense Yum :

==============================================================
Package Architecture Version Dépôt Taille
==============================================================
Suppression :
centos-indexhtml noarch 7-9.el7.centos @base 90 k
Suppression pour dépendances :
lynx x86_64 2.8.8-0.3.dev15.el7 @base 5.4 M

Résumé de la transaction
==============================================================

Ici, centos-indexhtml sera enlevé sans problème, mais lynx sera également supprimé dans la
foulée (Suppression pour dépendances) pour que le système garde sa cohérence.
Pour bien comprendre la gestion des dépendances lors de la suppression de paquets, vérifiez si
tcpdump est installé, supprimez le paquet libpcap et observez ce qui se passe :

$ sudo yum remove libpcap


67738-Administration Linux par la pratique-INT.book Page 308 Friday, May 24, 2019 10:38 AM

Administration Linux par la pratique


308

Gérer les dépendances orphelines


À force d’installer et de supprimer des paquets, nous risquons de nous retrouver avec un sys-
tème encombré de dépendances orphelines, c’est-à-dire des paquets qui ne servent plus à rien
à partir du moment où les paquets qui en dépendent sont supprimés.
Voici une petite expérience pratique pour illustrer ce concept :

$ sudo yum install lynx


...
$ sudo yum remove lynx
...

L’installation de lynx récupère automatiquement la dépendance centos-indexhtml si elle


n’est pas déjà présente sur le système. En revanche, ce paquet reste en place après l’opération
de suppression et devient ainsi une dépendance orpheline.
De même, lorsque vous supprimez le paquet tcpdump avec yum remove, le paquet libpcap
reste en place et ne sert plus à grand-chose.
L’option autoremove gère la suppression des dépendances orphelines :

$ sudo yum install lynx tcpdump


...
$ sudo yum autoremove lynx
...
$ sudo yum autoremove tcpdump
...

Cette fois-ci, les dépendances inutiles centos-indexhtml et libpcap sont automatiquement


détectées et supprimées par Yum.

Effectuer une mise à jour


La mise à jour des applications et même du système entier se fait avec une facilité déconcer-
tante. L’option check-update vous affiche la liste complète de tous les paquets installés pour
lesquels des mises à jour sont disponibles. Elle s’invoque sans privilèges particuliers :

$ yum check-update
Modules complémentaires chargés : fastestmirror
Determining fastest mirrors
* base: mirrors.standaloneinstaller.com
* extras: centos.mirrors.benatherton.com
* updates: distrib-coffee.ipsl.jussieu.fr
base | 3.6 kB 00:00:00
extras | 3.4 kB 00:00:00
updates | 3.4 kB 00:00:00
(1/4): base/7/x86_64/group_gz | 166 kB 00:00:00
(2/4): extras/7/x86_64/primary_db | 156 kB 00:00:01
67738-Administration Linux par la pratique-INT.book Page 309 Friday, May 24, 2019 10:38 AM

Installer et gérer des logiciels


309
CHAPITRE 15

(3/4): updates/7/x86_64/primary_db | 2.4 MB 00:00:04


(4/4): base/7/x86_64/primary_db | 6.0 MB 00:00:14

NetworkManager.x86_64 1:1.12.0-8.el7_6 updates


NetworkManager-libnm.x86_64 1:1.12.0-8.el7_6 updates
NetworkManager-team.x86_64 1:1.12.0-8.el7_6 updates
NetworkManager-tui.x86_64 1:1.12.0-8.el7_6 updates
NetworkManager-wifi.x86_64 1:1.12.0-8.el7_6 updates
bind-libs-lite.x86_64 32:9.9.4-73.el7_6 updates
bind-license.noarch 32:9.9.4-73.el7_6 updates
cronie.x86_64 1.4.11-20.el7_6 updates
cronie-anacron.x86_64 1.4.11-20.el7_6 updates
device-mapper.x86_64 7:1.02.149-10.el7_6.3 updates
device-mapper-libs.x86_64 7:1.02.149-10.el7_6.3 updates
freetype.x86_64 2.8-12.el7_6.1 updates
glibc.x86_64 2.17-260.el7_6.3 updates
glibc-common.x86_64 2.17-260.el7_6.3 updates
...

À partir de là, l’option update met à jour un paquet installé :

$ sudo yum update tzdata

Si la mise à jour d’un paquet dépend de celle de dépendances, celle-ci s’effectue


automatiquement :

$ sudo yum update ipset


...
===============================================================
Package Architecture Version Dépôt Taille
===============================================================
Mise à jour :
ipset x86_64 6.38-3.el7_6 updates 43 k
Mise à jour pour dépendances :
ipset-libs x86_64 6.38-3.el7_6 updates 50 k

Résumé de la transaction
===============================================================
Mettre à jour 1 Paquet (+1 Paquet en dépendance)
...

La solution la plus simple consiste certainement à garder le système entier à jour. Invoquée
sans autre argument, update met à jour l’intégralité du système :

$ sudo yum update


67738-Administration Linux par la pratique-INT.book Page 310 Friday, May 24, 2019 10:38 AM

Administration Linux par la pratique


310

MAINTENANCE Ce qu’il faut savoir sur les mises à jour


Dans le sillage de Red Hat Enterprise Linux, CentOS publie régulièrement des versions majeures et
mineures de son système d’exploitation. Non, il ne s’agit pas d’une quelconque déclinaison du système
en version adulte d’un côté et ad usum delphinia de l’autre. À titre d’exemple, CentOS 7.0 a été publiée
début juillet 2014. Les paquets constituant cette version ont été régulièrement mis à jour pour corriger
les bogues et les failles de sécurité. Puis, début avril 2015, toutes ces mises à jour ont été incluses dans la
publication de la version mineure 7.1. Au moment où j’écris ces lignes (février 2019), CentOS 7 en est
arrivé à sa sixième version mineure.
Ce qu’il faut retenir, c’est que quelqu’un qui a installé le système en 2014 avec un DVD CentOS 7.0 peut
effectuer une mise à jour de son système grâce à yum update et se retrouver exactement avec le même
système sur sa machine que quelqu’un qui l’installe aujourd’hui à partir d’un DVD de la version 7.6.
Quel est l’intérêt alors de publier des versions mineures ? Il y a plusieurs raisons, mais je ne vous donne
que les deux suivantes :
• chaque nouvelle version de CentOS, même mineure, prend en charge davantage de matériels, sous
forme de modules ajoutés au kernel. Si le DVD d’installation d’une ancienne version de CentOS ne
reconnaît pas un certain matériel (comme la carte réseau), c’est le moment de tenter le coup avec une
version plus récente ;
• l’utilisation d’un support d’installation plus récent réduit de façon significative le nombre de téléchar-
gements pour les mises à jour.
a. Expression latine signifiant « à l’usage du Dauphin ». Désigne les éditions des classiques latins entreprises sous la
direction de Bossuet et de Huet, pour le Dauphin, fils de Louis XIV, et dont on avait retranché quelques passages
trop crus.

Afficher les listes de paquets par états


L’option list combinée à d’autres arguments permet de lister les paquets par états ; par
exemple, ceux qui sont installés :

$ yum list installed

Le résultat de cette commande est un peu plus lisible qu’un simple rpm -a, mais c’est une
question de préférence personnelle. Pour afficher la liste complète des paquets disponibles :

$ yum list available

Cette soupe alphabétique composée d’une bonne dizaine de milliers de paquets ne vous paraît
probablement pas très parlante. Nous verrons un peu plus loin les fonctions de recherche sur
les paquets. Pour afficher la liste des mises à jour disponibles :

$ yum list updates

Cette commande a le même effet que l’option check-update, au détail près que la présenta-
tion du résultat est différente. Là aussi, c’est avant tout une question de goût. Pour afficher la
liste des nouveautés disponibles dans les archives :
67738-Administration Linux par la pratique-INT.book Page 311 Friday, May 24, 2019 10:38 AM

Installer et gérer des logiciels


311
CHAPITRE 15

$ yum list recent

L’argument extras affiche la liste des paquets installés sur le système, qui ne sont présents
dans aucune archive. Cette commande ne retournera rien pour l’instant :

$ yum list extras

Et pour avoir une idée de tout (!) ce qu’il y a :

$ yum list all

Gérer les groupes de paquets


Certaines applications requièrent l’installation de toute une série de paquets, que même
l’administrateur le plus chevronné ne peut pas connaître par cœur. Dans ce cas, les groupes de
paquets nous facilitent la tâche :

$ yum group list


...
Available Environment Groups:
Minimal Install
Compute Node
Infrastructure Server
File and Print Server
Basic Web Server
Virtualization Host
...
Available Groups:
Compatibility Libraries
Console Internet Tools
Development Tools
...
Done

LOCALISATION Basculer vers l’anglais de manière temporaire


Certaines opérations comme la gestion des groupes de paquets sont plus faciles en anglais. Or, si nous
avons choisi le français dans l’installateur, les messages du système et les noms des groupes de paquets
s’affichent en français :
$ echo $LANG
fr_FR.UTF-8
Nous pouvons très bien redéfinir la variable LANG et basculer vers l’anglais pour la durée de la session :
$ LANG=en_US.UTF-8 && export LANG
Pour rebasculer en français, il suffit alors de quitter la session et de se reconnecter. Alternativement :
$ LANG=fr_FR.UTF-8 && export LANG
67738-Administration Linux par la pratique-INT.book Page 312 Friday, May 24, 2019 10:38 AM

Administration Linux par la pratique


312

Pour une raison mystérieuse, les groupes de paquets sont pour la plupart occultés dans la
configuration par défaut depuis CentOS 7.0. L’option hidden sert à les afficher :

$ yum group list hidden


...
Available Groups:
Additional Development
Anaconda Tools
Backup Client
Backup Server
Base
...
Console Internet Tools
Core
DNS Name Server
...

Les résultats de group list sont filtrables à l’aide de grep, comme ceci par exemple :

$ yum group list hidden | grep -i database


MariaDB Database Client
MariaDB Database Server
PostgreSQL Database Client
PostgreSQL Database Server

À partir de là, je peux installer un groupe de paquets en utilisant group install. Admettons
que je veuille disposer de tous les paquets du système de base :

$ sudo yum group install "Core"

Le groupe de paquets Base fournit un système de base étendu sous forme d’une panoplie com-
plète d’outils courants comme l’éditeur Vim, les pages de manuel en ligne et bien d’autres
choses encore. Sur un système CentOS, c’est l’équivalent des boîtes à outils complètes que vous
trouvez dans les magasins de bricolage. Je vous conseille donc d’installer ce groupe de paquets :

$ sudo yum group install "Base"

Dorénavant, le résultat de la commande yum group list s’organise en deux sections :


• les groupes de paquets déjà présents sur votre système (Installed Groups) ;
• ceux susceptibles d’être installés (Available Groups).

$ yum group list hidden


...
Installed Groups:
Base
Core
67738-Administration Linux par la pratique-INT.book Page 313 Friday, May 24, 2019 10:38 AM

Installer et gérer des logiciels


313
CHAPITRE 15

Available Groups:
Additional Development
Anaconda Tools
Backup Client
Backup Server
...

Admettons que je veuille installer un serveur de bases de données sur ma machine, je pourrais
le faire tout simplement comme ceci :

$ sudo yum group install "MariaDB Database Server"

Pour supprimer tout un groupe de paquets, c’est aussi simple que l’installation :

$ sudo yum group remove "MariaDB Database Server"

Notez toutefois que cette dernière commande ne supprime pas les dépendances orphelines du
système.

Obtenir des informations sur les paquets


L’option info affiche les informations concernant un paquet :

$ yum info httpd


...
Nom : httpd
Architecture : x86_64
Version : 2.4.6
Révision : 88.el7.centos
Taille : 2.7 M
Dépôt : base/7/x86_64
Résumé : Apache HTTP Server
URL : http://httpd.apache.org/
Licence : ASL 2.0
Description : The Apache HTTP Server is a powerful, efficient,
: and extensible web server.

Le résultat est similaire à celui de rpm -qi, au détail près que la présentation est différente.
En revanche, les informations s’affichent même si le paquet n’est pas installé.
67738-Administration Linux par la pratique-INT.book Page 314 Friday, May 24, 2019 10:38 AM

Administration Linux par la pratique


314

Rechercher un paquet
L’option search vous permet de rechercher un paquet :

$ yum search vim


...
===================== N/S matched: vim ======================
protobuf-vim.x86_64 : Vim syntax highlighting for Google Protocol Buffers
descriptions
vim-X11.x86_64 : The VIM version of the vi editor for the X Window System
vim-common.x86_64 : The common files needed by any version of the VIM editor
vim-enhanced.x86_64 : A version of the VIM editor which includes recent enhancements
vim-filesystem.x86_64 : VIM filesystem layout
vim-minimal.x86_64 : A minimal version of the VIM editor

Si vous voulez effectuer une recherche sur un terme de la description du paquet, la seule res-
triction sera d’ordre linguistique, étant donné que les paquets sont décrits en anglais. Donc, si
vous cherchez un éditeur, invoquez la commande suivante :

$ yum search editor

Yum vous affichera la liste de tous les paquets qui contiennent le terme editor dans leur des-
cription. Autrement, si vous voulez piocher dans les navigateurs en mode texte, par exemple,
vous pouvez le faire comme ceci :

$ yum search browser | grep text


elinks.x86_64 : A text-mode Web browser
...
lynx.x86_64 : A text-based Web browser

L’option list sert également à effectuer des recherches sur les paquets. Je peux étendre la
recherche avec un joker :

$ yum list vim*


...
Paquets installés
vim-common.x86_64 2:7.4.160-5.el7 @base
vim-enhanced.x86_64 2:7.4.160-5.el7 @base
vim-filesystem.x86_64 2:7.4.160-5.el7 @base
vim-minimal.x86_64 2:7.4.160-5.el7 @anaconda
Paquets disponibles
vim-X11.x86_64 2:7.4.160-5.el7 base
67738-Administration Linux par la pratique-INT.book Page 315 Friday, May 24, 2019 10:38 AM

Installer et gérer des logiciels


315
CHAPITRE 15

L’option provides me permet de chercher un paquet qui contient un certain fichier :

$ yum provides /usr/bin/mysql


...
1:mariadb-5.5.60-1.el7_5.x86_64 : A community developed branch
of MySQL
Dépôt : base
...

Configuration des dépôts pour Yum


Les dépôts ou archives de téléchargement sont les endroits (sites Internet ou locaux) à partir des-
quels Yum télécharge les logiciels et leurs mises à jour. On pourrait également utiliser le
terme plus explicite de sources de téléchargement.

Où est-ce que ça se configure ?


Dans les premières versions de Yum, toute la configuration s’effectuait dans un seul fichier :
/etc/yum.conf. Dans les versions plus récentes, la configuration des dépôts s’écrit dans des
fichiers à part, qui se trouvent dans le répertoire /etc/yum.repos.d :

$ ls /etc/yum.repos.d/
CentOS-Base.repo CentOS-fasttrack.repo CentOS-Vault.repo
CentOS-CR.repo CentOS-Media.repo
CentOS-Debuginfo.repo CentOS-Sources.repo

Dans notre installation par défaut, /etc/yum.repos.d contient pas moins de sept fichiers
.repo. L’extension .repo est une convention qui indique qu’il s’agit d’un repository, c’est-à-
dire d’un dépôt.

Les dépôts officiels de la distribution


Jetons un œil sur le fichier CentOS-Base.repo. Il est constitué d’un commentaire initial et
d’une série de quatre stances qui suivent toutes le même schéma.
Ici comme ailleurs, les lignes commençant par un dièse # sont des commentaires et n’ont
aucune incidence « technique » sur le fichier. S’il ne s’agit pas de commentaires à proprement
parler, les lignes commençant par # sont donc des directives de configuration désactivées ou
« commentées ».
67738-Administration Linux par la pratique-INT.book Page 316 Friday, May 24, 2019 10:38 AM

Administration Linux par la pratique


316

Figure 15–4
Les dépôts officiels de la
distribution CentOS.

Chacune des quatre stances commence par le nom de l’archive correspondante entre
crochets : [base], [updates], [extras] et [centosplus]. Voici un petit synopsis qui explique
brièvement à quoi correspond chacune de ces sources de téléchargement.
• [base] : les paquets de base de CentOS, tels qu’on les trouve dans les ISO, le DVD ou
les CD.
• [updates] : les mises à jour de [base] publiées après les ISO de CentOS. Il s’agit de mises
à jour de sécurité, de corrections de bogues ou d’améliorations des paquets de [base].
• [extras] : les paquets non compris dans Red Hat Enterprise Linux, compilés et gérés par
l’équipe de CentOS, qui ajoutent certaines fonctionnalités à la distribution de base.
L’ensemble de ces paquets est dûment testé et n’interfère pas avec la distribution de base.
• [centosplus] : les paquets provenant de la contribution des développeurs et des utilisa-
teurs de CentOS, mais susceptibles de remplacer des paquets de [base].
Les quatre stances du fichier CentOS-Base.repo s’organisent suivant la même structure. La
ligne commençant par name contient le nom de l’archive de téléchargement. Les anciennes
versions de CentOS utilisaient baseurl pour définir l’URL de l’archive correspondante.
Depuis les versions 5.x, la ligne contenant baseurl est commentée et c’est la ligne
mirrorlist qui pointe vers une liste de sites miroirs, afin de ne pas trop solliciter les serveurs
de centos.org. L’option gpgcheck=1 signifie à Yum de procéder à la vérification de la signature
des paquets avant l’installation. Quant aux différents paramètres comme $releasever ou
$basearch, il s’agit de variables qui renseignent sur la version de CentOS et sur l’architecture
du processeur pour lequel le système a été compilé.
67738-Administration Linux par la pratique-INT.book Page 317 Friday, May 24, 2019 10:38 AM

Installer et gérer des logiciels


317
CHAPITRE 15

CentOS, le parent pauvre des distributions ?


Dans sa configuration par défaut, la distribution CentOS offre un nombre relativement
réduit de paquets. L’archive [base], par exemple, contient actuellement un peu moins de
10 000 paquets. Ce n’est pas beaucoup, surtout si l’on regarde du côté des distributions
comme OpenSUSE, Ubuntu, Debian ou Fedora, qui en proposent jusqu’à cinq ou six fois
plus. Est-ce que cela signifie que CentOS est un parent pauvre et que nous aurions mieux fait
de porter notre choix sur une autre distribution ? Non, pas vraiment.
CentOS est un Enterprise Linux et une des particularités d’une telle distribution à usage pro-
fessionnel, c’est qu’elle offre un nombre restreint de paquets tout en apportant un soin parti-
culier à la cohérence et à la stabilité de l’ensemble.

Paquets à gogo !
Pour obtenir des applications autres que celles proposées directement par CentOS, la solution
consiste tout simplement à configurer l’un des nombreux third party repositories, les archives de
téléchargement entretenues par des tiers. N’oublions pas que Red Hat Enterprise Linux provient
directement de la distribution Fedora. On peut très bien considérer que cette dernière constitue
une version de développement de Red Hat Enterprise Linux qui, inversement, représente une
« Fedora stabilisée », mais n’en contenant qu’un nombre limité de paquets.
Les sources de téléchargement CentOS entretenues par des tiers contiennent ainsi pour la plupart
des paquets de Fedora recompilés pour CentOS. Elles présentent toutes un avantage en même
temps qu’un inconvénient. Elles mettent à disposition un nombre important de paquets mais,
pour la plupart, ne préservent pas l’intégrité de votre système. Concrètement, l’utilisation d’une
seule de ces archives peut facilement multiplier par deux le nombre de paquets disponibles pour
votre système mais, en contrepartie, l’installation de certains d’entre eux forcera la mise à jour de
ceux du système de base. Cela ne veut pas dire que votre système plantera, mais le système de base
ultra-stable CentOS contiendra désormais des composants qui n’ont pas été aussi dûment testés.
Une solution élégante à ce dilemme consiste tout simplement à définir des priorités pour
Yum. Concrètement, il suffit de configurer une source de téléchargement tierce tout en indi-
quant au système : attention, interdiction d’installer des paquets qui risquent de remplacer
des composants du système de base. Cela a l’air compliqué en théorie mais, dans la pratique,
c’est relativement simple, comme vous allez le voir tout de suite.

Protéger le système de base avec Yum-Priorities


Avant d’aller plus loin dans la configuration des archives, nous allons installer une extension
pour Yum, le plug-in (ou greffon) Yum-Priorities :

$ sudo yum install yum-plugin-priorities

Cette extension permet de définir des priorités pour les différentes archives de télécharge-
ment. Il suffit de définir une variable priority=N, avec N compris entre 1 (la plus haute) et
67738-Administration Linux par la pratique-INT.book Page 318 Friday, May 24, 2019 10:38 AM

Administration Linux par la pratique


318

99 (la plus basse). Concrètement, si vous avez défini une priorité de 1 pour les dépôts [base],
[updates] et [extras] et une priorité de 10 (ou 30, ou 99, peu importe) pour les dépôts tiers
que nous verrons un peu plus loin, les paquets de ces derniers ne pourront jamais remplacer
les paquets de base. Yum les en empêchera tout simplement, en les excluant de la liste.

Configurer les dépôts de paquets officiels


Éditez CentOS-Base.repo et activez les dépôts [base], [updates] et [extras] avec une prio-
rité maximale :

# /etc/yum.repos.d/CentOS-Base.repo
[base]
enabled=1
priority=1
name=CentOS-$releasever - Base
...
[updates]
enabled=1
priority=1
name=CentOS-$releasever - Updates
...
[extras]
enabled=1
priority=1
name=CentOS-$releasever - Extras
...

Laissez le dépôt [centosplus] désactivé :

# /etc/yum.repos.d/CentOS-Base.repo
...
[centosplus]
enabled=0
name=CentOS-$releasever - Plus
...

Configurer le dépôt CR
Le dépôt CR (Continuous Release) permet d’obtenir les dernières mises à jour pour migrer en
douceur vers la prochaine version mineure de CentOS avant la sortie de l’ISO officielle. Pour
ma part, j’aime bien utiliser ce dépôt, qui m’évite de me retrouver avec un tsunami de mises à
jour lors du passage à une nouvelle version mineure de CentOS.
La commande yum-config-manager fournie par le paquet yum-utils sert à activer ce dépôt :

$ rpm -q yum-utils
yum-utils-1.1.31-50.el7.noarch
$ sudo yum-config-manager --enable cr
67738-Administration Linux par la pratique-INT.book Page 319 Friday, May 24, 2019 10:38 AM

Installer et gérer des logiciels


319
CHAPITRE 15

Éditez le fichier CentOS-CR.repo en définissant la même priorité que pour les dépôts officiels.

[cr]
enabled=1
priority=1
name=CentOS-$releasever - cr
baseurl=http://mirror.centos.org/centos/$releasever/cr/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

Configurer le dépôt tiers EPEL


Le dépôt tiers EPEL (Extra Packages for Enterprise Linux) fournit des paquets qui ne sont pas
inclus dans la distribution CentOS. Une fois que le dépôt officiel [extras] est configuré,
EPEL se configure très simplement à l’aide du paquet correspondant.

$ sudo yum install epel-release

Le paquet a installé deux fichiers epel.repo et epel-testing.repo dans le répertoire /etc/


yum.repos.d. Laissons de côté le second et ouvrons epel.repo pour définir les priorités du
dépôt [epel] :

# /etc/yum.repos.d/epel.repo
[epel]
enabled=1
priority=10
name=Extra Packages for Enterprise Linux 7 - $basearch
...
[epel-debuginfo]
enabled=0
name=Extra Packages for Enterprise Linux 7 - $basearch - Debug
...
[epel-source]
enabled=0
name=Extra Packages for Enterprise Linux 7 - $basearch - Source
...

À partir de là, nous pouvons vérifier si la gestion des priorités fonctionne comme prévu :

$ yum check-update
Modules complémentaires chargés : fastestmirror, langpacks, priorities
Loading mirror speeds from cached hostfile
epel/x86_64/metalink | 25 kB 00:00:00
* base: centos.mirror.fr.planethoster.net
* epel: mirror.in2p3.fr
* extras: distrib-coffee.ipsl.jussieu.fr
* updates: distrib-coffee.ipsl.jussieu.fr
67738-Administration Linux par la pratique-INT.book Page 320 Friday, May 24, 2019 10:38 AM

Administration Linux par la pratique


320

epel | 4.7 kB 00:00:00


(1/3): epel/x86_64/group_gz | 88 kB 00:00:01
(2/3): epel/x86_64/updateinfo | 959 kB 00:00:01
(3/3): epel/x86_64/primary_db | 6.6 MB 00:00:04
239 packages excluded due to repository priority protections

Configurer le dépôt tiers ELRepo


ELRepo est un autre dépôt tiers pour CentOS, qui se concentre sur les pilotes pour les sys-
tèmes de fichiers, les cartes réseau, les cartes graphiques, etc.
Pour utiliser ce dépôt, importez d’abord la clé GPG publique :

$ sudo rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org

Ensuite, installez le paquet elrepo-release directement depuis le site :

$ sudo rpm -ivh https://www.elrepo.org/elrepo-release-7.0-3.el7.elrepo.noarch.rpm

Alternativement, vous pouvez très bien ouvrir la page du projet avec links ou lynx, récupérer
le paquet en suivant le lien de téléchargement direct et l’installer localement.
Figure 15–5
Le dépôt tiers ELRepo fournit
des pilotes tiers pour Red Hat
Enterprise Linux et CentOS.
67738-Administration Linux par la pratique-INT.book Page 321 Friday, May 24, 2019 10:38 AM

Installer et gérer des logiciels


321
CHAPITRE 15

Éditez le fichier /etc/yum.repos.d/elrepo.repo et désactivez l’ensemble des dépôts


[elrepo] :

# /etc/yum.repos.d/elrepo.repo
[elrepo]
enabled=0
...
[elrepo-testing]
enabled=0
...
[elrepo-kernel]
enabled=0
...
[elrepo-extras]
enabled=0
...

Les dépôts ELRepo nous serviront ponctuellement pour installer un pilote ou un noyau.
Dans ce cas, nous utiliserons Yum en les activant explicitement avec l’option --enablerepo,
comme ceci :

$ yum --enablerepo=elrepo-kernel search kernel-lt

Installer un paquet RPM téléchargé avec Yum


Pour terminer ce chapitre, je vous montre un cas de figure que l’on rencontre de temps en
temps. Dans l’exemple qui suit, je cherche à installer l’application udfbGuard, un système de
filtrage d’URL. Le paquet ufdbGuard n’est fourni par aucun dépôt tiers. En revanche, le site
web du projet fournit des paquets RPM binaires compilés pour CentOS 7. Je récupère le
paquet sur mon serveur :

$ ls ~/RPMS/
ufdbGuard-1.34.1-CentOS7.x86_64.rpm

Je pourrais très bien l’installer en utilisant rpm -ivh ou même rpm -Uvh. Rappelez-vous que
l’utilisation conjointe de Yum et de RPM entraîne l’avertissement suivant :

Avertissement : RPMDB a été modifiée par une autre application que yum.
67738-Administration Linux par la pratique-INT.book Page 322 Friday, May 24, 2019 10:38 AM

Administration Linux par la pratique


322

Pour éviter des incohérences dans la base de données des paquets RPM, la meilleure solution
consiste à utiliser Yum avec l’option localinstall :

$ sudo yum localinstall ufdbGuard-1.34.1-CentOS7.x86_64.rpm


Modules complémentaires chargés : fastestmirror, langpacks, priorities
Examen de ufdbGuard-1.34.1-CentOS7.x86_64.rpm : ufdbGuard-1.34.1-CentOS7.x86_64
Sélection de ufdbGuard-1.34.1-CentOS7.x86_64.rpm pour installation
Résolution des dépendances
--> Lancement de la transaction de test
---> Le paquet ufdbGuard.x86_64 0:1.34.1-CentOS7 sera installé
--> Résolution des dépendances terminée

Dépendances résolues

================================================================
Package Architecture Version Dépôt Taille
================================================================
Installation :
ufdbGuard x86_64 1.34.1-CentOS7 ... 2.8 M

Résumé de la transaction
================================================================
Installation 1 Paquet

Taille totale : 2.8 M


Taille d'installation : 2.8 M
Is this ok [y/d/N]: y
Downloading packages:
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
Installation : ufdbGuard-1.34.1-CentOS7.x86_64 1/1

ufdbGuard is installed.

Cette façon de faire présente un autre avantage. Au cas où un paquet RPM téléchargé pré-
sente des dépendances locales, yum localinstall tentera de les résoudre automatiquement.
67738-Administration Linux par la pratique-INT.book Page 323 Friday, May 24, 2019 10:38 AM

Installer et gérer des logiciels


323
CHAPITRE 15

EN SAVOIR PLUS Petit tour d’horizon sur les gestionnaires de paquets


Les outils de gestion des paquets constituent un point de distinction assez important entre les différentes
distributions Linux. Le simple format des paquets permet d’organiser la majorité des distributions en
grandes familles :
• paquets au format .rpm : CentOS, Red Hat Enterprise Linux, Fedora, SUSE et OpenSUSE ;
• paquets au format .deb : Debian et Ubuntu ;
• paquets au format .tgz et .txz : Slackware ;
Cette liste est loin d’être exhaustive, étant donné que la communauté Linux respecte la Grande Charte
Anarchiste du Troupeau de Chats et développe régulièrement de nouvelles distributions avec des ges-
tionnaires de paquets encore plus révolutionnaires et surtout incompatibles entre eux.
Chaque format de paquets dispose de son propre gestionnaire à la base, ce qui signifie que vous pourrez
utiliser RPM pour gérer les paquets de n’importe laquelle des distributions basée sur ce format, du moins
manuellement. Les différences se situeront au niveau des frontaux plus confortables :
• CentOS et Red Hat Enterprise Linux utilisent Yum ;
• Fedora est gérée par DNF ;
• SUSE et OpenSUSE utilisent Zypper en plus de RPM.
Les distributions de la famille Debian et dérivées gèrent leurs paquets au format .deb avec l’utilitaire
dpkg et des frontaux en ligne de commande puissants et flexibles comme APT.
Ce foisonnement d’outils a de quoi décourager les utilisateurs nouveaux venus. Mon conseil : n’essayez
pas d’apprendre trop de choses à la fois. Explorez Yum et RPM et les possibilités qu’ils offrent. Une fois
que vous aurez saisi leurs principes de fonctionnement et que vous les manierez avec le sourire, l’appren-
tissage d’un autre gestionnaire de paquets comme APT ne vous fera plus peur. Le fonctionnement de
base est exactement le même ; ce n’est que la syntaxe des commandes qui change.
67738-Administration Linux par la pratique-INT.book Page 324 Friday, May 24, 2019 10:38 AM
67738-Administration Linux par la pratique-INT.book Page 325 Friday, May 24, 2019 10:38 AM

16
Manipuler le chargeur
de démarrage et le noyau

La configuration du chargeur de démarrage et les opérations de base autour du kernel font partie des
manipulations qui font peur aux administrateurs en herbe, étant donné qu’elles touchent au cœur du
système. Ce chapitre vous propose donc une initiation tout en douceur sous forme d’une série d’ateliers
pratiques très simples.

Le chargeur de démarrage GRUB


GNU GRUB (GRand Unified Bootloader) est le chargeur de démarrage utilisé par l’écrasante
majorité des distributions Linux actuelles. GRUB 2 a remplacé l’ancienne version 0.9.x
(GRUB Legacy), qui n’est plus maintenue. Pour éviter la confusion, précisons que, lorsque
nous disons « GRUB », nous parlons effectivement de GRUB 2.
Le chargeur de démarrage, c’est le premier logiciel qui est lancé lorsqu’on allume un ordina-
teur et que le BIOS ou l’UEFI rendent la main. Dans notre contexte, le rôle de GRUB
consiste principalement à trouver, charger et démarrer le noyau Linux.
67738-Administration Linux par la pratique-INT.book Page 326 Friday, May 24, 2019 10:38 AM

Administration Linux par la pratique


326

Comprendre la configuration par défaut


Pour nos essais pratiques dans ce chapitre, nous allons partir d’une installation minimale de
CentOS en mode « poule », telle qu’elle est décrite dans le chapitre 3 de ce livre. Lorsque nous
démarrons la machine, le menu du chargeur de démarrage s’affiche pour une durée de cinq
secondes. L’entrée de menu CentOS Linux (3.10.0-957.el7.x86_64) 7 (Core) est mise en surbrillance.
Figure 16–1
Le menu du chargeur de démarrage
GRUB dans la configuration par
défaut.

Si nous ne touchons à rien, le système démarre sur cette option sélectionnée par défaut et
nous affiche ceci :

CentOS Linux 7 (Core)


Kernel 3.10.0-957.el7.x86_64 on an x86_64

centosbox login: _

Une fois que nous nous sommes connectés, nous pouvons afficher la version du kernel en
cours d’utilisation :

$ uname -r
3.10.0-957.el7.x86_64

Les mises à jour et le noyau


À présent, lançons la mise à jour initiale du système :

$ sudo yum update

Cette mise à jour comprend, entre autres choses, une nouvelle version pour le noyau, c’est-à-
dire le paquet kernel.
67738-Administration Linux par la pratique-INT.book Page 327 Friday, May 24, 2019 10:38 AM

Manipuler le chargeur de démarrage et le noyau


327
CHAPITRE 16

Redémarrons la machine et observons les changements dans le menu de GRUB. À première


vue, nous constatons deux choses :
• le nouveau kernel 3.10.0-957.5.1.el7.x86_64 est présélectionné par défaut ;
• l’ancien kernel 3.10.0-957.el7.x86_64 semble toujours présent sur le système.
Figure 16–2
Après la mise à jour, le nouveau
kernel est présélectionné
par défaut.

Acceptons cette nouvelle option par défaut et vérifions pour en avoir le cœur net :

$ uname -r
3.10.0-957.5.1.el7.x86_64

La mise à jour de ce composant central du système s’est déroulée de manière un peu


particulière :

$ rpm -qa | grep kernel-3.10.0


kernel-3.10.0-957.5.1.el7.x86_64
kernel-3.10.0-957.el7.x86_64

Le nouveau paquet kernel-3.10.0-957.5.1 n’a visiblement pas remplacé l’ancien kernel-


3.10.0-957. Au lieu de cela, les deux paquets sont installés côte à côte, ce qui permet de
revenir à l’ancienne version en cas de problème.

Les fichiers de configuration de GRUB


Le principal fichier de configuration de GRUB est grub.cfg. Sur les systèmes Red Hat et
CentOS, on le trouve dans le répertoire /boot/grub2, dont l’accès est interdit aux utilisateurs
standards. Si nous jetons un œil dans ce fichier avec head, cat, more, less ou notre éditeur de
texte préféré, nous tombons sur la mise en garde suivante :
67738-Administration Linux par la pratique-INT.book Page 328 Friday, May 24, 2019 10:38 AM

Administration Linux par la pratique


328

$ sudo head -n 5 /boot/grub2/grub.cfg


#
# DO NOT EDIT THIS FILE
#
# It is automatically generated by grub2-mkconfig using
# templates from /etc/grub.d and settings from /etc/default/grub

Cela signifie que, en théorie, rien ne nous empêche d’éditer ce fichier à la main. En pratique,
les distributions modernes partent pour la plupart du principe que ce fichier peut être régé-
néré à volonté par le système. Il vaut donc mieux éviter de le personnaliser directement, sous
peine de voir notre configuration personnalisée écrasée par la prochaine mise à jour du noyau.
Sous Red Hat et CentOS, c’est l’outil grub2-mkconfig qui servira à générer le fichier de
configuration grub.cfg. Lorsqu’on lance le script shell grub2-mkconfig, il se charge de lire
une série de variables contenues dans le fichier /etc/default/grub et les utilise pour écrire la
configuration dans /boot/grub2/grub.cfg.

$ cat /etc/default/grub
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT="console"
GRUB_CMDLINE_LINUX="rhgb quiet"
GRUB_DISABLE_RECOVERY="true"

Peut-être que, sur votre machine, la configuration ressemblera à quelque chose comme ce qui
suit :

$ cat /etc/default/grub
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT="console"
GRUB_CMDLINE_LINUX="rd.lvm.lv=centos/root \
rd.lvm.lv=centos/swap \
rhgb \
quiet"
GRUB_DISABLE_RECOVERY="true"

SYNTAXE Rendre les paramètres plus lisibles


La variable GRUB_CMDLINE_LINUX contient un certain nombre de paramètres écrits les uns après les
autres, ce qui résulte parfois en une seule ligne à rallonge pas très lisible. Dans ce cas, on améliore la lisibi-
lité grâce à la barre oblique inversée \ qui permet d’écrire les paramètres les uns en dessous des autres.
67738-Administration Linux par la pratique-INT.book Page 329 Friday, May 24, 2019 10:38 AM

Manipuler le chargeur de démarrage et le noyau


329
CHAPITRE 16

Afficher les messages de démarrage


Dans la configuration par défaut, les messages de démarrage du système ne s’affichent pas. Ils
sont occultés par une barre de progression horizontale qui défile en bas de l’écran. Ce mode
d’affichage graphique est initié par le paramètre rhgb (Red Hat Graphical Boot) :

$ grep rhgb /etc/default/grub


GRUB_CMDLINE_LINUX="rhgb quiet"

Faites un premier essai. Ouvrez /etc/default/grub avec votre éditeur de texte préféré (sudo
vim /etc/default/grub), supprimez le paramètre rhgb et enregistrez les modifications.

Prenez en compte la nouvelle configuration de GRUB :

$ sudo grub2-mkconfig -o /boot/grub2/grub.cfg


Generating grub configuration file ...
Found linux image: /boot/vmlinuz-3.10.0-957.el7.x86_64
Found initrd image: /boot/initramfs-3.10.0-957.el7.x86_64.img
Found linux image: /boot/vmlinuz-0-rescue-dac9dc3c99414ffaba6b7c3dd284987f
Found initrd image: /boot/initramfs-0-rescue-dac9dc3c99414ffaba6b7c3dd284987f.img

Redémarrez et admirez les messages de démarrage du système, faute de pouvoir les lire à la
vitesse à laquelle ils défilent.
Figure 16–3
Les messages de démarrage
du système.

Modifier la résolution de la console


Si vous travaillez directement sur le serveur – c’est-à-dire si vous n’êtes pas connecté à la
machine via une session distante dans un terminal graphique – il y a de fortes chances pour
que vous trouviez la police d’affichage de la console un peu trop petite.
Rendons l’affichage plus lisible en modifiant la résolution de la console, ce qui s’effectue au
niveau du chargeur de démarrage.
67738-Administration Linux par la pratique-INT.book Page 330 Friday, May 24, 2019 10:38 AM

Administration Linux par la pratique


330

Éditez /etc/default/grub et fournissez les paramètres suivants pour essayer :

GRUB_CMDLINE_LINUX="rd.lvm.lv=centos/root \
rd.lvm.lv=centos/swap \
nomodeset \
vga=791 \
quiet"

N’oubliez pas de prendre en compte les nouveaux paramètres :

$ sudo grub2-mkconfig -o /boot/grub2/grub.cfg

Redémarrez et appréciez le résultat. Les messages de démarrage du système s’affichent de


manière beaucoup plus lisible.
Figure 16–4
Si la console n’est pas très lisible,
testez différentes résolutions.

Essayez successivement les paramètres nomodeset vga=791 et nomodeset vga=788 et gardez


la configuration qui vous convient le mieux.

Faire le ménage dans les kernels


Au bout de quelques mois d’utilisation, vous constaterez probablement que les versions suc-
cessives du noyau Linux s’entassent dans les répertoires /boot et /lib/modules en encom-
brant le menu de sélection de GRUB comme de la mauvaise herbe.
67738-Administration Linux par la pratique-INT.book Page 331 Friday, May 24, 2019 10:38 AM

Manipuler le chargeur de démarrage et le noyau


331
CHAPITRE 16

Figure 16–5
Le menu de GRUB avec pas moins
de cinq différents kernels au choix.

PANNE Saturation de la partition /boot


Un grand classique dans les pannes de serveurs est d’arriver à saturation de la partition /boot après une
mise à jour du noyau. Concrètement, Yum n’arrive pas à déballer le paquet RPM du kernel parce qu’il n’a
plus assez de place dans la partition /boot. Ce genre de problème peut s’éviter de deux manières :
• prévoir une partition /boot suffisamment spacieuse à l’installation ;
• faire plaisir à Marie Kondoa en supprimant tous ces vieux kernels qui ne vous mettent plus en joie.

a. Consultante en rangement, auteure de nombreux ouvrages dans lesquels elle présente sa méthode pour conserver
l’ordre.

Heureusement pour nous, Yum est préconfiguré de manière à limiter le nombre de noyaux
concurrents sur notre système. Plus concrètement, c’est le paramètre installonly_limit
dans le fichier /etc/yum.conf qui se charge de définir le nombre maximum de versions
concurrentes d’un seul et même paquet :

$ grep limit /etc/yum.conf


installonly_limit=5

Si nous effectuons régulièrement nos mises à jour, nous allons tôt ou tard nous retrouver avec
cinq versions du kernel :

$ rpm -qa | grep kernel-3.10.0


kernel-3.10.0-862.11.6.el7.x86_64
kernel-3.10.0-957.5.1.el7.x86_64
kernel-3.10.0-862.el7.x86_64
kernel-3.10.0-862.14.4.el7.x86_64
kernel-3.10.0-957.el7.x86_64
67738-Administration Linux par la pratique-INT.book Page 332 Friday, May 24, 2019 10:38 AM

Administration Linux par la pratique


332

Évidemment, nous pourrions très bien supprimer les kernels obsolètes avec yum remove.
Cette façon de procéder est assez pénible, car elle nécessite de fournir la version exacte de
chacun des paquets dont on souhaite se débarrasser.
Je vous conseille plutôt d’utiliser l’outil package-cleanup fourni par le paquet yum-utils. Il
fait le ménage dans vos anciens kernels en une simple commande :

$ sudo package-cleanup --oldkernels --count=1


Modules complémentaires chargés : fastestmirror
--> Lancement de la transaction de test
---> Le paquet kernel.x86_64 0:3.10.0-862.el7 sera effacé
---> Le paquet kernel.x86_64 0:3.10.0-862.11.6.el7 sera effacé
---> Le paquet kernel.x86_64 0:3.10.0-862.14.4.el7 sera effacé
---> Le paquet kernel.x86_64 0:3.10.0-957.el7 sera effacé
...

Partant de là, rien ne vous empêche d’éditer /etc/yum.conf pour réduire la quantité maxi-
male de kernels concurrents. La valeur du paramètre installonly_limit ne pourra pas être
inférieure à 2 :

$ grep limit /etc/yum.conf


installonly_limit=2

Installer un kernel récent


Dans certaines situations, il s’avère nécessaire d’installer un kernel plus récent que la
version 3.10.0 fournie par les dépôts du distributeur. Sur un serveur, ce genre d’opération sera
principalement motivé par l’ajout de matériel qui n’est pas géré par le noyau officiel.

COMPÉTENCES Compiler un noyau depuis le code source


Dans le bon vieux temps, les administrateurs récupéraient le code source du kernel et le compilaient en
adaptant la configuration à la machine locale. La fabrication d’un noyau depuis le code source est une
opération certes riche en enseignements, mais, contrairement à ce que prétendent certains formateurs
Linux, ce n’est plus vraiment une compétence indispensable pour administrer un serveur. Et non, ce n’est
pas la peine non plus de savoir lire le code C du kernel comme le Midi Libre.

Dans le précédent chapitre, nous avons présenté en détail la configuration du dépôt de


paquets tiers ELRepo. Nous allons nous servir de ce dépôt pour installer un kernel plus
récent sur notre serveur.
67738-Administration Linux par la pratique-INT.book Page 333 Friday, May 24, 2019 10:38 AM

Manipuler le chargeur de démarrage et le noyau


333
CHAPITRE 16

VERSIONS Quel kernel choisir ?


Le kernel Linux 3.10.0 fourni par Red Hat et CentOS est de qualité entreprise, comme nous l’avons expli-
qué dans le premier chapitre. Les ingénieurs de chez Red Hat veillent à implémenter et/ou rétroporter
tous les patchs de sécurité nécessaires et, s’ils ajoutent de nouvelles fonctionnalités, ce n’est que de
manière très épisodique.
Indépendamment de tout cela, les développeurs de kernel.org publient très régulièrement de nouvelles
versions du kernel.
• La version stable, c’est la dernière version « officielle ».
• De temps en temps, les développeurs de kernel.org offrent un cycle de support étendu (longterm) pour
une, voire plusieurs version(s) stable(s) du noyau.

Figure 16–6 La page d’accueil de kernel.org avec la sélection de noyaux disponibles.


Dans la mesure du possible, utilisez le kernel officiel fourni par le distributeur. Si jamais vous devez pas-
ser à une version plus récente, optez d’abord pour une version LTS. En dernier recours, vous installerez la
dernière stable.

Les mainteneurs du dépôt ELRepo fournissent des noyaux plus récents en deux
déclinaisons :
• kernel-lt (longterm) : une version relativement récente offrant un cycle de support
étendu ;
• kernel-ml (mainline) : la dernière version stable.
Vérifiez si le dépôt est correctement configuré, puis effectuez les recherches suivantes :

$ yum --enablerepo=elrepo-kernel search kernel-lt


$ yum --enablerepo=elrepo-kernel search kernel-ml
$ yum --enablerepo=elrepo-kernel info kernel-lt
$ yum --enablerepo=elrepo-kernel info kernel-ml
67738-Administration Linux par la pratique-INT.book Page 334 Friday, May 24, 2019 10:38 AM

Administration Linux par la pratique


334

Pour installer le kernel LTS depuis le dépôt ELRepo, invoquez la commande suivante :

$ sudo yum --enablerepo=elrepo-kernel install kernel-lt

Figure 16–7
Sélectionnez le kernel LTS
dans le menu de GRUB.

Une fois que nous avons redémarré, vérifions si nous tournons bien sur le nouveau kernel :

$ uname -r
4.4.174-1.el7.elrepo.x86_64

Si nous décidons de garder cette version, c’est une bonne idée de faire un brin de ménage en
supprimant quelques paquets inutiles :

$ rpm -qa | grep kernel


kernel-tools-3.10.0-957.5.1.el7.x86_64
kernel-lt-4.4.174-1.el7.elrepo.x86_64
kernel-tools-libs-3.10.0-957.5.1.el7.x86_64
kernel-3.10.0-957.5.1.el7.x86_64

Nous pouvons nous débarrasser du kernel 3.10.0 et des outils correspondants :

$ sudo yum remove kernel kernel-tools kernel-tools-libs

Ensuite, nous allons installer le paquet kernel-lt-tools et la dépendance kernel-lt-tools-libs :

$ sudo yum --enablerepo=elrepo-kernel install kernel-lt-tools


67738-Administration Linux par la pratique-INT.book Page 335 Friday, May 24, 2019 10:38 AM

Manipuler le chargeur de démarrage et le noyau


335
CHAPITRE 16

Finalement, voici ce que nous devons obtenir :

$ uname -r
4.4.174-1.el7.elrepo.x86_64
$ rpm -qa | grep kernel
kernel-lt-4.4.174-1.el7.elrepo.x86_64
kernel-lt-tools-4.4.174-1.el7.elrepo.x86_64
kernel-lt-tools-libs-4.4.174-1.el7.elrepo.x86_64

ASTUCE Le retour de la poule et de l’œuf


Dans de rares cas, il arrive que l’on soit confronté au cas de figure suivant :
1. L’installateur de CentOS n’affiche aucune interface réseau, étant donné que le kernel 3.10.0 ne gère
pas la carte.
2. Le kernel LTS de chez ELRepo gère la carte.
3. L’utilisation du dépôt ELRepo avec Yum nécessite l’accès à Internet.
Voici ce qu’il faut faire pour se sortir de ce cercle vicieux :
1. Télécharger manuellement le paquet kernel-lt sur un miroir de téléchargement ELRepo depuis une
autre machine.
2. Ranger le paquet kernel-lt sur une clé USB.
3. Monter la clé USB sur le serveur et copier le paquet kernel-lt.
4. Installer le paquet kernel-lt manuellement avec rpm -ivh.
5. Redémarrer sur le nouveau kernel.
6. Vérifier si l’on dispose d’une nouvelle interface réseau.
67738-Administration Linux par la pratique-INT.book Page 336 Friday, May 24, 2019 10:38 AM
67738-Administration Linux par la pratique-INT.book Page 337 Friday, May 24, 2019 10:38 AM

17
Installer et gérer un RAID logiciel

Si vous installez un système d’exploitation sur un poste de travail ou un portable, vous pouvez vous
contenter d’utiliser un simple disque dur, à condition d’effectuer vos sauvegardes régulièrement. Sur
un serveur, les choses se présentent autrement, car la fiabilité toute relative des disques durs nous
oblige à prévoir une série de redondances en cas de panne matérielle. Le présent chapitre vous
présente le RAID, une brique de redondance importante dans l’organisation de votre système Linux.
Indépendamment des sauvegardes, le RAID est un moyen de pallier le manque de fiabilité des
disques durs ; il nous évitera de perdre nos données en cas de défaillance d’un de ces derniers.

La fiabilité toute relative des disques durs


En 2007, Google a publié une étude détaillée sur la fiabilité des disques durs. Du fait de son
activité, l’entreprise en utilise une quantité considérable et dispose ainsi d’une base de don-
nées de plus de 100 000 disques durs, toutes sortes et marques confondues.

URL Google et la fiabilité des disques durs


L’étude détaillée de Google a été publiée en février 2007 sous le titre Failure Trends in a Large Disk Drive
Population.
B https://ai.google/research/pubs/pub32774

Ce qu’il faut retenir de ce rapport, c’est que les disques durs ne sont pas des supports de
stockage fiables. Lorsque vous installez un système Linux sur un disque dur, ne vous posez
67738-Administration Linux par la pratique-INT.book Page 338 Friday, May 24, 2019 10:38 AM

Administration Linux par la pratique


338

pas la question « Est-ce le disque va rendre l’âme un jour ? » mais plutôt celle-ci : « Quand
est-ce que le disque va me lâcher ? »
On peut certes croiser les doigts ou prier si l’on est croyant. Alternativement, on utilisera le
RAID pour rendre le système plus tolérant aux pannes de matériel prévisibles.

Qu’est-ce que le RAID ?


Le RAID est une technologie qui consiste à combiner logiquement plusieurs disques durs –
ou, plus exactement, les partitions de plusieurs disques durs. Le but de cette opération est
d’obtenir un système plus fiable et parfois aussi plus performant.

ACRONYME RAID
L’acronyme RAID (Redundant Array of Independent Disks) désigne le regroupement redondant de
disques indépendants. On trouvera parfois la variante historique Redundant Array of Inexpensive Disks
qui met l’accent sur le faible coût des disques.

• Le gain en termes de fiabilité est obtenu en écrivant les données de manière redondante
sur plusieurs disques.
• Pour gagner en performance, les données sont lues et écrites sur plusieurs disques durs en
parallèle.

RAID matériel ou RAID logiciel ?


Il existe grosso modo deux manières d’implémenter le RAID :
• au niveau du matériel, sous forme d’un contrôleur RAID dédié (hardware RAID) ;
• au niveau logiciel, lorsque la logique RAID est gérée par le processeur (software RAID).
Pour ce deuxième cas de figure, il faut encore établir une distinction cruciale :
• le RAID pseudo-matériel (également appelé BIOS RAID ou fake RAID) est défini depuis
le BIOS/EFI du système, sans toutefois utiliser un contrôleur dédié ;
• sous Linux, le RAID logiciel (Linux Software RAID) est réalisé grâce au pilote Multiple
Devices Driver Support (c’est-à-dire « prise en charge de plusieurs périphériques ») intégré
dans le kernel.
Le présent chapitre vous parle essentiellement du RAID logiciel sous Linux, une solution
flexible, mature et stable pour gérer les assemblages de disques.
67738-Administration Linux par la pratique-INT.book Page 339 Friday, May 24, 2019 10:38 AM

Installer et gérer un RAID logiciel


339
CHAPITRE 17

AVERTISSEMENT Désactivez le RAID matériel ou pseudo-matériel !


Lors de la procédure d’installation, le hardware RAID et le BIOS RAID présentent les groupes de disques
durs au système comme un seul disque composite. Pour la suite des opérations, il est impératif de désac-
tiver toute gestion matérielle ou pseudo-matérielle du RAID. Si vous disposez de plusieurs disques durs
sur un serveur de test, ils doivent apparaître individuellement dans le programme d’installation de
CentOS en tant que sda, sdb, sdc, sdd, etc.

Les niveaux de RAID


Le RAID est un assemblage de plusieurs disques durs et les différentes manières de procéder
sont définies en termes de « niveaux ». Ne vous laissez pas induire en erreur en pensant qu’un
niveau supérieur serait éventuellement « meilleur » que les autres. Chaque niveau dispose en
effet de ses avantages et de ses inconvénients, que nous allons voir au cas par cas.

Le niveau RAID 0
Le RAID 0 (striping ou « entrelacement de disques ») combine deux ou plusieurs disques durs
de tailles plus ou moins égales et répartit les opérations d’écriture et de lecture ; les données sont
découpées en blocs et réparties sur les disques, ce qui diminue le temps d’accès. On gagne donc
en vitesse, mais cette manière de procéder présente un inconvénient majeur. En effet, la défail-
lance d’un seul disque dur dans la grappe entraîne la perte de l’ensemble des données.

Le niveau RAID 1
Le RAID 1 (mirroring ou « disques en miroir ») écrit les mêmes données sur deux ou plusieurs
disques durs. En cas de défaillance de l’un, le ou les autre(s) conserve(nt) l’ensemble des don-
nées. La sécurité de ces dernières constitue le principal atout du RAID 1. L’inconvénient est la
perte en espace de stockage théoriquement disponible. Au niveau des performances, les opéra-
tions d’écriture sont un tout petit peu plus lentes que pour un seul disque dur.

Le niveau RAID 10
Le RAID 10 (parfois aussi appelé RAID 1+0) s’effectue avec un minimum de quatre disques
durs et combine le RAID 1 et le RAID 0. Les deux premiers disques sont assemblés en
miroir, de même que le troisième et le quatrième. Ces deux assemblages en miroir sont
ensuite agrégés par bande pour améliorer les performances en écriture et en lecture. Cette
configuration combine ainsi les avantages du RAID 1 (sécurité) et du RAID 0 (vitesse).
67738-Administration Linux par la pratique-INT.book Page 340 Friday, May 24, 2019 10:38 AM

Administration Linux par la pratique


340

Le niveau RAID 5
En principe, le RAID 5 fonctionne comme le RAID 0, au détail près que des informations
de parité sont ajoutées. Ce niveau requiert au minimum trois disques. En cas de défaillance
de l’un d’eux, les données peuvent être reconstruites. Le niveau RAID 5 apporte la redon-
dance ainsi qu’une amélioration des performances de lecture. L’espace de stockage est utilisé
de manière plus efficace, étant donné que l’on ne perd que 33 % avec trois disques et 25 %
avec quatre, contre 50 % avec le RAID 1. En contrepartie, cette configuration ne supporte la
défaillance que d’un seul disque dur et les opérations d’écriture sont un peu plus lentes
qu’avec le RAID 1.

Le niveau RAID 6
Le niveau RAID 6 fonctionne à la base comme le RAID 5, mais les informations de parité
sont écrites sur deux disques au lieu d’un seul. Une configuration RAID 6 supporte ainsi la
défaillance de deux disques, mais en nécessite au minimum quatre.

Installation de CentOS 7 en RAID 1


Maintenant que nous sommes armés jusqu’aux dents de théorie, le moment est venu de
passer à la pratique. Dans mon bureau, je dispose actuellement d’un Acer AC 100 Micro-
server qu’un client m’a commandé pour en faire un petit serveur de sauvegardes. Je me ser-
virai de cette machine pour une série de travaux pratiques sur les configurations RAID.
Figure 17–1
Le serveur Acer AC 100 Microserver
avec les quatre tiroirs pour
les disques durs.

VIRTUALISATION VirtualBox et le RAID


Si vous n’avez pas de serveur avec une grappe de disques durs sous la main, vous pouvez très bien utiliser
VirtualBox pour vous entraîner. Pour ma part, je m’en sers pour effectuer les captures d’écran de l’installateur.
67738-Administration Linux par la pratique-INT.book Page 341 Friday, May 24, 2019 10:38 AM

Installer et gérer un RAID logiciel


341
CHAPITRE 17

BUG CentOS 7.6 et VirtualBox


Le support d’installation de CentOS 7.6 présente une incompatibilité avec les versions de VirtualBox
antérieures à la 5.2.26. Si la vôtre est plus ancienne, je vous conseille d’utiliser la version CentOS 7.5
pour vos tests.

Figure 17–2
Dans VirtualBox, nous avons
créé un deuxième disque dur
virtuel Disque2.vdi.

Pour l’installation en RAID 1, nous procéderons comme pour une installation classique sur un seul
disque dur. La seule chose qui change, c’est le schéma de partitionnement, qui ressemble à ceci :
• un assemblage RAID 1 /dev/md/boot pour /boot de 500 Mo, formaté en ext2 ;
• un assemblage RAID 1 /dev/md/swap pour la partition d’échange, équivalant à la
mémoire vive disponible ;
• un assemblage RAID 1 /dev/md/root pour la partition principale, formaté en ext4.
Figure 17–3
Cochez les deux disques et cliquez
sur « Je vais configurer le
partitionnement ».
67738-Administration Linux par la pratique-INT.book Page 342 Friday, May 24, 2019 10:38 AM

Administration Linux par la pratique


342

Figure 17–4
Créez la partition /boot
et sélectionnez le type
de périphérique « RAID »
avec un niveau
« RAID1 (Redondance) ».

Figure 17–5
Procédez de même pour
la partition d’échange.
67738-Administration Linux par la pratique-INT.book Page 343 Friday, May 24, 2019 10:38 AM

Installer et gérer un RAID logiciel


343
CHAPITRE 17

Figure 17–6
Et de même pour la partition
principale.

Après le redémarrage initial du serveur, je jette un œil dans le fichier virtuel /proc/mdstat,
qui me renseigne en temps réel sur l’état des assemblages RAID :

$ cat /proc/mdstat
Personalities : [raid1]
md125 : active raid1 sdb3[0] sda3[1]
73345024 blocks super 1.2 [2/2] [UU]
bitmap: 1/1 pages [4KB], 65536KB chunk

md126 : active raid1 sdb1[0] sda1[1]


4193280 blocks super 1.2 [2/2] [UU]

md127 : active raid1 sdb2[0] sda2[1]


512000 blocks super 1.2 [2/2] [UU]
bitmap: 0/1 pages [0KB], 65536KB chunk

unused devices: <none>

Ce résultat mérite deux remarques :


• les assemblages RAID /dev/md/boot, /dev/md/root et /dev/md/swap sont des liens sym-
boliques qui pointent respectivement vers /dev/md125, /dev/md126 et /dev/md127 ;
• l’indicateur d’état [UU] pour tous les assemblages RAID signifie que la grappe est parfai-
tement synchronisée.
Sous le capot, l’installateur a partitionné mes deux disques de façon identique, avec une série
de partitions de type Linux raid autodetect (FD). Pour afficher les partitions de mon sys-
tème, j’utilise les commandes sudo fdisk -l /dev/sda et sudo fdisk -l /dev/sdb.
67738-Administration Linux par la pratique-INT.book Page 344 Friday, May 24, 2019 10:38 AM

Administration Linux par la pratique


344

La commande mdadm fournie par le paquet du même nom me permet d’effectuer toute une
série d’opérations sur la grappe RAID. Pour commencer, j’affiche individuellement l’état de
mes trois assemblages :

$ sudo mdadm --detail /dev/md/root


/dev/md/root:
Version : 1.2
Creation Time : Mon Feb 25 15:04:05 2019
Raid Level : raid1
Array Size : 73345024 (69.95 GiB 75.11 GB)
Used Dev Size : 73345024 (69.95 GiB 75.11 GB)
Raid Devices : 2
Total Devices : 2
Persistence : Superblock is persistent

Intent Bitmap : Internal

Update Time : Wed Feb 27 08:57:15 2019


State : clean
Active Devices : 2
Working Devices : 2
Failed Devices : 0
Spare Devices : 0

Consistency Policy : bitmap

Name : localhost:root
UUID : 9554cc7d:eb3f4e6f:24bcd8b9:7caa13fb
Events : 1559

Number Major Minor RaidDevice State


0 8 19 0 active sync /dev/sdb3
1 8 3 1 active sync /dev/sda3
$ sudo mdadm --detail /dev/md/boot
...
$ sudo mdadm --detail /dev/md/swap
...

Simuler une panne


Théoriquement, l’option --fail me sert à simuler une panne avec mdadm. En pratique, rien
ne m’empêche de procéder comme les enfants qui s’amusent à faire dérailler leur train élec-
trique ou qui démontent le radio-réveil des parents pour voir s’ils arrivent à le remonter.
Je décide donc de créer une vraie défaillance matérielle. Pour commencer, je vais éteindre
mon serveur, retirer un des deux disques durs et observer ce qui se passe.
Le démarrage dure bien plus longtemps que d’habitude. L’invite de connexion finit par s’affi-
cher et je peux me connecter.
67738-Administration Linux par la pratique-INT.book Page 345 Friday, May 24, 2019 10:38 AM

Installer et gérer un RAID logiciel


345
CHAPITRE 17

La grappe RAID est visiblement dégradée. Notez l’indicateur [U_] pour chacun des
assemblages :

$ cat /proc/mdstat
Personalities : [raid1]
md125 : active raid1 sda2[0]
512000 blocks super 1.2 [2/1] [U_]
bitmap: 1/1 pages [4KB], 65536KB chunk

md126 : active raid1 sda3[0]


73345024 blocks super 1.2 [2/1] [U_]
bitmap: 1/1 pages [4KB], 65536KB chunk

md127 : active (auto-read-only) raid1 sda1[0]


4193280 blocks super 1.2 [2/1] [U_]

unused devices: <none>

J’en conclus que, même si mon système est un peu dur de la feuille, je n’ai pas perdu mes données.
Je retente l’expérience et, cette fois-ci, je retire l’autre disque. Le démarrage est toujours aussi
lent mais, là aussi, l’invite de connexion finit par s’afficher.
La grappe RAID est toujours dégradée, mais pas de la même manière, comme le suggère
l’indicateur [_U] pour chacun des assemblages :

$ cat /proc/mdstat
Personalities : [raid1]
md125 : active raid1 sda2[1]
512000 blocks super 1.2 [2/1] [_U]
bitmap: 1/1 pages [4KB], 65536KB chunk

md126 : active raid1 sda3[1]


73345024 blocks super 1.2 [2/1] [_U]
bitmap: 1/1 pages [4KB], 65536KB chunk

md127 : active (auto-read-only) raid1 sda1[1]


4193280 blocks super 1.2 [2/1] [_U]

unused devices: <none>

J’éteins le serveur, j’insère le disque manquant, je redémarre et j’affiche l’état de la grappe RAID :

$ cat /proc/mdstat
Personalities : [raid1]
md125 : active raid1 sda3[1]
73345024 blocks super 1.2 [2/1] [_U]
bitmap: 1/1 pages [4KB], 65536KB chunk
67738-Administration Linux par la pratique-INT.book Page 346 Friday, May 24, 2019 10:38 AM

Administration Linux par la pratique


346

md126 : active raid1 sdb1[0] sda1[1]


4193280 blocks super 1.2 [2/2] [UU]

md127 : active raid1 sda2[1]


512000 blocks super 1.2 [2/1] [_U]
bitmap: 1/1 pages [4KB], 65536KB chunk

unused devices: <none>

Ici, je dois intervenir manuellement pour reconstruire certains assemblages de la grappe.


Concrètement, je dois ajouter la partition /dev/sdb3 à l’assemblage /dev/md125 et je dois
faire de même pour la partition /dev/sdb2 et l’assemblage /dev/md127. Essayons :

$ sudo mdadm --manage /dev/md125 --add /dev/sdb3


mdadm: re-added /dev/sdb3

Apparemment, les choses se sont plutôt bien passées :

$ cat /proc/mdstat
Personalities : [raid1]
md125 : active raid1 sdb3[0] sda3[1]
73345024 blocks super 1.2 [2/2] [UU]
bitmap: 1/1 pages [4KB], 65536KB chunk

md126 : active raid1 sdb1[0] sda1[1]


4193280 blocks super 1.2 [2/2] [UU]

md127 : active raid1 sda2[1]


512000 blocks super 1.2 [2/1] [_U]
bitmap: 1/1 pages [4KB], 65536KB chunk

unused devices: <none>

Fort de ce premier succès, je retente le coup pour l’assemblage /dev/md127 :

$ sudo mdadm --manage /dev/md127 --add /dev/sdb2


mdadm: re-added /dev/sdb2

Ma grappe de disques RAID 1 est désormais reconstruite et parfaitement synchronisée :

$ cat /proc/mdstat
Personalities : [raid1]
md125 : active raid1 sdb3[0] sda3[1]
73345024 blocks super 1.2 [2/2] [UU]
bitmap: 1/1 pages [4KB], 65536KB chunk

md126 : active raid1 sdb1[0] sda1[1]


4193280 blocks super 1.2 [2/2] [UU]
67738-Administration Linux par la pratique-INT.book Page 347 Friday, May 24, 2019 10:38 AM

Installer et gérer un RAID logiciel


347
CHAPITRE 17

md127 : active raid1 sdb2[0] sda2[1]


512000 blocks super 1.2 [2/2] [UU]
bitmap: 1/1 pages [4KB], 65536KB chunk

unused devices: <none>

Simuler une panne plus conséquente


Après cette première panne relativement bénigne en guise d’échauffement, essayons de pro-
voquer un dysfonctionnement plus conséquent. Pour ce faire, je démarre le support d’installa-
tion de CentOS en mode secours (Troubleshooting>Rescue a CentOS system>Skip to shell) et je
bascule vers un clavier AZERTY (loadkeys fr).
Je vais provoquer une corruption des données stockées sur mon deuxième disque dur en écri-
vant une suite d’octets aléatoires sur les secteurs situés au début du disque. Notez qu’en fai-
sant ceci, je détruis également la table de partitions du disque :

# dd if=/dev/urandom of=/dev/sdb bs=512 count=500000

Je quitte l’environnement de secours et je tente de redémarrer le serveur. Le démarrage se


passe toujours bien, même si le système est lent. Je retrouve toutes mes données et les assem-
blages RAID sont désynchronisés comme il faut s’y attendre :

$ cat /proc/mdstat
Personalities : [raid1]
md125 : active (auto-read-only) raid1 sda1[1]
4193280 blocks super 1.2 [2/1] [_U]

md126 : active raid1 sda3[1]


73345024 blocks super 1.2 [2/1] [_U]
bitmap: 1/1 pages [4KB], 65536KB chunk

md127 : active raid1 sda2[1]


512000 blocks super 1.2 [2/1] [_U]
bitmap: 1/1 pages [4KB], 65536KB chunk

unused devices: <none>

Le hic, c’est que je n’ai plus de partitions sur mon disque sdb :

$ sudo fdisk -l /dev/sdb

Disque /dev/sdb : 80.0 Go, 80026361856 octets, 156301488 secteurs


Unités = secteur de 1 × 512 = 512 octets
Taille de secteur (logique / physique) : 512 octets / 512 octets
taille d'E/S (minimale / optimale) : 512 octets / 512 octets
67738-Administration Linux par la pratique-INT.book Page 348 Friday, May 24, 2019 10:38 AM

Administration Linux par la pratique


348

Je pourrais très bien lancer fdisk et cloner le schéma de partitionnement de mon disque sda,
partition par partition. Au lieu de cela, je vais utiliser sfdisk, qui va s’en charger :

# sfdisk -d /dev/sda | sfdisk /dev/sdb

APPROCHE Le compte root et la restauration après un incident


En temps normal, c’est toujours une bonne idée de travailler en tant qu’utilisateur lambda, en invoquant
sudo pour les tâches administratives. Or, pour les scénarios catastrophes comme la reconstruction d’une
grappe RAID après la défaillance d’un disque, je ne m’embête pas et je préfère me connecter directement
en tant que root. Sinon, c’est un peu comme si vous demandiez un badge d’accès au pompier qui vient
éteindre l’incendie dans votre bureau.

Partant de là, je peux compléter ma grappe RAID comme je l’ai fait auparavant :

# mdadm --manage /dev/md125 --add /dev/sdb1


mdadm: added /dev/sdb1
# mdadm --manage /dev/md126 --add /dev/sdb3
mdadm: re-added /dev/sdb3
# mdadm --manage /dev/md127 --add /dev/sdb2
mdadm: re-added /dev/sdb2

Le système se charge alors de reconstruire les données sur le deuxième disque pour synchro-
niser la grappe :

# cat /proc/mdstat
Personalities : [raid1]
md125 : active raid1 sdb1[2] sda1[1]
4193280 blocks super 1.2 [2/1] [_U]
[========>............] recovery = 44.9%
(1886592/4193280) finish=0.6min speed=56598K/sec

md126 : active raid1 sdb3[0] sda3[1]


73345024 blocks super 1.2 [2/1] [_U]
resync=DELAYED
bitmap: 1/1 pages [4KB], 65536KB chunk

md127 : active raid1 sdb2[0] sda2[1]


512000 blocks super 1.2 [2/1] [_U]
resync=DELAYED
bitmap: 1/1 pages [4KB], 65536KB chunk

unused devices: <none>

ASTUCE Surveiller la synchronisation d’une grappe de disques


Utilisez la commande watch cat /proc/mdstat pour surveiller l’opération de synchronisation en
temps réel.
67738-Administration Linux par la pratique-INT.book Page 349 Friday, May 24, 2019 10:38 AM

Installer et gérer un RAID logiciel


349
CHAPITRE 17

Au bout de quelques secondes, mes assemblages RAID sont à nouveau reconstitués et parfai-
tement synchronisés.

Installation de CentOS 7 en RAID 6


Pour notre deuxième atelier pratique de ce chapitre, nous allons installer CentOS 7 en
RAID 6 dans une machine virtuelle équipée de quatre disques. Là aussi, nous procéderons
comme pour une installation classique et la seule différence se situera au niveau du schéma de
partitionnement. Nous conservons deux assemblages RAID 1 pour la partition /boot et la
partition d’échange. L’assemblage RAID 6 sera réservé pour la partition principale.

Figure 17–7
Pour une installation en RAID 6,
nous avons besoin de quatre
disques virtuels.

Au total, voici ce que nous devons avoir :


• un assemblage RAID 1 /dev/md/boot pour /boot de 500 Mo, formaté en ext2 ;
• un assemblage RAID 1 /dev/md/swap pour la partition d’échange, équivalant à la
mémoire vive disponible ;
• un assemblage RAID 6 /dev/md/root pour la partition principale, formaté en ext4.

ATTENTION Utilisez tout l’espace disponible pour l’assemblage RAID 6 !


Lors de la définition de l’assemblage RAID 6 pour la partition principale, le champ Capacité souhaitée
n’affiche pas d’emblée l’espace disponible sur le disque. Pour éviter de se retrouver avec un espace de
stockage réduit de manière conséquente, il est impératif de rectifier le tir ici.
L’astuce consiste à saisir n’importe quel nombre supérieur à l’espace de stockage disponible qui s’affiche
dans l’encadré rose en bas à gauche de la fenêtre. Une fois que l’on clique sur Mise à jour des para-
mètres, l’installateur se charge de recalculer la capacité maximale disponible.
Dans notre exemple, l’installateur m’a d’abord affiché 35,51 GiO dans le champ Capacité souhaitée. J’ai
remplacé cette valeur par 107 GiO en me basant sur les 106,52 GiO qui s’affichent en bas à gauche dans
l’encadré Espace Disponible, j’ai cliqué sur Mise à jour des paramètres et l’installateur a recalculé la
valeur 70,95 Gio pour la Capacité souhaitée.
67738-Administration Linux par la pratique-INT.book Page 350 Friday, May 24, 2019 10:38 AM

Administration Linux par la pratique


350

Figure 17–8
Cochez les quatre disques
et cliquez sur « Je vais configurer
le partitionnement ».

Figure 17–9
Créez la partition /boot
et sélectionnez le type
de périphérique « RAID »
avec un niveau
« RAID1 (Redondance) ».
67738-Administration Linux par la pratique-INT.book Page 351 Friday, May 24, 2019 10:38 AM

Installer et gérer un RAID logiciel


351
CHAPITRE 17

Figure 17–10
La partition d’échange sera
également créée avec un niveau
RAID 1.

Figure 17–11
La partition principale sera créée
sur un assemblage RAID 6. Notez
que l’installateur n’affiche pas la
capacité maximale disponible dans
le champ « Capacité souhaitée ».
Il faudra donc rectifier le tir.
67738-Administration Linux par la pratique-INT.book Page 352 Friday, May 24, 2019 10:38 AM

Administration Linux par la pratique


352

Figure 17–12
Dans le champ « Capacité
souhaitée », saisissez n’importe
quelle valeur supérieure à l’espace
disponible et cliquez sur
« Mise à jour des paramètres ».
L’installateur recalculera alors
la capacité souhaitée de
l’assemblage.

Voyons comment se présentent les choses après le redémarrage initial. Les liens symboliques
/dev/md/boot, /dev/md/root et /dev/md/swap pointent respectivement vers les assemblages
/dev/md125, /dev/md126 et /dev/md127 :

$ ls -l /dev/md
total 0
lrwxrwxrwx. 1 root root 8 28 févr. 15:14 boot -> ../md125
lrwxrwxrwx. 1 root root 8 28 févr. 15:14 root -> ../md126
lrwxrwxrwx. 1 root root 8 28 févr. 15:14 swap -> ../md127

La grappe RAID est en état de synchronisation d’après les indicateurs [UUUU] :

$ cat /proc/mdstat
Personalities : [raid1] [raid6] [raid5] [raid4]
md125 : active raid1 sdb2[1] sda2[0] sdc2[2] sdd2[3]
512000 blocks super 1.2 [4/4] [UUUU]
bitmap: 0/1 pages [0KB], 65536KB chunk

md126 : active raid6 sdd3[3] sdc3[2] sdb3[1] sda3[0]


74393600 blocks super 1.2 level 6, ... [4/4] [UUUU]
bitmap: 1/1 pages [4KB], 65536KB chunk

md127 : active raid1 sdc1[2] sdb1[1] sdd1[3] sda1[0]


4193280 blocks super 1.2 [4/4] [UUUU]

unused devices: <none>


67738-Administration Linux par la pratique-INT.book Page 353 Friday, May 24, 2019 10:38 AM

Installer et gérer un RAID logiciel


353
CHAPITRE 17

MÉNAGE Supprimer une grappe RAID


Si vous avez effectué une installation en RAID sur une machine, c’est toujours une bonne idée de faire un
brin de ménage au cas où vous souhaitez installer autre chose par la suite. Certains installateurs Linux
risquent d’être déboussolés par la présence de vestiges de grappes RAID et les résultats sont parfois
assez surprenants.
La solution la plus efficace consiste à démarrer le disque d’installation de CentOS en mode secours. Une
fois que le shell s’affiche, invoquez lsblk pour afficher les partitions des périphériques de type bloc,
puis supprimez les informations sur les assemblages RAID partition par partition :
# mdadm --stop --scan
# mdadm --zero-superblock /dev/sda1
# mdadm --zero-superblock /dev/sda2
# mdadm --zero-superblock /dev/sda3
# mdadm --zero-superblock /dev/sdb1
# mdadm --zero-superblock /dev/sdb2
# mdadm --zero-superblock /dev/sdb3
...
67738-Administration Linux par la pratique-INT.book Page 354 Friday, May 24, 2019 10:38 AM
67738-Administration Linux par la pratique-INT.book Page 355 Friday, May 24, 2019 10:38 AM

18
Gérer les volumes
logiques avec LVM

Un système de fichiers est installé normalement dans une partition d’un disque dur ou sur un
assemblage RAID. Il ne peut donc pas dépasser la taille de ce disque et il est difficile de l’étendre.
LVM (Logical Volume Manager) ajoute une couche d’abstraction entre le système de fichiers et les
partitions du ou des disque(s) et permet une approche beaucoup plus souple. Avec LVM, un système
de fichiers n’est pas créé dans une partition, mais dans un volume logique. Ce dernier peut s’étendre
sur plusieurs disques et être redimensionné par la suite.

Concepts de base
LVM ajoute trois niveaux entre le disque dur et le système de fichiers :
• les volumes physiques PV (Physical Volumes) ;
• les groupes de volumes VG (Volume Groups) ;
• les volumes logiques LV (Logical Volumes).
Voyons un peu plus en détail à quoi correspond chacun de ces niveaux.
• Volume physique (PV) – En règle générale, un PV est une partition du disque dur géré
par LVM. Il peut s’agir d’un disque dur entier et même d’un assemblage RAID. La parti-
tion, le disque dur ou l’assemblage RAID doivent être définis en tant que PV pour que les
commandes LVM fonctionnent.
67738-Administration Linux par la pratique-INT.book Page 356 Friday, May 24, 2019 10:38 AM

Administration Linux par la pratique


356

• Groupe de volumes (VG) – Des PV peuvent être assemblés en un groupe, ce qui permet
par exemple de réunir les partitions de plusieurs disques durs. Un VG constitue donc un
ensemble de PV, d’un point de vue physique.
• Volume logique (LV) – Un LV est une partie d’un VG. Pour l’utilisateur, le LV fonc-
tionne comme une partition virtuelle. C’est là qu’il installera le système de fichiers. Ce
dernier ne sera plus créé dans une partition ou un assemblage RAID comme /dev/sda2,
/dev/sda3 ou /dev/md/root, mais dans un LV comme /dev/mapper/vg0-root ou
/dev/mapper/vg0-swap.

VOCABULAIRE La nomenclature de LVM


Pour un débutant en matière de LVM, les termes comme « volume physique », « groupe de volumes » ou
« volume logique » sont assez déconcertants. En ce qui me concerne, j’aime bien utiliser les raccourcis
dérivés des dénominations anglaises, c’est-à-dire PV (Physical Volume), VG (Volume Group) et LV (Logi-
cal Volume). LVM offre toute une panoplie de commandes qui commencent par ces abréviations selon le
niveau auquel elles opèrent : pvcreate, pvdisplay, vgcreate, vgdisplay, lvcreate,
lvdisplay, etc. Cette manière de nommer les choses me paraît donc la plus simple.

LVM dans la configuration par défaut de CentOS


Pour ne pas vous embrouiller dans la théorie, je partirai d’un cas pratique relativement simple
à comprendre. Lorsque j’installe un serveur sous CentOS et que j’opte pour la configuration
par défaut, j’obtiens un schéma de partitionnement basé sur LVM. Dans l’exemple qui suit,
j’ai installé CentOS dans une machine de test dotée d’un disque de 60 Go, en gardant les
options par défaut.
Observons d’abord le partitionnement du disque dur :

$ sudo fdisk -l /dev/sda

Disque /dev/sda : 60.0 Go, 60022480896 octets, 117231408 secteurs


Unités = secteur de 1 × 512 = 512 octets
Taille de secteur (logique / physique) : 512 octets / 512 octets
taille d'E/S (minimale / optimale) : 512 octets / 512 octets
Type d'étiquette de disque : dos
Identifiant de disque : 0x0002e7d1

Périphérique Amorçage Début Fin Blocs Id. Système


/dev/sda1 * 2048 2099199 1048576 83 Linux
/dev/sda2 2099200 117229567 57565184 8e Linux LVM

Voyons à quoi correspond la partition /dev/sda1 :

$ mount | grep sda1


/dev/sda1 on /boot type xfs (rw,relatime,...)
67738-Administration Linux par la pratique-INT.book Page 357 Friday, May 24, 2019 10:38 AM

Gérer les volumes logiques avec LVM


357
CHAPITRE 18

Il s’agit bien de ma partition /boot, une partition classique de type Linux (83). Elle n’est
manifestement pas gérée par LVM. Le gros du système se trouve apparemment sur la parti-
tion /dev/sda2, de type Linux LVM (8E).
La commande pvs affiche les informations sur les volumes physiques (PV) de mon système :

$ sudo pvs
PV VG Fmt Attr PSize PFree
/dev/sda2 centos_amandine lvm2 a-- 54,89g 4,00m

Ici, je dispose d’un PV défini sur /dev/sda2, d’une taille de près de 55 Go et qui contient
un (VG) centos_amandine. La commande vgs affiche les détails de ce groupe de volumes :

$ sudo vgs
VG #PV #LV #SN Attr VSize VFree
centos_amandine 1 3 0 wz--n- 54,89g 4,00m

De manière similaire, j’utiliserai la commande lvs pour en savoir plus sur les volumes
logiques (LV) définis sur la machine :

$ sudo lvs
LV VG Attr LSize Pool ...
home centos_amandine -wi-ao---- 17,35g
root centos_amandine -wi-ao---- <35,54g
swap centos_amandine -wi-ao---- 2,00g

Dans le cas présent, j’ai trois LV home, root et swap définis dans le groupe de volumes
centos_amandine. Voici comment ils sont référencés dans /etc/fstab :

/dev/mapper/centos_amandine-root / xfs defaults 0 0


/dev/mapper/centos_amandine-home /home xfs defaults 0 0
/dev/mapper/centos_amandine-swap swap swap defaults 0 0

Une installation personnalisée basée sur LVM


Dans l’exemple qui suit, je vais installer CentOS 7 sur la même machine, en optant pour un
partitionnement personnalisé basé sur LVM.
67738-Administration Linux par la pratique-INT.book Page 358 Friday, May 24, 2019 10:38 AM

Administration Linux par la pratique


358

Figure 18–1
Dans le menu déroulant, vérifiez
si le schéma de partitionnement
LVM est bien sélectionné.

Figure 18–2
La partition /boot ne sera pas
gérée par LVM.
67738-Administration Linux par la pratique-INT.book Page 359 Friday, May 24, 2019 10:38 AM

Gérer les volumes logiques avec LVM


359
CHAPITRE 18

Figure 18–3
La partition d’échange sera bien
gérée par LVM. L’installateur
propose un VG par défaut, nommé
en fonction du nom d’hôte.

Figure 18–4
On va remplacer le VG proposé par
défaut par un VG personnalisé vg0.
67738-Administration Linux par la pratique-INT.book Page 360 Friday, May 24, 2019 10:38 AM

Administration Linux par la pratique


360

Figure 18–5
La partition principale occupera
l’espace disque restant et fera
également partie du VG
personnalisé vg0.

Voyons ce que donne notre installation personnalisée après le redémarrage initial. À première
vue, la seule chose qui ait changé pour le disque dur, c’est la taille de la partition /boot sur
/dev/sda1 :

$ sudo fdisk -l /dev/sda

Disque /dev/sda : 60.0 Go, 60022480896 octets, 117231408 secteurs


Unités = secteur de 1 × 512 = 512 octets
Taille de secteur (logique / physique) : 512 octets / 512 octets
taille d'E/S (minimale / optimale) : 512 octets / 512 octets
Type d'étiquette de disque : dos
Identifiant de disque : 0x0009c06f

Périphérique Amorçage Début Fin Blocs Id. Système


/dev/sda1 * 2048 1026047 512000 83 Linux
/dev/sda2 1026048 117229567 58101760 8e Linux LVM

Nous disposons d’un PV sur /dev/sda2, avec un VG vg0 :

$ sudo pvs
PV VG Fmt Attr PSize PFree
/dev/sda2 vg0 lvm2 a-- <55,41g 0
67738-Administration Linux par la pratique-INT.book Page 361 Friday, May 24, 2019 10:38 AM

Gérer les volumes logiques avec LVM


361
CHAPITRE 18

Ce VG occupe toute la taille de la partition :

$ sudo vgs
VG #PV #LV #SN Attr VSize VFree
vg0 1 2 0 wz--n- <55,41g 0

Il contient deux LV root et swap :

$ sudo lvs
LV VG Attr LSize Pool ...
root vg0 -wi-ao---- <51,41g
swap vg0 -wi-ao---- 4,00g

Dans /etc/fstab, ces deux LV sont référencés comme ceci :

/dev/mapper/vg0-root / ext4 defaults 1 1


/dev/mapper/vg0-swap swap swap defaults 0 0

Redimensionnement à chaud de la partition principale


Dans notre prochain exemple, j’ai reproduit la configuration précédente dans une machine
virtuelle. Mon système est installé sur un disque de 60 Go et, si l’on soustrait l’espace néces-
saire pour la partition d’échange et la partition /boot ainsi que la place occupée par le système
lui-même, il reste un peu plus de 50 Go d’espace disponible. C’est le moment précis où je
m’aperçois que cet espace est insuffisant et que je risque de manquer de place. Que faire ?
C’est là que LVM entre en jeu. En effet, il suffit d’ajouter un deuxième disque à notre
machine et LVM l’intègre de manière entièrement transparente à notre système. Notre parti-
tion principale est ainsi redimensionnable à chaud, ce qui nous permet de doubler l’espace
disque disponible.
Voici comment se présentent les choses au départ :

$ df -h
Sys. de fichiers Taille Utilisé Dispo Uti% Monté sur
/dev/mapper/vg0-root 55G 1000M 51G 2% /
...

J’arrête le serveur, j’ajoute un deuxième disque virtuel d’une taille de 60 Go et je redémarre. Je


repère d’abord mon nouveau disque sdb :

$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 60G 0 disk
├─sda1 8:1 0 500M 0 part /boot
67738-Administration Linux par la pratique-INT.book Page 362 Friday, May 24, 2019 10:38 AM

Administration Linux par la pratique


362

└─sda2 8:2 0 59,5G 0 part


├─vg0-root 253:0 0 55,5G 0 lvm /
└─vg0-swap 253:1 0 4G 0 lvm [SWAP]
sdb 8:16 0 60G 0 disk
sr0 11:0 1 1024M 0 rom

Le disque sdb n’est pas encore partitionné. Je pourrais utiliser fdisk pour créer une partition
de type Linux LVM (8E). Au lieu de cela, j’opte pour cfdisk, qui est un peu plus confortable :

$ sudo cfdisk /dev/sdb

Figure 18–6
Je crée une nouvelle partition
primaire en choisissant la taille
maximale disponible.

Figure 18–7
Je redéfinis le type de ma nouvelle
partition.
67738-Administration Linux par la pratique-INT.book Page 363 Friday, May 24, 2019 10:38 AM

Gérer les volumes logiques avec LVM


363
CHAPITRE 18

Figure 18–8
Je sélectionne le type 8E pour
Linux LVM.

Figure 18–9
Il ne me reste plus qu’à écrire les
modifications sur le disque.

Au total, mon nouveau disque doit ressembler à quelque chose comme ceci :

$ sudo fdisk -l /dev/sdb

Disque /dev/sdb : 64.4 Go, 64424509440 octets, 125829120 secteurs


Unités = secteur de 1 × 512 = 512 octets
Taille de secteur (logique / physique) : 512 octets / 512 octets
taille d'E/S (minimale / optimale) : 512 octets / 512 octets
Type d'étiquette de disque : dos
Identifiant de disque : 0x00000000

Périphérique Amorçage Début Fin Blocs Id. Système


/dev/sdb1 63 125829119 62914528+ 8e Linux LVM
67738-Administration Linux par la pratique-INT.book Page 364 Friday, May 24, 2019 10:38 AM

Administration Linux par la pratique


364

Je crée un nouveau PV dans ma partition /dev/sdb1 :

$ sudo pvcreate /dev/sdb1


Physical volume "/dev/sdb1" successfully created.

J’affiche l’état de mes PV :

$ sudo pvs
PV VG Fmt Attr PSize PFree
/dev/sda2 vg0 lvm2 a-- <59,51g 0
/dev/sdb1 lvm2 --- <60,00g <60,00g

J’étends mon VG vg0 pour qu’il englobe également le PV /dev/sdb1 :

$ sudo vgextend vg0 /dev/sdb1


Volume group "vg0" successfully extended

Mon VG vg0 est désormais bien réparti sur deux PV :

$ sudo pvs
PV VG Fmt Attr PSize PFree
/dev/sda2 vg0 lvm2 a-- <59,51g 0
/dev/sdb1 vg0 lvm2 a-- <60,00g <60,00g

Mon LV root n’occupe actuellement que la moitié de l’espace disque :

$ sudo vgs
VG #PV #LV #SN Attr VSize VFree
vg0 2 2 0 wz--n- 119,50g <60,00g
$ sudo lvs
LV VG Attr LSize Pool ...
root vg0 -wi-ao---- <55,51g
swap vg0 -wi-ao---- 4,00g

Je peux étendre sa taille de manière à ce qu’il occupe la totalité de l’espace disponible :

$ sudo lvextend -l +100%FREE /dev/mapper/vg0-root


Size of logical volume vg0/root changed
from <55,51 GiB (14210 extents) to 115,50 GiB (29569 extents).
Logical volume vg0/root successfully resized.

Voyons le résultat :

$ sudo lvs
LV VG Attr LSize Pool ...
root vg0 -wi-ao---- 115,50g
swap vg0 -wi-ao---- 4,00g
67738-Administration Linux par la pratique-INT.book Page 365 Friday, May 24, 2019 10:38 AM

Gérer les volumes logiques avec LVM


365
CHAPITRE 18

Ma partition principale utilise un système de fichiers ext4. Je peux redimensionner ce sys-


tème de fichiers en utilisant la commande suivante :

$ sudo resize2fs /dev/mapper/vg0-root


resize2fs 1.42.9 (28-Dec-2013)
Le système de fichiers de /dev/mapper/vg0-root est monté sur / ; le changement de
taille doit être effectué en ligne
old_desc_blocks = 7, new_desc_blocks = 15
Le système de fichiers /dev/mapper/vg0-root a maintenant une taille de 30278656
blocs.

L’opération a bien fonctionné et j’ai doublé l’espace disque disponible pour mon système :

$ df -h
Sys. de fichiers Taille Utilisé Dispo Uti% Monté sur
/dev/mapper/vg0-root 114G 1007M 108G 1% /
...

POUR ALLER PLUS LOIN LVM et RAID


Maintenant que vous êtes familiarisé avec les concepts de base, essayez d’installer CentOS sur une
machine (virtuelle) munie de deux disques, en combinant le RAID 1 et le partitionnement basé sur LVM.
Faites appel à votre bon sens.
67738-Administration Linux par la pratique-INT.book Page 366 Friday, May 24, 2019 10:38 AM
67738-Administration Linux par la pratique-INT.book Page 367 Friday, May 24, 2019 10:38 AM

19
Gérer les logs du système

Un système Linux en état de marche inscrit à peu près tout ce qu’il fait dans l’équivalent numérique
d’un journal de bord. Cet enregistrement des événements est appelé la « journalisation », mais le
terme officiel n’est utilisé que par une minorité d’administrateurs. Étant donné que les opérations du
système et des services sont enregistrées dans une multitude de fichiers appelés log files en anglais,
c’est l’expression populaire « les logs » qui a pris le dessus.

Un peu de pratique avant la théorie


De temps en temps, ce n’est pas une mauvaise idée de mettre la charrue de la pratique avant
les bœufs de la théorie. Démarrez votre serveur Linux, ouvrez une session – locale ou à
distance – et invoquez la commande suivante :

$ sudo journalctl -f

Votre console vous affiche toute une série de messages. Lisez-les en diagonale. Gardez cette
fenêtre ouverte, puis effectuez une série d’opérations sur le serveur. Par exemple :
• connectez-vous à distance depuis une autre machine ;
• invoquez une commande avec sudo (ex. : sudo yum update) ;
• branchez un disque dur externe ou une clé USB au serveur.
Chacune de ces opérations s’inscrit à la volée dans la fenêtre qui affiche les messages du sys-
tème. Voici ce que j’obtiens lorsque je me connecte à distance au serveur :
67738-Administration Linux par la pratique-INT.book Page 368 Friday, May 24, 2019 10:38 AM

Administration Linux par la pratique


368

mars 08 09:39:18 amandine sshd[4454]: Accepted password for kikinovak from


192.168.2.2 port 46094 ssh2

La commande sudo yum update est enregistrée comme ceci :

mars 08 09:35:38 amandine sudo[4441]: kikinovak : TTY=pts/1 ; PWD=/home/kikinovak ;


USER=root ; COMMAND=/bin/yum update

Et voici ce qui s’affiche lorsque je branche une clé USB sur la machine :

mars 08 09:28:34 amandine kernel: sd 5:0:0:0: [sdb] Attached SCSI removable disk

Chacune de ces lignes contient une série d’informations séparées par des espaces :
• l’horodatage ;
• le nom d’hôte de la machine ;
• le nom du processus et le PID correspondant, hormis les messages du kernel ;
• le message à proprement parler.

Les logs au quotidien


Maintenant que vous savez que votre système garde une trace de ce qu’il fait sous le capot,
vous vous demanderez probablement ce que cela signifie concrètement pour vous, dans votre
quotidien d’administrateur système.
Lorsque nous configurons un nouveau service comme un serveur (web, de messagerie ou de
fichiers), les logs nous servent avant tout à déboguer le service en question en cas de panne.
Le site web ne s’affiche pas comme prévu ? Les courriels se perdent dans le nirvana
numérique ? Les partages de fichiers n’apparaissent pas dans le voisinage réseau ? Le premier
réflexe de l’administrateur, ce sera le coup d’œil dans les logs pour tenter de retrouver la cause
du dysfonctionnement.
Une fois que le service est correctement configuré, les logs nous renseignent sur d’éventuels
problèmes de sécurité. Imaginons un scénario catastrophe : votre serveur de messagerie s’est
fait pirater et les intrus l’utilisent pour envoyer quelques millions de courriels frauduleux à la
planète entière1. Tout ce que vous savez, c’est qu’un beau matin, votre serveur est un peu dur
d’oreille et apparemment tous les domaines de votre messagerie sont blacklistés. Là encore, ce
sont les logs du système qui vous permettront de constater avec précision l’ampleur des dégâts
et de remonter à la source de l’attaque. Oui, c’est un travail de détective qui nécessite un cer-
tain savoir-faire ; mais la base de ces compétences, c’est de savoir éplucher les logs.

1. Vécu.
67738-Administration Linux par la pratique-INT.book Page 369 Friday, May 24, 2019 10:38 AM

Gérer les logs du système


369
CHAPITRE 19

Aperçu sur l’évolution des logs sous Linux


Au bout de quelques décennies, avec l’héritage d’Unix et le foisonnement des distributions
avec leurs idiosyncrasies respectives, le système des logs est actuellement un joyeux bazar qui
reflète l’inconsistance congénitale de Linux, à commencer par les noms des fichiers. Pour
vous faire une première idée, jetez un œil dans le répertoire /var/log d’une installation
fraîche de CentOS :

$ ls -F /var/log
anaconda/ cron maillog tallylog
audit/ dmesg messages tuned/
boot.log firewalld rhsm/ wtmp
btmp grubby_prune_debug secure
chrony/ lastlog spooler

Les noms de fichiers comme boot.log, lastlog ou maillog témoignent de l’absence de


conventions de nommage en matière de journalisation. Non content de cela, le même réper-
toire sur un serveur Debian ou FreeBSD vous affichera des noms de fichiers bien différents.
Qu’à cela ne tienne, essayons d’y voir un peu plus clair.
Le protocole syslog a constitué le premier effort de normalisation des logs sous Unix et
Linux. Il s’agit là d’un service de journalisation standard, qui évite au kernel et à toute une
série d’outils administratifs de réinventer la roue, en leur permettant d’utiliser une série de
fonctions centralisées. Il existe plusieurs implémentations de syslog sous Linux. La plus
populaire est actuellement rsyslog ; c’est elle qui est utilisée sous CentOS 7.
Or, syslog n’est pas utilisé par tous les services réseau. Le serveur web Apache, le serveur de
fichiers Samba ou le serveur d’impression CUPS constituent des exceptions notables.
L’avènement de systemd marque une nouvelle tentative à mettre un peu d’ordre dans les logs
de Linux, notamment avec le journal de systemd et de nombreuses fonctionnalités fort pra-
tiques pour afficher et analyser les logs.
CentOS 7 est emblématique de la transition qui s’opère actuellement en matière de logs,
puisque la nouvelle journalisation gérée par systemd fonctionne en tandem avec rsyslog. Un
peu de pratique nous aidera à y voir plus clair.

Gérer le journal de systemd


Depuis le passage à systemd, la commande journalctl permet d’afficher les logs du système :

$ journalctl

Invoquée sans autres options, la commande affiche les messages du système dans le visualiseur
less. On pourra donc utiliser les touches Espace et Entrée ou les touches fléchées pour faire
défiler l’affichage. Le cas échéant, on désactivera le visualiseur grâce à l’option --no-pager :
67738-Administration Linux par la pratique-INT.book Page 370 Friday, May 24, 2019 10:38 AM

Administration Linux par la pratique


370

$ journalctl --no-pager

L’option -u limite l’affichage à un service précis fourni en argument, par exemple le


serveur SSH :

$ journalctl -u sshd

Pour afficher les messages système du planificateur de tâches Cron, on saisira la commande
suivante :

$ journalctl -u crond

Rendre le journal persistant


Dans la configuration par défaut, le journal de systemd n’est pas persistant, c’est-à-dire que
les messages sont supprimés à chaque redémarrage, ce qui est dommage. Ce comportement
est assez simple à corriger.
En théorie, nous pourrions éditer le fichier /etc/systemd/journald.conf et modifier la
directive correspondante. Au lieu de cela, nous allons créer un répertoire /etc/systemd
/journald.conf.d pour y ranger notre propre configuration personnalisée dans un fichier
custom.conf. Profitons-en pour ajouter des directives qui limitent la taille des logs :

# /etc/systemd/journald.conf.d/custom.conf
[Journal]
Storage=persistent
SystemMaxUse=500M
SystemMaxFileSize=100M

La nouvelle configuration sera prise en compte au prochain redémarrage du service systemd-


journald :

$ sudo systemctl restart systemd-journald

On notera la présence d’un nouveau répertoire /var/log/journal qui contient les journaux
de systemd :

$ tree /var/log/journal/
/var/log/journal/
└── 386c8674aaff4d5292b745b1c620eac2
├── system.journal
└── user-1000.journal

1 directory, 2 files
67738-Administration Linux par la pratique-INT.book Page 371 Friday, May 24, 2019 10:38 AM

Gérer les logs du système


371
CHAPITRE 19

FORMAT Passage aux logs binaires


Parmi les hérésies de systemd qui ont fait dresser tous les poils des barbus à sandales sous Unix, on
trouve l’utilisation de logs binaires. Fini le bon vieux log au format texte simple que l’on pouvait exploiter
directement à l’aide de grep, awk ou sed. Dorénavant, le format binaire nécessite de passer par
journalctl.
Laissons de côté tout purisme déplacé et notons les avantages de ce format. Tout d’abord, les logs sont
indexés, ce qui accélère la navigation dans une quantité importante de logs. Par ailleurs, journalctl
permet de signer les logs à l’aide d’une paire de clés cryptographiques, dans le but d’empêcher toute
manipulation malveillante de la part d’un intrus.

Définir les permissions nécessaires pour lire les logs


L’option --disk-usage nous informe de l’espace occupé par les logs. Or, elle nous confronte à
un problème de privilèges insuffisants :

$ journalctl --disk-usage
Hint: You are currently not seeing messages from other users and the system. Users in
the 'systemd-journal' group can see all messages. Pass -q to turn off this notice.
No journal files were opened due to insufficient permissions.

Pour ne pas avoir à travailler en tant que root ou invoquer sudo en permanence, nous allons
suivre le conseil du système et ajouter notre utilisateur au groupe système systemd-journal :

$ sudo usermod -a -G systemd-journal kikinovak

N’oubliez pas de quitter la session et de vous reconnecter pour que les changements prennent
effet.
À partir de là, nous pouvons utiliser pleinement toutes les fonctionnalités de la commande :

$ journalctl --disk-usage
Archived and active journals take up 8.0M on disk.

Quelques options pratiques au quotidien


L’activation des logs persistants nous permet d’afficher les démarrages successifs de la
machine :

$ journalctl --list-boots
-3 d6e2c0149df8498899143de472d022b5 ven. 2019-03-08 18:07:12 ...
-2 75395e02180c4485809f53cf486139bd dim. 2019-03-10 08:25:01 ...
-1 1cb0fbf1ee914c72a28dae3fd9ccb884 dim. 2019-03-10 08:30:48 ...
0 7908c7ea0d294ba09ec13319c47cfeb4 dim. 2019-03-10 09:05:07 ...
67738-Administration Linux par la pratique-INT.book Page 372 Friday, May 24, 2019 10:38 AM

Administration Linux par la pratique


372

L’identifiant 0 désigne toujours le dernier démarrage en date. Les deux indications d’horoda-
tage sur chaque ligne correspondent respectivement au premier et au dernier message émis
par la session en question.
L’option -b limite l’affichage à une session. Pour afficher les messages du serveur SSH uni-
quement pour la session actuelle, invoquez la commande suivante :

$ journalctl -u sshd -b 0

Et avant le dernier redémarrage :

$ journalctl -u sshd -b -1

L’option -n limite l’affichage à un certain nombre de lignes :

$ journalctl -u sshd -n 30

Les options --since et --until définissent un certain laps de temps :

$ journalctl -u sshd --since yesterday --until now

Voici la commande pour afficher les messages du serveur SSH uniquement pour les dix der-
nières minutes :

$ journalctl -u sshd --since "10 minutes ago" --until now

L’option -p restreint l’affichage aux messages correspondant à un certain niveau de sévérité.


Pour afficher uniquement les erreurs avant le dernier redémarrage :

$ journalctl -p err -b -1
...
mars 10 09:04:41 amandine kernel: watchdog: watchdog0: watchdog did not stop!

L’option -k limite l’affichage aux messages du kernel :

$ journalctl -k

Une fois que vous commencez à vous habituer, n’hésitez pas à lire la page de manuel
journalctl(1) pour en savoir plus sur les nombreuses possibilités offertes par cette com-
mande.
67738-Administration Linux par la pratique-INT.book Page 373 Friday, May 24, 2019 10:38 AM

Gérer les logs du système


373
CHAPITRE 19

La configuration des logs avec rsyslog


Comme nous l’avons dit un peu plus haut dans ce chapitre, le journal de systemd fonctionne
en tandem avec rsyslog. Les logs classiques générés par rsyslog sont des fichiers au format
texte simple :

$ sudo file /var/log/messages


/var/log/messages: UTF-8 Unicode text
$ sudo file /var/log/secure
/var/log/secure: ASCII text

Nous pouvons donc utiliser la panoplie d’outils classiques comme head, cat, tail ou less
pour les afficher. Pour vous faire une première idée, invoquez la commande suivante :

$ sudo tail -f /var/log/messages

Puis, dans une deuxième console :

$ sudo tail -f /var/log/secure

Répétez les opérations effectuées en début de chapitre : connectez-vous à distance depuis une
autre machine, invoquez une commande avec sudo et branchez un disque externe. Observez
l’inscription de chaque événement dans les logs.
Maintenant, jetez un œil dans le fichier /etc/rsyslog.conf. Voici un extrait quelque peu
simplifié :

#### RULES ####


*.info;mail.none;authpriv.none;cron.none /var/log/messages
authpriv.* /var/log/secure
mail.* -/var/log/maillog
cron.* /var/log/cron
*.emerg :omusrmsg:*
uucp,news.crit /var/log/spooler
local7.* /var/log/boot.log

La configuration de rsyslog contient une série de règles constituées de deux parties :


• le filtre (colonne de gauche) ;
• l’action (colonne de droite).
La manière la plus simple d’organiser les messages consiste à utiliser les filtres basés sur un
modèle service.priorité.
Dans l’extrait précédent, on retrouve des services comme authpriv, cron ou mail. Ici par
exemple, authpriv concerne tout ce qui touche à l’authentification des utilisateurs.
67738-Administration Linux par la pratique-INT.book Page 374 Friday, May 24, 2019 10:38 AM

Administration Linux par la pratique


374

Le niveau de priorité d’un message est représenté par l’un des mots-clés suivants, par ordre
ascendant : debug, info, notice, warning, err, crit, alert et emerg. Les niveaux comme
debug ou info sont assez explicites, alors que certaines distinctions comme crit ou alert
semblent purement académiques. Le niveau emerg signifie quelque chose comme « Panique à
bord ! » et s’applique à un système qui risque de devenir inutilisable.
Quant à l’action, il s’agit en règle générale du nom d’un fichier log. Sans autre indication, les
fichiers sont synchronisés après chaque événement. Si l’on ajoute le signe - avant le nom du
fichier (comme pour /var/log/maillog dans l’exemple), rsyslog renonce à la synchronisa-
tion, ce qui améliore les performances du système. En contrepartie, les informations non syn-
chronisées seront perdues en cas de plantage du système.
L’action omusrmsg est un module de rsyslog qui permet de relayer des messages aux utilisa-
teurs. En l’occurrence, les messages avec un niveau de sévérité maximale (*.emerg) s’affichent
directement dans la console de tous les utilisateurs connectés.
Si vous sentez monter une vague inquiétude face à cette abondance d’informations quelque
peu indigestes, soyez rassuré. Comme pour la majorité des grandes distributions, la configu-
ration de rsyslog fournie par CentOS 7 est utilisable telle quelle, c’est-à-dire que nous
n’allons pas y toucher. Une connaissance sommaire de sa syntaxe aide à comprendre l’organi-
sation des logs dans une configuration classique. Là encore, si vous souhaitez en savoir plus,
reportez-vous à la page de manuel rsyslog.conf(5). Une documentation complète est dis-
ponible sur le site web du projet.

URL Le projet Rsyslog


B https://www.rsyslog.com/

La rotation des logs


Certains fichiers logs ont tendance à pousser comme de la mauvaise herbe et à devenir assez
envahissants. On a même vu des serveurs de production bloqués par un répertoire /var/log
qui a pris des dimensions pathologiques au point de saturer l’espace disque disponible. Pour
éviter d’en arriver à ces extrémités, on peut utiliser une solution comme logrotate. Là
encore, essayons d’illustrer le principe de fonctionnement par un cas pratique.
Nous avons vu que le fichier /var/log/messages recueillait à peu près tout sauf les messages
relatifs à la messagerie, à l’authentification et à la planification des tâches :

# etc/rsyslog.conf
...
# Log anything (except mail) of level info or higher.
# Don't log private authentication messages!
*.info;mail.none;authpriv.none;cron.none /var/log/messages
67738-Administration Linux par la pratique-INT.book Page 375 Friday, May 24, 2019 10:38 AM

Gérer les logs du système


375
CHAPITRE 19

Même sur un système fraîchement installé, ce fichier grandit assez vite en volume :

$ ls -lh /var/log/messages
-rw-------. 1 root root 501K 10 mars 11:01 /var/log/messages

Voici comment se présentent les choses sur un « vrai » serveur de production :

$ ls -lh /var/log/messages*
-rw-------. 1 ... 329K 10 mars 11:03 /var/log/messages
-rw-------. 1 ... 5,0M 17 févr. 03:35 /var/log/messages-20190217
-rw-------. 1 ... 5,0M 24 févr. 03:29 /var/log/messages-20190224
-rw-------. 1 ... 5,0M 3 mars 03:35 /var/log/messages-20190303
-rw-------. 1 ... 5,1M 10 mars 03:17 /var/log/messages-20190310

Voici ce que fait logrotate dans ce cas concret.


• Une fois par semaine, le fichier /var/log/messages est estampillé de la date du jour en
suffixe et archivé.
• Un nouveau fichier /var/log/messages vide est créé, vers lequel sont redirigés les mes-
sages du système.
• La plus ancienne version archivée est supprimée.
La bonne nouvelle, c’est que, là non plus, vous n’avez strictement rien à faire. CentOS 7
fournit une configuration prête à l’emploi de logrotate.
• Une fois par jour, le script /etc/cron.daily/logrotate est lancé automatiquement.
• Il exécute une série d’opérations définies dans /etc/logrotate.conf ainsi que dans tous
les fichiers rangés dans /etc/logrotate.d.
• Les fichiers de configuration contenus dans /etc/logrotate.d n’appartiennent pas à
logrotate. Ils sont fournis par les paquets respectifs. À titre d’exemple, le paquet yum
fournit la configuration contenue dans /etc/logrotate.d/yum, le paquet chrony contient
la configuration /etc/logrotate.d/chrony, etc.
67738-Administration Linux par la pratique-INT.book Page 376 Friday, May 24, 2019 10:38 AM
67738-Administration Linux par la pratique-INT.book Page 377 Friday, May 24, 2019 10:38 AM

A
Installer un poste de travail Linux

Notre ouvrage se concentre sur les serveurs Linux et leur administration en ligne de commande, avec
un focus sur CentOS, la principale distribution dérivée de Red Hat Enterprise Linux. Or, au sein
des formations serveur que j’anime, mes stagiaires me demandent assez régulièrement de leur dire
quelques mots sur l’installation d’un poste de travail Linux, le plus souvent en remplacement de
Windows 10. J’ai donc décidé d’ajouter ce chapitre en annexe, qui vous fournit les informations
nécessaires pour installer la distribution OpenSUSE Leap avec l’environnement de bureau KDE.
C’est ce que j’utilise sur ma station de travail et sur mon ordinateur portable.

Le choix de la distribution
Nous avons eu l’occasion de parler brièvement de la distribution OpenSUSE dans le chapitre
d’introduction de ce livre. Elle est proposée en deux moutures :
• la version stable Leap ;
• la version de développement Tumbleweed.
OpenSUSE Leap constitue une synthèse assez réussie entre la stabilité et l’innovation, si l’on
peut dire. Le système de base est constitué des paquets directement issus de SUSE Linux
Enterprise. Sur cette base éprouvée, les mainteneurs de la distribution proposent une pano-
plie d’environnements de bureau modernes avec des applications graphiques récentes.
67738-Administration Linux par la pratique-INT.book Page 378 Friday, May 24, 2019 10:38 AM

Administration Linux par la pratique


378

CHOIX DU BUREAU OpenSUSE et KDE


J’avoue platement ma préférence marquée pour l’environnement de bureau KDE. Plasma 5 me semble
être le bureau le plus mature et le plus fonctionnel du monde du logiciel libre. C’est l’environnement gra-
phique proposé par défaut par OpenSUSE. Son implémentation dans cette distribution a toujours été par-
ticulièrement soignée, avec une petite touche personnalisée sobre et sympathique.

Au moment de la rédaction de ces lignes, OpenSUSE Leap 15.0 est la dernière version stable en
date. Les indications fournies dans ce chapitre resteront valables pour les versions 15.1 et 15.2.

Confectionner les supports d’installation


Les fichiers ISO de la distribution sont disponibles dans le répertoire distribution/leap/15.0/iso
sur la plate-forme http://download.opensuse.org.

HISTORIQUE Les versions successives d’OpenSUSE


La distribution OpenSUSE a connu un historique des versions quelque peu erratique, étant donné qu’on
est passé de la version 13 à la 42, puis à la 15. Retenez juste que, à ce jour, OpenSUSE 15.0 est considé-
rée comme la version stable officielle.

Figure A-1
Le miroir de téléchargement de la
distribution OpenSUSE.

Je récupère les deux fichiers ISO suivants :


• openSUSE-Leap-15.0-DVD-x86_64.iso
• openSUSE-Leap-15.0-NET-x86_64.iso
Je grave ces deux fichiers respectivement sur un DVD et sur un CD.

ASTUCE À quoi sert le CD-Rom ?


Le CD-Rom confectionné à partir du fichier NET.iso me servira pour les machines qui ont des problèmes
à démarrer sur un DVD, ce qui peut arriver de temps en temps.

Le fichier openSUSE-Leap-15.0-DVD-x86_64.iso est hybride ; je peux donc l’écrire directe-


ment sur une clé USB pour en faire un support d’installation pour les machines dépourvues
de lecteur optique :
67738-Administration Linux par la pratique-INT.book Page 379 Friday, May 24, 2019 10:38 AM

Installer un poste de travail Linux


379
ANNEXE A

$ sudo dd if=openSUSE-Leap-15.0-DVD-x86_64.iso \
of=/dev/sdX bs=1M status=progress

Réinitialiser le disque dur


J’ai pu noter une particularité du programme d’installation d’OpenSUSE.
• Si l’on dispose d’un disque avec une table de partitions dos, il arrive parfois que ce format
soit gardé.
• En revanche, si l’on part d’un disque dur dépourvu de table de partitions, le programme
utilisera toujours une table de partitions gpt.
J’en conclus qu’avant de lancer l’installation à proprement parler, ce n’est pas une mauvaise
idée de réinitialiser le disque dur pour partir sur des bases saines. Pour ce faire, j’utilise le sup-
port d’installation d’OpenSUSE, qui fait également office de système de secours.
Je démarre sur le DVD (ou la clé), j’appuie sur F2 pour sélectionner la langue française, puis je
sélectionne Plus>Système de secours dans le menu principal du DVD.
À partir de là, je peux utiliser gdisk pour supprimer la table de partitions du disque dur,
comme nous l’avons vu en détail dans le chapitre 12.

Installer OpenSUSE Leap 15.0

Démarrer l’installation
Je démarre sur le DVD, j’appuie sur F2 pour sélectionner la langue française et, cette fois-ci,
j’opte pour Installation.
Figure A-2
L’écran de démarrage du
programme d’installation.
67738-Administration Linux par la pratique-INT.book Page 380 Friday, May 24, 2019 10:38 AM

Administration Linux par la pratique


380

Figure A-3
Le premier écran de l’installateur
me demande de choisir
la disposition de mon clavier.

Figure A-4
Dans l’écran de sélection
de l’interface utilisateur, j’opte pour
le bureau KDE proposé par défaut.

Partitionner le disque dur


Le schéma de partitionnement automatique proposé par l’installateur est basé sur le système
de fichiers btrfs, que je préfère éviter pour toute une série de raisons. Au lieu de cela, je vais
donc opter pour le partitionnement manuel, avec un schéma relativement simple.
67738-Administration Linux par la pratique-INT.book Page 381 Friday, May 24, 2019 10:38 AM

Installer un poste de travail Linux


381
ANNEXE A

• une partition BIOS boot de 8 Mo ;


• une partition /boot de 500 Mo, formatée en ext2 ;
• une partition principale occupant le maximum d’espace disponible sur le disque et forma-
tée en ext4 ;
• une partition d’échange dont la taille est égale à la quantité de RAM de la machine.

PARTITIONNEMENT Partition BIOS boot


Une partition BIOS boot est nécessaire pour gérer un disque avec une table de partitions gpt depuis
un BIOS traditionnel.

Dans le menu de l’installateur, j’opte donc pour le Partitionnement en mode expert>Démarrer


avec les partitions existantes et je clique sur Suivant.
Figure A-5
Démarrer le partitionnement
en mode expert.

Voici une petite vue d’ensemble de toutes les étapes par lesquelles il faut passer pour créer les
quatre partitions :
1 Partition BIOS boot : Ajouter>Taille personnalisée : 8 MiB>Rôle : Raw Volume
(unformatted)>Partition ID : Partition de démarrage du BIOS.
2 Partition /boot : Ajouter>Taille personnalisée : 500 MiB>Rôle : Operating System>Système de
fichiers : ext2>Point de montage : /boot.
3 Partition principale : Ajouter>Taille personnalisée : soustraire la quantité de swap que l’on
veut laisser (par exemple, passer de 39.50 GiB à 37.50 GiB si l’on veut garder 2 GiB pour la
partition d’échange)>Rôle : Operating System>Système de fichiers : ext4>Point de montage : /.
4 Partition d’échange : Ajouter>Taille maximale (vérifier si le compte est bon)>Rôle :
swap>Système de fichiers : swap>Point de montage : swap.
67738-Administration Linux par la pratique-INT.book Page 382 Friday, May 24, 2019 10:38 AM

Administration Linux par la pratique


382

Figure A-6
Le partitionnement
en mode expert.

Une fois qu’on clique sur Accepter, l’installateur affiche un récapitulatif des opérations de par-
titionnement et de formatage.

Terminer la configuration des paramètres


Nous avons fait le gros du travail avec le partitionnement. Le reste de la configuration
s’effectue en quelques clics.
Figure A-7
L’écran subséquent sert à
configurer le fuseau horaire.
67738-Administration Linux par la pratique-INT.book Page 383 Friday, May 24, 2019 10:38 AM

Installer un poste de travail Linux


383
ANNEXE A

Figure A-8
Lors de la création de l’utilisateur
initial, veillez à décocher le login
automatique, qui est une
aberration en termes de sécurité.

Figure A-9
Le récapitulatif complet des
paramètres d’installation.
67738-Administration Linux par la pratique-INT.book Page 384 Friday, May 24, 2019 10:38 AM

Administration Linux par la pratique


384

Figure A-10
Dans la configuration par défaut, la
distribution installe un nombre
assez important de paquets. Le but
manifeste du distributeur est ici
d’offrir un environnement de
bureau raisonnablement complet.

Redémarrage initial
Au terme de l’installation, le système redémarre automatiquement et l’on se retrouve face au
gestionnaire de connexion SDDM.
Figure A-11
Le gestionnaire de connexion
graphique SDDM.
67738-Administration Linux par la pratique-INT.book Page 385 Friday, May 24, 2019 10:38 AM

Installer un poste de travail Linux


385
ANNEXE A

Une fois qu’on a pris en compte le célèbre adage selon lequel les goûts et les couleurs ne se
discutent pas, on notera quand même une configuration par défaut plutôt léchée et sobre, aux
angles arrondis et à l’esthétisme tout à fait adapté à des postes de travail professionnels.
Figure A-12
L’environnement de bureau KDE
dans la configuration par défaut.

POUR ALLER PLUS LOIN OpenSUSE aux petits oignons


Maintenant que vous avez installé OpenSUSE Leap, je vous conseille de lire le Unofficial Guide to Open-
SUSE Leap, une documentation en ligne qui offre une vue d’ensemble sur toutes les particularités de
cette distribution.
B http://opensuse-guide.org/
Vous pouvez également jeter un œil sur mon blog professionnel, où je publie régulièrement des articles
sur la configuration et le peaufinage des postes de travail sous OpenSUSE.
B https://www.microlinux.fr/#blog
67738-Administration Linux par la pratique-INT.book Page 386 Friday, May 24, 2019 10:38 AM
67738-Administration Linux par la pratique-INT.book Page 387 Friday, May 24, 2019 10:38 AM

Index

/bin 83 apt-get 25
/boot 83 aptitude 25
/dev 84 arborescence de répertoires 98
/etc 84 arrêter et
/etc/passwd 132 (re)démarrer un service 200
/etc/shadow 133 relancer un processus 189
/etc/skel 140 attribuer tous les droits à tout le monde 154
/lib 85 awk 179
/media 86
/mnt 86 B
/proc 86 bibliothèque 85
/root 87 bien choisir son mot de passe 57
/run 86 BIOS 46
/sbin 87 bogue informatique 13
/sys 86 BSD 21
/tmp 89 bzip2 257
/usr 88
/var 89 C
cat 80
A cd 75
accéder CentOS 27, 36
à la clé USB depuis une machine virtuelle 216 installation 49
au lecteur CD/DVD depuis une machine virtuelle 214 changer le propriétaire et le groupe d’un fichier 161
aux périphériques amovibles 211 chemin relatif ou absolu 75
activer un service au démarrage de la machine 202 chercher du texte
adresse dans un fichier 170
IP 63, 267, 268 dans une série de fichiers 172
MAC 267 chercher par type 168
afficher chmod 152
l’espace occupé et l’espace disponible 237 clear 106
l’état du système 207 Cloudflare 280
la configuration des interfaces réseau 266 code source 4
ajouter et retirer les droits de lecture et d’écriture 153 combinaisons de droits 156
ajouter un disque complétion automatique 110
à une installation existante 238 compresser un fichier 256
avec une table de partitions GPT 247 configurer une connexion à Internet 274
dans une machine virtuelle 239 cp 99
alias de commande 104 créer et supprimer des groupes 144
apt (Advanced Packaging Tool) 25
67738-Administration Linux par la pratique-INT.book Page 388 Friday, May 24, 2019 10:38 AM

Administration Linux par la pratique


388

D GNU 5
Debian 13, 17 gpasswd 143
GNU/Linux 17 gpg (GNU Privacy Guard) 180, 306
décompresser un fichier 256 GPT (GUID Partition Tables) 224
démarrer en mode de secours 205 grep 135
démonter le CD ou le DVD 215 groupadd 144
dépôt CR 318 groups 131
dépôt tiers ELRepo 320 GRUB (GRand Unified Bootloader) 325
dépôt tiers EPEL 319 GUID Partition Tables (GPT) 250
df (disk free) 237 gzip 256
DHCP (Dynamic Host Configuration Protocol) 54 H
diagnostiquer le réseau en cas de panne 281
distribution Linux 14, 23 history 115
DistroWatch 23 host 268
dnf (Dandified Yum) 25 I
dpkg (Debian Package) 25
id 130
driver 6
ifconfig 282
E info 121
echo 79 installer
eject 219 des logiciels depuis le code source 286
éteindre et redémarrer la machine 209 et gérer des logiciels 285
Ethernet et gérer des paquets logiciels avec RPM 294
câble 263 et gérer des paquets logiciels avec Yum 304
carte 264 et gérer un RAID logiciel 337
ex 179 un kernel récent 332
exit 69 un poste de travail Linux 377
ext2 225 interrompre une recherche 166
ext3 225 invite de commande 74
ext4 225 ip address 266
IPv4 267
F IPv6 267
fichier ISO 37 J
file 276
find 163 Joe’s Own Editor 286
finger 131 joker * 101
formater un disque dur 223 journalctl 369
externe ou une clé USB 251 K
FSF (Free Software Foundation) 7, 8
kernel 8
G kill 188
gdisk 248 killall 191
GECOS 137 L
gérer
less 91
les archives compressées 255
licence GPL 8
les droits d’accès 149
lien physique 183
les droits d’accès aux répertoires 158
lien symbolique 177
les logs du système 367
casser 181
les processus 185
créer 178
les services 199
effacer 182
les utilisateurs 125
Links 287
les volumes logiques avec LVM 355
Linux From Scratch 292
67738-Administration Linux par la pratique-INT.book Page 389 Friday, May 24, 2019 10:38 AM

Index
389

ln -s 178 schéma 234


logiciel libre 8 partitionner un disque dur 223
logout 69 passwd 141
logs binaires 371 permission 151
ls 70 pilote 6
lspci 175 ping 271
LV (Logical Volumes) 355 pkgtool 25
LVM (Logical Volume Manager) 223 POSIX 10, 11
processus en cours 187
M ps 186
machine virtuelle 40 pstree 193
configurer 40 PuTTY 64
créer 40 PV (Physical Volumes) 355
make 69 pwd 75
man 118
manipuler le chargeur de démarrage et le noyau 325 R
matériel 33 recharger la configuration d’un service 201
MBR (Master Boot Record) 224 recherche inversée 115
Memtest86 48 Red Hat 13, 16
Minix 10 rendre
mkdir 94 le journal persistant 370
modem routeur ADSL 262 un fichier exécutable 152
montage/démontage 213 renseigner les serveurs DNS 280
monter répéter une commande 114
et démonter manuellement une clé USB 215 retirer et ajouter des droits 155
manuellement un CD ou un DVD 213 rhgb (Red Hat Graphical Boot) 329
plusieurs périphériques en même temps 220 RJ45 263
more 90 rm 103
mot de passe rmdir 105
choisir 57 root 128
modifier 141 rotation des logs 374
mount 214 route 282
mv 102 routeur 272
rpm (Redhat Package Manager) 25
N RPMDB 306
NetworkManager 278 rsyslog 373, 374
niveaux de RAID 339 Rufus 38
notation numérique 154
noyau 8 S
Linux 9 schéma de partitionnement 234
SELinux 243
O shell 69
OpenSSH 65 Shuttleworth Mark 19
OS (Operating System) 2 slackpkg 25
Slackware 13, 15
P SSH (Secure Shell) 63
partition Stallman Richard 5
MBR 244 su 128
supprimer 227 sudo 142, 146
swap 225 supprimer
partitionnement les partitions existantes 227
automatique 223 un utilisateur 144
manuel d’un système UEFI 245 un utilisateur d’un groupe 143
67738-Administration Linux par la pratique-INT.book Page 390 Friday, May 24, 2019 10:38 AM

Administration Linux par la pratique


390

une grappe RAID 353 umask 156


une table de partitions GPT 250 Unix 1
SUSE 20 Usenet 10
systemctl 202 useradd 126
systemd 204 userdel 144
système d’exploitation 2 utilisateur système 133
systèmes de fichiers 170 UUID (Universally Unique IDentifier) 233
T V
tar 258 VG (Volume Groups) 355
TCPdump 289 Vi 106
terminer et tuer un processus 190 Vim 107
Texte ASCII 277 Vimtutor 108
top 196 VirtualBox (« machine virtuelle ») 39
Torvalds Linus 9
touch 92 W
touche Tab 110 wc 179
tree 96 whoami 129
tty 67
Y
U yum (Yellowdog Updater Modified) 25
Ubuntu 18 Yum-Priorities 317
UEFI 46

Vous aimerez peut-être aussi