0% ont trouvé ce document utile (0 vote)
5 vues69 pages

Cours Linux

Ce document est un cours sur le système Linux, spécifiquement basé sur Ubuntu, rédigé par Dr. Badr El Khalyly pour le Master 1 Réseaux et Télécommunications pour l'année universitaire 2025-2026. Il couvre des sujets tels que l'historique de Linux, les distributions, la gestion des disques et des partitions, ainsi que des travaux pratiques associés. Le contenu est structuré en chapitres détaillant les concepts fondamentaux et pratiques du système d'exploitation Linux.

Transféré par

BADR EL KHALYLY
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
5 vues69 pages

Cours Linux

Ce document est un cours sur le système Linux, spécifiquement basé sur Ubuntu, rédigé par Dr. Badr El Khalyly pour le Master 1 Réseaux et Télécommunications pour l'année universitaire 2025-2026. Il couvre des sujets tels que l'historique de Linux, les distributions, la gestion des disques et des partitions, ainsi que des travaux pratiques associés. Le contenu est structuré en chapitres détaillant les concepts fondamentaux et pratiques du système d'exploitation Linux.

Transféré par

BADR EL KHALYLY
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

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

Vous aimerez peut-être aussi