Systèmes d’exploitation II
Pr. [Link] MOUMNI
EMSI
Ecole Marocaine des sciences de l’Ingénieur 1
HONORIS UNITED NIVERSITIES
Objectifs
Ce cours permettra de:
Apprendre à utiliser totalement un environnement GNU/Linux
Maitriser les commandes Bash les plus importantes
Maitriser le fonctionnement du terminal et du Shell
Apprendre toute la syntaxe pour l’écriture de script Bash
Comprendre le système de fichiers sur Linux et apprendre comment les manipuler
Gérer finement toutes les permissions de vos utilisateurs et de vos groupes
2
Plan
I. Introduction à Linux
II. Premier contact
III. Système de Fichiers
IV. Gestion des utilisateurs et Groupes
V. Gestion des Processus sous Linux
3
Introduction à Linux & Bash
4
Introduction à Linux
Pourquoi GNU/Linux ?
GNU/Linux est LE système d'exploitation qu'il faut
connaître en tant que développeur.
Linux est utilisé partout : ordinateurs, téléphones,
box Internet, objets connectés, 23 des 25 sites les
plus visités du monde utilisent des serveurs Linux
et la totalité des supercalculateurs.
Linux représente à lui seul entre 75% et 80% de
tous les serveurs Web dans le monde.
5
Introduction à Linux
Pourquoi GNU/Linux ?
GNU signifie "GNU's Not Unix". C’est un projet initié en 1983 par
Richard Stallman pour créer un système d’exploitation libre.
Le projet a développé plusieurs outils essentiels (compilateurs,
bibliothèques, shell, éditeurs de texte, etc.), mais il lui manquait
un noyau.
En 1991, Linus Torvalds a développé le noyau Linux, une pièce
essentielle qui manquait à GNU.
Avec le noyau Linux et les outils GNU, on obtient un système
complet : GNU/Linux.
GNU/Linux désigne tout le système d’exploitation, car la
majorité des outils utilisés sur une distribution viennent du
projet GNU. 6
Introduction à Linux
Pourquoi GNU/Linux ?
En tant que développeur, Linux vous donne un contrôle total
sur votre ordinateur et vous permet l'utilisation de l'intégralité
des outils nécessaires au développement d'applications Web ou
d'autres programmes.
Vous y trouverez tous les éditeurs de code, les compilateurs,
tous les serveurs Web comme Nginx, Apache et bien sûr Node.
Vous pourrez également mettre en place vos bases de données,
et tous les outils pour la création d'applications mobiles, avec
Android Studio ou encore Flutter.
Linux est au première abord très facile d'utilisation et vous
permet de découvrir petit à petit des fonctionnalités de plus en
plus avancées uniquement quand vous en aurez besoin.
7
Introduction à Linux
Qu’est ce que Linux ?
Linux est un système d’exploitation open-source basé sur
le noyau Linux, initialement développé par Linus Torvalds
en 1991.
Contrairement à Windows ou macOS, Linux est libre, ce
qui signifie que son code source est accessible à tous,
permettant des modifications et des améliorations par la
communauté.
Linux est uniquement un noyau (kernel), la partie centrale
qui interagit avec le matériel. Pour l’utiliser pleinement, il
faut une distribution, qui est un ensemble du noyau +
logiciels + environnement graphique.
Voir le document d’introduction 8
Introduction à Linux
Pourquoi autant de distributions ?
Contrairement à Windows ou macOS, qui
sont développés et contrôlés par une
seule entreprise, Linux est un projet open- Usage Distributions Recommandées
source. Grand public Ubuntu, Linux Mint
Cela signifie que tout le monde peut Développeurs Arch Linux, Fedora, Debian
modifier et distribuer sa propre version Cybersécurité Kali Linux, Parrot OS
du système d’exploitation. Serveurs CentOS, Ubuntu Server, Debian
C’est pourquoi il existe des centaines de Systèmes embarqués & IoT OpenWrt, Yocto, Alpine Linux
distributions (distros) Linux, adaptées à
différents besoins et types d’utilisateurs.
9
Introduction à Linux
Installation d’Ubuntu avec une machine virtuelle?
Ubuntu est une distribution Linux basée sur
Debian, développée et maintenue par Canonical
Ltd.
Elle est conçue pour être accessible, stable et
facile à utiliser, même pour les débutants.
Ubuntu est largement utilisée aussi bien sur les
ordinateurs personnels que sur les serveurs,
grâce à sa grande compatibilité matérielle et son
large support communautaire.
Think to WSL (Windows Sub-System for Linux) Voir les liens de téléchargement/installation 10
Premier contact
11
Premier contact
L’interface graphique de Linux
Contrairement à l’interface en ligne de
commande (CLI), l’interface graphique
(GUI) est un ensemble d’éléments visuels
(icônes, fenêtres, menus) permettant aux
utilisateurs d’interagir avec leur système
d’exploitation de manière intuitive, sans
utiliser de ligne de commande.
Cas où la CLI est préférable : Administration
serveur, Scripting, développement avancé.
12
Premier contact
L’interface graphique de Linux
Exercice: Manipulation du GUI sous Ubuntu
L’objectif est de se familiariser avec l'interface graphique de
Linux (GNOME) en réalisant les actions suivantes :
1. Modifier l’arrière-plan du bureau.
2. Ouvrir le dossier « Documents », créer un nouveau
dossier et le nommer "mesDoc".
3. Dans le dossier mesDoc, créer un fichier texte et le
nommer "[Link]".
4. Trouver le Terminal et l’ajouter aux favoris,
5. Ouvrir le Terminal,
13
Premier contact
Quelques commandes de base
Shell vs Bash vs Terminal
Le Terminal est l’interface qui permet d’accéder à un Shell
en mode texte.
Le Shell est le programme qui interprète et exécute les
commandes. Il en existe plusieurs (Bash, Zsh, Fish, etc.).
Bash est une implémentation spécifique de Shell, très
répandue dans le monde Linux, connue pour sa puissance
et sa flexibilité.
Pour savoir quel Shell est utilisé sur votre distribution,
tapez sur le terminal: echo $SHELL
N.B : Linux est sensible à la casse (a != A) 14
Premier contact
Quelques commandes de base
Terminal – invite de commande
Lorsque vous lancez un terminal vous
avez quelque chose comme cela :
Cela s'appelle une invite de commande.
Le format est en fait : "utilisateur"@"hôte":"répertoire courant"[$|#]
1. le nom de l'utilisateur connecté, aussi appelé login est soufiane.
2. Le nom de l'hôte, c'est-à-dire de la machine est soufiane-virtual-machine.
3. Le répertoire courant (où nous sommes positionné dans le système de fichiers
et où sera exécuté la commande) est home (~).
4. Enfin il y a un caractère soit $ soit #. $ signifie qu'il s'agit d'un utilisateur
standard et # qu'il s'agit d'un super utilisateur (root user). 15
Premier contact
Quelques commandes de base
Terminal - raccourcis
Nous pouvons également
paramétrer notre terminal, en
cliquant sur Préférences du
terminal.
Ceci nous permettra (entre autres)
de créer nos propres raccourcis
facilitant l’utilisation du terminal,
16
Premier contact
Quelques commandes de base
Commandes de base
whoami : La commande whoami sous
Linux permet d'afficher le nom de
l'utilisateur actuellement connecté au
système (est ce root ou utilisateur
simple),
echo $USER: donne le même résultat
sudo su : pour switcher vers le
SuperUser (root)
su user_name : pour switcher vers un
utilisateur appelé user_name.
17
Premier contact
Quelques commandes de base
Commandes de base
Navigation et gestion de fichiers
Commande Description Exemple
pwd Afficher le chemin du répertoire courant pwd
ls Lister les fichiers et dossiers ls
cd Changer de répertoire cd Documents/
mkdir Créer un dossier mkdir mon_dossier
rmdir Supprimer un dossier vide rmdir mon_dossier
rm Supprimer un fichier rm [Link]
rm -r Supprimer un dossier avec son contenu rm -r mon_dossier
18
Premier contact
Quelques commandes de base
Commandes de base
Manipulation des fichiers
Commande Description Exemple
touch Créer un fichier vide touch [Link]
cp Copier un fichier cp [Link] [Link]
cp -r Copier un dossier cp -r dossier1 dossier2
mv Déplacer ou renommer un fichier mv [Link] nouveau_nom.txt
19
Premier contact
Quelques commandes de base
Commandes de base
Exercice d’application
En utilisant la CLI (Terminal),
1. Créer un dossier (nommé ‘d1’) dans le bureau,
2. Créer un fichier texte (nommé ‘monfichier’) dans le dossier ‘d1’
3. Créer une copie du fichier ‘monfichier’ dans le bureau et le nommer
‘backup’
4. Renommer le fichier (‘monfichier’) vers ‘oldData’
5. Supprimer le dossier ‘d1’
20
Premier contact
Le manuel des commandes
Le manuel de Linux, accessible via la commande
man, est une documentation en ligne qui fournit
des informations détaillées sur les commandes,
les fonctions, les bibliothèques et les outils
disponibles sur un système Unix/Linux.
Il est essentiel pour apprendre à utiliser Linux,
car il offre des descriptions, des exemples et des
options spécifiques pour chaque commande.
Exemple : man ls
ls --help : génère aussi des informations sur la
commande mais d’une manière concise.
21
Premier contact
Le manuel des commandes
Navigation dans le manuel :
Utilisez les touches Up et Down pour naviguer.
Appuyez sur q pour quitter.
Rechercher un mot dans le manuel :
Pour rechercher un mot dans une page de
manuel, appuyez sur / puis entrez votre
recherche (Exemple : /time)
Ensuite, utilisez n pour passer à l'occurrence
suivante.
22
Premier contact
Le manuel des commandes
Exercice : Utilisation du manuel
1. Trouver l’option cp -r sur le manuel et déterminer son utilité
2. Utiliser la commande whatis (qui permet également de savoir ce que fait une commande
et affiche un très court résumé) sur :
a. echo
b. ls
c. cp
d. rmdir
23
Premier contact
Forme générale d’une commande Unix
Une commande peut être simple (sans options ni arguments) ou complexe,
incluant des options et des arguments pour personnaliser son comportement:
commande = commande principale –options arguments
a. La commande principale : C'est l'instruction de base qui invoque une action
ou un programme (Ex : ls, cp, mkdir, rm, man).
b. Les options : ils sont des paramètres supplémentaires qui modifient le
comportement de la commande. Elles sont généralement précédées d'un tiret
(-) ou de deux tirets (--). (Ex : ls –l ; ls –all),
c. Les arguments désignent les objets ou les cibles que la commande doit traiter.
Ils sont généralement les fichiers, répertoires ou autres données sur lesquelles
la commande doit agir (Ex : cp [Link] [Link] ; ls /home/user)
24
Premier contact
Le manuel des commandes
Exercice d’application
1. Vérifier l’utilité de ls –l et ls –all sur le manuel
2. Lister en détail le contenu du répertoire /home/user
3. Créer un répertoire c dans un répertoire b dans un répertoire a dans le bureau
(mkdir a/b/c) en exploitant le manuel et les options de mkdir.
25
Premier contact
Le manuel des commandes
Résumé
Afin de savoir ce que fait une commande, il faut appliquer l’une des commandes
suivantes:
whatis,
help,
man
Ou l'option --help
26
Premier contact
Shell : fonctionnement et caractéristiques
1. Définition
Le shell est une interface entre
l’utilisateur et le noyau du système
d’exploitation, soit en mode CLI ou
GUI.
En CLI, il interprète les commandes
saisies et exécute les programmes
correspondants.
27
Premier contact
Shell : fonctionnement et caractéristiques
2. Fonctionnement du Shell
Interprétation des commandes : L’utilisateur entre une commande → le Shell analyse la
commande → il exécute la commande ou retourne une erreur.
Les commandes sous Linux sont classées en deux catégories :
Les commandes internes (built-in) : Ce sont des commandes directement intégrées au
Shell. Elles font partie du programme Shell utilisé (bash, zsh, …). Elles ne nécessitent
pas de fichier binaire externe pour être exécutées. (Ex: cd, echo, …). Pour vérifier, on
tape : type cd
Les commandes externes: Ce sont des programmes stockés sous forme de fichiers
binaires (exécutables) sur le disque. Quand vous les exécutez, le Shell va chercher ces
fichiers et les lancer. (Ex :ls ). Pour vérifier, on tape : type ls
Exercice : Afficher votre Shell utilisé, puis vérifier son contenu 28
Premier contact
Shell : fonctionnement et caractéristiques
2. Fonctionnement du Shell
Le Shell exécute également des scripts.
Un script Shell est un fichier texte Exemple basique de script Shell
contenant une série de commandes
Linux exécutées dans un ordre précis
par un interpréteur de commandes #!/bin/bash : indique que ce script doit être exécuté avec Bash
(Shell). Cela permet d'automatiser des
tâches répétitives.
Un script est donc un programme écrit
en langage Shell.
29
Premier contact
Shell : fonctionnement et caractéristiques
3. Caractéristiques
Parmi les caractéristiques du Shell, nous pouvons citer:
Redirection des entrées/sorties :
> : redirection vers un fichier (ls > [Link])
< : lecture depuis un fichier (wc -l < [Link])
| : enchaînement de commandes (ls > [Link] | mkdir dossier2)
Historique des commandes :
history : voir les commandes précédentes (history 5), (history –c)
Alias
Création d’un alias (alias ll='ls -l’), (alias p=‘pwd’) 30
Premier contact
Shell : fonctionnement et caractéristiques
Exercice d’application
Effectuer les opérations suivantes en utilisant uniquement le terminal :
1. Créer un fichier nommé [Link] dans le bureau et y ajouter le texte suivant :
"Bonjour, ceci est un test " (utiliser echo avec une redirection vers le fichier)
2. Compter le nombre de lignes du fichier en utilisant une redirection d’entrée (wc -l).
3. Créer un alias List qui affiche la liste des éléments du bureau en format détaillé (ls -l).
4. Afficher les 5 dernières commandes exécutées.
5. Rediriger la liste des éléments du répertoire courant (bureau) dans un fichier [Link].
31
Système de Fichiers
32
Système de Fichiers
Principe de base
Un système de fichiers est une structure de données et un
ensemble de règles permettant à un système d'exploitation
de stocker, organiser, gérer et accéder aux fichiers sur un
support de stockage (disque dur, SSD, clé USB, etc.).
Il définit la manière dont les fichiers sont nommés,
hiérarchisés, lus et écrits.
Exemple: Ext4 (Linux), NTFS (Windows), FAT32
(Windows/Linux/Mac), exFAT (Windows/Linux/Mac)
Par défaut, Ubuntu utilise le système de fichiers Ext4 pour
les partitions principales. (utiliser la cmd df –T)
33
Système de Fichiers
FHS - Filesystem Hierarchy Standard
34
Système de Fichiers
FHS - Filesystem Hierarchy Standard
Voici un tableau résumant brièvement les répertoires principaux
de l’arborescence Linux :
Répertoire Description
/ Racine du système, contient tous les fichiers et répertoires.
/bin Contient les commandes essentielles accessibles à tous les utilisateurs.
/sbin Contient les commandes système essentielles pour l’administrateur (root).
/home Répertoires personnels des utilisateurs.
/root Répertoire personnel du super-utilisateur (root).
/etc Contient les fichiers de configuration du système.
/var Contient les fichiers variables (logs, mails, cache, etc.).
/tmp Fichiers temporaires (souvent stockés en RAM via tmpfs).
35
Système de Fichiers
FHS - Filesystem Hierarchy Standard
Chaque répertoire a un rôle bien défini, structurant l'organisation des fichiers et
programmes du système Linux.
Répertoire Description
/usr Contient les programmes et bibliothèques des utilisateurs.
/opt Logiciels installés manuellement par l’utilisateur.
/dev Contient les fichiers représentant les périphériques (disques, ports, etc.).
/mnt Point de montage temporaire pour des systèmes de fichiers externes.
/media Point de montage pour les périphériques amovibles (USB, CD/DVD, etc.).
/boot Contient les fichiers nécessaires au démarrage du système (grub, kernel, etc.).
/lib Bibliothèques partagées pour les programmes essentiels.
/proc Fichiers virtuels contenant des informations sur les processus et le noyau.
/sys Interface avec le matériel via des fichiers virtuels.
36
Système de Fichiers
Navigation dans le système de fichier
Chemin d’accès
Nous pouvons distinguer deux types:
Chemin absolu : il spécifie l'emplacement exact d'un
fichier ou d'un répertoire en partant de la racine /. Il
commence toujours par / et ne dépend pas de
l'emplacement actuel de l'utilisateur.
(ex : /home/sara/Documents/[Link]).
Chemin relatif : il indique l'emplacement d'un fichier ou
d'un répertoire par rapport au répertoire courant (où
l'on se trouve actuellement). Il ne commence pas par /.
(ex: Documents/[Link] (si on est à /home/sara/)
37
Système de Fichiers
Navigation dans le système de fichier
Chemin d’accès
Exercice : compléter le tableau ci-dessous, sachant qu’on est à /home/sara
Chemin relatif Chemin absolu
/home/sara/[Link]
/home/sara/exo
/home/sara/Rep/trace
/home/sara
/home
/home/anas/prog.c
/temp
38
Système de Fichiers
Navigation dans le système de fichier
Commandes de base
Cd, ls, pwd
pushd : Elle rajoute un répertoire à la pile et y accède immédiatement. Elle permet de
revenir rapidement à un répertoire précédent.
(ex: cd /home/user/Documents
pushd /var/log
Maintenant, vous êtes dans /var/log, mais /home/user/Documents est enregistré
dans la pile.
Popd : Retire le dernier répertoire ajouté à la pile et y retourne automatiquement.
(ex : popd Vous revenez à /home/user/Documents, le répertoire précédent
enregistré par pushd.
39
Système de Fichiers
Navigation dans le système de fichier
Commandes de base
rm –i fichier1 : l’option -i pour interactive permet d'avoir à rentrer une confirmation pour
chaque suppression. Cela permet d'être sûr de ne pas faire de bêtise. Il faudra donc
entrer un mot commençant par y ou o puis Entrée pour valider la suppression.
xdg-open : permet d'ouvrir un fichier ou une URL avec l'application par défaut associée
sur un environnement graphique Linux. (ex : xdg-open [Link]
xdg-open [Link] )
stat : permet d'afficher des informations détaillées sur un fichier ou un répertoire, y
compris sa taille, ses permissions, sa date de modification, son propriétaire, etc.
(ex : stat [Link]) 40
Système de Fichiers
Navigation dans le système de fichier
Motifs génériques du shell
Les motifs génériques (shell glob patterns) permettent
d'utiliser des caractères spéciaux qui vont être
interprétés par le shell comme:
Motif ?
Motif *
Motif []
Motif [x-y]
Motif ^ ou !
Motif {} et ..
41
Système de Fichiers
Navigation dans le système de fichier
Motifs génériques du shell
Motif ?
Le motif ? symbolise un seul caractère, n'importe lequel.
Ex : touch [Link] [Link] [Link] [Link]
la commande ls f?.txt va afficher : [Link] [Link] [Link]
[Link] ne respecte pas le motif défini, à savoir f puis une fois n'importe quel
caractère, puis .txt.
Ce motif peut être répété (ex : ls f??.txt ceci affichera : [Link]
Pour lister tous les fichiers dont l'extension fait trois caractères, vous feriez comme
ceci : ls *.??? Ce qui nous donnerait : [Link] [Link] [Link] [Link]
42
Système de Fichiers
Navigation dans le système de fichier
Motifs génériques du shell
Motif *
Le motif * signifie zéro ou plus caractères.
Ex : ls *.txt Permet de lister n'importe quel fichier qui finit par .txt
Pour lister tous les fichiers qui commencent par f : ls f* ceci donne : [Link] [Link]
[Link] [Link]
Motif []
Le motif [ ] signifie exactement un des caractères spécifiés dans les crochets.
Techniquement cela s'appelle une classe de caractères.
Ex : ls f[1a]*.txt Signifie f puis une fois le caractère 1 ou le caractère a puis .txt.
Ce qui affichera dans notre exemple : [Link] [Link] 43
Système de Fichiers
Navigation dans le système de fichier
Motifs génériques du shell
Motif [x-y]
Le motif [x-y] signifie exactement un des caractères de l'intervalle spécifié dans les
crochets.
Un intervalle permet de spécifier un ensemble de chiffres ou de caractères possibles
qui se suivent.
Ainsi par exemple [a-f] équivaut à [abcdef]. Ou encore : [A-F] équivaut à [ABCDEF].
Pour les chiffres : [1-9] équivaut à [123456789].
On peut enchaîne des intervalles pour construire ses classes : [A-Fa-f0-9] Équivaut
ainsi à : [ABCDEFabcdef0123456789]
Ex: ls exo_[1-4] donnera exo-1 exo_2 exo_3 exo_4
44
Système de Fichiers
Navigation dans le système de fichier
Motifs génériques du shell
Motif ^ ou !
Le motif ^ ou le motif ! dans des crochets permettent de spécifier tous les caractères sauf
ceux dans les crochets.
Ex1 : ls [^A-Z]*.txt
tous les fichiers qui commencent par exactement un caractère qui n'est pas ABCDEF…..Z
(les majuscules sont importantes !), puis de zéro à plusieurs caractères, puis .txt.
Dans notre exemple nous obtenons : [Link] [Link] [Link] [Link]
Ex2 : ls f[!0-9]*.txt
Qui se traduit par un f suivi d'exactement un caractère qui n'est pas 0 ou 1.... ou 9, puis
de zéro à plusieurs caractères, puis .txt.
Donnerait : [Link] [Link] 45
Système de Fichiers
Navigation dans le système de fichier
Motifs génériques du shell
Motif {} et ..
Le motif {} peut être utilisé pour construire des séquences en combinaison avec les doubles
points ..
Ex1 : Les séquences de nombres : echo {0..99}
echo {99..-10}
Vous pouvez utiliser les .. deux fois pour spécifier un pas, c'est-à-dire obtenir les nombres
dans une séquence tous les n. echo {0..100..10}
Ex2 : Les séquences de lettres : echo {a..f}
Ex3 : Combinaison de séquences : echo {a..c}{1..3} cela donne a1 a2 a3 b1 b2 b3 c1 c2 c3 46
Système de Fichiers
Navigation dans le système de fichier
Motifs génériques du shell
Motif {} et ..
Autres exemples:
Mkdir {Janvier,Février,Mars,Avril,Mai,Juin,Juillet,Août,Septembre,Octobre,Novembre,Décembre}_{2020..2030}
pour obtenir tous les fichiers finissant par .png, .jpg ou .svg :
ls {*.png,*.jpg,*.svg}
47
Système de Fichiers
Navigation dans le système de fichier
Exercice d’application
Pratiquer toutes les commandes de base et motifs génériques sur des exemples simples de
votre choix :
pushd
popd
rm –i fichier1
xdg-open
stat
Motif ? * [ ] [x-y] ^ ou ! {} et ..
48
Système de Fichiers
Recherche multicritère
1. Find
La commande find permet de rechercher des fichiers et dossiers dans une arborescence en
se basant sur des critères précis (nom, type, taille, date, droits, etc.).
Syntaxe générale : find <chemin> [options/critères de recherche] [actions à effectuer]
<chemin> : Le répertoire à partir duquel la recherche commence (ex. : . pour le
répertoire courant, /home, etc.)
[options/critères] : Conditions de recherche (ex. : -name, -type, -size, etc.)
[actions] : Ce que l’on veut faire avec les fichiers trouvés (ex. : -print, -exec, -delete, etc.)
49
Système de Fichiers
Recherche multicritère
1. Find
Option Description Exemple
-name Recherche par nom (sensible à la casse) find . -name [Link]
-iname Recherche par nom (insensible à la casse) find . -iname [Link]
-type Recherche par type (f pour fichier, d pour dossier) find /etc -type d
-size Recherche par taille (+ ou -) find . -size +1M
-mtime Recherche par date de modification (en nbre de jours) find . -mtime -3
-user Recherche par propriétaire find /home -user sara
-perm Recherche par permissions find . -perm 644
-exec Exécute une commande sur les fichiers trouvés find . -name "*.log" -exec rm {} \;
50
Système de Fichiers
Recherche multicritère
2. Locate
La commande locate permet de rechercher rapidement des
fichiers ou des dossiers sur le système de fichiers Linux.
Elle utilise une base de données pré-indexée (généralement
mise à jour par la commande updatedb) pour effectuer la
recherche beaucoup plus rapidement que la commande find.
mot_clé : Nom du fichier, dossier ou motif à rechercher. Syntaxe:
Options courantes :
locate [options] mot-clé
-i : Ignore la casse (maj/min).
-c : Affiche uniquement le nombre de correspondances. Exemple:
--limit=N : Limite le nombre de résultats à N. locate –i ‘monfichier’ 51
Système de Fichiers
Recherche multicritère
3. Slocate
Elle signifie "Secure Locate". C’est une
version sécurisée de la commande locate.
Elle ne permet d’afficher que les fichiers
accessibles par l’utilisateur qui exécute la Syntaxe:
commande. slocate [options] mot-clé
Elle fonctionne comme locate, mais ajoute
un contrôle d’accès basé sur les permissions
des fichiers.
slocate est aujourd’hui remplacé sur de
nombreuses distributions par mlocate, plus Exemple:
moderne et sécurisé. slocate –i ‘fichierA’
52
Système de Fichiers
Recherche multicritère
4. Diff
La commande diff permet de comparer Syntaxe:
le contenu de deux fichiers ligne par
ligne. diff -options fichier1 fichier2
Elle affiche les différences entre les deux
fichiers, ce qui est utile pour voir ce qui a
été ajouté, supprimé ou modifié.
Options utiles :
-i : Ignore la casse.
-w : Ignore les espaces blancs.
53
Système de Fichiers
Recherche multicritère
5. Cmp
La commande cmp permet de comparer deux Syntaxe:
fichiers octet par octet (ou byte par byte).
cmp -options fichier1 fichier2
Elle est utile pour savoir si deux fichiers sont
identiques ou à partir de quel octet ils diffèrent.
Contrairement à diff qui compare ligne par ligne,
cmp est plus bas niveau : il compare les données
brutes.
Option utile : -l: Affiche tous les octets différents
avec leurs positions.
Elle permet de détecter les changements invisibles
à l’œil (caractères invisibles, encodage…).
54
Système de Fichiers
Filtres et commandes supplémentaires
1. grep et expressions régulières
grep (Global Regular Expression Print) est une
commande Linux/Unix utilisée pour rechercher Syntaxe:
des lignes dans un fichier ou une sortie qui grep -options ‘motif’ fichier
correspondent à un motif donné (pattern).
Ce motif peut être une chaîne simple ou une
expression régulière.
55
Système de Fichiers
Filtres et commandes supplémentaires
1. grep et expressions régulières
Les options de grep les plus courantes:
Option Description Exemple
-i grep -i "bonjour" fi[Link] →
Ignore la casse (majuscule/minuscule)
trouve "Bonjour", "BONJOUR", etc.
-v Inverse la recherche (affiche les lignes ne contenant grep -v "erreur" [Link] → exclut les
pas le motif) lignes contenant "erreur"
-r ou -R Recherche récursive dans tous les fichiers d’un
grep -r "TODO" ./projet
dossier
-n Affiche les numéros de ligne où le motif est trouvé grep -n "erreur" [Link]
-l Affiche seulement les noms de fichiers contenant le
grep -l "function" *.js
motif
-c Compte le nombre de lignes correspondantes grep -c "bonjour" [Link]
56
Système de Fichiers
Filtres et commandes supplémentaires
1. grep et expressions régulières
Les options de grep les plus courants.
Exemple -li :
‘l’ pour affiche les noms de fichiers contenant le motif (bonjour).
‘i’ pour ignorer la casse
57
Système de Fichiers
Filtres et commandes supplémentaires
1. grep et expressions régulières Expression Signification Exemple
. N'importe quel caractère b.n → trouve "bon", "ban",
Les expressions régulières sont des sauf retour à la ligne "bin", etc.
motifs utilisés pour décrire des * Répète 0 ou plusieurs fois bo*n → "bn", "bon",
ensembles de chaînes de caractères. le caractère précédent "booon"
Elles sont puissantes pour effectuer + Répète 1 ou plusieurs fois bo+n → "bon", "booon"
le caractère précédent (pas "bn")
des recherches complexes avec grep.
? Le caractère précédent est colou?r → "color" ou
optionnel (0 ou 1 fois) "colour"
^ ^Bonjour → ligne
commençant par
Début de ligne
"Bonjour"
$ merci$ → ligne finissant
Fin de ligne
par "merci"
58
Système de Fichiers
Filtres et commandes supplémentaires
Expression Signification Exemple
1. grep et expressions régulières
[...] Un seul caractère parmi
[abc] → "a", "b", ou "c"
ceux listés
Autres RegEx
Un seul caractère sauf
[^...] [^0-9] → tout sauf un chiffre
ceux listés
Une lettre minuscule entre
[a-z] [a-z] → "a", "b", ..., "z"
a et z
Une lettre majuscule entre
[A-Z] [A-Z] → "A", "B", ..., "Z"
A et Z
[0-9] Un chiffre [0-9] → "0" à "9"
{n} Répète exactement n fois a{3} → "aaa"
{n,} Répète au moins n fois a{2,} → "aa", "aaa", etc.
{n,m} Répète entre n et m fois a{2,4} → "aa", "aaa", "aaaa"
| Ou logique mot1|mot2 "chien|chat” (Attention, il faut
utiliser l’option –E (Extended grep)
59
Système de Fichiers
Filtres et commandes supplémentaires
1. grep et expressions régulières
Exemples
60
Système de Fichiers
Filtres et commandes supplémentaires
2. Tri (sort)
Syntaxe:
La commande sort permet de trier les sort -options fichier
lignes d’un fichier texte selon différents
critères (ordre alphabétique,
numérique, inverse, par colonne, etc.).
Remarque: sans options, Linux trie les
lignes par ordre alphabétique croissant
(numéros minuscules majuscules).
61
Système de Fichiers
Filtres et commandes supplémentaires
2. Tri (sort)
Les options les plus courantes:
Option Description Exemple
-r Trie en ordre inverse (décroissant) sort -r [Link]
-n Trie en ordre numérique (plutôt qu'alphabétique) sort -n [Link]
-u Supprime les doublons après le tri sort -u [Link]
-o fichier Écrit le résultat trié dans un autre fichier sort [Link] -o noms_tries.txt
62
Système de Fichiers
Filtres et commandes supplémentaires
2. Tri (sort)
Exemple global
63
Système de Fichiers
Filtres et commandes supplémentaires
3. conversion, suppression de caractères (tr)
La commande tr (translate) est utilisée en ligne de commande pour :
Convertir des caractères (ex : minuscules → majuscules)
Supprimer des caractères spécifiques
Réduire les caractères répétés (ex : supprimer les doublons d’espaces)
Syntaxe:
tr -OPTION SET1 SET2
SET1 : ensemble de caractères à remplacer, supprimer ou analyser
SET2 : ensemble de remplacement (si nécessaire)
64
Système de Fichiers
Filtres et commandes supplémentaires
3. conversion, suppression de caractères (tr)
Syntaxe:
Les options de tr les plus courantes:
tr -OPTION SET1 SET2
Option Description Exemple
echo "abc123def456" | tr -d '0-9'
-d Supprimer les caractères de SET1
Résultat : abcdef
Réduire les répétitions consécutives des echo "salut tout le monde" | tr -s ' '
-s
caractères de SET1 Résultat : salut tout le monde
Complément de SET1 (cible tous les echo "abc123#@!" | tr -cd 'a-zA-Z'
-c
caractères sauf ceux de SET1) Résultat : abc
SET1 : ensemble de caractères à remplacer, supprimer ou analyser
SET2 : ensemble de remplacement (si nécessaire) 65
Système de Fichiers
Filtres et commandes supplémentaires
3. conversion, suppression de caractères (tr)
Remarque importante
tr ne modifie pas directement les fichiers.
Pour modifier un fichier, redirige la sortie :
Ensuite, on déplace le nouveau fichier ([Link]) vers le [Link]
66
Système de Fichiers
Filtres et commandes supplémentaires
4. Commande cut - Fractionnement vertical
La commande cut permet d’extraire certaines
colonnes ou champs d’un fichier texte ou d’une
sortie en ligne de commande. Syntaxe:
Options courantes: cut -options fichier
Option Description
-b Coupe par position d’octet (bytes)
-c Coupe par position de caractère
-f Coupe par champ (colonne)
-d Définit le délimiteur entre champs (par défaut : tabulation \t)
67
Système de Fichiers
Filtres et commandes supplémentaires
4. Commande cut - Fractionnement vertical
Exemple global:
echo "Jean,Dupont,25,Paris " Affiche une ligne de texte avec des champs
séparés par des virgules
cut –d ',' Définit la virgule (ou ;) , comme délimiteur de champs
-f 2 Sélectionne le 2ème champ, donc : "Dupont"
68
Système de Fichiers
Filtres et commandes supplémentaires
5. Traiter les lignes consécutives identiques (uniq)
La commande uniq permet principalement de Syntaxe:
supprimer les lignes en double consécutives dans un
uniq -options fichier
fichier ou une sortie.
Elle est souvent utilisée après
un tri avec sort, car les doublons
doivent être adjacents pour être
supprimés.
69
Système de Fichiers
Filtres et commandes supplémentaires
5. Traiter les lignes consécutives identiques (uniq)
uniq vs sort -u
sort -u équivalent à sort | uniq
Ex: sort [Link] | uniq
uniq seul ne suffit pas si les
doublons ne sont pas consécutifs.
Rappel : pipe (|) permet de transmettre la sortie d’une commande comme entrée de la commande suivante. 70
Système de Fichiers
Filtres et commandes supplémentaires
5. Traiter les lignes consécutives identiques (uniq)
uniq vs sort -u
Remarques
Situation Meilleure commande
Vous voulez supprimer tous les doublons sort -u [Link]
Vous voulez compter les doublons sort [Link] | uniq -c
Vous avez des doublons déjà triés uniq [Link] suffit
71
Système de Fichiers
Filtres et commandes supplémentaires
6. Extraire le début ou la fin d’un fichier (head et tail)
head permet d’afficher les premières lignes d’un
fichier texte. Par défaut, elle affiche les 10 Syntaxe:
premières lignes. head -options fichier
Options courantes:
Option Description Exemple
-n N Affiche les N premières lignes head -n 5 [Link]
-c N Affiche les N premiers octets/caractères head -c 20 [Link]
72
Système de Fichiers
Filtres et commandes supplémentaires
6. Extraire le début ou la fin d’un fichier (head et tail)
tail permet d’afficher les dernières lignes d’un
fichier texte. Par défaut, elle affiche les 10 dernières Syntaxe:
lignes. tail -options fichier
Options courantes:
Option Description Exemple
-n N Affiche les N derniers lignes tail -n 5 [Link]
-c N Affiche les N derniers octets/caractères tail -c 50 [Link]
73
Gestion des utilisateurs et Groupes
74
Gestion des utilisateurs et Groupes
Pourquoi gérer des utilisateurs et des droits ?
Dans un système multi-utilisateur comme Linux, plusieurs personnes ou
processus peuvent accéder aux mêmes ressources (fichiers, programmes,
périphériques).
Il est essentiel de contrôler qui peut faire quoi, pour :
Sécuriser le système et les données sensibles.
Organiser l'accès aux ressources selon les rôles et les responsabilités.
Éviter les erreurs : empêcher un utilisateur de modifier accidentellement des
fichiers critiques.
Faciliter le travail en équipe : permettre à certains groupes d’utilisateurs de
collaborer efficacement.
La bonne gestion des utilisateurs et des droits d’accès est donc une base de la
sécurité et de l’efficacité d’un système Linux. 75
Gestion des utilisateurs et Groupes
Notions de base : Utilisateur, groupe, permissions
a. Utilisateur
Un utilisateur est une entité (personne ou programme)
qui se connecte au système.
Chaque utilisateur a :
Un identifiant unique (UID - User ID),
Un répertoire personnel (ex : /home/jean),
Un profil d'accès déterminé par des permissions.
Pour afficher l’UID de l'utilisateur actuellement connecté : id –u
Pour un utilisateur spécifique : id –u nom_utilisateur
id –u root affiche l’UID de root, généralement 0. 76
Gestion des utilisateurs et Groupes
Notions de base : Utilisateur, groupe, permissions
a. Utilisateur
Créer un nouvel utilisateur : sudo adduser nom_utilisateur
sudo → pour avoir les droits administrateur (sinon vous n’aurez pas le droit de
créer un utilisateur).
adduser → la commande conviviale pour créer un utilisateur (elle guide étape
par étape).
nom_utilisateur → se remplace par le nom que vous voulez (exemple : soufiane,
mohamed, etc.).
Le système va créer le compte de l'utilisateur, son dossier personnel
(/home/nom_utilisateur) et son groupe personnel. Il va vous demander de choisir un
mot de passe pour ce nouvel utilisateur et d'entrer des informations facultatives
(nom complet, téléphone, etc.). 77
Gestion des utilisateurs et Groupes
Notions de base : Utilisateur, groupe, permissions
a. Utilisateur
Exemple :
N.B : afin de vérifier que l’utilisateur est bien créé id nom_utilisateur
78
Gestion des utilisateurs et Groupes
Notions de base : Utilisateur, groupe, permissions
a. Utilisateur
Se connecter à ce nouvel utilisateur : su nom_utilisateur
Su : Switch user ("changer d'utilisateur")
Ensuite, il te demandera le mot de passe de l'utilisateur cible.
Pour faire un retour, on réutilise également su vers l’utilisateur principal
Le fichier /etc/passwd contient tous les comptes d'utilisateurs (y compris système).
Pour lister tous les utilisateurs : cat /etc/passwd
Pour plus de clarté, nous pouvons également utiliser : cut -d: -f1 /etc/passwd
79
Gestion des utilisateurs et Groupes
Notions de base : Utilisateur, groupe, permissions
a. Utilisateur
Se connecter à ce nouvel utilisateur : su nom_utilisateur
80
Gestion des utilisateurs et Groupes
Notions de base : Utilisateur, groupe, permissions
a. Utilisateur
Supprimer un compte utilisateur : sudo deluser nom_utilisateur
Sudo : pour avoir les droits d’administrateur.
deluser : la commande pour supprimer un compte utilisateur.
N.B: Cette commande supprime l'utilisateur du système,Mais elle ne
supprime pas automatiquement son dossier personnel
/home/nom_utilisateur.
Pour ce faire : sudo rm –r /home/nom_utilisateur
Ou tout simplement supprimer à la fois l’utilisateur et son répertoire
personnel : sudo userdel -r nom_utilisateur 81
Gestion des utilisateurs et Groupes
Notions de base : Utilisateur, groupe, permissions
a. Utilisateur
Supprimer un compte utilisateur : méthode 1
82
Gestion des utilisateurs et Groupes
Notions de base : Utilisateur, groupe, permissions
a. Utilisateur
Supprimer un compte utilisateur : méthode 2
83
Gestion des utilisateurs et Groupes
Notions de base : Utilisateur, groupe, permissions
a. Utilisateur
Changer mot de passe utilisateur : sudo passwd nom_utilisateur
84
Gestion des utilisateurs et Groupes
Notions de base : Utilisateur, groupe, permissions
a. Utilisateur
Changer le nom d’un utilisateur : sudo usermod -l nouveau_nom ancien_nom
Exemple : sudo usermod -l amine anas
N.B. cela ne déplace pas automatiquement son dossier /home/anas.
Il faut donc un déplacement : sudo mv /home/anas /home/amine
85
Gestion des utilisateurs et Groupes
Notions de base : Utilisateur, groupe, permissions
b. groupe
un groupe est un ensemble d'utilisateurs. Il sert principalement à gérer
les permissions de manière collective : au lieu d'attribuer des
autorisations à chaque utilisateur individuellement, on attribue les droits
à un groupe, et tous ses membres en bénéficient.
Chaque groupe a:
un nom (exemple : sudo, developers, students).
un GID (Group ID : un numéro unique, comme les UID pour les
utilisateurs).
Un utilisateur peut :
Appartenir à plusieurs groupes (groupes secondaires).
Avoir un groupe principal (défini à la création de l'utilisateur). 86
Gestion des utilisateurs et Groupes
Notions de base : Utilisateur, groupe, permissions
b. groupe
Créer un nouveau groupe: sudo groupadd nom_du_groupe
Cette commande crée un nouveau groupe avec :
Un nom que tu choisis.
Un GID (Group ID) attribué automatiquement.
Remarque : Pour lister tous les groupes : cat /etc/group
87
Gestion des utilisateurs et Groupes
Notions de base : Utilisateur, groupe, permissions
b. groupe
Créer un nouveau groupe: sudo groupadd nom_du_groupe
Exemple 1 : Création d’un groupe avec un GID spécifique (pas automatique)
Exemple 2 : Changer le GID d’un groupe
88
Gestion des utilisateurs et Groupes
Notions de base : Utilisateur, groupe, permissions
b. groupe
Renommer un groupe: sudo groupmod -n nouveau_nom ancien_nom
sudo → car tu modifies un fichier système (/etc/group).
groupmod → pour modifier un groupe existant.
-n → pour spécifier le nouveau nom.
89
Gestion des utilisateurs et Groupes
Notions de base : Utilisateur, groupe, permissions
b. groupe
Ajouter un utilisateur à un groupe: sudo usermod -aG nom_du_groupe nom_utilisateur
-a → append = ajouter (sans écraser ses autres groupes).
-G → précise le ou les groupes secondaires.
sudo → car modifier un compte utilisateur est une opération administrative.
Exemple : sudo usermod -aG projetX adel
Attention : si vous avez oublié -a, cela enlève tous les autres groupes secondaires de adel,
et il ne restera que dans projetX.
groups adel : Pour lister les groupes auxquels apparient adel 90
Gestion des utilisateurs et Groupes
Notions de base : Utilisateur, groupe, permissions
b. groupe
Ajouter plusieurs utilisateurs au même groupe:
1. Méthode simple : un par un vous pouvez utiliser usermod -aG pour chacun.
sudo usermod -aG projetX anas
sudo usermod -aG projetX mohamed
...
2. Méthode rapide : boucle Bash:
for user in anas mohamed imane; do sudo usermod -aG projetX $user;done;
91
Gestion des utilisateurs et Groupes
Notions de base : Utilisateur, groupe, permissions
b. groupe
Ajouter plusieurs utilisateurs au même groupe:
Exemple : méthode rapide (boucle Bash)
Remarque importante : pour qu’un utilisateur bénéficie des droits d’admin, on l’affecte au groupe sudo 92
Gestion des utilisateurs et Groupes
Notions de base : Utilisateur, groupe, permissions
b. groupe
Supprimer/retirer un utilisateur d’un groupe:
sudo gpasswd -d nom_utilisateur nom_du_groupe
gpasswd → commande pour gérer les groupes.
-d → delete : supprimer un membre d'un groupe.
Exemple :
93
Gestion des utilisateurs et Groupes
Notions de base : Utilisateur, groupe, permissions
b. groupe
Supprimer/retirer un utilisateur de plusieurs groupes:
for group in groupe1 groupe2 groupe3; do sudo gpasswd -d nom_utilisateur $group; done
94
Gestion des utilisateurs et Groupes
Notions de base : Utilisateur, groupe, permissions
b. groupe
Supprimer un groupe: sudo groupdel nom_du_groupe
Attention: Le groupe est supprimé, mais les utilisateurs restent. De plus, les fichiers appartenant à ce groupe peuvent rester avec l'ancien GID. 95
Gestion des utilisateurs et Groupes
Notions de base : Utilisateur, groupe, permissions
c. Permissions
Sur Linux, une permission contrôle ce qu’un utilisateur ou un groupe a le droit de faire sur
un fichier, un répertoire ou une ressource. Elle définit :
Lecture (r) → lire un fichier ou voir le contenu d'un dossier.
Écriture (w) → modifier un fichier ou ajouter/supprimer dans un dossier.
Exécution (x) → exécuter un fichier (comme un programme) ou entrer dans un dossier.
Ces permissions sont définies pour 3 catégories :
Owner (propriétaire): L'utilisateur qui possède le fichier
Group (groupe): Les membres du groupe du fichier
Others (autres) : Tous les autres utilisateurs du système
96
Gestion des utilisateurs et Groupes
Notions de base : Utilisateur, groupe, permissions
c. Permissions
Chaque fichier ou dossier a 3 ensembles de permissions : Propriétaire — Groupe — Autres
pour voir les permissions on utilise : ls –l
Pour un résultat comme : -rwxr-xr- -
Il s’agit de :
- → type (fichier -, dossier d, lien l, etc.)
rwx → propriétaire : lecture (r), écriture (w), exécution (x)
r-x → groupe : lecture (r), pas écriture (-), exécution (x)
r-- → autres : lecture (r), pas écriture (-), pas exécution (-)
97
Gestion des utilisateurs et Groupes
Notions de base : Utilisateur, groupe, permissions
c. Permissions
Exemple:
Nom du groupe Nom fichier ou dossier
Propriétaire (user) Taille en octet Date et heure de création
Droits d’accès
Nombre de liens (hard links)
98
Gestion des utilisateurs et Groupes
Notions de base : Utilisateur, groupe, permissions
c. Permissions
nombre de liens sur ls –l
Pour un fichier normal :Quand vous créez un fichier (touch [Link]),Le nombre de liens
est 1. Parce qu'il n'y a qu'un seul chemin qui pointe vers ce fichier.
Si vous créez un hard link supplémentaire (un deuxième chemin vers le même fichier) :
ln [Link] [Link]
Maintenant deux chemins différents pointent vers le même contenu Le nombre de liens
devient 2.
Donc; quand vous modifiez [Link] ou [Link], le contenu est le même. Ce n'est pas
une copie ➔ C'est le même fichier avec deux noms différents.
Pour un dossier (répertoire) : Un dossier vide a 2 liens (. et ..).
Un dossier avec 1 sous-dossier aura 3 liens. Avec 2 sous dossier aura 4, etc. 99
Gestion des utilisateurs et Groupes
Notions de base : Utilisateur, groupe, permissions
c. Permissions
Changer des droits d’accès : chmod permissions fichier
Les permissions peuvent être données soit en mode
symbolique (lettres comme r, w, x)
Ex : chmod u+rw fichier
numérique (chiffres comme 644, 755, etc.).
Ex: chmod 750 fichier
100
Gestion des utilisateurs et Groupes
Notions de base : Utilisateur, groupe, permissions
c. Permissions
Permission en mode symbolique (lettres comme r, w, x)
On utilise :
u → pour user (propriétaire),
g → pour group (groupe), Ex :
o → pour others (autres), chmod g+x fichier
a → pour all (tous).
chmod o-w fichier
Puis on ajoute :
+ → ajouter des droits, chmod ug=x fichier
- → retirer des droits,
= → mettre exactement ces droits. 101
Gestion des utilisateurs et Groupes
Notions de base : Utilisateur, groupe, permissions
c. Permissions
Permission en mode numérique (avec chiffres)
Action Valeur
1. Chaque permission est représentée par un chiffre: Lecture (r) 4
2. On additionne : Ecriture (w) 2
rwx = 4 + 2 + 1 = 7 Exécution (x) 1
rw- = 4 + 2 = 6
r-- = 4
Commande Résultat
3. Puis on donne les droits :
chmod 777 fichier Tous ont tous les droits (rwx/rwx/rwx)
premier chiffre → propriétaire,
chmod 755 fichier Propriétaire rwx, Groupe r-x, Autres r-x
deuxième chiffre → groupe, chmod 644 fichier Propriétaire rw-, Groupe r--, Autres r--
troisième chiffre → autres. chmod 700 fichier Propriétaire rwx, Groupe --- , Autres --- 102
Gestion des utilisateurs et Groupes
Notions de base : Utilisateur, groupe, permissions
c. Permissions
Exemple
103
Gestion des utilisateurs et Groupes
Notions de base : Utilisateur, groupe, permissions
c. Permissions
a. Pour partager un fichier avec plusieurs utilisateurs, il faut tout d’abord créer un groupe,
b. Ensuite, changer le groupe propriétaire du fichier vers le groupe créé:
sudo chown :nomDuGroupe nom_fichier_a_partager
a. Par la suite, rajouter les utilisateurs concernés au groupe créé
b. À la fin, donner les permissions nécessaires pour accéder au fichier partagé
104
Gestion des utilisateurs et Groupes
Notions de base : Utilisateur, groupe, permissions
c. Permissions
Exemple :
105