Notes du cours et TP
SYSTÈME LINUX
Cours et Travaux Pratiques
Basé sur Ubuntu
Rédigé par :
Dr. BADR EL KHALYLY
Master 1 Réseaux et Télécommunications
Année Universitaire : 2025-2026
Table des matières
Introduction 6
1 Introduction au Système GNU/Linux 8
1.1 Historique et Philosophie . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.1.1 Les Origines : UNIX . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.1.2 Qu’est-ce que Linux ? . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.1.3 D’où vient Linux ? . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
1.1.4 Évolution et Versions . . . . . . . . . . . . . . . . . . . . . . . . . . 9
1.2 Linux est un Logiciel Libre (GNU/Linux) . . . . . . . . . . . . . . . . . . . 10
1.2.1 Le Projet GNU . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
1.2.2 Linux : un Système d’Exploitation Complet . . . . . . . . . . . . . 10
1.2.3 La Licence GNU GPL . . . . . . . . . . . . . . . . . . . . . . . . . 11
1.2.4 Logiciel Libre vs Open Source . . . . . . . . . . . . . . . . . . . . . 11
1.3 Les Distributions Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
1.3.1 Qu’est-ce qu’une Distribution ? . . . . . . . . . . . . . . . . . . . . 11
1.3.2 Principales Distributions . . . . . . . . . . . . . . . . . . . . . . . . 12
1.3.3 Ubuntu : La Distribution de Référence . . . . . . . . . . . . . . . . 12
1.3.4 Variantes d’Ubuntu . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
1.4 Architecture d’un Système Linux . . . . . . . . . . . . . . . . . . . . . . . 13
1.4.1 Structure en Couches . . . . . . . . . . . . . . . . . . . . . . . . . . 13
1.4.2 Composants Principaux . . . . . . . . . . . . . . . . . . . . . . . . 14
1.5 Où Chercher de l’Aide ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
1.5.1 Sur le Système Local . . . . . . . . . . . . . . . . . . . . . . . . . . 15
1.5.2 Ressources en Ligne . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
1.6 Avantages et Inconvénients de Linux . . . . . . . . . . . . . . . . . . . . . 17
1.6.1 Avantages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
1.6.2 Inconvénients . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
1.7 Cas d’Usage de Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
1.7.1 Serveurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
1.7.2 Développement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
1.7.3 Embarqué . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
1.7.4 Desktop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
Travaux Pratiques - Chapitre 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
2 Disques et Partitions 26
2.1 Introduction au Stockage . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
2.1.1 Évolution des Technologies de Stockage . . . . . . . . . . . . . . . . 26
1
TABLE DES MATIÈRES Système Linux - Ubuntu
2.2 Structure d’un Disque Dur . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
2.2.1 Structure Physique . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
2.2.2 Les Secteurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
2.2.3 Le Cluster . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
2.3 Partitionnement du Disque Dur . . . . . . . . . . . . . . . . . . . . . . . . 28
2.3.1 Qu’est-ce qu’une Partition ? . . . . . . . . . . . . . . . . . . . . . . 28
2.3.2 Pourquoi Partitionner ? . . . . . . . . . . . . . . . . . . . . . . . . . 28
2.3.3 Types de Partitions . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
2.3.4 MBR vs GPT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
2.4 Conventions de Nommage sous Linux . . . . . . . . . . . . . . . . . . . . . 30
2.4.1 Périphériques de Stockage . . . . . . . . . . . . . . . . . . . . . . . 30
2.4.2 Exemples de Nommage . . . . . . . . . . . . . . . . . . . . . . . . . 30
2.4.3 Identification des Périphériques . . . . . . . . . . . . . . . . . . . . 31
2.5 Systèmes de Fichiers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
2.5.1 Définition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
2.5.2 Systèmes de Fichiers Communs . . . . . . . . . . . . . . . . . . . . 32
2.5.3 Ext4 : Le Système par Défaut d’Ubuntu . . . . . . . . . . . . . . . 33
2.5.4 Swap : Mémoire Virtuelle . . . . . . . . . . . . . . . . . . . . . . . 34
2.6 Commandes de Gestion des Disques . . . . . . . . . . . . . . . . . . . . . . 34
2.6.1 Lister les Périphériques . . . . . . . . . . . . . . . . . . . . . . . . . 34
2.6.2 Partitionner avec fdisk . . . . . . . . . . . . . . . . . . . . . . . . . 35
2.6.3 Partitionner avec parted/gparted . . . . . . . . . . . . . . . . . . . 36
2.6.4 Formater les Partitions . . . . . . . . . . . . . . . . . . . . . . . . . 36
2.6.5 Monter et Démonter . . . . . . . . . . . . . . . . . . . . . . . . . . 37
2.6.6 Montage Permanent avec /etc/fstab . . . . . . . . . . . . . . . . . . 37
2.7 Gestion Avancée : LVM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
2.7.1 Introduction à LVM . . . . . . . . . . . . . . . . . . . . . . . . . . 38
2.7.2 Commandes LVM . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
2.8 Arborescence du Système de Fichiers . . . . . . . . . . . . . . . . . . . . . 40
2.8.1 Filesystem Hierarchy Standard (FHS) . . . . . . . . . . . . . . . . . 40
2.8.2 Description Détaillée des Répertoires . . . . . . . . . . . . . . . . . 42
2.9 Processus de Démarrage Détaillé . . . . . . . . . . . . . . . . . . . . . . . 42
2.9.1 Séquence Complète de Boot . . . . . . . . . . . . . . . . . . . . . . 42
2.9.2 GRUB - Le Bootloader . . . . . . . . . . . . . . . . . . . . . . . . . 43
Travaux Pratiques - Chapitre 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
3 Administration sous Linux 52
3.1 Gestion des Utilisateurs et Groupes . . . . . . . . . . . . . . . . . . . . . . 52
3.1.1 Introduction aux Utilisateurs . . . . . . . . . . . . . . . . . . . . . 52
3.1.2 Fichiers de Configuration . . . . . . . . . . . . . . . . . . . . . . . . 52
3.1.3 Commandes de Gestion des Utilisateurs . . . . . . . . . . . . . . . 54
3.1.4 Commandes de Gestion des Groupes . . . . . . . . . . . . . . . . . 55
3.2 Gestion des Permissions . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
3.2.1 Modèle de Permissions Unix . . . . . . . . . . . . . . . . . . . . . . 56
3.2.2 Représentation Octale . . . . . . . . . . . . . . . . . . . . . . . . . 57
3.2.3 Commande chmod . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
2
TABLE DES MATIÈRES Système Linux - Ubuntu
3.2.4 Commandes chown et chgrp . . . . . . . . . . . . . . . . . . . . . . 59
3.2.5 Permissions Spéciales . . . . . . . . . . . . . . . . . . . . . . . . . . 59
3.2.6 ACL (Access Control Lists) . . . . . . . . . . . . . . . . . . . . . . 61
3.3 Sudo et Élévation de Privilèges . . . . . . . . . . . . . . . . . . . . . . . . 62
3.3.1 Le Système sudo . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
3.3.2 Configuration de sudo . . . . . . . . . . . . . . . . . . . . . . . . . 63
Travaux Pratiques - Chapitre 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
3
Table des figures
1.1 Chronologie de l’évolution vers Linux . . . . . . . . . . . . . . . . . . . . . 9
1.2 Caractéristiques principales de GNU/Linux . . . . . . . . . . . . . . . . . . 10
1.3 Les quatre libertés du logiciel libre . . . . . . . . . . . . . . . . . . . . . . 11
1.4 Architecture en couches d’un système Linux . . . . . . . . . . . . . . . . . 14
2.1 Représentation d’un disque dur avec pistes et secteurs . . . . . . . . . . . . 27
2.2 Exemple de partitionnement MBR . . . . . . . . . . . . . . . . . . . . . . 29
2.3 Structure MBR vs GPT . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
2.4 Structure d’un système de fichiers ext4 . . . . . . . . . . . . . . . . . . . . 34
2.5 Architecture LVM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
2.6 Arborescence standard Linux (FHS) . . . . . . . . . . . . . . . . . . . . . . 41
2.7 Séquence de démarrage Ubuntu . . . . . . . . . . . . . . . . . . . . . . . . 43
3.1 Hiérarchie des utilisateurs sous Linux . . . . . . . . . . . . . . . . . . . . . 52
3.2 Structure des permissions Linux . . . . . . . . . . . . . . . . . . . . . . . . 57
4
Liste des tableaux
1.1 Évolution des versions majeures de Linux . . . . . . . . . . . . . . . . . . . 9
1.2 Logiciel Libre vs Open Source . . . . . . . . . . . . . . . . . . . . . . . . . 11
1.3 Principales distributions Linux . . . . . . . . . . . . . . . . . . . . . . . . . 12
1.4 Versions LTS d’Ubuntu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
1.5 Variantes officielles d’Ubuntu . . . . . . . . . . . . . . . . . . . . . . . . . 13
1.6 Sections du manuel Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
2.1 Évolution des technologies de stockage . . . . . . . . . . . . . . . . . . . . 26
2.2 Comparaison des formats de secteur . . . . . . . . . . . . . . . . . . . . . . 27
2.3 Types de partitions (MBR) . . . . . . . . . . . . . . . . . . . . . . . . . . 28
2.4 Comparaison MBR vs GPT . . . . . . . . . . . . . . . . . . . . . . . . . . 29
2.5 Conventions de nommage des périphériques . . . . . . . . . . . . . . . . . 30
2.6 Méthodes d’identification des périphériques . . . . . . . . . . . . . . . . . . 32
2.7 Systèmes de fichiers supportés par Linux . . . . . . . . . . . . . . . . . . . 33
2.8 Taille de swap recommandée . . . . . . . . . . . . . . . . . . . . . . . . . . 34
2.9 Options de montage courantes . . . . . . . . . . . . . . . . . . . . . . . . . 38
2.10 Répertoires standards Linux . . . . . . . . . . . . . . . . . . . . . . . . . . 42
3.1 Format du fichier /etc/passwd . . . . . . . . . . . . . . . . . . . . . . . . . 53
3.2 Champs de /etc/shadow . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
3.3 Commandes de gestion des utilisateurs . . . . . . . . . . . . . . . . . . . . 54
3.4 Types de permissions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
3.5 Catégories d’utilisateurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
3.6 Valeurs octales des permissions . . . . . . . . . . . . . . . . . . . . . . . . 57
3.7 Permissions courantes en octal . . . . . . . . . . . . . . . . . . . . . . . . . 58
3.8 Résumé des permissions spéciales . . . . . . . . . . . . . . . . . . . . . . . 61
5
Introduction
Ce document propose une approche complète et détaillée pour explorer les différents
aspects du système d’exploitation Linux, avec un focus particulier sur la distribution
Ubuntu. Le système d’exploitation (en anglais Operating System : OS) est un logiciel ou
un ensemble de logiciels qui permet la gestion des ressources de l’ordinateur et donc de
permettre d’exécuter différentes applications.
Pourquoi Linux ?
Linux est considéré comme un logiciel open source multitâche, multiutilisateurs, mul-
tiplateformes et multiprocesseur. Contrairement aux systèmes propriétaires, Linux offre
une transparence totale sur son fonctionnement grâce à la disponibilité de son code source.
Cette caractéristique fondamentale permet non seulement une meilleure compréhension
des mécanismes internes du système, mais aussi une personnalisation illimitée selon les
besoins spécifiques.
Pourquoi Ubuntu ?
Ubuntu est l’une des distributions Linux les plus populaires et les plus accessibles.
Développée par Canonical Ltd., elle se distingue par :
— Sa facilité d’installation et d’utilisation
— Son cycle de support à long terme (LTS - Long Term Support)
— Sa vaste communauté d’utilisateurs et de développeurs
— Sa documentation complète et accessible
— Son écosystème d’applications riche
— Sa compatibilité matérielle excellente
Objectifs Pédagogiques
À l’issue de ce cours, l’étudiant sera capable de :
1. Comprendre l’architecture et la philosophie des systèmes Linux
2. Installer et configurer un système Ubuntu
3. Maîtriser la ligne de commande et les outils système
6
LISTE DES TABLEAUX Système Linux - Ubuntu
4. Gérer les utilisateurs, groupes et permissions
5. Administrer les services systèmes et réseaux
6. Diagnostiquer et résoudre les problèmes courants
7. Automatiser des tâches avec des scripts shell
8. Configurer et sécuriser un serveur Linux
Organisation du Cours
Ce cours est organisé en six chapitres progressifs couvrant les aspects fondamentaux
de Linux :
• Chapitre 1 : Introduction au système GNU/Linux - Histoire, philosophie, distri-
butions
• Chapitre 2 : Disques et partitions - Gestion du stockage, systèmes de fichiers
• Chapitre 3 : Administration sous Linux - Utilisateurs, groupes, permissions
• Chapitre 4 : Introduction à la ligne de commande - Shell, commandes essentielles
• Chapitre 5 : Le noyau Linux - Architecture, modules, paramètres
• Chapitre 6 : Services réseaux sous GNU/Linux - Configuration et administration
Chaque chapitre se termine par des travaux pratiques détaillés permettant de mettre
en application les concepts théoriques abordés. Les exercices sont progressifs et conçus
pour développer des compétences pratiques immédiatement utilisables.
Prérequis
Ce cours suppose une connaissance de base de l’informatique générale. Aucune expé-
rience préalable avec Linux n’est nécessaire, bien qu’une familiarité avec les concepts de
systèmes d’exploitation soit utile.
Ressources Complémentaires
Des ressources supplémentaires sont disponibles en ligne :
— Documentation officielle Ubuntu : [Link]
— Forums de la communauté : [Link]
— Wiki Ubuntu FR : [Link]
7
Chapitre 1
Introduction au Système GNU/Linux
1.1 Historique et Philosophie
1.1.1 Les Origines : UNIX
L’histoire de Linux commence avec UNIX, un système d’exploitation développé dans
les années 1960 par Ken Thompson et Dennis Ritchie aux laboratoires Bell d’AT&T.
UNIX a introduit de nombreux concepts révolutionnaires qui sont toujours d’actualité :
— Architecture modulaire : Le système est composé de petits programmes qui font
une chose bien
— Tout est fichier : Une philosophie unificatrice qui simplifie l’interaction avec le
système
— Portabilité : Écrit en C, UNIX peut être adapté à différentes architectures
— Multi-utilisateurs : Plusieurs utilisateurs peuvent travailler simultanément
— Multitâche préemptif : Exécution simultanée de plusieurs programmes
1.1.2 Qu’est-ce que Linux ?
Linux est un système d’exploitation créé par Linus Benedict Torvalds et enregistré en
tant que marque déposée. Plus précisément, Linux désigne le noyau (kernel) du système
d’exploitation. Un système complet est appelé GNU/Linux car il combine le noyau Linux
avec les outils du projet GNU.
Caractéristiques principales :
— Gratuit : Peut être téléchargé et utilisé sans frais
— Open Source : Le code source est accessible et modifiable
— Stable : Moins de crashes et de redémarrages nécessaires
— Sécurisé : Architecture robuste et gestion stricte des permissions
— Performant : Utilisation optimale des ressources matérielles
— Flexible : Personnalisable selon tous les besoins
8
CHAPITRE 1. INTRODUCTION AU SYSTÈME GNU/LINUX
Système Linux - Ubuntu
1969 1983 1987 1991 1994
Création Projet Minix Linux 0.01 Linux 1.0
d’UNIX GNU (Tanenbaum) (Torvalds) Stable
(Stallman)
Figure 1.1 – Chronologie de l’évolution vers Linux
1.1.3 D’où vient Linux ?
En 1991, les ordinateurs personnels étaient dominés par les compatibles PC fonction-
nant sous MS-DOS, Windows et OS/2. Ces systèmes n’exploitaient pas correctement les
capacités 32 bits et la gestion de la mémoire du microprocesseur Intel 80386.
Linus Benedict Torvalds, étudiant finlandais en informatique à l’université d’Helsinki,
travaillait sur un projet académique basé sur Minix (un système Unix simplifié à des fins
éducatives). Insatisfait des limitations de Minix, il a décidé de créer son propre noyau.
Le 25 août 1991, Linus Torvalds a posté ce message historique sur le groupe Usenet
[Link] :
"Hello everybody out there using minix - I’m doing a (free) operating system
(just a hobby, won’t be big and professional like gnu) for 386(486) AT clones."
Cette modeste annonce a marqué le début d’une révolution dans le monde de l’infor-
matique. Le premier noyau Linux (version 0.01) comptait environ 10 000 lignes de code.
Aujourd’hui, le noyau Linux contient plus de 20 millions de lignes de code et est développé
par des milliers de contributeurs à travers le monde.
1.1.4 Évolution et Versions
Le développement de Linux suit un modèle de numérotation des versions :
Table 1.1 – Évolution des versions majeures de Linux
Version Année Innovations majeures
0.01 1991 Premier noyau fonctionnel
1.0 1994 Premier noyau stable, support réseau
2.0 1996 Support multiprocesseur (SMP)
2.2 1999 Amélioration des performances
2.4 2001 Support USB, systèmes de fichiers journalisés
2.6 2003 Support NUMA, threads natifs
3.0 2011 Changement de numérotation
4.0 2015 Live patching du noyau
5.0 2019 Améliorations de sécurité
6.0 2022 Support matériel moderne
9
CHAPITRE 1. INTRODUCTION AU SYSTÈME GNU/LINUX
Système Linux - Ubuntu
1.2 Linux est un Logiciel Libre (GNU/Linux)
1.2.1 Le Projet GNU
En 1983, Richard Stallman a lancé le projet GNU (GNU’s Not Unix) avec l’objectif
de créer un système d’exploitation complètement libre. Le projet GNU a développé la
plupart des outils essentiels :
— GCC : GNU Compiler Collection - compilateur C/C++
— Bash : Bourne Again Shell - interpréteur de commandes
— GNU Core Utilities : commandes de base (ls, cp, mv, etc.)
— GNU Make : outil d’automatisation de compilation
— glibc : bibliothèque C standard
Quand Linus Torvalds a créé le noyau Linux en 1991, les outils GNU étaient déjà
largement développés. La combinaison du noyau Linux et des outils GNU a formé un
système d’exploitation complet et fonctionnel : GNU/Linux.
1.2.2 Linux : un Système d’Exploitation Complet
Linux est un système d’exploitation avec les caractéristiques suivantes :
• Multitâche préemptif : Le système peut exécuter plusieurs programmes simulta-
nément en allouant équitablement le temps processeur
• Multiplateformes : Fonctionne sur x86, ARM, PowerPC, MIPS, SPARC, etc.
• Multiutilisateurs : Plusieurs utilisateurs peuvent se connecter simultanément lo-
calement ou à distance
• Multiprocesseur : Support natif des systèmes multi-cœurs et multiprocesseurs
• Mémoire virtuelle : Gestion avancée de la mémoire avec swap
• Protection de la mémoire : Isolation entre les processus
• Chargement de bibliothèques partagées : Optimisation de l’utilisation de la
mémoire
Multitâche Multiplateformes Multiutilisateurs
Préemptif (x86, ARM, etc.) Concurrent
Multiprocesseur Mémoire Protection
SMP/NUMA Virtuelle Mémoire
GNU/LINUX
Système d’exploi-
tation complet
Figure 1.2 – Caractéristiques principales de GNU/Linux
10
CHAPITRE 1. INTRODUCTION AU SYSTÈME GNU/LINUX
Système Linux - Ubuntu
1.2.3 La Licence GNU GPL
La création de la Free Software Foundation (FSF) et de la licence GPL (General Public
License) pour les logiciels libres est attribuée à Richard Stallman. Cette licence garantit
quatre libertés essentielles :
1. Liberté 0 : La liberté d’utiliser le logiciel pour n’importe quel usage
2. Liberté 1 : La liberté d’étudier le fonctionnement du programme et de l’adapter à
ses besoins (accès au code source)
3. Liberté 2 : La liberté de redistribuer des copies du programme
4. Liberté 3 : La liberté d’améliorer le programme et de publier ces améliorations
Utiliser Étudier
Pour tout usage Accès au code
Partager Améliorer
Redistribuer Modifier et publier
Figure 1.3 – Les quatre libertés du logiciel libre
1.2.4 Logiciel Libre vs Open Source
Bien que souvent utilisés de manière interchangeable, les termes "logiciel libre" et
"open source" ont des nuances :
Table 1.2 – Logiciel Libre vs Open Source
Aspect Logiciel Libre (Free Software) Open Source
Philosophie Accent sur la liberté et l’éthique Accent sur les avantages pratiques
Origines FSF - Richard Stallman (1983) OSI - Eric Raymond (1998)
Focus Droits des utilisateurs Qualité du code
Terme "Free" = liberté (freedom) "Open" = ouvert
Licences GPL stricte Diverses (MIT, BSD, Apache)
1.3 Les Distributions Linux
1.3.1 Qu’est-ce qu’une Distribution ?
Une distribution Linux est une version complète du système d’exploitation incluant :
— Le noyau Linux : cœur du système
— Les outils GNU : commandes de base
11
CHAPITRE 1. INTRODUCTION AU SYSTÈME GNU/LINUX
Système Linux - Ubuntu
— Un gestionnaire de paquets : pour installer/désinstaller des logiciels
— Un environnement graphique : interface utilisateur (GNOME, KDE, XFCE,
etc.)
— Des applications : navigateur web, suite bureautique, etc.
— Des outils de configuration : pour faciliter l’administration
1.3.2 Principales Distributions
Il existe des centaines de distributions Linux, chacune avec ses spécificités :
Table 1.3 – Principales distributions Linux
Distribution Basée sur Caractéristiques
Ubuntu Debian Facilité d’utilisation, LTS, grande
communauté, focus desktop et
serveur
Debian Indépendante Très stable, serveurs, grande va-
riété de paquets
Red Hat Enterprise Linux Indépendante Entreprises, support commercial,
certification
Fedora Red Hat Dernières technologies, commu-
nauté, base pour RHEL
CentOS Red Hat Gratuit, stable, serveurs, clone de
RHEL
openSUSE Indépendante YaST (outil de configuration), Al-
lemagne
Arch Linux Indépendante Rolling release, personnalisable,
documentation excellente
Manjaro Arch Linux Arch user-friendly, préconfiguré
Linux Mint Ubuntu Interface traditionnelle, multimé-
dia inclus
Elementary OS Ubuntu Design macOS-like, élégant
Kali Linux Debian Tests de pénétration, sécurité
Gentoo Indépendante Compilation depuis sources, opti-
misation extrême
Slackware Indépendante Plus ancienne distribution active,
simplicité UNIX
1.3.3 Ubuntu : La Distribution de Référence
Ubuntu est développée par Canonical Ltd. et la communauté Ubuntu. Son nom vient
d’une philosophie africaine signifiant "humanité envers les autres".
Avantages d’Ubuntu :
— Facilité d’installation : Assistant graphique intuitif
— Compatibilité matérielle : Excellente détection du matériel
12
CHAPITRE 1. INTRODUCTION AU SYSTÈME GNU/LINUX
Système Linux - Ubuntu
— Versions LTS : Support de 5 ans pour les versions Long Term Support
— Cycle de release : Nouvelle version tous les 6 mois
— Documentation : Très complète en français
— Communauté : Active et accueillante pour les débutants
— Écosystème : Variantes officielles (Kubuntu, Xubuntu, Lubuntu, etc.)
— Entreprise : Support professionnel disponible
Table 1.4 – Versions LTS d’Ubuntu
Version Nom Date Fin support
14.04 LTS Trusty Tahr Avril 2014 Avril 2024
16.04 LTS Xenial Xerus Avril 2016 Avril 2026
18.04 LTS Bionic Beaver Avril 2018 Avril 2028
20.04 LTS Focal Fossa Avril 2020 Avril 2030
22.04 LTS Jammy Jellyfish Avril 2022 Avril 2032
24.04 LTS Noble Numbat Avril 2024 Avril 2034
1.3.4 Variantes d’Ubuntu
Ubuntu existe en plusieurs variantes officielles avec différents environnements de bu-
reau :
Table 1.5 – Variantes officielles d’Ubuntu
Variante Environnement Usage recommandé
Ubuntu GNOME Usage général, moderne
Kubuntu KDE Plasma Utilisateurs Windows, personnalisable
Xubuntu XFCE Ordinateurs anciens, léger
Lubuntu LXQt Très léger, matériel limité
Ubuntu MATE MATE Interface traditionnelle
Ubuntu Budgie Budgie Moderne et élégant
Ubuntu Studio XFCE Création multimédia
Ubuntu Kylin UKUI Marché chinois
1.4 Architecture d’un Système Linux
1.4.1 Structure en Couches
Un système Linux peut être représenté sous forme de couches superposées :
13
CHAPITRE 1. INTRODUCTION AU SYSTÈME GNU/LINUX
Système Linux - Ubuntu
Applications Utilisateur Espace
Firefox, LibreOffice, GIMP, Thunderbird, etc. utilisateur
Interface Graphique
X11 / Wayland, GNOME, KDE, XFCE
Shell et Utilitaires
Bash, GNU Coreutils, find, grep, awk, sed
Bibliothèques Système
glibc, systemd, D-Bus, udev
Noyau Linux Espace
Gestion processus, mémoire, périphériques, systèmes de fichiers noyau
Matériel
CPU, RAM, Disques, Carte réseau, Périphériques
Figure 1.4 – Architecture en couches d’un système Linux
1.4.2 Composants Principaux
Le Noyau (Kernel)
Le noyau est le cœur du système. Il gère :
— Les processus et threads
— La mémoire (RAM et swap)
— Les périphériques matériels
— Les systèmes de fichiers
— Le réseau
— La sécurité et les permissions
Les Bibliothèques Système
Les bibliothèques fournissent des fonctions réutilisables :
— glibc : Bibliothèque C standard GNU
— libssl : Cryptographie et SSL/TLS
— libgtk : Interface graphique GTK
— libqt : Interface graphique Qt
14
CHAPITRE 1. INTRODUCTION AU SYSTÈME GNU/LINUX
Système Linux - Ubuntu
Le Shell
Interface entre l’utilisateur et le noyau :
— Interprète les commandes
— Gère les scripts
— Fournit des fonctionnalités de programmation
1.5 Où Chercher de l’Aide ?
1.5.1 Sur le Système Local
La Commande man
La commande man (manual) est l’outil principal pour consulter la documentation :
1 # Syntaxe generale
2 man < commande >
3
4 # Exemples
5 man ls # Documentation de la commande ls
6 man bash # Documentation du shell bash
7 man man # Documentation de man lui - meme
8
9 # Navigation dans man
10 # Espace : Page suivante
11 # b : Page precedente
12 # / : Rechercher
13 # q : Quitter
Listing 1.1 – Utilisation de man
Les pages du manuel sont organisées en sections :
Table 1.6 – Sections du manuel Linux
Section Contenu Exemples
1 Commandes utilisateur ls, cp, mv, grep
2 Appels système open, read, write, fork
3 Fonctions bibliothèques C printf, malloc, fopen
4 Fichiers spéciaux /dev/null, /dev/zero
5 Formats de fichiers /etc/passwd, fstab
6 Jeux fortune, cowsay
7 Divers ascii, hier (hiérarchie)
8 Administration système mount, fsck, iptables
1 # Specifier une section
2 man 5 passwd # Format du fichier / etc / passwd
3 man 1 passwd # Commande passwd
15
CHAPITRE 1. INTRODUCTION AU SYSTÈME GNU/LINUX
Système Linux - Ubuntu
5 # Rechercher dans les descriptions
6 man -k password # Toutes les pages contenant " password "
7 apropos network # Equivalent a man -k
8
9 # Afficher toutes les sections disponibles
10 man -a intro # Parcourir toutes les pages " intro "
11
12 # Afficher le chemin de la page
13 man -w ls # Affiche l ’ emplacement du fichier man
Listing 1.2 – Utilisation avancée de man
La Commande Info
Le format info est un format hypertexte plus riche que man :
1 # Syntaxe
2 info < commande >
3
4 # Exemples
5 info bash
6 info coreutils
7 info tar
8
9 # Navigation dans info
10 # Espace : Page suivante
11 # b : Page precedente
12 # n : Noeud suivant
13 # p : Noeud precedent
14 # u : Noeud parent
15 # Tab : Lien suivant
16 # Enter : Suivre le lien
17 # q : Quitter
Listing 1.3 – Utilisation de info
L’Option –help
Presque toutes les commandes supportent l’option –help :
1 ls -- help
2 cp -- help
3 grep -- help
4 tar -- help
5
6 # Combiner avec less pour pagination
7 command -- help | less
Listing 1.4 – Utilisation de –help
16
CHAPITRE 1. INTRODUCTION AU SYSTÈME GNU/LINUX
Système Linux - Ubuntu
Les HOWTO et FAQ
Documents dans /usr/share/doc :
1 # Lister la documentation disponible
2 ls / usr / share / doc /
3
4 # Exemples de documentation
5 less / usr / share / doc / bash / README
6 zless / usr / share / doc / apache2 / README . Debian . gz
7
8 # Documentation specifique
9 dpkg -L < paquet > | grep / usr / share / doc
Listing 1.5 – Explorer la documentation
1.5.2 Ressources en Ligne
Documentation Officielle Ubuntu
— Help Ubuntu : [Link]
— Wiki Ubuntu FR : [Link]
— Server Guide : [Link]
— Community Help : [Link]
Forums et Communautés
— Ubuntu Forums : [Link]
— Ask Ubuntu : [Link]
— Ubuntu FR : [Link]
— Reddit r/Ubuntu : [Link]
Documentation Technique
— Linux Documentation Project : [Link]
— Arch Wiki : [Link] (excellent pour Linux en général)
— Debian Wiki : [Link]
— [Link] : [Link]
1.6 Avantages et Inconvénients de Linux
1.6.1 Avantages
1. Gratuit et Open Source
— Aucun coût de licence
— Code source accessible et modifiable
17
CHAPITRE 1. INTRODUCTION AU SYSTÈME GNU/LINUX
Système Linux - Ubuntu
— Pas de vendor lock-in
2. Sécurité
— Modèle de permissions robuste
— Moins de virus et malwares
— Mises à jour de sécurité rapides
— SELinux / AppArmor pour renforcement
3. Stabilité et Fiabilité
— Uptime de plusieurs années possible
— Moins de crashs système
— Gestion efficace de la mémoire
4. Performance
— Utilisation optimale des ressources
— Fonctionne bien sur du matériel ancien
— Choix de l’environnement selon les besoins
5. Personnalisation
— Contrôle total sur le système
— Multiples environnements de bureau
— Configuration fine possible
6. Communauté
— Support gratuit via forums
— Documentation abondante
— Développement actif
1.6.2 Inconvénients
1. Courbe d’apprentissage
— Nécessite du temps pour maîtriser
— Ligne de commande parfois nécessaire
— Concepts différents de Windows/macOS
2. Compatibilité Logicielle
— Certains logiciels propriétaires non disponibles
— Adobe Creative Suite, Microsoft Office natif
— Jeux PC moins bien supportés (en amélioration)
3. Support Matériel
— Certains périphériques récents mal supportés
— Pilotes propriétaires parfois nécessaires
— WiFi/Bluetooth peut poser problème
4. Fragmentation
— Nombreuses distributions différentes
— Incompatibilités entre distributions
— Choix difficile pour débutants
18
CHAPITRE 1. INTRODUCTION AU SYSTÈME GNU/LINUX
Système Linux - Ubuntu
1.7 Cas d’Usage de Linux
1.7.1 Serveurs
Linux domine le marché des serveurs :
— 96,3% des serveurs web utilisent Linux
— Tous les supercomputers du TOP500 utilisent Linux
— Cloud computing : AWS, Google Cloud, Azure
— Conteneurisation : Docker, Kubernetes
1.7.2 Développement
Environnement privilégié des développeurs :
— Outils de développement natifs
— Environnement proche de la production
— Terminal puissant
— Contrôle de version (Git)
1.7.3 Embarqué
— Android (basé sur Linux)
— Routeurs et switches
— IoT (Internet of Things)
— Voitures connectées
— Systèmes industriels
1.7.4 Desktop
— Usage personnel
— Bureautique
— Navigation web
— Multimédia
— Jeux (Steam, Proton)
Travaux Pratiques - Chapitre 1
TP1 : Installation et Première Prise en Main d’Ubuntu
Durée estimée : 3 heures
Objectifs :
— Installer Ubuntu sur une machine virtuelle
19
CHAPITRE 1. INTRODUCTION AU SYSTÈME GNU/LINUX
Système Linux - Ubuntu
— Découvrir l’environnement graphique GNOME
— Utiliser le système d’aide intégré
— Comprendre la structure du système
— Configurer les paramètres de base
Matériel nécessaire :
— Un ordinateur avec au moins 4 Go de RAM
— 25 Go d’espace disque libre
— VirtualBox ou VMware Workstation
— Image ISO d’Ubuntu LTS (dernière version)
Partie 1 : Préparation et Installation
Exercice 1.1 : Téléchargement d’Ubuntu
1. Rendez-vous sur [Link]
2. Téléchargez Ubuntu 22.04 LTS ou la dernière version LTS
3. Vérifiez la somme de contrôle SHA256 :
1 # Sur Linux
2 sha256sum ubuntu -*. iso
3
4 # Sur Windows PowerShell
5 Get - FileHash ubuntu -*. iso - Algorithm SHA256
4. Comparez avec la somme officielle sur le site
Exercice 1.2 : Création de la Machine Virtuelle
1. Ouvrez VirtualBox
2. Cliquez sur "Nouvelle"
3. Configuration recommandée :
— Nom : Ubuntu-TP
— Type : Linux
— Version : Ubuntu (64-bit)
— RAM : 2048 MB (ou plus)
— Disque dur : 25 GB (VDI, dynamique)
4. Dans les paramètres :
— Système > Processeur : 2 CPU
— Affichage > Mémoire vidéo : 128 MB
— Stockage : Attacher l’ISO Ubuntu
— Réseau : Accès par pont ou NAT
Exercice 1.3 : Installation d’Ubuntu
1. Démarrez la VM
2. Choisissez la langue : Français
3. Cliquez sur "Installer Ubuntu"
20
CHAPITRE 1. INTRODUCTION AU SYSTÈME GNU/LINUX
Système Linux - Ubuntu
4. Configuration clavier : Français
5. Type d’installation : Installation normale
6. Cochez : Télécharger les mises à jour
7. Type d’installation : Effacer le disque et installer Ubuntu
8. Fuseau horaire : Sélectionnez votre zone
9. Créez votre compte :
— Nom : [Votre nom]
— Nom d’utilisateur : etudiant
— Nom de l’ordinateur : ubuntu-tp
— Mot de passe : [Choisissez un mot de passe sécurisé]
10. Attendez la fin de l’installation (15-30 minutes)
11. Redémarrez
Partie 2 : Première Configuration
Exercice 2.1 : Mise à Jour du Système
1. Ouvrez un terminal (Ctrl+Alt+T)
2. Mettez à jour la liste des paquets :
1 sudo apt update
3. Effectuez les mises à jour :
1 sudo apt upgrade -y
4. Installez les paquets recommandés :
1 sudo apt install -y ubuntu - restricted - extras
Exercice 2.2 : Exploration de l’Interface GNOME
1. Explorez le lanceur d’applications (touche Super/Windows)
2. Testez les espaces de travail virtuels
3. Ouvrez les paramètres système :
— Apparence : Choisissez le thème clair/sombre
— Clavier : Vérifiez les raccourcis
— Écran : Ajustez la résolution
4. Installez GNOME Tweaks :
1 sudo apt install gnome - tweaks
Exercice 2.3 : Installation des Guest Additions
1. Dans VirtualBox : Périphériques > Insérer l’image CD des Additions Invité
2. Installez les dépendances :
1 sudo apt install build - essential dkms linux - headers - $ ( uname -r
)
21
CHAPITRE 1. INTRODUCTION AU SYSTÈME GNU/LINUX
Système Linux - Ubuntu
3. Exécutez l’installateur depuis le CD monté
4. Redémarrez la VM
5. Testez :
— Redimensionnement de la fenêtre
— Copier-coller entre hôte et invité
— Dossiers partagés
Partie 3 : Exploration du Système
Exercice 3.1 : Informations Système
1. Affichez la version d’Ubuntu :
1 lsb_release -a
2 cat / etc / os - release
2. Affichez les informations du noyau :
1 uname -a
2 uname -r # Version du noyau
3. Informations matérielles :
1 # Processeur
2 lscpu
3 cat / proc / cpuinfo | grep " model name " | uniq
4
5 # Memoire
6 free -h
7 cat / proc / meminfo | grep MemTotal
8
9 # Disques
10 lsblk
11 df -h
12
13 # Peripheriques PCI
14 lspci
15
16 # Peripheriques USB
17 lsusb
4. Créez un fichier récapitulatif :
1 cat > ~/ systeme_info . txt << ’ EOF ’
2 === INFORMATIONS SYSTEME ===
3 Date : $ ( date )
4 Distribution : $ ( lsb_release -d | cut - f2 )
5 Noyau : $ ( uname -r )
6 Architecture : $ ( uname -m )
7 Hostname : $ ( hostname )
8 Utilisateur : $ ( whoami )
9
22
CHAPITRE 1. INTRODUCTION AU SYSTÈME GNU/LINUX
Système Linux - Ubuntu
10 === MATERIEL ===
11 CPU : $ ( lscpu | grep " Model name " | cut -d : - f2 | xargs )
12 RAM : $ ( free -h | grep Mem | awk ’{ print $2 } ’)
13 Disque : $ ( df -h / | tail -1 | awk ’{ print $2 } ’)
14 EOF
15 cat ~/ systeme_info . txt
Exercice 3.2 : Utilisation du Système d’Aide
1. Consultez la page man de différentes commandes :
1 man ls
2 man cp
3 man grep
4 man bash
2. Pour chaque commande, notez :
— Son utilité principale
— 3 options importantes
— Un exemple d’utilisation
3. Utilisez apropos pour trouver des commandes :
1 apropos directory
2 apropos network
3 apropos user
4. Explorez la documentation dans /usr/share/doc :
1 ls / usr / share / doc /
2 ls / usr / share / doc / bash /
3 zless / usr / share / doc / bash / README . gz
5. Testez l’aide intégrée :
1 ls -- help
2 cp -- help
3 help cd # Commande interne bash
Exercice 3.3 : Navigateur de Fichiers
1. Ouvrez le gestionnaire de fichiers (Nautilus)
2. Explorez les dossiers principaux :
— Dossier personnel (/home/etudiant)
— Documents, Téléchargements, Images
3. Créez une structure de dossiers pour vos TPs :
1 mkdir -p ~/ TP_Linux /{ TP1 , TP2 , TP3 , TP4 , TP5 , TP6 }
2 mkdir -p ~/ TP_Linux / TP1 /{ exercices , notes }
4. Explorez les options du gestionnaire :
23
CHAPITRE 1. INTRODUCTION AU SYSTÈME GNU/LINUX
Système Linux - Ubuntu
— Affichage en liste/grille
— Afficher les fichiers cachés (Ctrl+H)
— Propriétés des fichiers
Partie 4 : Logithèque et Applications
Exercice 4.1 : Logithèque Ubuntu (Ubuntu Software)
1. Ouvrez la Logithèque Ubuntu
2. Explorez les catégories d’applications
3. Installez quelques applications utiles :
— VLC Media Player (multimédia)
— GIMP (retouche d’images)
— Visual Studio Code (éditeur de code)
4. Vérifiez les applications installées
Exercice 4.2 : Installation via Terminal
1. Installez des outils utiles :
1 sudo apt install -y \
2 vim \
3 git \
4 curl \
5 wget \
6 htop \
7 tree \
8 neofetch \
9 terminator
2. Testez les outils installés :
1 neofetch # Affiche les infos systeme
2 htop # Moniteur de processus ( q pour quitter )
3 tree ~/ TP_Linux # Arborescence des dossiers
Partie 5 : Questions de Réflexion
Exercice 5.1 : Compréhension Théorique
Répondez aux questions suivantes dans un document texte :
1. Qu’est-ce que GNU/Linux ? Expliquez la distinction entre GNU et Linux.
2. Citez et expliquez les trois caractéristiques principales de Linux (multitâche, mul-
tiutilisateurs, etc.).
3. Quelle est la différence entre :
— Une distribution Linux et le noyau Linux ?
— Logiciel libre et logiciel open source ?
— Ubuntu et Debian ?
4. Qu’est-ce que la licence GPL ? Citez ses 4 libertés fondamentales.
5. Pourquoi Linux est-il considéré comme plus sécurisé que Windows ?
24
CHAPITRE 1. INTRODUCTION AU SYSTÈME GNU/LINUX
Système Linux - Ubuntu
6. Quels sont les avantages et inconvénients de Linux pour un utilisateur desktop ?
7. Qu’est-ce qu’une version LTS d’Ubuntu ? Pourquoi est-elle importante ?
8. Expliquez la différence entre les commandes man, info et –help.
Exercice 5.2 : Recherche Documentaire
1. Créez un document (LibreOffice Writer ou markdown) contenant :
— L’histoire d’Ubuntu (création, fondateur, évolutions)
— Les différences entre Ubuntu Desktop et Ubuntu Server
— Une comparaison entre Ubuntu, Fedora et Debian (tableau)
— Les variantes officielles d’Ubuntu et leurs cas d’usage
2. Recherchez et listez :
— 5 entreprises utilisant Linux en production
— 3 distributions spécialisées (sécurité, multimédia, etc.)
— Les différences entre les environnements GNOME, KDE et XFCE
Partie 6 : Travail Personnel
Exercice 6.1 : Personnalisation
1. Personnalisez votre environnement :
— Changez le fond d’écran
— Configurez le dock GNOME (position, taille)
— Installez des extensions GNOME
— Créez des raccourcis clavier personnalisés
2. Installez un thème d’icônes :
1 sudo apt install papirus - icon - theme
2 # Selectionnez dans Apparence
Exercice 6.2 : Snapshot
1. Créez un snapshot de votre VM dans VirtualBox
2. Nommez-le "Ubuntu-TP1-Propre"
3. Ce snapshot servira de point de restauration
Critères d’Évaluation :
— Installation réussie d’Ubuntu : 20%
— Configuration et mises à jour : 15%
— Exploration et compréhension du système : 25%
— Utilisation du système d’aide : 15%
— Questions théoriques : 25%
Livrables :
1. Captures d’écran de votre installation
2. Fichier systeme_info.txt
3. Document avec réponses aux questions théoriques
4. Document de recherche documentaire
25
Chapitre 2
Disques et Partitions
2.1 Introduction au Stockage
Le stockage est un aspect fondamental de tout système informatique. Comprendre
comment Linux gère le stockage est essentiel pour une administration efficace du système.
2.1.1 Évolution des Technologies de Stockage
Table 2.1 – Évolution des technologies de stockage
Technologie Période Caractéristiques
Disques durs (HDD) 1956-présent Mécanique, capacité élevée, lent
Disques SSD SATA 2000s Flash NAND, rapide, prix modéré
SSD NVMe 2010s PCIe, très rapide, prix élevé
SSD M.2 2013-présent Format compact, NVMe ou SATA
2.2 Structure d’un Disque Dur
2.2.1 Structure Physique
Un disque dur traditionnel (HDD) est composé de :
— Plateaux : Disques magnétiques empilés
— Têtes de lecture/écriture : Lire et écrire les données
— Bras mécanique : Positionner les têtes
— Moteur : Faire tourner les plateaux (5400-15000 RPM)
— Contrôleur : Gérer les opérations
26
CHAPITRE 2. DISQUES ET PARTITIONS Système Linux - Ubuntu
Structure d’un Disque Dur
Piste
(Track)
Tête
Secteur
(512 bytes)
Cylindre
(ensemble
pistes)
Figure 2.1 – Représentation d’un disque dur avec pistes et secteurs
2.2.2 Les Secteurs
Un disque dur est divisé en secteurs, la plus petite unité addressable :
— Taille traditionnelle : 512 octets
— Advanced Format : 4096 octets (4K)
— Les secteurs sont numérotés de 0 à n-1
— Adressage LBA (Logical Block Addressing)
Table 2.2 – Comparaison des formats de secteur
Format Taille Efficacité Avantages
512 bytes 512 B 87% Compatible ancien matériel
4K native 4096 B 97% Meilleure efficacité, moins d’overhead
512e (émulation) 4K physique 92% Compatibilité + performance
2.2.3 Le Cluster
Un cluster (ou bloc) est un regroupement de secteurs :
1 Cluster de 512 B = 1 secteur (512 bytes )
2 Cluster de 1 KB = 2 secteurs (1024 bytes )
3 Cluster de 4 KB = 8 secteurs (4096 bytes )
4 Cluster de 64 KB = 128 secteurs (65536 bytes )
Listing 2.1 – Calcul des clusters
27
CHAPITRE 2. DISQUES ET PARTITIONS Système Linux - Ubuntu
La taille du cluster affecte :
— Espace gaspillé : Petit fichier sur grand cluster = waste
— Performance : Grands clusters = moins de méta-données
— Fragmentation : Petits clusters = plus de fragmentation
2.3 Partitionnement du Disque Dur
2.3.1 Qu’est-ce qu’une Partition ?
Une partition est une division logique d’un disque physique. Chaque partition :
— Est vue comme un disque indépendant par le système
— Peut avoir son propre système de fichiers
— Est isolée des autres partitions
— A ses propres permissions et montage
2.3.2 Pourquoi Partitionner ?
1. Multi-boot : Installer plusieurs systèmes d’exploitation
2. Séparation données/système : Protéger les données lors de réinstallation
3. Performance : Optimiser selon l’usage
4. Organisation : Séparer les différents types de données
5. Sécurité : Isoler les partitions sensibles
6. Swap : Linux requiert une partition swap pour la mémoire virtuelle
7. Sauvegardes : Faciliter les sauvegardes partielles
2.3.3 Types de Partitions
Il existe trois types de partitions dans le schéma MBR traditionnel :
Table 2.3 – Types de partitions (MBR)
Type Maximum Caractéristiques
Primaire 4 Peut contenir un système de fichiers et être bootable
Étendue 1 Container pour partitions logiques, ne contient pas de FS di-
rectement
Logique Illimité Contenues dans la partition étendue
Configuration typique :
— 3 partitions primaires + 1 étendue
— Ou 4 partitions primaires
— L’étendue peut contenir de nombreuses partitions logiques
28
CHAPITRE 2. DISQUES ET PARTITIONS Système Linux - Ubuntu
Disque Dur (/dev/sda) - 500 GB
Primaire 1 Primaire 2
/dev/sda1 /dev/sda2
100 GB 100 GBÉtendue - /dev/sda3 - 300 GB
ext4 ext4
Logique 1 Logique 2 Logique 3
/dev/sda5 /dev/sda6 /dev/sda7
50 GB 4
Logique 100 GB5
Logique 75 GB
/dev/sda8 /dev/sda9
50 GB 25 GB
Note : /dev/sda4 serait la 4ème primaire (non utilisée ici).
Les partitions logiques commencent toujours à sda5.
Figure 2.2 – Exemple de partitionnement MBR
2.3.4 MBR vs GPT
Table 2.4 – Comparaison MBR vs GPT
Caractéristique MBR (Master Boot Re- GPT (GUID Partition
cord) Table)
Année 1983 2000s (UEFI)
Taille disque max 2 To 9,4 Zo (Zettaoctets)
Partitions primaires 4 max 128 max (standard)
Partitions totales Illimitées (via étendue) 128 max
Bootloader BIOS UEFI
Backup Non Oui (en-tête dupliqué)
Checksum Non Oui (CRC32)
Identifiant unique Non GUID unique par partition
Compatibilité Ancien matériel Matériel moderne
29
CHAPITRE 2. DISQUES ET PARTITIONS Système Linux - Ubuntu
MBR GPT
UEFI
MBR ModerneMBR Protecteur
(512 bytes)
En-tête GPT
Partition 1 Table partitions
Partition 2 Partition 1
... ...
Partition n Partition n
Table backup
En-tête backup
Figure 2.3 – Structure MBR vs GPT
2.4 Conventions de Nommage sous Linux
2.4.1 Périphériques de Stockage
Sous Linux, tout est fichier, y compris les périphériques. Ils sont accessibles via /dev :
Format : /dev/XXYN
Où :
— XX : Type de périphérique (sd, hd, nvme, mmcblk)
— Y : Lettre du périphérique (a, b, c, ...)
— N : Numéro de partition (1, 2, 3, ...)
Table 2.5 – Conventions de nommage des périphériques
Type Préfixe Description et exemples
SATA/SCSI/SSD sd /dev/sda, /dev/sdb (disques), /dev/sda1 (partition)
IDE (ancien) hd /dev/hda, /dev/hdb (obsolète sur systèmes modernes)
NVMe SSD nvme /dev/nvme0n1 (disque), /dev/nvme0n1p1 (partition)
eMMC/SD Card mmcblk /dev/mmcblk0, /dev/mmcblk0p1
Disquette fd /dev/fd0 (obsolète)
Loop device loop /dev/loop0 (montage images ISO)
Device Mapper dm /dev/dm-0 (LVM, encryption)
2.4.2 Exemples de Nommage
1 / dev / sda # Premier disque SATA / SCSI
2 / dev / sda1 # Premiere partition du premier disque
3 / dev / sda2 # Deuxieme partition
4 / dev / sdb # Deuxieme disque
5 / dev / sdb1 # Premiere partition du deuxieme disque
6
30
CHAPITRE 2. DISQUES ET PARTITIONS Système Linux - Ubuntu
7 # NVMe ( Notation differente )
8 / dev / nvme0n1 # Premier NVMe , premier namespace
9 / dev / nvme0n1p1 # Premiere partition
10 / dev / nvme0n1p2 # Deuxieme partition
11 / dev / nvme1n1 # Deuxieme NVMe
12
13 # Cartes SD
14 / dev / mmcblk0 # Carte SD
15 / dev / mmcblk0p1 # Premiere partition
16
17 # Peripheriques virtuels
18 / dev / loop0 # Premier loop device
19 / dev / dm -0 # Premier device mapper ( LVM )
Listing 2.2 – Exemples de périphériques
2.4.3 Identification des Périphériques
Linux offre plusieurs méthodes pour identifier les périphériques de stockage de manière
unique et persistante.
Par chemin /dev (volatile)
Le nommage traditionnel ‘/dev/sdX‘ peut changer au redémarrage :
1 # Aujourd ’ hui
2 / dev / sda = Disque interne
3 / dev / sdb = C l USB
4
5 # Apres reboot avec cle USB branchee avant demarrage
6 / dev / sda = Cle USB # Change !
7 / dev / sdb = Disque interne
Listing 2.3 – Limitations du nommage /dev
Par UUID (Universal Unique Identifier)
Chaque partition reçoit un UUID unique et permanent :
1 # Methode 1 : blkid
2 sudo blkid
3
4 # Sortie exemple :
5 # / dev / sda1 : UUID =" a1b2c3d4 -..." TYPE =" ext4 "
6 # / dev / sda2 : UUID =" e5f6g7h8 -..." TYPE =" swap "
7
8 # Methode 2 : lsblk
9 lsblk -f
10
11 # Methode 3 : fichiers dans / dev / disk
31
CHAPITRE 2. DISQUES ET PARTITIONS Système Linux - Ubuntu
12 ls -l / dev / disk / by - uuid /
Listing 2.4 – Afficher les UUID
Par étiquette (LABEL)
On peut attribuer un nom lisible aux partitions :
1 # Voir les labels existants
2 lsblk -o NAME , LABEL , UUID
3
4 # Creer / modifier un label ext4
5 sudo e2label / dev / sda1 " Ubuntu_System "
6
7 # Creer / modifier un label swap
8 sudo swaplabel -L " Ubuntu_Swap " / dev / sda2
9
10 # Utiliser dans / etc / fstab
11 LABEL = Ubuntu_System / ext4 defaults 0 1
12 UUID = xxx - yyy / home ext4 defaults 0 2
Listing 2.5 – Gestion des labels
Table 2.6 – Méthodes d’identification des périphériques
Méthode Avantages Persistance
/dev/sdX Simple, rapide Non
UUID Unique, ne change jamais Oui
LABEL Lisible par humain Oui (si unique)
/dev/disk/by-id/ ID matériel Oui
/dev/disk/by-path/ Emplacement physique Partiel
2.5 Systèmes de Fichiers
2.5.1 Définition
Un système de fichiers organise la manière dont les données sont stockées et récupérées
sur un disque. Sans système de fichiers, un disque ne serait qu’une séquence d’octets sans
structure.
2.5.2 Systèmes de Fichiers Communs
32
CHAPITRE 2. DISQUES ET PARTITIONS Système Linux - Ubuntu
Table 2.7 – Systèmes de fichiers supportés par Linux
Système Type
Caractéristiques
ext4 Natif Linux
Journalisé, stable, performant, par défaut Ubuntu
ext3 Natif Linux
Prédécesseur ext4, journalisé
ext2 Natif Linux
Non journalisé, simple
XFS Natif Linux
Hautes performances, gros fichiers
Btrfs Natif Linux
Copy-on-write, snapshots, compression
ZFS Natif Unix
Très avancé, gestion RAID intégrée
swap Mémoire virtuelle
Espace d’échange Linux
FAT32 Windows
Compatible, limité 4GB par fichier
exFAT Windows
Moderne, gros fichiers
NTFS Windows
Lecture/écriture via ntfs-3g
HFS+ macOS
Lecture seule par défaut
APFS macOS
Nouveau système Apple
Bonne continuation ! Le document se construit progressivement avec tous les chapitres
détaillés.
2.5.3 Ext4 : Le Système par Défaut d’Ubuntu
Ext4 (Fourth Extended Filesystem) est le système de fichiers par défaut d’Ubuntu
depuis 2008.
Avantages d’ext4 :
— Journalisation : Récupération rapide après crash
— Grande capacité : Fichiers jusqu’à 16 To, volumes jusqu’à 1 Exaoctet
— Allocation retardée : Meilleure performance d’écriture
— Extent : Stockage contigu pour gros fichiers
— Défragmentation en ligne : Sans démontage
— Préallocation rapide : Pour bases de données
— Barrières d’écriture : Garanties d’intégrité
33
CHAPITRE 2. DISQUES ET PARTITIONS Système Linux - Ubuntu
Super Bloc
Informations globales
Métadonnées
Table Groupe
Groupes de blocs
Descripteurs
Bitmaps
Blocs libres/utilisés
Allocation
Table
Métadonnées fichiers
Inodes
Blocs
Contenu fichiers
Données
Figure 2.4 – Structure d’un système de fichiers ext4
2.5.4 Swap : Mémoire Virtuelle
Le swap est un espace disque utilisé comme extension de la RAM.
Fonctionnement :
— Lorsque la RAM est pleine, les pages peu utilisées sont déplacées vers le swap
— Permet d’exécuter plus d’applications que la RAM disponible
— Plus lent que la RAM (100-1000x selon le type de disque)
— Essentiel pour l’hibernation
Taille recommandée :
Table 2.8 – Taille de swap recommandée
RAM Swap (sans hibernation) Swap (avec hibernation)
< 2 GB 2x RAM 3x RAM
2-8 GB Égal à RAM 2x RAM
8-64 GB 4-8 GB RAM + 4-8 GB
> 64 GB 4 GB minimum RAM + 4 GB
2.6 Commandes de Gestion des Disques
2.6.1 Lister les Périphériques
1 # lsblk - Tree view des peripheriques
2 lsblk
3 lsblk -f # Avec systemes de fichiers
34
CHAPITRE 2. DISQUES ET PARTITIONS Système Linux - Ubuntu
4 lsblk -o NAME , SIZE , TYPE , MOUNTPOINT , UUID
5
6 # fdisk - Lister les partitions
7 sudo fdisk -l
8 sudo fdisk -l / dev / sda # Pour un disque specifique
9
10 # parted - Alternative moderne
11 sudo parted -l
12
13 # blkid - UUID et types
14 sudo blkid
15
16 # df - Espace disque utilise
17 df -h # Human readable
18 df - hT # Avec types de FS
19
20 # du - Utilisation disque par dossier
21 du - sh / home /*
22 du -h -- max - depth =1 / var
Listing 2.6 – Commandes de listing
2.6.2 Partitionner avec fdisk
fdisk est l’outil classique de partitionnement pour MBR.
1 # Lancer fdisk sur un disque
2 sudo fdisk / dev / sdb
3
4 # Commandes interactives :
5 # m - Aide
6 # p - Afficher la table de partitions
7 # n - Nouvelle partition
8 # d - Supprimer une partition
9 # t - Changer le type
10 # w - Ecrire les changements
11 # q - Quitter sans sauvegarder
12
13 # Exemple de creation de partition
14 Command ( m for help ) : n
15 Partition type
16 p primary (0 primary , 0 extended , 4 free )
17 e extended ( container for logical partitions )
18 Select ( default p ) : p
19 Partition number (1 -4 , default 1) : 1
20 First sector (...) : [ Enter ]
21 Last sector (...) : +10 G # 10 GB
22
23 Command ( m for help ) : w # Sauvegarder
35
CHAPITRE 2. DISQUES ET PARTITIONS Système Linux - Ubuntu
Listing 2.7 – Utilisation de fdisk
2.6.3 Partitionner avec parted/gparted
parted supporte à la fois MBR et GPT.
1 # Mode interactif
2 sudo parted / dev / sdb
3
4 # Commandes parted :
5 ( parted ) print # Afficher
6 ( parted ) mklabel gpt # Creer table GPT
7 ( parted ) mkpart primary ext4 0% 50% # Partition 50%
8 ( parted ) mkpart primary ext4 50% 100%
9 ( parted ) quit
10
11 # Mode commande directe
12 sudo parted / dev / sdb mklabel gpt
13 sudo parted / dev / sdb mkpart primary ext4 0 GB 10 GB
14
15 # GParted - Interface graphique
16 sudo apt install gparted
17 sudo gparted # Lancer
Listing 2.8 – Utilisation de parted
2.6.4 Formater les Partitions
1 # ext4 ( Linux )
2 sudo mkfs . ext4 / dev / sdb1
3 sudo mkfs . ext4 -L " MonDisque " / dev / sdb1 # Avec label
4
5 # ext3
6 sudo mkfs . ext3 / dev / sdb1
7
8 # FAT32 ( compatible Windows )
9 sudo mkfs . vfat -F 32 / dev / sdb1
10
11 # NTFS ( Windows )
12 sudo mkfs . ntfs / dev / sdb1
13
14 # XFS
15 sudo mkfs . xfs / dev / sdb1
16
17 # Swap
18 sudo mkswap / dev / sdb2
19 sudo swapon / dev / sdb2 # Activer
36
CHAPITRE 2. DISQUES ET PARTITIONS Système Linux - Ubuntu
Listing 2.9 – Formatage des partitions
2.6.5 Monter et Démonter
1 # Creer un point de montage
2 sudo mkdir -p / mnt / donnees
3
4 # Monter temporairement
5 sudo mount / dev / sdb1 / mnt / donnees
6 sudo mount -t ext4 / dev / sdb1 / mnt / donnees # Specifier type
7
8 # Verifier le montage
9 mount | grep sdb1
10 df -h / mnt / donnees
11
12 # Demonter
13 sudo umount / mnt / donnees
14 # ou
15 sudo umount / dev / sdb1
16
17 # Montage avec options
18 sudo mount -o rw , noexec , nosuid / dev / sdb1 / mnt / donnees
19
20 # Remonter en lecture seule
21 sudo mount -o remount , ro / mnt / donnees
Listing 2.10 – Montage de partitions
2.6.6 Montage Permanent avec /etc/fstab
Le fichier /etc/fstab définit les partitions à monter au démarrage.
1 # Format : device mountpoint type options dump pass
2 UUID = xxx - yyy / ext4 defaults 0 1
3 UUID = aaa - bbb / home ext4 defaults 0 2
4 UUID = ccc - ddd none swap sw 0 0
5 / dev / sdb1 / mnt / usb auto noauto , user 0 0
Listing 2.11 – Format de /etc/fstab
Champs de /etc/fstab :
1. Device : UUID, LABEL ou /dev/sdXN
2. Mount point : Où monter
3. Type : ext4, swap, auto, etc.
4. Options : defaults, ro, rw, noexec, user, etc.
5. Dump : Sauvegarde (0=non, 1=oui)
37
CHAPITRE 2. DISQUES ET PARTITIONS Système Linux - Ubuntu
6. Pass : Ordre vérification fsck (0=non, 1=root, 2=autres)
Table 2.9 – Options de montage courantes
Option Description
defaults rw, suid, dev, exec, auto, nouser, async
rw / ro Lecture-écriture / Lecture seule
noexec Interdit l’exécution de binaires
nosuid Ignore les bits SUID/SGID
nodev Ignore les fichiers spéciaux
user Permet aux utilisateurs de monter
noauto Ne monte pas au boot
nofail Continue le boot même si montage échoue
1 # Verifier la syntaxe
2 sudo findmnt -- verify
3
4 # Tester le montage
5 sudo mount -a # Monte tout ce qui n ’ est pas monte
6
7 # Recharger systemd
8 sudo systemctl daemon - reload
Listing 2.12 – Tester /etc/fstab
2.7 Gestion Avancée : LVM
2.7.1 Introduction à LVM
LVM (Logical Volume Manager) offre une gestion flexible des volumes :
— Redimensionnement : Agrandir/réduire à chaud
— Snapshots : Copies instantanées
— Agrégation : Combiner plusieurs disques
— Migration : Déplacer données entre disques
38
CHAPITRE 2. DISQUES ET PARTITIONS Système Linux - Ubuntu
Physical Volumes
PV PV PV
sda1 sdb1 sdc1
Volume Group (vg_data)
LV LV LV
home var tmp
Logical Volumes
Figure 2.5 – Architecture LVM
2.7.2 Commandes LVM
1 # Installer LVM
2 sudo apt install lvm2
3
4 # Creer Physical Volumes
5 sudo pvcreate / dev / sdb1 / dev / sdc1
6 sudo pvdisplay
7 sudo pvs # Vue resumee
8
9 # Creer Volume Group
10 sudo vgcreate vg_data / dev / sdb1 / dev / sdc1
11 sudo vgdisplay
12 sudo vgs
13
14 # Creer Logical Volumes
15 sudo lvcreate -L 10 G -n lv_home vg_data
16 sudo lvcreate -L 20 G -n lv_var vg_data
17 sudo lvcreate -l 100% FREE -n lv_tmp vg_data # Reste
18 sudo lvdisplay
19 sudo lvs
20
21 # Formater les LV
22 sudo mkfs . ext4 / dev / vg_data / lv_home
23 sudo mkfs . ext4 / dev / vg_data / lv_var
24
25 # Monter
39
CHAPITRE 2. DISQUES ET PARTITIONS Système Linux - Ubuntu
26 sudo mkdir -p / mnt /{ home , var }
27 sudo mount / dev / vg_data / lv_home / mnt / home
28 sudo mount / dev / vg_data / lv_var / mnt / var
29
30 # Agrandir un LV
31 sudo lvextend -L +5 G / dev / vg_data / lv_home
32 sudo resize2fs / dev / vg_data / lv_home # Agrandir FS
33
34 # Reduire ( attention : donnees !)
35 sudo umount / dev / vg_data / lv_home
36 sudo e2fsck -f / dev / vg_data / lv_home
37 sudo resize2fs / dev / vg_data / lv_home 8 G
38 sudo lvreduce -L 8 G / dev / vg_data / lv_home
39
40 # Snapshot
41 sudo lvcreate -L 2 G -s -n snap_home / dev / vg_data / lv_home
42 sudo mount / dev / vg_data / snap_home / mnt / snap
Listing 2.13 – Gestion LVM
2.8 Arborescence du Système de Fichiers
2.8.1 Filesystem Hierarchy Standard (FHS)
Linux suit le FHS qui définit la structure des répertoires.
40
CHAPITRE 2. DISQUES ET PARTITIONS Système Linux - Ubuntu
/
bin (commandes essentielles)
boot (noyau
dev (peripheriques)
etc (configuration)
apt
network
ssh
systemd
home (utilisateurs)
user1
user2
lib (bibliotheques)
media (montage auto)
mnt (montage temporaire)
opt (applications tierces)
proc (infos processus)
root (home du root)
run (donnees runtime)
sbin (admin systeme)
srv (donnees services)
sys (infos systeme)
tmp (temporaire)
usr (programmes)
bin
lib
local
share
var (donnees variables)
log
mail 41
www
Figure 2.6 – Arborescence standard Linux (FHS)
CHAPITRE 2. DISQUES ET PARTITIONS Système Linux - Ubuntu
2.8.2 Description Détaillée des Répertoires
Table 2.10 – Répertoires standards Linux
Répertoire Description
/ Racine du système, point de départ de toute l’arbores-
cence
/bin Commandes essentielles disponibles pour tous (ls, cp,
mv, bash)
/boot Noyau Linux, initrd, fichiers GRUB
/dev Fichiers de périphériques (disques, terminaux, null, ran-
dom)
/etc Fichiers de configuration système et applications
/etc/network Configuration réseau
/etc/apt Configuration APT ([Link])
/home Répertoires personnels des utilisateurs
/lib Bibliothèques partagées essentielles et modules noyau
/media Points de montage automatique (USB, CD)
/mnt Points de montage temporaires manuels
/opt Logiciels optionnels tiers (Google Chrome, Skype)
/proc Système de fichiers virtuel, informations processus et
noyau
/root Répertoire personnel du super-utilisateur
/run Données runtime temporaires (PID files)
/sbin Binaires système et administration (fsck, reboot, fdisk)
/srv Données des services (www, ftp)
/sys Informations sur le matériel et les pilotes
/tmp Fichiers temporaires (nettoyés au reboot)
/usr Hiérarchie secondaire, programmes et données
/usr/bin Commandes utilisateur non essentielles
/usr/lib Bibliothèques des programmes dans /usr
/usr/local Programmes installés localement
/usr/share Données partagées (doc, man, icons)
/var Données variables (logs, caches, spools)
/var/log Fichiers journaux système et applications
/var/www Fichiers web (Apache, Nginx)
/var/mail Boîtes aux lettres des utilisateurs
2.9 Processus de Démarrage Détaillé
2.9.1 Séquence Complète de Boot
Le démarrage d’un système Linux Ubuntu suit une séquence précise :
1. BIOS/UEFI : Initialisation matérielle
42
CHAPITRE 2. DISQUES ET PARTITIONS Système Linux - Ubuntu
2. MBR/ESP : Chargement du bootloader
3. GRUB : Menu de démarrage
4. Kernel : Chargement du noyau
5. initramfs : Système de fichiers temporaire
6. systemd : Gestionnaire d’init
7. Services : Démarrage des services
8. Login : Écran de connexion
1. Mise sous tension
2. BIOS/UEFI
~2s
POST, détection matériel
3. MBR/ESP
Premier secteur
4. GRUB
~1s
Menu bootloader
5. Kernel Linux
~3s
Initialisation
6. initramfs
Modules essentiels
7. systemd (PID 1)
~5s
Gestionnaire d’init
8. Services
network, ssh, etc.
9. Login
GDM/Console
Figure 2.7 – Séquence de démarrage Ubuntu
2.9.2 GRUB - Le Bootloader
GRUB (GRand Unified Bootloader) est le bootloader par défaut d’Ubuntu.
Fichiers importants :
— /boot/grub/[Link] : Configuration générée (NE PAS ÉDITER)
— /etc/default/grub : Paramètres utilisateur
— /etc/grub.d/ : Scripts de génération
43
CHAPITRE 2. DISQUES ET PARTITIONS Système Linux - Ubuntu
1 # Editer la configuration
2 sudo nano / etc / default / grub
3
4 # Parametres importants :
5 GRUB_DEFAULT =0 # Entree par defaut
6 GRUB_TIMEOUT =10 # Delai en secondes
7 GRUB_CMDLI NE _L I NU X_ DE F AU LT = " quiet splash "
8 GRUB_CMDLINE_LINUX = " " # Parametres noyau
9
10 # Regenerer grub . cfg
11 sudo update - grub
12 # ou
13 sudo grub - mkconfig -o / boot / grub / grub . cfg
14
15 # Installer GRUB sur un disque
16 sudo grub - install / dev / sda
17
18 # Lister les noyaux disponibles
19 ls / boot / vmlinuz -*
Listing 2.14 – Configuration GRUB
Travaux Pratiques - Chapitre 2
TP2 : Gestion des Disques et Partitions sous Ubuntu
Durée estimée : 4 heures
Objectifs :
— Comprendre le partitionnement MBR et GPT
— Identifier les périphériques de stockage
— Créer et formater des partitions
— Monter et configurer le montage automatique
— Explorer l’arborescence du système
— Utiliser LVM pour la gestion flexible
IMPORTANT : Ce TP utilise un disque virtuel. N’effectuez JAMAIS ces opérations
sur votre disque système principal sans sauvegarde !
Partie 1 : Exploration des Disques
Exercice 1.1 : Identification
1. Listez tous les périphériques de stockage :
1 lsblk
2 lsblk -f
3 sudo fdisk -l
2. Identifiez votre disque principal (probablement sda ou vda)
44
CHAPITRE 2. DISQUES ET PARTITIONS Système Linux - Ubuntu
3. Affichez les informations détaillées :
1 sudo hdparm -I / dev / sda # Informations disque
2 sudo smartctl -a / dev / sda # Sante du disque ( installer
smartmontools )
4. Créez un rapport :
1 cat > ~/ TP2_disques . txt << ’ END ’
2 === PERIPHERIQUES DE STOCKAGE ===
3 $ ( lsblk -o NAME , SIZE , TYPE , MOUNTPOINT , FSTYPE )
4
5 === PARTITIONS MONTEES ===
6 $ ( df - hT )
7
8 === UUID DES PARTITIONS ===
9 $ ( sudo blkid )
10 END
Exercice 1.2 : Analyse de l’arborescence
1. Explorez les répertoires principaux :
1 # Taille des repertoires racine
2 du - sh /* 2 >/ dev / null | sort -h
3
4 # Repertoires les plus volumineux
5 du -h / home / var / usr | sort - hr | head -20
6
7 # Fichiers les plus gros
8 sudo find / - type f - size +100 M - exec ls - lh {} \; 2 >/ dev / null
9
10 # Nombre de fichiers par repertoire
11 for dir in /*; do echo " $dir : $ ( find $dir - type f 2 >/ dev / null
| wc -l ) " ; done
2. Créez un diagramme de l’arborescence :
1 tree -L 2 -d / > ~/ arborescence . txt
Partie 2 : Ajout d’un Disque Virtuel
Exercice 2.1 : Créer un Disque Virtuel
1. Dans VirtualBox : Fichier > Gestionnaire de médias virtuels
2. Créez un nouveau disque VDI de 10 GB
3. Attachez-le à votre VM (Stockage > Contrôleur SATA > Ajouter)
4. Redémarrez ou actualisez : sudo partprobe
5. Vérifiez : lsblk (vous devriez voir /dev/sdb)
Exercice 2.2 : Partitionnement avec fdisk
1. Lancez fdisk :
45
CHAPITRE 2. DISQUES ET PARTITIONS Système Linux - Ubuntu
1 sudo fdisk / dev / sdb
2. Créez une table de partitions :
1 Command ( m for help ) : o # Nouvelle table MBR
2 Created a new DOS disklabel
3. Créez 3 partitions :
1 # Partition 1 : 3 GB ext4
2 Command : n
3 Partition type : p
4 Partition number : 1
5 First sector : [ Enter ]
6 Last sector : +3 G
7
8 # Partition 2 : 2 GB swap
9 Command : n
10 Partition type : p
11 Partition number : 2
12 First sector : [ Enter ]
13 Last sector : +2 G
14
15 # Partition 3 : Reste ext4
16 Command : n
17 Partition type : p
18 Partition number : 3
19 First sector : [ Enter ]
20 Last sector : [ Enter ] # Utilise le reste
4. Changez le type de la partition 2 pour swap :
1 Command : t
2 Partition number : 2
3 Hex code : 82 # Linux swap
5. Sauvegardez :
1 Command : w
2 The partition table has been altered .
6. Vérifiez :
1 sudo fdisk -l / dev / sdb
2 lsblk
Exercice 2.3 : Formatage
1. Formatez les partitions :
1 # Partition 1 en ext4
2 sudo mkfs . ext4 -L " Donnees " / dev / sdb1
46
CHAPITRE 2. DISQUES ET PARTITIONS Système Linux - Ubuntu
4 # Partition 2 en swap
5 sudo mkswap -L " Swap2 " / dev / sdb2
6
7 # Partition 3 en ext4
8 sudo mkfs . ext4 -L " Archives " / dev / sdb3
2. Vérifiez :
1 lsblk -f
2 sudo blkid | grep sdb
Partie 3 : Montage et Configuration
Exercice 3.1 : Montage Manuel
1. Créez les points de montage :
1 sudo mkdir -p / mnt /{ donnees , archives }
2. Montez les partitions :
1 sudo mount / dev / sdb1 / mnt / donnees
2 sudo mount / dev / sdb3 / mnt / archives
3. Activez le swap :
1 sudo swapon / dev / sdb2
4. Vérifiez :
1 df -h
2 mount | grep sdb
3 swapon -- show
4 free -h
5. Testez l’écriture :
1 sudo touch / mnt / donnees / test . txt
2 echo " Test TP2 " | sudo tee / mnt / donnees / test . txt
3 cat / mnt / donnees / test . txt
Exercice 3.2 : Configuration /etc/fstab
1. Sauvegardez fstab :
1 sudo cp / etc / fstab / etc / fstab . backup
2. Récupérez les UUID :
1 sudo blkid | grep sdb
3. Éditez /etc/fstab :
1 sudo nano / etc / fstab
47
CHAPITRE 2. DISQUES ET PARTITIONS Système Linux - Ubuntu
4. Ajoutez les lignes (remplacez UUID-XXX par vos vrais UUID) :
1 # TP2 - Disque additionnel
2 UUID = UUID - DE - SDB1 / mnt / donnees ext4 defaults 0 2
3 UUID = UUID - DE - SDB3 / mnt / archives ext4 defaults 0 2
4 UUID = UUID - DE - SDB2 none swap sw 0 0
5. Testez la configuration :
1 # Demonter tout
2 sudo umount / mnt / donnees
3 sudo umount / mnt / archives
4 sudo swapoff / dev / sdb2
5
6 # Tester le montage automatique
7 sudo mount -a
8 swapon -- show
9 df -h | grep mnt
6. Vérifiez au redémarrage :
1 sudo reboot
2 # Apres redemarrage
3 df -h | grep mnt
Partie 4 : LVM (Optionnel Avancé)
Exercice 4.1 : Création d’un Volume LVM
1. Ajoutez un 3ème disque virtuel de 5 GB
2. Installez LVM :
1 sudo apt install lvm2
3. Créez un Physical Volume :
1 sudo pvcreate / dev / sdc
2 sudo pvdisplay
4. Créez un Volume Group :
1 sudo vgcreate vg_tp2 / dev / sdc
2 sudo vgdisplay vg_tp2
5. Créez des Logical Volumes :
1 # Volume de 2 GB
2 sudo lvcreate -L 2 G -n lv_projets vg_tp2
3
4 # Volume utilisant 50% du reste
5 sudo lvcreate -l 50% FREE -n lv_backups vg_tp2
6
7 # Afficher
8 sudo lvdisplay
9 sudo lvs
48
CHAPITRE 2. DISQUES ET PARTITIONS Système Linux - Ubuntu
6. Formatez et montez :
1 # Formater
2 sudo mkfs . ext4 / dev / vg_tp2 / lv_projets
3 sudo mkfs . ext4 / dev / vg_tp2 / lv_backups
4
5 # Creer points de montage
6 sudo mkdir -p / mnt /{ projets , backups }
7
8 # Monter
9 sudo mount / dev / vg_tp2 / lv_projets / mnt / projets
10 sudo mount / dev / vg_tp2 / lv_backups / mnt / backups
11
12 # Verifier
13 df -h | grep vg_tp2
Exercice 4.2 : Redimensionnement LVM
1. Agrandir un volume logique :
1 # Ajouter 500 MB
2 sudo lvextend -L +500 M / dev / vg_tp2 / lv_projets
3
4 # Agrandir le filesystem
5 sudo resize2fs / dev / vg_tp2 / lv_projets
6
7 # Verifier
8 df -h / mnt / projets
2. Créer un snapshot :
1 # Creer des donnees de test
2 echo " Donnees importantes " | sudo tee / mnt / projets / important .
txt
3
4 # Creer snapshot
5 sudo lvcreate -L 500 M -s -n snap_projets / dev / vg_tp2 /
lv_projets
6
7 # Monter le snapshot
8 sudo mkdir / mnt / snap
9 sudo mount / dev / vg_tp2 / snap_projets / mnt / snap
10
11 # Comparer
12 diff -r / mnt / projets / mnt / snap
13
14 # Modifier l ’ original
15 echo " Modification " | sudo tee / mnt / projets / modif . txt
16
17 # Le snapshot garde l ’ ancien etat
18 ls / mnt / snap
19 ls / mnt / projets
49
CHAPITRE 2. DISQUES ET PARTITIONS Système Linux - Ubuntu
Partie 5 : Analyse et Questions
Exercice 5.1 : Analyse de Performance
1. Testez la vitesse du disque :
1 # Test d ’ ecriture
2 sudo dd if =/ dev / zero of =/ mnt / donnees / testfile bs =1 G count =1
oflag = dsync
3 # Noter le debit
4
5 # Test de lecture
6 sudo dd if =/ mnt / donnees / testfile of =/ dev / null bs =1 G
7 # Noter le debit
8
9 # Nettoyer
10 sudo rm / mnt / donnees / testfile
2. Analysez l’utilisation :
1 # Inodes
2 df -i
3
4 # Blocs
5 tune2fs -l / dev / sdb1 | grep -i block
6
7 # Fragmentation
8 sudo e2fsck - fn / dev / sdb1
Exercice 5.2 : Questions Théoriques
Répondez aux questions suivantes :
1. Quelle est la différence entre une partition primaire, étendue et logique ?
2. Expliquez la différence entre MBR et GPT. Quand utiliser l’un ou l’autre ?
3. Qu’est-ce qu’un UUID ? Pourquoi est-il préférable au chemin /dev/sdX dans /etc/f-
stab ?
4. Pourquoi Linux utilise-t-il une partition swap ? Quelle taille recommandez-vous ?
5. Qu’est-ce que la journalisation dans ext4 ? Quel avantage apporte-t-elle ?
6. Expliquez les avantages de LVM par rapport au partitionnement traditionnel.
7. Que signifie FHS ? Citez 5 répertoires importants et leur utilité.
8. Décrivez les étapes du processus de démarrage de Linux (du BIOS au login).
Exercice 5.3 : Schéma de Partitionnement
Proposez un schéma de partitionnement pour un serveur Ubuntu avec :
— Disque de 500 GB
— Usage : Serveur web + base de données
— Contraintes : Séparer système, données, logs, swap
Justifiez vos choix de tailles et de types de systèmes de fichiers.
Partie 6 : Nettoyage
Exercice 6.1 : Nettoyage du TP
50
CHAPITRE 2. DISQUES ET PARTITIONS Système Linux - Ubuntu
1. Démontez tout :
1 # Demonter LVM
2 sudo umount / mnt / snap
3 sudo umount / mnt / projets
4 sudo umount / mnt / backups
5
6 # Supprimer les volumes LVM
7 sudo lvremove / dev / vg_tp2 / snap_projets
8 sudo lvremove / dev / vg_tp2 / lv_projets
9 sudo lvremove / dev / vg_tp2 / lv_backups
10 sudo vgremove vg_tp2
11 sudo pvremove / dev / sdc
12
13 # Demonter partitions normales
14 sudo umount / mnt / donnees
15 sudo umount / mnt / archives
16 sudo swapoff / dev / sdb2
17
18 # Retirer de fstab
19 sudo nano / etc / fstab # Commenter les lignes TP2
2. Créez un snapshot de votre VM : "Ubuntu-TP2-Complete"
Critères d’Évaluation :
— Identification et analyse des disques : 15%
— Partitionnement correct : 20%
— Formatage et montage : 20%
— Configuration /etc/fstab : 15%
— LVM (optionnel bonus) : +10%
— Questions théoriques : 30%
Livrables :
1. Fichier TP2_disques.txt
2. Captures d’écran de lsblk, df -h
3. Copie de votre /etc/fstab modifié
4. Document avec réponses aux questions
5. Schéma de partitionnement proposé
51
Chapitre 3
Administration sous Linux
3.1 Gestion des Utilisateurs et Groupes
3.1.1 Introduction aux Utilisateurs
Linux est un système multi-utilisateurs. Comprendre la gestion des utilisateurs est
fondamental pour l’administration système.
Types d’utilisateurs :
— root : Super-utilisateur (UID 0)
— Utilisateurs système : Services (UID 1-999)
— Utilisateurs normaux : Humains (UID 1000+)
ROOT
UID=0
Tous droits
Contrôle total Contrôle total
alice bob charlie
Permissions limitées Permissions limitées
UID=1001 UID=1002 UID=1003
Limité Limité Limité
Figure 3.1 – Hiérarchie des utilisateurs sous Linux
3.1.2 Fichiers de Configuration
/etc/passwd
Le fichier principal contenant les informations utilisateurs.
52
CHAPITRE 3. ADMINISTRATION SOUS LINUX Système Linux - Ubuntu
1 # Format : username : password : UID : GID : GECOS : home : shell
2 root : x :0:0: root :/ root :/ bin / bash
3 daemon : x :1:1: daemon :/ usr / sbin :/ usr / sbin / nologin
4 alice : x :1001:1001: Alice Dupont , , ,:/ home / alice :/ bin / bash
5 bob : x :1002:1002: Bob Martin :/ home / bob :/ bin / bash
Listing 3.1 – Structure de /etc/passwd
Champs détaillés :
Table 3.1 – Format du fichier /etc/passwd
Champ Exemple Description
1. Username alice Nom de connexion (1-32 caractères, lo-
wercase recommandé)
2. Password x x = mot de passe dans /etc/shadow, *
= compte désactivé
3. UID 1001 0=root, 1-999=système, 1000+=utili-
sateurs normaux
4. GID 1001 Groupe primaire de l’utilisateur
5. GECOS Alice Du- Nom complet, bureau, téléphone,
pont,Bureau autres (séparés par ,)
101,555-1234
6. Home /home/alice Répertoire personnel de l’utilisateur
7. Shell /bin/bash Shell de connexion (/bin/bash,
/bin/sh, /usr/sbin/nologin)
/etc/shadow
Contient les mots de passe chiffrés (accessible uniquement par root).
1 # Format : username : password : lastchange : min : max : warn : inactive : expire
: reserved
2 alice : $6$rounds =656000 $ ...:19000:0:99999:7:::
3 bob : $6$rounds =656000 $ ...:19001:0:99999:7:::
Listing 3.2 – Structure de /etc/shadow
Table 3.2 – Champs de /etc/shadow
Champ Description
Password Hash du mot de passe ($6$=SHA-512, $5$=SHA-256, $1$=MD5)
Last change Jours depuis 01/01/1970 du dernier changement
Min Jours minimum avant changement autorisé
Max Jours maximum avant changement obligatoire
Warn Jours d’avertissement avant expiration
Inactive Jours avant désactivation après expiration
Expire Date d’expiration du compte (jours depuis epoch)
53
CHAPITRE 3. ADMINISTRATION SOUS LINUX Système Linux - Ubuntu
/etc/group
Définit les groupes d’utilisateurs.
1 # Format : groupname : password : GID : members
2 root : x :0:
3 sudo : x :27: alice , bob
4 developers : x :1100: alice , charlie
Listing 3.3 – Structure de /etc/group
3.1.3 Commandes de Gestion des Utilisateurs
Table 3.3 – Commandes de gestion des utilisateurs
Commande Description et usage
useradd Créer un utilisateur (bas niveau)
adduser Créer un utilisateur (haut niveau, interactif, Ubuntu)
usermod Modifier un utilisateur existant
userdel Supprimer un utilisateur
passwd Changer le mot de passe
chage Gérer l’expiration des mots de passe
id Afficher les informations utilisateur
who Utilisateurs connectés
w Utilisateurs et activités
last Historique des connexions
lastlog Dernières connexions de tous les utilisateurs
1 # Creer un utilisateur ( methode Ubuntu recommandee )
2 sudo adduser alice
3 # Suit un dialogue interactif
4
5 # Creer un utilisateur ( methode bas niveau )
6 sudo useradd -m -s / bin / bash -c " Alice Dupont " alice
7 sudo passwd alice
8
9 # Creer avec options completes
10 sudo useradd -m \ # Creer home
11 -s / bin / bash \ # Shell
12 -c " Bob Martin " \ # Nom complet
13 -G sudo , developers \ # Groupes supplementaires
14 -e 2026 -12 -31 \ # Date expiration
15 bob
16
17 # Modifier un utilisateur
18 sudo usermod -c " Alice Dupont - Martin " alice # Changer nom
19 sudo usermod -s / bin / zsh alice # Changer shell
54
CHAPITRE 3. ADMINISTRATION SOUS LINUX Système Linux - Ubuntu
20 sudo usermod - aG sudo alice # Ajouter au groupe
sudo
21 sudo usermod -L alice # Verrouiller compte
22 sudo usermod -U alice # Deverrouiller
23
24 # Supprimer un utilisateur
25 sudo userdel alice # Garde le home
26 sudo userdel -r alice # Supprime le home
27 sudo userdel -r -f alice # Force la suppression
28
29 # Gestion du mot de passe
30 sudo passwd alice # Changer le mot de passe
31 sudo passwd -l alice # Verrouiller
32 sudo passwd -u alice # Deverrouiller
33 sudo passwd -d alice # Supprimer le mot de passe
34 sudo passwd -e alice # Forcer changement a la prochaine
connexion
35
36 # Expiration et aging
37 sudo chage -l alice # Afficher les infos
38 sudo chage -M 90 alice # Max 90 jours
39 sudo chage -m 7 alice # Min 7 jours
40 sudo chage -W 14 alice # Warning 14 jours avant
41 sudo chage -I 30 alice # Inactive apres 30 jours
42 sudo chage -E 2026 -12 -31 alice # Expiration du compte
43
44 # Informations
45 id alice # UID , GID , groupes
46 id -u alice # Juste l ’ UID
47 id -g alice # Juste le GID
48 id - Gn alice # Liste des groupes
49
50 # Utilisateurs connectes
51 who # Liste simple
52 w # Detaille avec activites
53 last # Historique
54 last alice # Pour un utilisateur specifique
55 lastlog # Dernieres connexions
Listing 3.4 – Gestion détaillée des utilisateurs
3.1.4 Commandes de Gestion des Groupes
1 # Creer un groupe
2 sudo groupadd developers
3 sudo groupadd -g 2000 admins # Avec GID specifique
4
5 # Modifier un groupe
6 sudo groupmod -n newname oldname # Renommer
55
CHAPITRE 3. ADMINISTRATION SOUS LINUX Système Linux - Ubuntu
7 sudo groupmod -g 2100 developers # Changer GID
8
9 # Supprimer un groupe
10 sudo groupdel developers
11
12 # Ajouter utilisateur a un groupe
13 sudo usermod - aG developers alice # -a pour append
14 sudo gpasswd -a alice developers # Alternative
15
16 # Retirer utilisateur d ’ un groupe
17 sudo gpasswd -d alice developers
18
19 # Definir administrateurs de groupe
20 sudo gpasswd -A alice , bob developers
21
22 # Lister les membres d ’ un groupe
23 getent group developers
24 grep developers / etc / group
25
26 # Afficher tous les groupes
27 cat / etc / group
28 getent group
29
30 # Groupes d ’ un utilisateur
31 groups alice
32 id - Gn alice
33
34 # Changer groupe primaire
35 sudo usermod -g developers alice
Listing 3.5 – Gestion des groupes
3.2 Gestion des Permissions
3.2.1 Modèle de Permissions Unix
Le modèle de permissions Linux repose sur trois types d’accès pour trois catégories
d’utilisateurs.
Table 3.4 – Types de permissions
Symbole Nom Fichier Répertoire
r Read Lire le contenu Lister le contenu (ls)
w Write Modifier le contenu Créer/supprimer fichiers
x Execute Exécuter comme programme Entrer dans le répertoire (cd)
- Aucun Pas d’accès Pas d’accès
56
CHAPITRE 3. ADMINISTRATION SOUS LINUX Système Linux - Ubuntu
Table 3.5 – Catégories d’utilisateurs
Symbole Catégorie Description
u User (Owner) Propriétaire du fichier
g Group Membres du groupe propriétaire
o Others Tous les autres utilisateurs
a All Tous (u+g+o)
- r w x r w - r - -
Type Propriétaire Groupe Autres
Exemple : -rwxrw-r–
- = fichier normal
rwx = owner : lecture, écriture, exécution
rw- = group : lecture, écriture
r– = others : lecture seule
Figure 3.2 – Structure des permissions Linux
3.2.2 Représentation Octale
Les permissions peuvent être représentées en octal (base 8).
Table 3.6 – Valeurs octales des permissions
Octal Binaire Symbole Permissions Description
0 000 — Aucune Pas d’accès
1 001 –x Exécution Exécuter uniquement
2 010 -w- Écriture Écrire uniquement
3 011 -wx Écriture + Exécution Écrire et exécuter
4 100 r– Lecture Lire uniquement
5 101 r-x Lecture + Exécution Lire et exécuter
6 110 rw- Lecture + Écriture Lire et écrire
7 111 rwx Tous Lecture, écriture, exécution
Exemples de permissions octales :
57
CHAPITRE 3. ADMINISTRATION SOUS LINUX Système Linux - Ubuntu
Table 3.7 – Permissions courantes en octal
Octal Symbole Usage
644 -rw-r–r– Fichier normal (lisible par tous, modifiable par le propriétaire)
755 -rwxr-xr-x Script/programme (exécutable par tous)
600 -rw——- Fichier privé (propriétaire uniquement)
700 -rwx—— Script privé
664 -rw-rw-r– Fichier collaboratif (groupe peut modifier)
775 -rwxrwxr-x Répertoire partagé (groupe peut ajouter)
777 -rwxrwxrwx Tous droits (DANGEREUX - à éviter)
3.2.3 Commande chmod
1 # Mode octal
2 chmod 644 fichier . txt # rw -r - -r - -
3 chmod 755 script . sh # rwxr - xr - x
4 chmod 600 secret . txt # rw - - - - - - -
5 chmod 700 ~/ bin / myscript # rwx - - - - - -
6
7 # Mode symbolique
8 # Format : [ ugoa ][+ -=][ rwx ]
9
10 # Ajouter des permissions
11 chmod u + x script . sh # Owner : ajouter execution
12 chmod g + w fichier . txt # Group : ajouter ecriture
13 chmod o + r document . txt # Others : ajouter lecture
14 chmod a + x programme # All : ajouter execution
15
16 # Retirer des permissions
17 chmod u - w fichier . txt # Owner : retirer ecriture
18 chmod g - x script . sh # Group : retirer execution
19 chmod o - r secret . txt # Others : retirer lecture
20
21 # Definir exactement
22 chmod u = rwx , g = rx , o = r script . sh # u = rwx , g = rx , o = r
23 chmod a = r fichier . txt # Tout le monde : lecture seule
24
25 # Recursif
26 chmod -R 755 / var / www / html / # Recursif sur repertoire
27 chmod -R u + rwX , g + rX , o + rX dir / # X = x uniquement sur repertoires
28
29 # Copier les permissions
30 chmod -- reference = file1 file2 # Copier permissions de file1 vers
file2
31
32 # Permissions speciales
33 chmod 4755 programme # SUID bit
34 chmod 2755 repertoire # SGID bit
58
CHAPITRE 3. ADMINISTRATION SOUS LINUX Système Linux - Ubuntu
35 chmod 1777 / tmp # Sticky bit
36
37 # Exemples pratiques
38 chmod 644 *. txt # Tous les . txt
39 chmod 755 $ ( find . - type f - name " *. sh " ) # Tous les scripts
40 find / var / www - type f - exec chmod 644 {} \; # Fichiers
41 find / var / www - type d - exec chmod 755 {} \; # Repertoires
Listing 3.6 – Utilisation de chmod
3.2.4 Commandes chown et chgrp
1 # chown - Changer proprietaire et / ou groupe
2 sudo chown alice fichier . txt # Nouveau proprietaire
3 sudo chown alice : developers fichier . txt # Proprietaire et groupe
4 sudo chown : developers fichier . txt # Groupe uniquement
5 sudo chown -R alice : alice / home / alice # Recursif
6
7 # Copier la propriete d ’ un autre fichier
8 sudo chown -- reference = file1 file2
9
10 # chgrp - Changer uniquement le groupe
11 sudo chgrp developers projet . txt
12 sudo chgrp -R developers / srv / projet /
13
14 # Exemples pratiques
15 # Donner un repertoire a un utilisateur
16 sudo chown -R alice : alice / home / alice
17 sudo chmod -R 750 / home / alice
18
19 # Configurer un projet collaboratif
20 sudo mkdir / srv / projet
21 sudo chgrp developers / srv / projet
22 sudo chmod 2775 / srv / projet # SGID + rwxrwxr - x
23
24 # Verifier les proprietes
25 ls -l fichier . txt
26 stat fichier . txt
Listing 3.7 – Changement de propriétaire
3.2.5 Permissions Spéciales
SUID (Set User ID)
Lorsqu’un fichier avec SUID est exécuté, il s’exécute avec les permissions du proprié-
taire.
59
CHAPITRE 3. ADMINISTRATION SOUS LINUX Système Linux - Ubuntu
1 # Definir SUID
2 chmod u + s programme
3 chmod 4755 programme # 4 = SUID
4
5 # Exemple : passwd
6 ls -l / usr / bin / passwd
7 # - rwsr - xr - x root root / usr / bin / passwd
8 # Le ’s ’ indique SUID
9
10 # passwd a besoin de SUID car il modifie / etc / shadow ( root
uniquement )
11 # Mais les utilisateurs doivent pouvoir changer leur mot de passe
Listing 3.8 – SUID
SGID (Set Group ID)
Sur fichier : s’exécute avec les permissions du groupe.
Sur répertoire : les nouveaux fichiers héritent du groupe du répertoire.
1 # Definir SGID
2 chmod g + s repertoire
3 chmod 2755 repertoire # 2 = SGID
4
5 # Exemple : repertoire collaboratif
6 sudo mkdir / srv / partage
7 sudo chgrp developers / srv / partage
8 sudo chmod 2775 / srv / partage
9
10 # Test
11 touch / srv / partage / test . txt
12 ls -l / srv / partage / test . txt
13 # Le groupe sera ’ developers ’ automatiquement
Listing 3.9 – SGID
Sticky Bit
Sur un répertoire, seul le propriétaire d’un fichier peut le supprimer (même si le ré-
pertoire est writable par tous).
1 # Definir Sticky Bit
2 chmod + t repertoire
3 chmod 1777 repertoire # 1 = Sticky
4
5 # Exemple : / tmp
6 ls - ld / tmp
7 # drwxrwxrwt root root / tmp
8 # Le ’t ’ indique sticky bit
60
CHAPITRE 3. ADMINISTRATION SOUS LINUX Système Linux - Ubuntu
10 # Tout le monde peut creer des fichiers dans / tmp
11 # Mais seul le proprietaire peut supprimer ses fichiers
Listing 3.10 – Sticky Bit
Table 3.8 – Résumé des permissions spéciales
Nom Octal Symbole Effet
SUID 4 s (owner x) Exécute avec UID du propriétaire
SGID 2 s (group x) Fichier : GID du groupe ; Répertoire : héritage
Sticky 1 t (other x) Seul le propriétaire peut supprimer
3.2.6 ACL (Access Control Lists)
Les ACL permettent des permissions plus fines que le modèle Unix traditionnel.
1 # Installer
2 sudo apt install acl
3
4 # Voir les ACL
5 getfacl fichier . txt
6
7 # Definir une ACL
8 # Format : setfacl -m u : user : perms fichier
9 setfacl -m u : alice : rw fichier . txt # Alice peut lire / ecrire
10 setfacl -m g : developers : rx script . sh # Groupe developers : r - x
11 setfacl -m o :: r fichier . txt # Others : lecture seule
12
13 # ACL par defaut ( pour nouveaux fichiers dans un repertoire )
14 setfacl -d -m g : developers : rw / srv / projet /
15
16 # Retirer une ACL
17 setfacl -x u : alice fichier . txt
18
19 # Retirer toutes les ACL
20 setfacl -b fichier . txt
21
22 # Recursif
23 setfacl -R -m u : alice : rx / srv / data /
24
25 # Copier ACL d ’ un fichier a un autre
26 getfacl file1 | setfacl -- set - file = - file2
27
28 # Exemple pratique
29 # Donner acces a alice et bob a un fichier de charlie
30 setfacl -m u : alice : rw / home / charlie / document . txt
31 setfacl -m u : bob : r / home / charlie / document . txt
32
61
CHAPITRE 3. ADMINISTRATION SOUS LINUX Système Linux - Ubuntu
33 # Verifier
34 getfacl / home / charlie / document . txt
35 ls -l / home / charlie / document . txt # Affiche ’+ ’ si ACL
Listing 3.11 – Utilisation des ACL
3.3 Sudo et Élévation de Privilèges
3.3.1 Le Système sudo
sudo (Super User DO) permet d’exécuter des commandes avec les privilèges root.
Avantages de sudo :
— Pas besoin du mot de passe root
— Audit des commandes exécutées
— Granularité fine des permissions
— Temporisation (cache pendant 15 min par défaut)
1 # Executer une commande en tant que root
2 sudo commande
3
4 # Executer en tant qu ’ un autre utilisateur
5 sudo -u alice commande
6
7 # Ouvrir un shell root
8 sudo -i # Login shell
9 sudo -s # Shell actuel
10 sudo su # Alternative ( moins recommandee )
11
12 # Editer un fichier protege
13 sudo nano / etc / fstab
14 sudoedit / etc / fstab # Prefere ( plus securise )
15
16 # Executer la derniere commande avec sudo
17 sudo !!
18
19 # Verifier les privileges sudo
20 sudo -l # Lister ce que je peux faire
21 sudo -v # Rafraichir le cache
22
23 # Executer sans mot de passe
24 sudo -n commande # Echoue si mot de passe requis
25
26 # Voir l ’ historique sudo
27 sudo cat / var / log / auth . log | grep sudo
28 journalctl - xe | grep sudo
Listing 3.12 – Utilisation de sudo
62
CHAPITRE 3. ADMINISTRATION SOUS LINUX Système Linux - Ubuntu
3.3.2 Configuration de sudo
Le fichier /etc/sudoers définit qui peut utiliser sudo.
1 # TOUJOURS utiliser visudo ( verifie la syntaxe )
2 sudo visudo
3
4 # Fichier / etc / sudoers - Format de base :
5 # user HOST =( USER ) COMMANDS
6
7 # Exemples :
8 alice ALL =( ALL : ALL ) ALL # alice peut tout faire
9 bob ALL =( ALL ) / usr / bin / apt # bob peut uniquement apt
10 % sudo ALL =( ALL : ALL ) ALL # Groupe sudo ( defaut Ubuntu )
11
12 # Sans mot de passe
13 alice ALL =( ALL ) NOPASSWD : ALL
14 bob ALL =( ALL ) NOPASSWD : / sbin / reboot , / sbin / shutdown
15
16 # Fichiers dans / etc / sudoers . d /
17 # Prefere pour organisation
18 sudo visudo -f / etc / sudoers . d / developers
19 % developers ALL =( ALL ) NOPASSWD : / usr / bin / systemctl
20
21 # Alias
22 # User_Alias
23 User_Alias ADMINS = alice , bob , charlie
24 User_Alias WEBADMINS = www - admin , web - ops
25
26 # Cmnd_Alias
27 Cmnd_Alias WEBCOMMANDS = / usr / sbin / apache2ctl , / usr / sbin / nginx
28 Cmnd_Alias SHUTDOWN = / sbin / shutdown , / sbin / reboot , / sbin / halt
29
30 # Utilisation des alias
31 ADMINS ALL =( ALL ) ALL
32 WEBADMINS ALL =( ALL ) WEBCOMMANDS
33
34 # Desactiver la demande de mot de passe pour certaines commandes
35 Defaults ! authenticate for SHUTDOWN
Listing 3.13 – Editer sudoers
Travaux Pratiques - Chapitre 3
TP3 : Administration des Utilisateurs et Permissions
Durée estimée : 4 heures
Objectifs :
— Créer et gérer des utilisateurs et groupes
63
CHAPITRE 3. ADMINISTRATION SOUS LINUX Système Linux - Ubuntu
— Maîtriser les permissions Unix
— Utiliser les permissions spéciales (SUID, SGID, Sticky)
— Configurer sudo
— Utiliser les ACL
Partie 1 : Création et Gestion des Utilisateurs
Exercice 1.1 : Créer des Utilisateurs
1. Créez trois utilisateurs avec adduser :
1 sudo adduser alice
2 sudo adduser bob
3 sudo adduser charlie
2. Créez un utilisateur avec useradd :
1 sudo useradd -m -s / bin / bash -c " David Martin " david
2 sudo passwd david
3. Vérifiez les entrées :
1 tail -4 / etc / passwd
2 tail -4 / etc / shadow # Necessite sudo
3 tail -4 / etc / group
4. Affichez les informations :
1 id alice
2 groups alice
3 finger alice # Installer finger si necessaire
Exercice 1.2 : Modifier et Supprimer
1. Modifiez alice :
1 sudo usermod -c " Alice Dupont - Martin " alice
2 sudo usermod -s / bin / zsh alice # Changer shell ( installer zsh
avant )
3 sudo usermod -L alice # Verrouiller
4 sudo usermod -U alice # Deverrouiller
2. Testez l’expiration :
1 sudo chage -l alice
2 sudo chage -M 90 -m 7 -W 14 alice
3 sudo chage -l alice
3. Supprimez david (simulation) :
1 sudo userdel david # Sans supprimer home
2 # sudo userdel -r david # Avec suppression home
Partie 2 : Gestion des Groupes
Exercice 2.1 : Créer des Groupes
64
CHAPITRE 3. ADMINISTRATION SOUS LINUX Système Linux - Ubuntu
1. Créez des groupes :
1 sudo groupadd developers
2 sudo groupadd testers
3 sudo groupadd managers
2. Ajoutez des utilisateurs :
1 sudo usermod - aG developers alice
2 sudo usermod - aG developers bob
3 sudo usermod - aG testers charlie
4 sudo usermod - aG managers alice
3. Vérifiez :
1 groups alice
2 groups bob
3 getent group developers
4 grep developers / etc / group
Partie 3 : Permissions
Exercice 3.1 : Permissions de Base
1. Créez un environnement de test :
1 mkdir ~/ tp3
2 cd ~/ tp3
3 touch file1 . txt file2 . txt script . sh
4 mkdir dir1 dir2
2. Pratiquez chmod octal :
1 chmod 644 file1 . txt
2 chmod 755 script . sh
3 chmod 600 file2 . txt
4 chmod 700 dir1
5 chmod 755 dir2
6 ls -l
3. Pratiquez chmod symbolique :
1 chmod u+x file1 . txt
2 chmod g-r file1 . txt
3 chmod o=- file2 . txt
4 chmod a+r script . sh
5 ls -l
4. Testez les effets :
1 # Creer un fichier non - lisible
2 chmod 000 secret . txt
3 cat secret . txt # Permission denied
4
65
CHAPITRE 3. ADMINISTRATION SOUS LINUX Système Linux - Ubuntu
5 # Reparer
6 chmod 644 secret . txt
7 cat secret . txt # OK
Exercice 3.2 : Projet Collaboratif
1. Créez une structure de projet :
1 sudo mkdir -p / srv / projet /{ src , docs , tests }
2 sudo chgrp -R developers / srv / projet
3 sudo chmod -R 2775 / srv / projet
4 ls - ld / srv / projet /*
2. Testez avec différents utilisateurs :
1 # En tant qu ’ alice ( membre de developers )
2 sudo su - alice
3 cd / srv / projet / src
4 touch alice_code . c
5 ls -l alice_code . c # Groupe = developers ( grace a SGID )
6 exit
7
8 # En tant que charlie ( pas membre )
9 sudo su - charlie
10 cd / srv / projet / src # OK ( lecture / execution )
11 touch charlie_code . c # Permission denied
12 exit
Exercice 3.3 : Permissions Spéciales
1. Testez Sticky Bit :
1 mkdir / tmp / shared
2 chmod 1777 / tmp / shared
3 ls - ld / tmp / shared
4
5 # Test multi - utilisateurs
6 sudo su - alice
7 touch / tmp / shared / alice_file
8 exit
9
10 sudo su - bob
11 rm / tmp / shared / alice_file # Permission denied
12 touch / tmp / shared / bob_file # OK
13 exit
2. Simulez SUID (démonstration) :
1 # Exemple : passwd a SUID
2 ls -l / usr / bin / passwd
3 # - rwsr - xr - x ( noter le ’s ’)
4
5 # Le s signifie SUID
66
CHAPITRE 3. ADMINISTRATION SOUS LINUX Système Linux - Ubuntu
6 # passwd peut modifier / etc / shadow car il s ’ execute en tant
que root
Partie 4 : Sudo
Exercice 4.1 : Configuration Sudo
1. Ajoutez alice au groupe sudo :
1 sudo usermod - aG sudo alice
2. Testez :
1 sudo su - alice
2 sudo apt update # Devrait demander le mot de passe d ’ alice
3 sudo -l # Liste les privileges
4 exit
3. Créez une règle personnalisée :
1 sudo visudo -f / etc / sudoers . d / custom
2
3 # Ajoutez :
4 bob ALL =( ALL ) NOPASSWD : / usr / bin / systemctl
5 charlie ALL =( ALL ) / usr / bin / apt
6
7 # Testez
8 sudo su - bob
9 sudo systemctl status ssh # Sans mot de passe
10 exit
Partie 5 : Questions et Nettoyage
Questions :
1. Quelle est la différence entre /etc/passwd et /etc/shadow ?
2. Expliquez la différence entre useradd et adduser.
3. Que signifie chmod 755 ? Décrivez chaque chiffre.
4. Qu’est-ce que SUID, SGID et Sticky Bit ? Donnez un exemple pour chacun.
5. Pourquoi utiliser sudo plutôt que se connecter en root ?
6. Quelle est la différence entre les permissions Unix classiques et les ACL ?
7. Comment faire pour qu’un répertoire soit accessible en écriture à un groupe mais
protégé contre la suppression mutuelle ?
Nettoyage :
1 # Supprimer les utilisateurs de test
2 sudo userdel -r alice
3 sudo userdel -r bob
4 sudo userdel -r charlie
5
6 # Supprimer les groupes
7 sudo groupdel developers
67
CHAPITRE 3. ADMINISTRATION SOUS LINUX Système Linux - Ubuntu
8 sudo groupdel testers
9 sudo groupdel managers
10
11 # Nettoyer / srv
12 sudo rm - rf / srv / projet
13
14 # Snapshot VM
Livrables :
1. Captures d’écran de vos créations d’utilisateurs
2. Fichier avec sortie de id pour chaque utilisateur
3. Document avec réponses aux questions théoriques
4. Schéma de la structure /srv/projet
68