Académique Documents
Professionnel Documents
Culture Documents
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,
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
67738-Administration Linux par la pratique-INT.book Page II 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 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.
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
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
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
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
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
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
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
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
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
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
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.
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.
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-
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
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
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.
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
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.
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.
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
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.
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
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.
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.
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
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
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.
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
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 :
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).
Linus (torvalds@kruuna.helsinki.fi)
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
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
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.
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 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.
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
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 :
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
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.
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
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.
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.
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 ».
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.
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)
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.
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
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.
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.
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.
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
• 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.
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.
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
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.
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
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.
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.
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...
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 !
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.
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
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
Figure 2–6
La liste des miroirs de
téléchargement s’affiche
en fonction de votre pays.
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
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.
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
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
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
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
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
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.
À 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
URL Memtest86
Memtest86 est un utilitaire indépendant de CentOS.
B https://www.memtest86.com
Figure 3–3
L’écran de Memtest86.
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.
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
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.
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
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).
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é.
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
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
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
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 :
centosbox login: _
[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.
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
[kikinovak@centosbox ~]$ _
Si nous nous sommes connectés en tant que root, cette invite se présente un peu
différemment :
[root@centosbox ~]# _
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
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.
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
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.
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 :
Si la machine n’est pas joignable par nom d’hôte, je peux toujours fournir son adresse IP en
argument :
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
$ ssh root@centosbox.microlinux.lan
$ 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.
Utilisez le raccourci clavier Alt+F2 pour basculer vers la deuxième console virtuelle.
Connectez-vous et invoquez la commande tty :
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.
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
Quitter la console
Pour fermer la session et revenir à l’invite de connexion, invoquez la commande suivante :
$ logout
$ exit
Enfin, le raccourci clavier Ctrl+D permet de faire la même chose plus rapidement.
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.
[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
[kikinovak@centosbox ~]$ ls /
Résultat :
bin dev home lib64 mnt proc run srv tmp var
boot etc lib media opt root sbin sys usr
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 :
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
Mais encore ?
Ces informations paraissent un peu maigres. Nous pouvons en afficher davantage en utilisant
l’option -l (comme long).
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.
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
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).
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.
[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
TILDE ? Tilt !
Les lecteurs attentifs auront probablement déjà noté le tilde ~ dans l’invite de commande :
[kikinovak@centosbox ~]$
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
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 :
« Ici » et « à l’étage »
Voyons maintenant deux répertoires un peu particuliers. Affichez la totalité du contenu de
votre répertoire d’utilisateur :
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 :
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 :
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 :
Ou alors :
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 :
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 :
Voilà un grand pas pour nous, un petit pas pour l’humanité. Continuons :
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 bonjour.txt
Bonjour Monsieur !
$ 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 :
Là aussi, nous pouvons rediriger la sortie standard. Le résultat s’écrira dans un fichier au lieu
de s’afficher à l’écran :
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 :
D’autre part, l’autre rôle de cat est tout simplement d’afficher le contenu de fichiers texte
simples.
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: ? »
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.
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.
$ 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 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.
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.
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).
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
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.
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.
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.
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.
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.
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.
$ more /etc/DIR_COLORS
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
$ 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
$ ls -l bonjour.txt
-rw-rw-r--. 1 kikinovak kikinovak 19 26 mai 10:46 bonjour.txt
$ 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.
$ 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
Avec cat
Voici une méthode pour créer un fichier texte simple, à l’aide de la seule commande cat :
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 :
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 :
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 :
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 :
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.
$ 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
$ 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
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.
$ 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
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.
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
...
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
...
$ 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
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 » :
$ 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
$ 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.
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 :
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 :
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.
$ mv bonjour.txt /tmp/
$ cp -R Fichiers/ AutreCopieFichiers
$ mv AutreCopieFichiers/ /tmp/
$ mv /tmp/bonjour.txt ./
$ mv /tmp/AutreCopieFichiers/ ./
67738-Administration Linux par la pratique-INT.book Page 103 Friday, May 24, 2019 10:38 AM
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 (./) ».
$ 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
$ 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
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.
$ 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.
$ 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.
$ 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
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.
$ clear
Pour aller plus vite, utilisez simplement le raccourci clavier Ctrl+L, ce qui revient au même.
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
vénusien halluciné à la suite d’un abus conséquent de substances illicites diverses, synthé-
tiques et puissantes. Bref, de quoi s’inquiéter.
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 :
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
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
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.
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
$ /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
$ /usr/sbin/
Ensuite, saisissez G, E, T, E :
$ /usr/sbin/gete
$ /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/
$ 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/
$ ls /sbin/
67738-Administration Linux par la pratique-INT.book Page 112 Friday, May 24, 2019 10:38 AM
$ 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.
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
$ 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
T, Tab :
$ ls -l fichier3.txt
$ ls /etc/x11/xorg.conf.d
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
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/
$ 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.
$ 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
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.
$ 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
(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 :
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.
l’alphabet ? Quelle était donc l’option magique ? Comment la retrouver ? Feuilleter le livre de
Kiki Novak à la recherche de l’option perdue ?
$ 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
Le shell nous affiche une liste assez longue d’options applicables à la commande cp, ainsi
qu’une série d’explications sur son fonctionnement.
$ 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
$ man cp
67738-Administration Linux par la pratique-INT.book Page 120 Friday, May 24, 2019 10:38 AM
Figure 4–12
La page de manuel de la
commande cp traduite en français.
$ info bash
67738-Administration Linux par la pratique-INT.book Page 122 Friday, May 24, 2019 10:38 AM
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.
À 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
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.
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.
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.
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.
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.
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).
[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.
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
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 :
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
$ 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
$ id -g
1000
$ id -gn
kikinovak
$ id -G
1000 10
$ id -Gn
kikinovak wheel
67738-Administration Linux par la pratique-INT.book Page 131 Friday, May 24, 2019 10:38 AM
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é.
$ 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
$ 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
$ 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
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
• 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
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
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.
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 :
À 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 :
Enfin, je peux combiner la commande précédente avec sort pour afficher le résultat par ordre
alphabétique :
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
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 :
Mot de passe :
Les renseignements finger ont été modifiés.
$ 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 :
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.
# finger fteyssier
Login: fteyssier Name: Franck Teyssier
Directory: /home/fteyssier Shell: /bin/bash
Never logged in.
...
# 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 :
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
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
Notez que vous pourriez très bien vous servir de Vi pour éditer votre message.
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
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.
$ 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 :
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).
# 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
# 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
# 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
# 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
# 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.
# 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
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
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 :
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 :
Voilà comment se présentent les choses lorsque sudo est invoqué par un utilisateur qui ne dis-
pose pas de ce privilège :
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é.
# 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
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
$ ls -l droits.txt
-rw-rw-r--. 1 kikinovak kikinovak 29 2 sept. 15:57 droits.txt
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
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).
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
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 :
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.
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 :
Il suffit alors d’additionner les valeurs respectives de ces droits pour les définir. Prenons
quelques exemples.
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.
Les deux modes de notation sont strictement équivalents. Autrement dit, le dernier exemple
aurait très bien pu être défini ainsi :
$ 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
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
$ umask 0022
$ touch droits3.txt
$ ls -l droits3.txt
-rw-r--r--. 1 kikinovak kikinovak 0 3 sept. 08:59 droits3.txt
$ 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.
$ rm -rf test/
$ 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 !
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
Maintenant, retirons les droits d’exécution au répertoire, pour tout le monde tant que nous y
sommes. Nous avons donc le choix :
$ 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 :
$ ls -l test/
/bin/ls: impossible d'ouvrir le répertoire test/: Permission non accordée
Respectivement :
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
# 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
...
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
# 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 :
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.
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.
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 :
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 :
Ou encore :
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 :
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 :
/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 :
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 :
# cp -R /etc /home/kikinovak
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é :
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é :
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 :
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 :
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.
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 :
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 :
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 :
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 :
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 :
Au lieu d’afficher toutes les lignes contenant la chaîne de caractères bash, nous allons nous
contenter d’afficher leur nombre :
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 :
Essayons maintenant de chercher la chaîne de caractères TERM dans les fichiers du répertoire /etc :
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 :
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 :
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 :
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 :
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 :
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
$ lspci
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 :
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.
$ 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
$ mkdir test_liens
$ cd test_liens/
$ cat > texte.txt << EOF
> Première ligne
> Deuxième ligne
> Troisième ligne
> EOF
$ ln -s texte.txt lien.txt
$ 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
$ 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 :
$ 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.
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.
$ 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
$ 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.
$ 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).
$ 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
$ 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.
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
$ 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.
À 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
$ 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.
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.
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.
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 :
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
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
$ 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
$ ps x | grep -v COMMAND | wc -l
4
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.
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.
$ 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
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 :
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 :
À 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 :
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
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 :
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.
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
Maintenant, relancez top dans la deuxième console et « tuez » l’application depuis la pre-
mière console :
Les signaux à fournir en argument sont les mêmes que pour kill et vous pouvez aussi utiliser
la syntaxe numérique :
$ killall -9 top
$ 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.
$ 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
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
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).
$ 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
$ 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
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.
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.
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
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.
Vous serez peut-être vaguement surpris de ne pas avoir été déconnecté. Essayez de lancer une
deuxième session à distance :
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 :
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.
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
Figure 10–1
La liste de tous les services actifs
sur notre système.
L’option list-unit-files affiche l’ensemble des services installés, indépendamment de leur état :
Figure 10–2
La liste complète de tous les
services disponibles sur le système.
Désactivez le service en utilisant l’option disable. Vous vous doutez probablement que ce
genre d’opération requiert certains privilèges :
L’option status est bien plus pratique pour afficher l’état d’un service :
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 :
Repérez sshd.service dans l’affichage des résultats des deux commandes, puis vérifiez son état :
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 :
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
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 :
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.
Le système fait mine de redémarrer, mais au bout de quelques secondes, vous vous retrouvez
confronté à l’invite du mode de secours :
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 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
...
$ systemctl --failed
UNIT LOAD ACTIVE SUB ...
? systemd-vconsole-setup.service loaded failed failed ...
$ systemctl status
? centosbox.microlinux.lan
State: running
67738-Administration Linux par la pratique-INT.book Page 208 Friday, May 24, 2019 10:38 AM
Jobs: 0 queued
Failed: 0 units
...
$ systemctl get-default
multi-user.target
# systemctl get-default
rescue.target
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.
$ sudo halt -p
$ sudo reboot
Alternativement, nous pouvons invoquer systemctl avec les options respectives poweroff et
reboot pour arrêter et redémarrer le système :
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.
$ 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
$ 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
• 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
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.
$ 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
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 :
$ 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
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 :
$ 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.
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.
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 :
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 :
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 :
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
Là encore, remplacez /dev/sdb1 par le fichier de périphérique symbolisant votre clé USB :
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
$ 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 :
Là aussi, nous pouvons vérifier que /mnt ne contient plus rien après le démontage du périphé-
rique.
$ cd /mnt
Tant que vous vous trouvez dans l’arborescence /mnt, vous ne pourrez donc tout simplement
pas procéder au démontage.
$ 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
$ 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
À partir de là, les contenus respectifs du DVD et de la clé USB sont accessibles dans les deux
arborescences distinctes.
$ 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
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 :
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
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
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 !
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 :
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.
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.
• 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.
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
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.
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
Figure 12–8
Définissez l’étiquette « swap »
pour la partition (facultatif) et
cliquez sur « Mise à jour des
paramètres ».
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
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
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.
$ 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 :
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.
Figure 12–14
Un schéma de partitionnement
un peu plus élaboré, avec
une partition /boot.
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
$ 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 :
$ 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
...
$ 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
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.
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.
$ 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
Appuyez sur N pour créer une nouvelle partition et confirmez successivement toutes les
valeurs proposées par défaut :
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 :
$ 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
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 :
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 :
Dans un cas comme dans l’autre, vérifions si le disque est bien monté :
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
$ 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
$ cd
$ sudo umount /data
67738-Administration Linux par la pratique-INT.book Page 244 Friday, May 24, 2019 10:38 AM
Il ne reste plus qu’à éditer /etc/fstab en fournissant les informations de ce nouveau système
de fichiers :
Si l’on veut faire les choses plus proprement, on peut identifier le disque par son UUID :
Croisez les doigts et redémarrez. Vérifiez si le disque a bien été monté automatiquement au
démarrage du système :
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
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.
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.
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
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
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.
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 :
Nous venons de créer une partition de type Linux (8300). Appuyons sur W (write) pour
l’écrire sur le disque :
Final checks complete. About to write GPT data. THIS WILL OVERWRITE EXISTING
PARTITIONS!!
Notre deuxième disque dispose bel et bien d’une table de partitions GPT :
À partir de là, nous pouvons formater, étiqueter et monter notre disque GPT exactement
comme nous l’avons fait pour le disque MBR :
Une fois que le mode expert est activé, la touche Z (zap GPT data structures and exit)
supprime la table de partitions :
$ 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
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 :
À partir de là, j’invoque fdisk pour créer une nouvelle table de partitions sur la clé :
Je crée une nouvelle partition en confirmant les valeurs proposées par défaut :
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) :
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
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é :
À partir de là, vous pouvez utiliser la clé comme nous l’avons vu dans le chapitre précédent :
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.
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.
$ 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
$ gzip -d services.gz
$ gunzip services.gz
$ bzip2 services
$ 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
$ 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 :
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
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 :
$ 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.
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 :
Si vous souhaitez créer une archive compressée avec bzip2, il suffira de remplacer l’option -z
par -j :
$ 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
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.
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.
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
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.
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 :
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 :
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 :
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 ».
$ lsmod
...
ata_generic 12923 0
pata_acpi 13053 0
i2c_algo_bit 13413 0
drm_kms_helper 179394 0
e1000e 248519 0
...
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
$ ip address
Figure 14–4
Invoquée sans autre argument, la
commande ip address affiche la
configuration des interfaces réseau.
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
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.
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
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
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
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 :
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.
Nous avons vu que l’option -family inet nous limite à l’affichage de l’adresse IPv4 :
L’option -color met de la couleur dans l’affichage du résultat et le rend beaucoup plus lisible :
Enfin, l’option -oneline rassemble toutes les informations en une seule ligne :
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
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
Le routeur a répondu !
$ 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
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.
À RETENIR
S’il ne fallait retenir que cela : dans un réseau local privé, la passerelle vous permet de communiquer
avec Internet.
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.
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 !
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.
• 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.
$ 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.
$ file ifcfg-enp63s0
ifcfg-enp63s0: ASCII text
67738-Administration Linux par la pratique-INT.book Page 277 Friday, May 24, 2019 10:38 AM
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"
# /etc/sysconfig/network-scripts/ifcfg-enp63s0
DEVICE=enp63s0
ONBOOT=yes
BOOTPROTO=dhcp
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.
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
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
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
# /etc/sysconfig/network
GATEWAY=192.168.0.1
# /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
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
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.
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.
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.
$ mkdir -v src
mkdir: création du répertoire « src »
$ cd src/
$ links https://joe-editor.sourceforge.io
67738-Administration Linux par la pratique-INT.book Page 287 Friday, May 24, 2019 10:38 AM
Figure 15–1
Le site web de JOE dans le
navigateur Links.
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éé :
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
L’éditeur JOE est désormais installé sur votre système. Vous pouvez afficher la page de
manuel en ligne :
$ man joe
$ 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 !
$ cd src/
$ links https://www.tcpdump.org
$ ./configure
...
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
$ 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.
...
$ 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éé :
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
$ cd ../tcpdump-4.9.2/
67738-Administration Linux par la pratique-INT.book Page 291 Friday, May 24, 2019 10:38 AM
$ ./configure
...
checking for pcap_list_datalinks... yes
checking for pcap_free_datalinks... yes
checking for pcap_set_datalink... yes
...
$ make
...
$ sudo make install
$ 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
...
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.
• 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.
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
$ mkdir -v RPMS
mkdir: création du répertoire « RPMS »
$ cd RPMS/
$ links http://mirror.centos.org
Et voilà ! C’est fait. L’éditeur Nano est désormais disponible sur votre machine.
$ man nano
$ nano
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 :
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 :
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.
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 :
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 :
$ mkdir -v updates
mkdir: création du répertoire « updates »
$ cd updates/
$ links http://mirror.centos.org
La mise à jour se fait avec l’option -U comme update. Essayez d’abord avec le paquet python-
perf:
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 :
Pour sortir de ce cercle vicieux, on peut effectuer la mise à jour des deux paquets « à la louche » :
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 :
$ 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
$ rpm -qa
Pour effectuer une recherche insensible à la casse, avec un nom de paquet partiel :
L’option --last affiche la liste de tous les paquets RPM installés par ordre décroissant de
date d’installation :
Pour afficher la liste des cinq derniers paquets installés, vous pourrez donc taper ceci :
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
Et pour en savoir plus sur les fichiers de configuration d’un paquet installé :
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 :
Là aussi, on pourra limiter les requêtes aux fichiers de configuration (-qpc) ou de documenta-
tion (-qpd).
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.
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)
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
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
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 :
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 :
$ 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
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 :
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 :
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 :
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
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 :
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 :
Les résultats de group list sont filtrables à l’aide de grep, comme ceci par exemple :
À 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 :
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 :
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 :
Pour supprimer tout un groupe de paquets, c’est aussi simple que l’installation :
Notez toutefois que cette dernière commande ne supprime pas les dépendances orphelines du
système.
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
Rechercher un paquet
L’option search vous permet de rechercher un paquet :
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 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 :
L’option list sert également à effectuer des recherches sur les paquets. Je peux étendre la
recherche avec un joker :
$ 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.
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
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.
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
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.
# /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
...
# /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
É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
# /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
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
# /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 :
$ 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
Pour éviter des incohérences dans la base de données des paquets RPM, la meilleure solution
consiste à utiliser Yum avec l’option localinstall :
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
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
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.
Si nous ne touchons à rien, le système démarre sur cette option sélectionnée par défaut et
nous affiche ceci :
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
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
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
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"
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.
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.
GRUB_CMDLINE_LINUX="rd.lvm.lv=centos/root \
rd.lvm.lv=centos/swap \
nomodeset \
vga=791 \
quiet"
Figure 16–5
Le menu de GRUB avec pas moins
de cinq différents kernels au choix.
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 :
Si nous effectuons régulièrement nos mises à jour, nous allons tôt ou tard nous retrouver avec
cinq versions du kernel :
É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 :
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 :
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 :
Pour installer le kernel LTS depuis le dépôt ELRepo, invoquez la commande suivante :
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 :
$ 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
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.
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
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.
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.
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
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.
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
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
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
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 :
Name : localhost:root
UUID : 9554cc7d:eb3f4e6f:24bcd8b9:7caa13fb
Events : 1559
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
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
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
$ 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
$ 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
$ cat /proc/mdstat
Personalities : [raid1]
md125 : active (auto-read-only) raid1 sda1[1]
4193280 blocks super 1.2 [2/1] [_U]
Le hic, c’est que je n’ai plus de partitions sur mon disque sdb :
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 :
Partant de là, je peux compléter ma grappe RAID comme je l’ai fait auparavant :
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
Au bout de quelques secondes, mes assemblages RAID sont à nouveau reconstitués et parfai-
tement synchronisés.
Figure 17–7
Pour une installation en RAID 6,
nous avons besoin de quatre
disques virtuels.
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
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
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
$ 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
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
• 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.
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 :
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
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
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 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
$ sudo vgs
VG #PV #LV #SN Attr VSize VFree
vg0 1 2 0 wz--n- <55,41g 0
$ sudo lvs
LV VG Attr LSize Pool ...
root vg0 -wi-ao---- <51,41g
swap vg0 -wi-ao---- 4,00g
$ df -h
Sys. de fichiers Taille Utilisé Dispo Uti% Monté sur
/dev/mapper/vg0-root 55G 1000M 51G 2% /
...
$ 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
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 :
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
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 pvs
PV VG Fmt Attr PSize PFree
/dev/sda2 vg0 lvm2 a-- <59,51g 0
/dev/sdb1 lvm2 --- <60,00g <60,00g
$ 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
$ 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
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
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% /
...
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.
$ 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
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.
1. Vécu.
67738-Administration Linux par la pratique-INT.book Page 369 Friday, May 24, 2019 10:38 AM
$ 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
$ 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
$ journalctl --no-pager
$ journalctl -u sshd
Pour afficher les messages système du planificateur de tâches Cron, on saisira la commande
suivante :
$ journalctl -u crond
# /etc/systemd/journald.conf.d/custom.conf
[Journal]
Storage=persistent
SystemMaxUse=500M
SystemMaxFileSize=100M
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
$ 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 :
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.
$ 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
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
$ journalctl -u sshd -b -1
$ journalctl -u sshd -n 30
Voici la commande pour afficher les messages du serveur SSH uniquement pour les dix der-
nières minutes :
$ journalctl -p err -b -1
...
mars 10 09:04:41 amandine kernel: watchdog: watchdog0: watchdog did not stop!
$ 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
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 :
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é :
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.
# 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
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
$ 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
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
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.
Figure A-1
Le miroir de téléchargement de la
distribution OpenSUSE.
$ sudo dd if=openSUSE-Leap-15.0-DVD-x86_64.iso \
of=/dev/sdX bs=1M status=progress
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
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.
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
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.
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
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
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.
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
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