Vous êtes sur la page 1sur 42

Laenen Maximilien SECU – BA2 – Q1

Systèmes d’exploitation open source : Théorie


Synthèse
I. Introduction
Un OS ?
L'O.S. (operating system) est l'intermédiaire entre la machine et les programmes. Un ordinateur est
composé de différents constituants comme le processeur, la mémoire, la carte son, la carte vidéo, et
encore d'autres périphériques. Ils peuvent varier d'une machine à l'autre. Le système d'exploitation
est une couche qui va "enrober" le matériel et permettre de s'abstraire de celui-ci, donc d'assurer la
liaison entre l'utilisateur, la machine et les applications, ce qui permet aux développeurs "d'oublier" le
matériel lors de la programmation. C'est également le système d'exploitation qui se charge de "gérer"
le système. C'est un chef d'orchestre qui va coordonner et faire travailler entre eux les différents
éléments de l'ordinateur en contrôlant les entrées/sorties, la mémoire, les accès aux fichiers,
l'allocation de temps processeur aux programmes etc. Il s'occupe donc de partager les ressources
entre les différentes applications et les différents utilisateurs.
➢ Différents types d’OS :
o Mono-tâche, mono-utilisateur (DOS)
o Multi-tâches coopératif mono-utilisateur (MS Windows, Me, MacOS)
o Multi-tâches préemptif mono-utilisateur (Win 95/98/Me (partiellement), OS/2)
o Multi-tâches préemptif multi-utilisateurs (WinNT, Win2000, UNIX)

Linux, c’est quoi ?


➢ Linux est un système d'exploitation. Officiellement, le nom du système d'exploitation est GNU-
Linux, Linux étant le nom de kernel.
➢ Linux est un système multi-tâches multi-utilisateurs préemptif
➢ Distribué sous la licence GPL (General Public Licence)
o Protéger les droits des développeurs
o Permettre diffusion et utilisation totalement libre du logiciel et du code source
o Les utilisateurs peuvent modifier le code et le redistribuer tant que leur version soit
aussi sous licence GPL → Licence propagative
➢ Les systèmes de type UNIX apparaissent fin 1960 → Standard dans le monde informatique
➢ 1984 → Richard Stallman créé la Free Software Foundation (Informatique libre / ouvert &
accessible à tous)
o Création du projet GNU ayant pour but de créer des systèmes de type UNIX
➢ 1991 → Logiciels libres développés dans le cadre du projet GNU
o GNU Emacs / BASH / Ghostscript / GNU C Library / GNU C Compiler / …
o Création d’un noyau de type UNIX basé sur Minix appelé Linux par un étudiant
Finlandais (Noyau qui supporte tous les logiciels libres développés)
o → Licence GPL (Apparition de GNU/Linux en 1993)
➢ Kernel == Cœur de Linux == Noyau
o Joue le rôle d’interface entre le matériel et les programmes.
o C’est ce qu’a développé Linus
o Linux ce n’est pas que ça, il y a beaucoup d’applications qui permettent de copier,
lire, … des fichiers.
o Exemple : le shell qui entoure, sert d’interface entre l’utilisateur et Linux et lui permet
d’exécuter de nombreuses commandes, un peu comme la ligne de commande dos.
o Heureusement → GUI (Graphical User Interface)
o Actuellement Linux == GNU/Linux + Applications libres

1
Systèmes d’exploitation open source : théorie
Laenen Maximilien SECU – BA2 – Q1

II. Les distributions


➢ Une distribution ne constitue pas une version différente du système Linux, mais simplement
un regroupement d’applications et une présentation différentes par rapport aux autres
distributions
➢ Chaque distribution utilise le noyau Linux comme base et ajoute une série d’applications
o Le choix des applications varie ainsi que la méthode de distribution
▪ Distribuée sur internet / CD-ROM / DVD-ROM / Vendue / Gratuit
o Le système de paquetages varie également
▪ Permet d’ajouter / supprimer des applications
o Chaque distributeur ajoute ses propres utilitaires pour faciliter la vie de l’utilisateur et
fourni des outils pour son installation
➢ Un exécutable d’une distribution peut s’exécuter sur une autre distribution. Toutes les
distributions sont basées sur le même noyau Linux.
➢ Il existe de nombreuses distributions. Epurées / remplies d’applications. Strict minimum / très
personnalisée qui s’installent automatiquement
➢ Payant vs Gratuit
o Payant probablement par rapport au SAV / Documentation papier / Support en ligne /
Fourniture éventuelle de logiciels non-libres
➢ Exemples :
Red-Hat Mandrake SuSE Debian
La + connue & la + Basée sur Red-Hat Utilise rpm LA distribution libre
distribuée. Facile à Orientée utilisateur Connue pour son Maintenue uniquement
installer (GUI). graphique optimisée utilitaire de par des bénévoles et
A l’origine du populaire pentium (optimisé configuration & elle n’a donc aucun
système de pour un processeur d’administration du but commercial
distributions de spécifique) système Yast Facile à maintenir à
packages rpm. D’origine française Bien fournies en jour car utilisation
Evolution rapide Facile à installer et fait paquets et n’est d’APT
Mise à jour difficile à tout pour faciliter la distribuable qu’en CD Plus difficile à installer
cause des vie de l’utilsateur Destinée aux
dépendances rpm utilisateurs avancés

2
Systèmes d’exploitation open source : théorie
Laenen Maximilien SECU – BA2 – Q1

III. Principes de base


Comptes utilisateurs :
➢ Linux == Système multi-user → Permet à plusieurs utilisateurs de travailler simultanément
sur une même machine via des moyens de connexion à distance
➢ La plupart des utilisateurs posséderont un compte utilisateur ordinaire.
o Un compte utilisateur est la définition de l’ensemble des droits d’un utilisateur en
particulier, ainsi que son environnement de travail.
o On retrouvera généralement un répertoire personnel de l’utilisateur
➢ Un utilisateur peut appartenir à un ou plusieurs groupes.
o Permet de définir des droits et des profils pour un ensemble d’utilisateurs.
o Par défaut, chaque utilisateur appartient à un groupe où il est seul et qui porte le
même nom que son nom d’utilisateur. Ce principe permet d’augmenter la sécurité en
isolant de manière explicite chaque utilisateur.
▪ L’administrateur pourra affecter un utilisateur à un ou plusieurs autres
groupes afin de leur donner plus ou moins de privilèges et accès à certains
fichiers
➢ Linux définit une sécurité d’accès aux fichiers par utilisateur et groupe
o Chaque fichier appartient à un utilisateur et à un groupe
o Pour chaque fichier, ou pourra définir trois niveaux d’accès : lecture, écriture &
exécution pour l’utilisateur, le groupe et les autres utilisateurs.
➢ Sur chaque Linux → Super-utilisateur (root) défini
o Accès illimité à tous les fichiers, périphériques & ressources de la machine.
o Utilisé seulement pour la maintenance et l’administration de la machine

Login :
➢ Un système multi-utilisateurs va identifier & authentifier les utilisateurs
o → Login / Mot de passe
➢ Une fois connecté, l’utilisateur arrive dans le shell défini dans son environnement.
o Ce dernier exécute le fichier de configuration personnelle (.bash_profile & .bashrc)
puis attend les instructions de l’utilisateur.

Arrêt / démarrage :
➢ Eteindre tout système informatique via une phase d’arrêt des programmes et du système
o Sinon → Risque de perte de données, ...
➢ Si le système s’arrête de manière brutal, il va, lors de son redémarrage, vérifier et tenter de
réparer les systèmes de fichier
➢ En général seul root peut arrêter le système
o shutdown <options> [<minutes>|now]
▪ halt == option -h
▪ poweroff == option -h
▪ reboot == option -r

Consoles :
Linux étant multi-tâches et multi-utilisateurs, plusieurs utilisateurs doivent pouvoir se connecter en
même temps. Sur les gros systèmes, une console était composée d'un écran, un clavier, le tout relié
via un câble série (COM). Il existe également des consoles virtuelles, qui permettent plusieurs
consoles simultanées sur un même écran.

Shell :
➢ == Coquille qui entoure l’OS et qui lui permet de communiquer avec l’utilsateur
o Commande → set :

3
Systèmes d’exploitation open source : théorie
Laenen Maximilien SECU – BA2 – Q1

Commandes :
➢ Ligne de commande très répandu dans les systèmes de type UNIX.
o Windows → PowerShell, …
➢ + rapide que l’interface graphique
➢ Permet une automatisation avancée via des scripts des diverses tâches administratives sur un
système (maintenance, création des comptes utilisateurs, …)

Tout est fichier :


➢ Sous UNIX, tout est considéré comme fichier. Que ce soit un répertoire, un périphérique, …
➢ Reste ensuite la façon ou les façons dont on peut l’utiliser

4
Systèmes d’exploitation open source : théorie
Laenen Maximilien SECU – BA2 – Q1

IV. X, l’interface graphique


Introduction :
➢ Sous Windows → Interface graphique intégrée dans le système
➢ Sous Linux → Interface graphique == Couche logicielle supplémentaire ajoutée
➢ Du point de vue du Kernel, la couche graphique n’est qu’une suite d’applications comme les
autres
➢ Sur les systèmes Unix, l’interface graphique est appelée X Window (Notée X ou X11)
➢ Applications « sous X » == Applications en mode graphique
➢ X fourni les fonctions de base de l’affichage comme déplacer des fenêtres, réagir à un clic, …
➢ X ne gère pas les boutons, menus, … Ces tâches sons déléguées au window manager

Le serveur X :
➢ Fonctionnement comparable à VNC / Terminal Server
o Architecture client-serveur
o Un serveur X qui est en communication avec un ou plusieurs clients
o Mais dans ce cas-ci, contrairement à ce que l’on pourrait croire, c’est le serveur qui
est l’application locale :
▪ Le client X est l’application qui va demander d’effectuer diverses opérations
de sortie d’affichage
▪ Le serveur X est à l’écoute des clients et leur renvois les informations clavier
et souris de l’utilisateur. C’est lui qui communique avec le matériel de dessiner
à l’écran.
➢ Une conséquence de cette architecture d’affichage est que le client peut être sur la même
machine, mais aussi sur une autre.
o Le client peut être une application demandant une certaine puissance de calcul, le
serveur étant sur une petite configuration ne servant que l’affichage, qui ferait office
de terminal graphique.
➢ Serveur X utilisé était Xfree86 mais suite aux désaccords de certains programmeurs
o → Xorg
➢ Même si au départ le support de matériel graphique récent était quasi inexistant, les cartes
graphiques sont de mieux en mieux supportées (Drivers propriétaires + module kernel
opensource) avec des fonctionnalités de plus en plus avancées (AIGLX chez Nvidia).
➢ XGL, le plus récent des serveurs X permet de gérer directement un bureau en 3D avec
transparance, … mais nécessite une carte Opengl performante.

Les gestionnaires de fenêtres (window manager) :


➢ Logiciel chargé de gérer les fenêtres affichées à l’écran par le serveur X.
o Placement / affichage / Dimension / Fermer / ..
o Tout en étant un client X, il joue l’intermédiaire entre les autres clients et le X
➢ En général, un gestionnaire de fenêtres est fourni avec chaque desktop manager.
o → Gnome / Métacity
➢ Quelques exemples
o AfterStep / Beryl Fusion / Enlightenment / FluxBox / …
➢ Il en existe pleins. Simples, évolués, chargés de décorations, …
o Le choisir selon son gestionnaire de bureau, son serveur X et ses goûts
➢ Nouvelle génération de window managers encore en développement
o Permettent d’avoir des effets de transparence, 3D, …

Les gestionnaires de bureau :


➢ Les plus célèbres pour Linux sont Gnome & KDE. Cette couche logicielle permet d’avoir un
bureau : des menus avec la liste des programmes, …
➢ Il fourni donc l’environnement de bureau

5
Systèmes d’exploitation open source : théorie
Laenen Maximilien SECU – BA2 – Q1

Quelques astuces :
➢ Faire du copier-coller sous X
o CTRL-C / CTRL-V
o Ou
▪ Sélectionnez le texte à copier
▪ Placer le curseur là ou vous voulez le coller
▪ Collez le texte en cliquant sur le bouton du milieu de la souris ou, s’il elle n’a
que deux boutons, en cliquant sur les 2 simultanément (A condition que
l’options Emulate3Buttons dans le fichier de configuration du serveur
graphique soit activée)
➢ Tuer une application graphique
o → xkill
o Cliquer sur la fenêtre du logiciel à fermer
o Méthode à n’utiliser qu’avec les logiciels que l’on ne sait plus fermer normalement
➢ Changer la résolution à la volée
o CTRL ALT +
o CTRL ALT –
o Sinon, ajuster le fichier de configuration de X afin d’y préciser manuellement les
résolutions supportées

6
Systèmes d’exploitation open source : théorie
Laenen Maximilien SECU – BA2 – Q1

V. Installation
Etapes:
➢ Se procurer une distribution Linux (CD, DVD, WWW, …)
➢ Vérifier la compatibilité
➢ Lancer le processus d’installation
o Démarrage de l’ordinateur sur le support d’installation
o Le support d’installation fournit généralement, avec chaque distribution, un CD-ROM,
démarre en général un utilitaire d’installation pas à pas.
➢ Mettre en place les systèmes de fichiers
o Si un autre OS est déjà installé et occupe toute la place disponible du disque dur, il
est nécessaire de redimensionner (parted)
o Création des partitions Linux. L’espace libre doit être partitionné afin d’installer Linux.
Il en faut minimum une, mais il en vaut mieux une deuxième pour la swap. Il existe
différents utilitaires comme fdisk, Diskdruid, cfdisk, … selon la distribution
o Création des systèmes et de la zone d’échange. Sur chaque nouvelle partition créée à
l’étape précédente, il est possible de créer un système de fichier indépendant. De
plus, il est souvent utile de définir une zone d’échange (SWAP). Elle permet, lorsque
la mémoire vive est pleine, de la « décharger » sur le disque dur
▪ Il est conseillé de prendre 2 fois la taille de la RAM pour la swap, avec un
maximum de 1GB
o Enfin, il est souvent conseillé de mettre le répertoire /boot, qui contient les éléments
nécessaires au démarrage du système sur une autre partition
➢ Installer les fichiers
o Installation du système proprement dit : les fichiers vont être copiés sur le disque dur
en fonction des paquets sélectionnés.

Partitions :
➢ Un disque dur est une unité de stockage physique. Afin de pouvoir utiliser un disque dur, on
définira une ou plusieurs partitions qui peuvent être destinées à un OS, ou à des données.
o Ex. : 1 pour Windows / 1 pour Linux / 1 pour les données
➢ Lorsque plusieurs systèmes d’exploitation sont installés sur le disque dur, il est nécessaire de
créer une partition par OS
➢ La définition des partitions se trouve au niveau du secteur maître d’amorçage (master boot
record) qui, comme son nom l’indique est utilisé pour démarrer le système
o Dans ce secteur est maintenu la table des partitions, qui contient les informations
concernant la localisation et la taille de chaque partition sur l’espace global du disque.
o Le MBR occupe les 512 premiers octets du disque. Il est important d’en faire une
copie de sauvegarde.
o L’autre partie du MBR est occupée éventuellement par un boot manager (grub / lilo),
qui va gérer le démarrage du système.
o Si une partition est marquée comme active, le système démarre directement sur celle-
ci, qui devra alors contenir son propre gestionnaire de démarrage. Cela signifie
également que le boot manager du MBR peux lancer celui d’une autre partition
➢ Trois types de partitions peuvent coexister
o Primaire
▪ Une ou plusieurs (Max. 4 en raison de la taille de la table des partitions qui
doit tenir dans le MBR)
o Etendue
▪ Partition créé si le nombre de 4 partitions primaires est atteint.
▪ Dans celle-ci on pourra créer des partitions logiques
▪ == Conteneur == Unique
o Logique
▪ Ces partitions sont chaînées afin d’optimiser la place prise dans le MBR
➢ Attention à ce que certains BIOS ne sont pas capables d’accéder au-delà du 1024ème cylindre
du disque dur. Le boot loader doit donc se trouver avec cette limite

7
Systèmes d’exploitation open source : théorie
Laenen Maximilien SECU – BA2 – Q1

Disques & partitions sous Linux :


➢ Windows → C:, E:, …
➢ Linux
o Disque IDE → hd
o Disque SCSI & SATA → sd
o La premier disque IDE → hda
o Le seconde disque IDE → hdb
o Et ainsi de suite
➢ Ce schéma de nommage ne s’applique pas uniquement aux disque, mais aussi aux lecteurs
CD-ROM, graveurs, lecteurs de bandes, …
➢ Disque ou lecteurs branchés sur un port parallèle ou sur un bus de type USB ou Firewire
apparaissent en général comme des disque SCSI
➢ Nom des partitions
o Nom du disque + numéro
o Sda1, sda2, …
o Partitions primaires → 1 à 4 (Inclut les partitions étendues)
o Partitions logiques → A partir de 5 si partition étendue = 4

Installation & configuration de base :


➢ Selon la distribution, la méthode d’installation sera différente
➢ Dans certains cas, le processus est entièrement manuel, dans d'autre entièrement automatisé.
En général, les paquets sont précompilés, mais parfois tout s'effectue à partir du code source.
Toutes les variante sont possibles entre ces différentes situations

8
Systèmes d’exploitation open source : théorie
Laenen Maximilien SECU – BA2 – Q1

VI. Arborescence & systèmes de fichier


Introduction :
➢ Comme les systèmes de type Windows, Linux stocke ses fichiers sous forme d'arborescence
de répertoires, sous-répertoires et fichiers. L'ensemble de l'arborescence s'appelle le système
de fichiers. Par contre, contrairement aux systèmes précités, Linux ne distingue pas les
disques les uns des autres. Tout le système de fichier, même réparti sur plusieurs disques,
disquette et lecteur de CD-ROM s, possède une racine unique qui est /.
➢ Système de fichier par défaut → ext3 (extended 3). De + en + ext4
➢ Cette arborescence peut donc être construite à partir de diverses partitions qui peuvent être
situées sur plusieurs disques. Cela réalise une intégration et une abstraction plus poussée que
dans le monde Microsoft où chaque partition se voit attribuer un identificateur sous forme
d'une lettre, et reste une entité séparée du reste. La partition sur laquelle se trouve le
répertoire racine / joue un rôle particulier est appeler racine du système
➢ Une fois intégré à l’arborescence, toute partition ou périphérique est accessible simplement en
changeant de répertoire.

Les règles sémantiques des systèmes de fichiers Unix et différences avec Windows :
➢ Windows == \
➢ Linux == /
➢ Noms des fichiers et répertoires sensibles à la casse
➢ Windows impose des règles très restrictives sur les caractères qui peuvent apparaître dans un
nom de fichier.
➢ Linux, seulement le / est interdit
➢ Tout répertoire contient des entrées . et .. faisant respectivement référence au répertoire lui-
même et au répertoire supérieur.
➢ Tous les fichiers commençant par un point sont par défaut cachés.
➢ Sous Linux, les extensions (suffixes) aux noms des fichiers jouent un rôle beaucoup moins
important que sous Windows
➢ Sous Linux, les fichiers exécutables ne sont pas identifiés par leur extension. L’exécution est
considérée comme un droit d’accès au fichier, tout comme lecture et écriture

Arborescence du système de fichiers Linux :


➢ Le répertoire racine / est le sommet de la hiérarchie des répertoires. Il s'agit d'une
arborescence logique indépendante de l'implémentation physique des divers sous-répertoires,
qui peut s'étendre dur plusieurs partitions, sur plusieurs disques et périphériques et même sur
plusieurs machines à travers des fonctionnalité de partage de fichiers en réseau
➢ Arborescence Linux standardisées pour toutes les distributions
o Seul root peut modifier les fichiers de cette arborescence
➢ Architecture standard
o /bin
▪ Fichiers exécutables binaires utiles à l’initialisation du système + cmd
essentielles
o /boot
▪ Fichiers nécessaire au démarrage : noyau du système (vmlinuz) et fichiers
nécessaires à ce noyau (ramdisk, initrd, …) ainsi qu’une partie du boot loader.
Il est conseillé de placer ce dossier sur une partition séparée en début de
disque
o /dev
▪ Fichiers spéciaux qui servent de canal de communication avec les
périphériques

9
Systèmes d’exploitation open source : théorie
Laenen Maximilien SECU – BA2 – Q1

o /etc
▪ Fichiers de configuration du système et les principaux scripts de démarrage
• /etc/rc.d → Script du démarrage du système
• /etc/x11 → Script de configuration du serveur X
• /etc/sysconfig → Configuration des périphériques
• /etc/cron → Description de la planification de tâches
• /etc/skel → Répertoire squelette recopié dans le répertoire des
nouveaux utilisateurs lors de leur création
o /home
▪ Contient tous les répertoires personnels des utilisateurs
o /lib
▪ Contient les bibliothèques et les modules du noyau Linux
o /mnt
▪ Racine des points de montage des fichiers périphériques et extérieurs
o /opt
▪ Répertoire d’installation d’application supplémentaires (StarOffice, Java, …)
o /proc
▪ Pseudo-répertoire (créé lors du démarrage de la machine) qui contient une
image du système et permet de dialoguer avec le noyau
o /root
▪ Répertoire du super-utilisateur
o /sbin
▪ Contient les fichiers exécutables utiles pour l’administration du système
o /tmp
▪ Lieu de stockages des fichiers temporaires
o /user
▪ Programmes accessibles à tous les utilisateurs. Sa structure reproduit celle de
la racine /
• /usr/x11R6 → Le système X Window
• /usr/bin → Fichiers exécutables accessibles par tous
• /usr/doc → Documentation
• /usr/share → Fichiers de données partagés
• /usr/src → Code source de certains logiciels, comme le noyau
o /var
▪ Données variables liées à la machine
• /var/spool → Contient le spool, c’est-à-dire tout ce qui est de passage
sur le système, comme les courriers électroniques, les fichiers en
attente d’impression, …
• /var/log → Contient les fichiers journaux du système

Chemins absolus et chemins relatifs :


➢ Un répertoire peut être donnée en utilisant une référence relative ou absolue
➢ Relative
o Le chemin à partir du répertoire de travail courant
➢ Absolue
o Le chemin par rapport à la racine
o Commencera donc toujours par un /

10
Systèmes d’exploitation open source : théorie
Laenen Maximilien SECU – BA2 – Q1

VII. Le shell : BASH


Introduction :
➢ Pourquoi une ligne de commande ?
o Historiquement, Unix était un système sans interface graphique
o Comme l’interface graphique n’est pas directement intégrée dans le système, il peut
fonctionner sans. Les outils existent pour administrer un système Unix sans GUI
o Certaines tâches sont plus faciles à accomplir en ligne de commande
o A l’aide des redirections, il est possible de combiner les fonctionnalités de plusieurs
commandes pour réaliser des fonctionnalités plus complexes
o Procédures facilement automatisées
➢ Les consoles virtuelles
o Dans le monde Unix on appelle console l’ensemble constitué d’un écran et d’un clavier
(et éventuellement une souris) branchés à la machine.
o Unix permet d’utiliser une même console physique comme un ensemble de plusieurs
consoles.
o Des raccourcis clavier permettent de switcher entre celle-ci : CTRL-ALT-F1 à F12
o Chaque console peut opérer en mode texte ou en mode graphique
o Le serveur X occupe en général la console 7
o 1 à 6 → Mode texte
➢ Ouverture et fermeture d’un compte sur une console virtuelle en mode texte
o Pour se connecter → Login + mot de passe
o Si correct, vous êtes connecté, si incorrect, vous devrez tenter de vous reconnecter
o La commande exit permet de se déconnecter de la session courante, en arrêtant
toutes les applications en cours.

Le shell :
➢ Introduction
o Le shell est le programme qui va interpréter les commandes entrées dans un terminal
avant de les exécuter.
o Shell = Interface entre le noyau et l’utilisateur.
▪ Le noyau se compose généralement de pilotes de périphériques et d’autres
fichiers spécifiques au matériel. Le shell a pour rôle d’éviter à l’utilisateur de
devoir agir au niveau du noyau et du matériel lorsqu’il désire éditer un fichier.
C’est le rôle du noyau
o utilisateur@machine:~/docs$
▪ Voilà ce que le shell affiche lorsqu’il est en attente d’instructions
▪ ~/docs = Sous-répertoire docs dans le répertoire personne de l’utilisateur (~)
o Par défaut, le shell utilisateur sur un système Linux est BASH (Bourne Again SHel),
lancé par la commande /bin/bash
o Le shell lancé à chaque connexion d’un utilisateur peut être changé en modifiant le
profil de l’utilisateur. → /etc/passwd
Lors de l'entrée d'une commande sur la ligne de commande, le shell vérifie si cette commande est une
commande interne (pour connaître la liste des commandes internes, utiliser man bash). Ensuite, le
shell vérifie dans sa liste d'alias. La définition d'un alias se fait via la commande alias. Enfin, il
recherche un programme exécutable sur le système de fichiers, portant le nom de la commande, en
se servant des chemins listés dans la variable d'environnement $PATH. S'il trouve un tel programme, il
l'exécute en lui passant les arguments spécifiés sur la ligne de commande. Pour des raisons de
sécurité, le répertoire courant est toujours exclu du path.
➢ Lancer des commandes dans un shell
o Linux == Commandes externes (Simples exécutables)
o Afficher le contenu d’un répertoire → ls
▪ Ls /boot → Listera le contenu du répertoire /boot (Espace indispensable)
o Une commande peut prendre des « options » qui modifie le comportement de la
commande. Ex. : -h ou --help
o <nom-commande> [<option>...] [<argument>...]
o Aide : man <nom-commande> OU <nom-commande> -h

11
Systèmes d’exploitation open source : théorie
Laenen Maximilien SECU – BA2 – Q1

➢ Scripts d’initialisation
o L’environnement de la ligne de commande est initialisé par une série de script
o De manière générale ceux-ci se trouvent :
▪ /etc
• Fichiers dont les noms sont du genre bash, profile, … qui sont des
scripts exécutés pour tous les utilisateurs
▪ Répertoire personnel
• Fichiers dont les noms sont du genre bash, profile, … qui sont des
scripts exécutés pour un utilisateur particulier
➢ Les caractères spéciaux
Caractères Signification Echappement
*, ?, [ ] Ces caractères sont des jokers
(wildcards). Ils servent à
sélectionner plusieurs fichiers
ou répertoires.
~ Le tilde est remplacée par le
\, " ", ' '
répertoire personnel de
l’utilisateur
>, >>, <, | Ces caractères servent à
rediriger la sortie ou l’entrée
d’une commande
$ Ce caractère sert à substituer \, ' '
la valeur d’une variable
d’environnement
➢ Les wildcards ou Jokers
o * → Signifie n’importe quelle suite d’un nombre quelconque de caractères
o ? → Signifie n’importe quel caractère unique
o ~ → Raccourci pour le répertoire personnel
o [] → Signifie un caractère parmi ceux qui sont entre crochets
▪ [aC] veut dire a ou C
▪ [a-d] veut dire un caractère dans l’interface compris entre a & d
o \ → Permet d’échapper un caractère spécial
o $ → Correspond au début d’une variable d’environnement. Celles-ci sont propres à
l’environnement en cours
➢ Les variables d’environnement
o De plus, le shell maintient l’environnement de chaque utilisateur à l’aide de variables
d’environnement qui peuvent être paramétrées et modifiées par l’utilisateur.
o Afficher ces variables → set
o Pour définir un variable d’environnement → export globalvar
o Pour supprimer une variable d’environnement → unset globalvar

Les commandes de BASH :


➢ Historique
o Le shell maintient un historique des commandes tapées
o Naviguer dans l’historique
▪ Flèches du haut / Bas
▪ « history »
▪ !<debut-commande>
➢ Complétion de commandes
o TAB → Compléter une commande
▪ Si rien ne se complète c’est qu’une multitude de commandes existe. Appuyer
une seconde fois affichera toutes les possibilités
➢ Touches reconnues par le shell
o BACKSPACE → Supprime le dernier caractère tapé
o ENTER → Indique au shell que l’on a termine de taper sa ligne de commande
o CTRL-U → Efface la ligne
o CTRL-C → Arrête la commande en cours

12
Systèmes d’exploitation open source : théorie
Laenen Maximilien SECU – BA2 – Q1

Comment connaître Linux en 4 commandes :


➢ Afficher l’aide
o --help / -? / -h
➢ Man
o Linux dispose d’une commande en ligne « man » pour affiche l’aide disponible pour
une certaine commande. == Manuel de la commande
o Toutes les commandes ont une man page écrites par le/les développeurs qui ont créé
la commande et doivent donc être préférées aux documentations papier.
o Les mans pages sont séparées en section. La section 1 contient la documentation sur
les commandes accessibles aux utilisateurs normaux par exemple
o Mane pages stockées dans /usr/share/man
Section Descritpion
1 Commandes utilisateur
2 Appels système
3 Appels de librairies
4 Fichiers spéciaux
5 Formats de fichiers
6 Jeux
7 Divers
8 Administration système
➢ Info
o Pages info / texinfo
o Toutes les commandes n’ont pas forcément de page info mais pour certaines
commandes, la page info est plus complète que la page man
o Info utilise un système hypertexte facilitant la navigation
➢ Apropos
o Cette commande permet de voir toute la document se rapportant à un terme.
o Permet de trouver une commande par exemple.
➢ La documentation
o Se trouve dans /usr/share/doc
o Certains commandes ou logiciels installent de la documentation supplémentaires dans
ce répertoire

Quelques commandes :
➢ Commandes sur les répertoires
o Mkdir → Permet de créer un répertoire (make directory)
o Rmdir → Permet de supprimer un répertoire vide (remove directory)
o Du → Affiche l’espace occupé par un répertoire en regardant récursivement l’esapce
occupé par tous les sous-répertoires ainsi que la taille de chacun des fichiers
▪ (disk usage)
▪ -s (summary) → Obtenir un résumé
▪ -h (human) → Permet de demander un affichage lisible par un être humain
➢ Manipuler des fichiers
o Touch → Changer l’heure de dernier accès et de dernière modification d’un fichier
▪ Si le fichier n’existe pas, il créera un fichier vide sous ce nom
o Cp → Utilisée pour copier un ou plusieurs fichiers (ou répertoires) (copy)
▪ cp <fichier> <nouveau fichier>
▪ cp <fichier> [<fichier> ...] <répertoire>
• -p → Copier les droits d’accès
• -r → Copier de manière récursive
• -i → Interroge l’utilisateur avant de supprimer quoi que se soit
o Mv → Permet de déplacer des fichiers (move)
▪ mv <fichier> <nouveau fichier>
▪ mv <fichier> [<fichier> ...] <répertoire>
• -u → Ne déplace que les fichiers + récents que les fichiers existants à
l’emplacement de la destination

13
Systèmes d’exploitation open source : théorie
Laenen Maximilien SECU – BA2 – Q1

oRm → Permet d’effacer des fichiers (remove)


▪ rm <fichier> [<fichier> ...]
• -r → Efface de manière récursive le répertoire
• -f → Permet d’effacer un fichier sans passer par une confirmation
▪ -rf == Dangereux → rm -rf /
➢ Afficher le contenu d’un fichier
o Cat → Concatène les fichiers qui lui sont passés en argument et les affiche sur la
sortie standard (l’écran) (concatenate)
o Head → Permet d’afficher les premières lignes d’un fichier. Par défaut, head affiche
les 10 premières lignes du fichier qui lui est donné en argument
▪ -q → N’imprite pas d’en-tête de nom de fichier (quiet)
▪ -v → Imprime toujours l’en-tête (verbose)
o Tail → Permet d’affiche les dernières lignes d’un fichier. Par défaut, tail affiche les 10
dernières lignes du fichier ou des fichiers qui lui sont donnés en argument
▪ Options == head
o More → Affiche un fichier long écran par écran
▪ ENTER → Avancer ligne par ligne
▪ SPACE → Avancer page par page
o Less → Version GNU de la commande more. De nombreuses fonctionnalités avancées
ont été ajoutées. Par exemple, il est possible d’utiliser les flèches haut et bas pour
voyager dans le texte. De même, il est possible de rechercher du texte en entrant le
caractère / et le mot à rechercher.
F Avancer dans le fichier et essayer de lire plus si une application continue d’ajouter des
lignes au fichier
G xx G Aller an ligne xx ou sur la dernière ligne si xx n’est pas spécifié
g xx g Aller en ligne xx ou 1 si xx n’est pas spécifié
/ ssss Chercher la chaine ssss dans le fichier en recherche avant. Si ssss n’est pas défini,
continue la recherche précédente.
? ssss Chercher la chaine ssss dans le fichier arrière. Si ssss n’est pas défini, continue la
recherche précédente
q quitter

o Sort → Affiche le contenu d’un fichier trié par ordre alphabétique


▪ -r → Permet d’afficher le fichier trié dans l’ordre inverse (reverse)
▪ -u → Permet d’afficher le fichier en supprimant les doublons (unique)
▪ -b → Permet de na pas tenir compte des blancs en début de ligne (blank)
▪ -d → Permet de trier les fichiers en ne tenant compte que des caractères
alphanumériques ou des blancs (directory)
▪ -f → Ignore la casse
➢ Autres commandes utiles
o Find → Permet de rechercher des fichiers
▪ Find [chemin] expression
• Chemin indique à partir d’où il faut chercher (de manière récursive)
• -o → Effectue un OU à chaque correspondance
• -type d → Affiche les répertoires et pas les fichiers
• -type f → Affiche les fichiers et pas les répertoires
• -name <nom> → Cherche les fichiers qui portent le nom <nom>
• -size → Cherche les fichiers selon la taille spécifiée
o Locate → Recherche un fichier dans une base de données reprenant la liste des
fichiers qui est mise à jour toutes les nuits
▪ + rapide que find
▪ MAJ → updatedb

14
Systèmes d’exploitation open source : théorie
Laenen Maximilien SECU – BA2 – Q1

o Grep → Recherche à travers un ou plusieurs fichiers et affiche uniquement les lignes


qui contiennent le mot spécifié
▪ grep [options] <mot recherché> <fichier> [<fichier>...]
▪ -n → Affiche le numéro de la ligne contenant le mot recherche dans le fichier
▪ -xx → Affiche xx lignes avant et après la ligne qui contient le mot recherché
▪ -A xx → Affiche xx lignes après la ligne qui contient le mot recherché
▪ -B xx → Affiche xx lignes avant la ligne qui contient le mot recherché
▪ -v → Affiche les lignes qui ne contiennent pas le mot recherché
▪ -i → Ne tient pas compte de la casse
▪ -l → N’affiche pas les lignes, mais le nom des fichiers contenant le mot
▪ -r → Pour chaque répertoire, réalise une recherche récursive dans tous les
fichiers et sous-répertoires
o Which
▪ Quand une commande est appelée du prompt d’un terminal, le fichier
exécutable correspondant à cette commande est recherché à travers une liste
de répertoires appelées path utilisateur
• Stockée dans $PATH
▪ Pour trouver quel est l’exécutable que l’on utilise lorsqu’on appelle une
commande, on utilisera la commande which
o Df → Affiche l’espace libre sur le système, séparément pour chaque partition
▪ (disk free)
o File → Affiche le type de données que contient un fichier
▪ Vérifie les premiers octets du fichier (magic number)
• Liste des magic numbers stockés dans
o /usr/share/magic ou /etc/magic
o Split → Permet de découper un fichier en plusieurs fichiers séparés.
▪ -b → Spécifier la taille maximum des fichiers générés
o Wc → Permet de compter le nombre de : (word count)
▪ Caractères/octets → -c
▪ Mots → -w
▪ Lignes → -l

Entrée & sortie standard :


➢ Le schéma de Linux
o Les affichages d’une commande passent par stdout, la sortie standard.
▪ Par défaut → L’écran
o Les lectures d’une commande passent par le processus stdin, l’entrée standard
▪ Par défaut → Le clavier
o Les messages passent par stderr, l’erreur standard
▪ Par défaut → Le moniteur
➢ Les redirections
o Pour modifier les entrées / sorties → Redirection
o > → Redirige la sortie standard vers un fichier. Le contenu s’il existe est écrasé
o >> → Idem que > mais n’écrase pas
o < → Redirige l’entrée standard depuis un fichier
o 2> ou 2>> → Redirige l’erreur standard
o > fichier 2>&1 → Redirige la sortie standard et l’erreur standard vers un fichier
o >> fichier 2>&1 → Idem mais n’écrase pas
➢ Pipes
o La sortie d’une commande peut être redirigée vers une autre commande.
o Utilisation d’un pipe |
➢ Tee
o Redirige la sortie vers la sortie standard et vers tout fichier donnée en argument.
o Cela permet d’envoyer la sortie vers une pipe et de la sauvegarder en même temps
▪ Ps aux 2>&1 | tee tata.txt | grep init

15
Systèmes d’exploitation open source : théorie
Laenen Maximilien SECU – BA2 – Q1

VIII. Gestion des paquets


RPM :
➢ Rpm est le système de gestion des paquets des distributions basée sur RedHat. Il détecte les
dépendances, mais ne les gèrent pas. Il permet d’installer, désinstaller, mettre à jour des
paquets à partir d’un fichier « rpm »

Yum :
➢ Yum est la surcouche à RPM qui a été rajoutée afin d’apporter des fonctionnalités similaires à
APT sur les distributions de la famille RedHat

APT :
➢ APT est le gestionnaire de paquets de distributions de la famille Debian.
➢ Il gère les dépendances et le téléchargement automatiquement à partir de « dépôts »
configurés
➢ Il est possible de mélanger les versions de distributions pour les paquets
➢ Par exemple, la version unstable de samba est nécessaire pour certaines fonctionnalité
uniquement présentes dans cette version du paquet
➢ Il faut créer au besoin le fichier /etc/apt/preferences ou ajouter un fichier dans
/etc/apt/preferences.d
Package: *
Pin: release a=stretch
Pin-Priority: 750
➢ Ici, pour tous les paquets, la version stretch avec une priorité de 750.
o Donc lors du passage à la nouvelle version Debian, la version des paquets de stretch
sera préférée à la nouvelle stable
➢ La priorité de la version pour un paquet va influencer le comportement d’apt lors de
l’installation :
o 0-100 : Installé uniquement si aucune version du paquet ne l’est déjà
o 100-500 : Installé uniquement si pas de version plus récente installée ou disponible
o 500-990 : Installé uniquement si pas de version plus récente installée ou disponible
dans la version choisie
o 990-1000 : Installé uniquement si pas de version plus récente installée
o > 1000 : Installé même si la version installée est plus ancienne (downgrade)
o 100 = Priorité d’un paquet déjà installé
o Valeurs égales : Prends le paquet le plus récent

16
Systèmes d’exploitation open source : théorie
Laenen Maximilien SECU – BA2 – Q1

IX. Utilisateurs & groupes


Notions :
➢ Un utilisateur est identifié par un UID unique (User ID). Il possède également un nom
d’utilisateur.
o Cet ensemble est le compte utilisateur
o Un nom d’utilisateur est composé d’une suite de caractères sans espace
➢ Le système ne reconnait que les UIDs / GIDs, pas les noms d’utilisateurs.
o C’est une couche au-dessus du kernel, dans la librairie système que les noms des
utilisateurs sont employés
➢ UID 0 → ROOT
o Il a tous les droits sur le système
➢ Un utilisateur peut appartenir à un ou plusieurs groupes.
o Utilisation d’un GID (Group ID)
o Le premier groupe étant le groupe primaire de l’utilisateur.
o C’est ce groupe qui sera le groupe propriétaire des fichiers de l’utilisateur
➢ Commande id permet d’obtenir les informations d’un utilisateur donné
➢ Lors de l'installation, de nombreux comptes et groupes sont créés. Ils correspondent aux
utilisateurs sous lesquels vont tourner certains services (ou démons). Chaque compte ayant
des droits restreints, cela limite les risques liés à la sécurité.
➢ Sur un système de fichiers Unix standard, chaque fichier est associé à un utilisateur,
l’utilisateur propriétaire et à un seul groupe, le groupe propriétaire. Ici aussi, se sont les UID /
GID qui sont utilisé par le système de fichiers, comme pour le kernel

Les fichiers sur les utilisateurs et les groupes :


➢ /etc/passwd
o Contient différentes informations séparées par des « : »
▪ Login / Mot de passe (en clair puis chiffré) / UID / GID / Nom complet +
coordonnées / Emplacement du répertoire personnel / Shell employé
➢ /etc/shadow
o Voici les différent champs, toujours séparé par ":"
▪ Login / hashage du mot de passe (* ou ! == compte désactivé) / Nombre de
jours comptés à partir du 1er janvier 1970, depuis le dernier changement de
mot de passe / Nombre de jours à attendre avant de pouvoir changer le mot
de passe / Nombre de jours après lesquels le mot de passe doit être changé /
Nombre de jours avant la fin de validité du mot de passe et pendant lesquels
l’utilisateur est averti / Nombre de jours après la fin de validité provoquant la
désactivation du compte / Nombre de jours, comptés à partit du 1er janvier
1970, depuis que le compte est désactivé / Champ réservé
➢ /etc/group
o Les groupes sont définis dans ce fichier.
▪ Nom du groupe / mot de passe chiffré éventuel du groupe / GID / Liste des
utilisateurs appartenant au groupe, séparés par des virgules

Propriétaires des fichiers :


➢ Linux étant un OS multi-utilisateur, il faut gérer les droits de ces fichiers
➢ A chaque fichier est associé un seul utilisateur et un seul groupe. Il faut donc penser la
gestion des droits différemment que sous d’autres OS comme Windows pour lesquels les
droits sont gérés par des ACLs
➢ Ls -l → Permet de voir le propriétaire et le groupe d’un fichier

17
Systèmes d’exploitation open source : théorie
Laenen Maximilien SECU – BA2 – Q1

Gestion des utilisateurs :


➢ Connaître les IDs
o La commande id permet de connaître l’UID et le GUID d’un utilisateur. Sans nom, les
informations seront affichées pour l’utilisateur courant.
➢ Créer un compte utilisateur
o Adduser → + Conviviale
o Useradd → - conviviale
o Une ou es deux dispo selon le distribution
➢ Supprimer un compte utilisateur
o Userdel
▪ Supprime le comtpe dans les fichiers shadow, passwd & group
▪ Suppression du répertoire personnel avec l’option -r
o Deluser → + conviviale
▪ Permet de supprimer tous les fichiers appartenant à l’utilisateur avec l’option
appropriée
➢ Changer le mot de passe
o Passwd → Gérer les mots de passe des comptes.
▪ Min. 10 caractères / Eviter les mots du dictionnaire / Eviter les mots de passe
évident (azerty) / Mélanger les différentes types de caractères / Ne pas
réutiliser de mot de passe
➢ Limiter l’usage d’un compte
o Pour verrouiller ou déverrouiller un compte il faut respectivement passer les options -l
-u à la commande passwd. OU la commande usermod -L -U
➢ Modifier les propriétés d’un compte
o La commande usermod sert à modifier les propriétés qu’un compte à reçues à sa
création. Les options sont donc similaires à celle de useradd. L’emploi le plus courant
sera d’ajouter l’utilisateur à un group
➢ Devenir un autre utilisateur
o Su → (Switch user)
▪ Permet, sans se déconnecter, d’effectuer des actions sous un autre compte,
en ouvrant un shell en tant que cet utilisateur.

Les groupes :
➢ Créer & supprimer des groupes
o Il est possible de modifier directement le fichier groupe
o Ou alors, passer par les commandes : groupadd / groupdel
➢ Changer de groupe principal
o Newgrp permet de changer l’identifiant du groupe principal de l’utilisateur en cours de
session.
o Le groupe en question doit être un des groupes secondaires de l’utilisateur
➢ Mot de passe de groupe
o Gpasswd → Associe un mot de passe à un groupe.
▪ Permet à l’user le connaissant de passer à ce groupe avec newgrp
o Permet également de déléguer l’administration du groupe à des utilisateurs
▪ Gpasswd -A liste,des,administrateurs groupe

Les processus :
➢ Tout programme est exécuté par un compte utilisateur. Il appartient donc à ce compte et à
son groupe. Cet utilisateur est le propriétaire du processus. Le processus a donc les même
droits que son utilisateur et son groupe.
➢ Dans certains cas, le processus reçoit un autre propriétaire.
o Lancées en SUID / SGID (≈ su)
➢ Seul le propriétaire d’un processus a le droit de le tuer. (Excepté root)

18
Systèmes d’exploitation open source : théorie
Laenen Maximilien SECU – BA2 – Q1

Obtenir des informations sur les utilisateurs :


➢ Listes des utilisateurs connectés
o Who / users
o La commande w donne plus d’informations
o La commande whoami permet de retrouver qui on est
➢ Informations sur les connexions
o La commande last [-nn] affiche l’historique des connexions
o Lastlog → Affiche quand un utilisateur s’est connecté pour la dernière fois
o Ac → Permet de voir le temps de connexion des utilisateurs
o Faillog & fail → == last & lastlog mais pour les tentatives de connexion echouées
o Connexions réussies
▪ /var/run/utmp
▪ /var/log/wtmp
▪ /var/log/lastlog
o Connexions échouées
▪ /var/log/btmp
▪ /var/log/faillog
o → Fichiers binaires
o Une entrée est créée dans le utmp lors de chaque connexion d’un utilisateur. Cette
entrée est supprimée à la déconnexion. Le fichier est remis à zéro à chaque
redémarrage du système
o Wtmp contient quant à lui toutes les connexions déconnexions et sert donc à
retrouver l’historique des ces opérations
o Le fichier lastlog contient les dates de dernière connexion classées par UID

19
Systèmes d’exploitation open source : théorie
Laenen Maximilien SECU – BA2 – Q1

X. Gestion avancées des fichiers


Gestion des accès :
➢ Les droits d’accès
o Seul le propriétaire d’un fichier et bien entendu root, peut en général modifier les
permissions sur un fichier.
o Modifier les droits → chmod
o Il existe des droits pour l’utilisateur, le groupe & les autres. → ls -l
o Les différents droits sur les fichiers sont :
▪ R → droit de lecture
▪ W → droit d’écriture
▪ W → droit d’exécution
o Pour pouvoir accéder à un fichier, il faut pouvoir entrer dans le répertoire courant du
fichier. Il faut donc les droits d’exécutions sur tous les répertoires au-dessus de ce
fichier
o Il existe des droits spéciaux :
▪ S → Permet d’exécuter un fichier avec les droits du propriétaires (Set-UID) ou
du groupe propriétaire (Set-GUID)
▪ T → le sticky-bit servait autrefois à conserver un exécuter dans la mémoire
virtuelle (swap) après exécution. Dans la réalité, il ne sert que sur les
répertoires, en ne donnant le droit de supprimer un fichier qu’à son
propriétaire
Ssu U (User) G (Group) O (Other)
Droits --t rwx rwx rwx
Binaire 001 111 101 100
Octal 1 7 5 4
o Dans le cas des liens symboliques, c’est le fichier cible du lien qui est visé par les
modifications de droit. En effet, les liens symboliques n’ont pas de droits, ils ne sont
que des « pointeurs » vers un fichier. Les droits affiché sur un lien symboliques sont
toujours 0777.
➢ La propriété d’un fichier
o Seul root peut changer le propriétaire d’un fichier. Si un autre utilisateur veut se
l’approprier, il doit le faire via une copie du fichier, dont il est automatiquement le
nouveau propriétaire. Il doit évidemment avoir les permissions suffisantes pour
copier.
o Changer le propriétaire → chown
➢ L’umask
o L’umask est un mesage de création de fichier
o Il spécifie les permissions d’accès maximales à un fichier lors de sa création
o Les permissions résultantes seront donc un ET logique entre l’umask et les
permissions demandée par le processus créateur du fichier.
o Commande umask permet de voir le masque courant

Inodes :
➢ Chaque système de fichiers tient à jour une table des descripteurs de fichiers qui est utilisée
par le système d'exploitation pour accéder aux fichiers.
➢ Cette table se compose, pour chaque fichier, d'une entrée appelée inode, repérée par un
index appelé numéro d'inode.
➢ Un inode représente l'emplacement d'un fichier sur le disque et contient les droits,
propriétaire, etc.
➢ Une fois qu’il n’y a plus d’inodes disponibles, il n’est plus possible de créer de fichiers.

20
Systèmes d’exploitation open source : théorie
Laenen Maximilien SECU – BA2 – Q1

Types de fichiers :
➢ Sous linux, tout est vu comme un fichier. En voici les différents types :
o Fichier normal : un fichier texte, un exécutable, …
o Fichier répertoire : un répertoire est un fichier qui contient des références vers
d’autres fichiers
o Fichier lien symbolique : fichier qui contient un pointeur vers un autre fichier (comme
un raccourci sous windows)
o Fichier spécial (de périphérique) : fichier qui permet l’accès à un périphérique, une
partition. Les fichiers de types périphérique se trouvent dans /dev
➢ Liens
o Permettent d’accéder aux même données sous des noms différents
➢ Liens durs
o Un lien dur associe un ou plusieurs fichiers à un même espace disque sur un système
de fichier
▪ Ln fichier1 fichier2Lien
o → Ces deux fichiers ont le même espaces disque / inodes
▪ Mais ils sont indépendants
o La modification de l’un modifie l’autre.
o Un fichier n’est supprimé que lorsque tous les liens durs qui pointent vers ce dernier
sont supprimés.
o En général un lien dur ne peut pas pointer vers un répertoire
o . & .. sont des liens durs
o Les liens durs permettent
▪ D’avoir un fichier dans un répertoire !
▪ A un programme d’avoir plusieurs nom et de réagir en fonction de son nom
d’appel
▪ A un inode de se trouver dans plusieurs répertoires différentes
▪ De ne pas avoir un fichier en « double » sur le disque
➢ Liens symboliques
o Un lien symbolique est un chemin symbolique pointant vers un autre fichier ou
répertoire.
o La suppression du fichier originel casse donc le lien. Par contre il est indépendant du
système de fichiers et peut pointer vers un répertoire
o Etant donné qu’il s’agit d’une sorte de « raccourci », il faut bien sûr le droit d’accès au
répertoire contenant le fichier et pas seulement au lien symbolique.
▪ Ln -s fichier nomdulien

21
Systèmes d’exploitation open source : théorie
Laenen Maximilien SECU – BA2 – Q1

➢ Fichiers de périphérique
o Les périphériques sont vu par le système comme des fichiers. Il est donc possible d’y
accéder directement en lecture / écriture avec les droits d’accès appropriés.
o Les types de fichier de périphérique
▪ Les périphériques à accès de type bloc (random access)
• Accessibles par bloc de données avec un accès aléatoire (HDD, …)
▪ Les périphériques à accès de type caractère
• Lues ou écrites un octet à la fois séquentiellement. (Clavier, …)
o Liste des fichiers de périphérique
▪ /dev/hd… → Périphériques IDE selon l’ordre des bus
▪ /dev/cdrom… → Raccourcis vers le lecteur de CD-ROM
▪ /dev/sd… → Périphériqus SCSI, USB, SATA
▪ /dev/scd… (ou sr…) → CD-ROM SCSI
▪ /dev/ttyS… → Ports séries
▪ /dev/tty… → Consoles virtuelles
▪ /dev/psaux → Port PS/2
▪ /dev/mouse → Lien vers la souris
▪ /dev/fd… → Lecteurs disquettes
▪ /dev/par… → Ports parallèles
▪ /dev/lp… → Imprimantes parallèles
▪ /dev/random → Périphérique aléatoire : Génère des valeurs pseudo-random
▪ /dev/zero → Périphérique qui génère des zéros
▪ /dev/null → Périphérique vide. Tout ce qui y rentre disparait
▪ /dev/loop → Périphérique de boucle de montage
o Numéro de périphériques
▪ De nos jours, il existe des mécanismes qui permettent de gérer les
périphériques automatiquement (détection, création du fichier, …).
▪ Udevd est le mécanisme utilisé actuellement.
▪ Le numéro majeur correspond au type de périphérique. (8 pour sd)
• C’est par ce numéro que le système reconnaît le type du fichier de
périphérique et sait par quelle méthode y accéder. Le schéma de
nommage des périphériques n’est donc qu’une convention pour
retenir facilement quel périphérique à quel nom
▪ Le numéro mineur correspond au numéro d’ordre du fichier de périphérique.
• Ex. : sda1, sda2, …
• Ce numéro est interprété par le driver du périphérique

22
Systèmes d’exploitation open source : théorie
Laenen Maximilien SECU – BA2 – Q1

XI. Gestion des systèmes de fichiers


Partitions :
➢ Fdisk → La commande traditionnelle de partitionnement. L'option -l permet de lister les
partitions sur un ordinateur. Pour partitionner un disque, il faut passer en argument le nom du
disque. La commande s'utilise en mode interactif.
➢ Cfdisk → Plus convivial grâce à un menu interactif
➢ Sfdisk → Le couteau suisse du partitionnement
➢ ! Il faut que le kernel soie au courant de ces modifications de la table des partitions. Cela peut
se faire par un redémarrage, mais aussi via les commandes partprobe ou sfdisk

Systèmes de fichiers :
➢ Afin d’être utilisable, un périphérique doit contenir un système de fichiers, qui permet de
savoir comment accéder au contenu des fichiers, définir les droits, …
➢ Mkfs → Création des systèmes de fichiers.
o -c → Recherche les blocs défectueux et de les marquer comme non-utilisables

Montages :
➢ Mount
o Afin d'être accessible, un système de fichier doit être monté. Cette opération permet
de l'intégrer dans l'arborescence via un point de montage. Le système de fichier
monté peut être une partition mais aussi une clef USB, un partage réseau SMB ou
NFS, etc.
o Le montage est donc la mise en relation d'un système de fichier présent sur un fichier
périphérique et d'un nœud dans l'arborescence Linux. Il se fait via la commande
mount, ou automatiquement au démarrage de système.
o /mnt → Dossier dans lequel seront monté les périphériques amovibles
o De + en + souvent → /media pour USB / CD / …
o Un système de fichier monté ne peut être démonté s'il est encore utilisé (ex un
utilisateur encore dans un répertoire sur le périphérique). Un périphérique monté ne
peut-être éjecté. Équipé d'un éjection mécanique, la disquette peut être éjectée, mais
sera considérée comme toujours présente par le système.
o Les données peuvent même rester accessibles, celles-ci étant mises en cache pour
des questions de performance. Tant qu'un périphérique n'est pas démonté, il est
possible que les données du cache n'aient pas encore été enregistrées.
o Lsof → Lister tous les fichiers ouvert
➢ Taille des partitions
o /boot : 100 MB placé sous le 1024ème cylindre
o /var : 2GB ou plus selon les besoins. Permet de séparer les logs qui ainsi ne menacent
pas la stabilité du système
o /tmp : 500 MB. Idem que /var
o /home : 90 GB selon le nombre d’utilisateurs
o SWAP :
▪ <2 GB : 2* la taille de la ram
▪ 2-4 GB : 2G + taille ram
▪ 6-8 GB : taille ram
▪ >8 GB : Moitié de la ram ou moins
➢ Fstab
o Les systèmes de fichiers à monter au démarrage de la machine sont précisés dans la
fichier /etc/fstab
➢ Mtab
o La liste des systèmes de fichiers actuellement montés est stockée dans /etc/mtab.
Lorsque mount monte ou démonte un système de fichier, il met à jour le fichier mtab.
Le fichier /proc/mounts2 peut contenir moins d'informations de montage que mtab
mais est toujours à jour

23
Systèmes d’exploitation open source : théorie
Laenen Maximilien SECU – BA2 – Q1

Gestion des quotas :


➢ Introduction
o L'espace disque dur sur un ordinateur n'est pas illimité. Il est donc important de
pouvoir le gérer, surtout sur un système multi utilisateurs. Il est nécessaire de mettre
en place une gestion des quotas. Les quotas s'appliquent sur un système de fichier.
o Il est possible de les mettre en place par rapport à l'espace disque occupée, ou par
rapport au nombre de inodes.
o Les quotas seront gérés par utilisateur (ou groupe), et par système de fichier.
o Les gestion des quotas est assurée par le kernel.
➢ Les différentes limites de quota
o Limite dure par utilisateur (hard limit)
▪ Un maximum qui ne peut jamais être dépassé par l’utilisateur. Une fois cette
limite atteinte, il ne peut plus écrire sur le système de fichier tant qu’il n’a pas
libéré de l’espace
o Limite douce par utilisateur (soft limit)
▪ Un maximum inférieur à la limite dure. Une fois cette limite atteinte,
l’utilisateur peu encore écrire sur le système de fichier mais recevra un
avertissement. Cette limite peut être liée à une période de grâce
o Limite dure par groupe
▪ Un maximum concernant un groupe entier d'utilisateurs. Un fois cette limite
atteinte, même si un utilisateur n'a pas dépassé son quota, il ne pourra plus
écrire tant que personne n'a pas libéré assez d'espace.
o Limite douce par groupe
▪ Idem limite douce utilisateur, mais appliqué à un groupe
o Temps de grâce (Grace period)
▪ Une limite douce peut être associée à une période de grâce. Une fois ce délai
passé, elle se comporte comme une limite dure. Cette durée peut être de la
seconde à plusieurs mois. Une valeur typique est d'une semaine
➢ Mettre en place et activer les quotas
o Activation des quotas via /etc/fstab avec les options usrquta & grpquota
o Ensuite, il faut remonter le système de fichier
o Enfin, il faut créer les abses de données de gestion des quotas
▪ Quotacheck
o Les fichiers binaires aquota.user et aquota.grp sont ainsi créés. De plus, le système
de fichiers est inspecté afin de vérifier l’occupation en espace et inodes des
utilisateurs et groupes
o Enfin, il faut activer les quotas via quotaon
▪ quotaoff
➢ Modifier les quotas
o Les fichiers de gestions des quotas sont des fichiers binaires. Il faut donc utiliser une
commande dédiée pour les éditer. Edquota va permettre de modifier les quotas à
travers un éditeur, vi par défaut.
➢ Vérifier les quotas
o La commande quota permet d’affiche les limites de quotas
o La commande repquota filesystems permet d’afficher un résumé de l’état des quotas
pour un système de fichiers
➢ Avertissement par courriel
o La commande warnquota, utilisée en conjonction avec CRON permet d'envoyer
automatiquement un courriel local aux utilisateurs / groupes dont les limites de quota
sont atteintes. Cela peut être très pratique, notamment dans le cas d'utilisateurs
utilisant l'interface graphique. En effet, les programmes graphiques ne gèrent pas
nécessairement les messages d'avertissement des quotas

24
Systèmes d’exploitation open source : théorie
Laenen Maximilien SECU – BA2 – Q1

Raid :
➢ Synthèse architecure des ordinateurs BA1 Q2 Page 9 à 12
➢ + Sous Linux, le softraid est géré par le Kernel. Son utilisation se fera par le biais de la
création de nouveaux périphériques de type bloc.
➢ Utiliser un raid ne dispense pas des back-ups. Un RAID n’est jamais fiable à 100%.

LVM :
➢ Introduction
o Logical Volume Manager est un outil de gestion de volume logique
o Lors de l’installation de machine, il est important de bien planifier l’utilisation de celle-
ci et l’espace disque maximum nécessaire. Malgré cela, une partition peut devenir
trop petite, ou les disque. Pour avoir suffisamment d’espace libre, que faire ? Il est
compliqué de redimensionner et déplacer des partitions
▪ Dans la plupart des cas, il faudra transférer les données sur un autre disque
ou une autre partition, puis de changer le point de montage.
▪ Une autre solution est de créer des points de montages pour certains
répertoires vers d'autres partitions.
▪ Enfin, il faudra peut-être réinstaller et repartionner.
o Mais que devient l'espace désormais inutilisé de l’ancienne partition? Comment faire si
la taille du disque est insuffisante ?
o Les outils de gestion de volume permettent de s’affranchir de ce genre de problèmes
et sont des outils indispensables. La plupart des Unix en ont un, il fallait donc que
Linux en soit également équipé : LVM. Il s’agit de solution très intéressantes, que ce
soit sur serveur ou station de travail
o Un gestionnaire de volume apporte une vision abstraite du stockage en ajoutant une
couche entre la partition physique et le système de fichier. Il permet de passer outre
la structure physique (disques, partitions), de créer des espaces de stockage logiques
de taille dynamique.
o LVM n'apporte aucune solution de fiabilité, et donc, plus grand est l'espace, plus le
risque de grande pertes de données est important. Il convient donc, comme pour
n'importe quel espace de stockage d'ailleurs, de mettre en place une stratégie de
sauvegarde pertinente et de bâtir son LVM sur un RAID.
➢ Structure de LVM
o LVM intercale entre la couche et bas et de haut niveau 2 couches supplémentaires :
▪ VG (Volumes Groups) qui regroupent les partitions
▪ LV (Volumes Logiques) qui contiendront les systèmes de fichiers
o Il est donc possible de modifier la taille d’un VG en ajoutant ou retirant des partitions
physiques
o Les volumes logiques n’étant pas liés à un emplacement « physique », il est possible
de les redimensionner facilement contrairement aux partitions.
o Un VG est composé d’un ou plusieurs volumes physiques (PV). Un PV est un espace
de stockage correspondant à une partition, un volume RAID, …
o Ces PV sont découpés en plus petites unités, les Physical Extends, dont la taille est
définie lors de la création du PV. Ces PE sont les briques élémentaires de LVM. La
taille d'un volume logique, l'équivalent d'un partition, sera donc un multiple de la taille
des PE. UN VG regroupe donc tous les PV en un grand volume virtuel de la taille de la
somme PV réunis.
o Le VG va pouvoir être découpé en Logical Volumes. Ces LV seront utilisés comme
SWAP, point de montage, etc. une fois formatés. Un LV peut être considéré comme
une « partition virtuelle »
o Chaque LV est composé de Logicals extends (LE) pris dans un ou plusieurs PV. Un LE
est la plus petite unité allouable d’un LV et correspond à un PE des PV
o L’arrivée de systèmes de fichiers nouvelle génération comme ZFS, BTRFS, etc. rendra
à l’avenir LVM moins utile, ces derniers intégrant directement une fonction de gestion
de volumes

25
Systèmes d’exploitation open source : théorie
Laenen Maximilien SECU – BA2 – Q1

XII. Gestion processus


Les processus :
➢ Sur les systèmes informatiques, dont UNIX, lorsqu’un programme est exécuté
o Le code machine est lu dans le fichier
o Il est mis en mémoire vive
o Le code est exécuté
➢ Lorsqu’il est exécuté, le programme s’appelle un processus. Une fois l’exécution terminée,
l’espace mémoire est libéré.
➢ Sur un système multi-tâches, plusieurs processus peuvent être exécutés en même temps. Il
faut donc un mécanisme de gestion des processus, afin de répartir le temps d’exécution de
chacun sur le processeur.
➢ Chaque processus a :
o Un PID (Process ID) / Une priorité d’exécution / Un utilisateur propriétaire / Un
groupe propriétaire
➢ Le processus a les mêmes droits que son propriétaire

Afficher les processus :


➢ Ps → Affiche les informations sur les processus en cours d’exécution
o Sans option, cette commande affiche les processus de l’utilisateur dans la console
courante.
o -u → Affiche tous les processus de l’utilisateur
o -a → Pour tous les utilisateurs
o -x → Affiche les processus non rattaché à une console
▪ Ps aux
o Colonnes : user / PID / %CPU utilisé / %mémoire utilisée / Mémoire virtuelle (VSZ) /
Mémoire physique (RSS) / TTY (Console du processus) / STAT (Etat du processus) /
time (temps utilisé sur le processeur) / command (Ligne de commande du processus)
▪ Etat du processus
• D : Uninterruptible sleep
• R : running or runnable
• S : Sleep
• T : Arrêté
• Z : Zombie
➢ Pstree
o Il existe une hiérarchie parent-enfant entre les pocessus.
o Permet de visualiser cette hiérarchie sous la forme d’un arbre
o Init == Premier processus lancé
➢ Top
o Permet d’affiche et de trier les processus selon certains critères. (Les 20 premiers)
o Colonnes :
▪ PID / user / PR (Priorité vue par l’OS) / NI (Priorité assignée) / VIRT
(Mémoire virtuelle) / RES (Mémoire résidente) / SHR (Mémoire partagée / S
(Statut du processus) / %CPU / %MEM / TIME+
➢ Pgrep
o Permet d’obtenir le PID d’un processus directement en passant son nom comme
argument

26
Systèmes d’exploitation open source : théorie
Laenen Maximilien SECU – BA2 – Q1

Envoi des signaux aux processus :


➢ Kill → Envoi un signal à un ou plusieurs processus.
o Le signal peut être passé par son nom ou son numéro
o Kill -[signal] <PID> [PID ...]
▪ 1 : Hang up : Relire les fichiers de configuration
▪ 2 : Interrupt : == CTRL+C
▪ 3 : Quit : == CTRL+D
▪ 9 : Kill : Tue le processus de manière instantané
▪ 15 : Terminate : Demande au programme de se terminer normalement
o Liste complète des signaux → Mang page signals
➢ Killall → Permet de passer un signal à un processus via son nom.
➢ Pkill → Equivalent à pgrep mais pour gérer les processus
➢ Xkill → Faire apparaître une tête de mort à la place du curseur de la souris. Tue l’application
dont la fenêtre est cliquée

Priorité des processus :


➢ Chaque processus à un niveau de priorité. Selon cette dernière, le processus aura une priorité
plus ou moins élevée par rapport aux autres.
➢ S’étende de -20 à 19
➢ + le chiffre est élevé, - la priorité est grande
➢ 0 == Par défaut
➢ -20 à -1 → Seulement root
➢ Nice -n x programme permet de lancer l’application avec une certain priorité
➢ Renice sert à changer le priorité d’un processus.

Contrôle des processus :


➢ Depuis le shell, il est possible de gérer les processus à l’aide de commandes clavier.
o Arrêter un processus → CTRL-C
o Mettre en pause un processus → CTRL-Z

27
Systèmes d’exploitation open source : théorie
Laenen Maximilien SECU – BA2 – Q1

Planification des processus :


➢ Cron
o Composé de crond & crontab
o Crond va exécuter régulièrement les commandes voulues
o Le fichier /etc/crontab est le fichier qui contient ces
commandes. Il faut redémarrer cron si modification

o Quelques exemples de commandes :


▪ Toutes les 15 minutes
• */15 * * * * /usr/bin/apt-get update
▪ Tous les jours à 21H45
• 45 21 * * * /usr/bin/apt-get update
▪ Toutes les 15mn de 15h à 18h et du lundi au vendredi
• */15 15-18 * * 1-5 /usr/bin/apt-get update
o /etc/cron.hourly cron.daily cron.monthly
▪ Les commandes que l’on veut exécuter toutes les heures, jours, mois
o Cron ne lance pas les commandes dans un environnement complet ! La plupart des
variables d’environnement sont donc absentes, comme PATH. Il faut donc utiliser les
chemins complet et initialiser ses propres variables en cas de besoin
➢ Crontab
o Chaque utilisateur peut avoir son fichier crontab. Crontab est la commande qui
permet à un utilisateur de l'éditer. Cron vérifie le fichier de l'utilisateur toutes les
minutes. Il n'est pas nécessaire de le redémarrer en cas de modification. La
commande ouvre via un éditeur le crontab de l'utilisateur. La configuration est
identique à /etc/crontab, le nom d'utilisateur en moins. Les fichiers cron.allow et
cron.deny permettent de gérer les utilisateurs autorisés à exécuter une commande.
Attention cela gère l'accès à crontab, mais ne supprime pas les tâches déjà planifiées
o -e → permet d’éditer son fichier crontab
o -l → Permet de lister ses tâches planifiées
o -r → Permet de supprimer son fichier crontab
o -u → Permet d’utiliser le fichier crontab d’un autre utilisateur
➢ Anacron
o Si le système est éteint à l'heure de l'exécution d'un tâche, elle ne sera pas exécutée.
Anacron s'occupe de lancer ces actions. Anacron est exécuté à intervalles réguliers
par cron.
➢ At
o La commande at permet de passer au service atd des commandes à n'exécuter
qu'une seule fois, à un moment spécifié. Comme pour crontab, les accès peuvent être
géres via at.allow at.deny

28
Systèmes d’exploitation open source : théorie
Laenen Maximilien SECU – BA2 – Q1

XIII. Etat du système (/proc)


Un système de fichier virtuel :
➢ /proc est un pseudo système de fichiers. Il est donc virtuel, n’a aucune existence physique sur
un disque. Il est créé et monté à chaque démarrage du système. Ce système de fichier virtuel
permet de communiquer avec le kernel en cours d’exécution. Il est possible d’obtenir des
informations, tout autant que de modifier les configurations du noyau.

Les fichiers de /proc :


➢ Valeur numérique → C’est un ensemble de répertoires ayant pour nom le numéro des
processus en cours d’exécution
o Cmdline : commande complète utilisée pour lancer le processus
o Cwd : lien symbolique vers le répertoire de travail courant du processus
o Environ : environnement du processus
o Exe : lien symbolique vers l’exécutable
o Fd : dossier contenant des liens symboliques vers les fichiers ouvert par le processus
(y compris les entrées / sorties)
o Maps : régions de la mémoire utilisée et leurs permissions
o Mem : mémoire du processus
o Root : lien vers la racine du processus
o Smaps : comme map mais affiche la taille occupée par les maps mémoire
o Stat : est utilisé par la commande ps, et contient les informations sur le processus
o Status : informations sur le processus dans un format lisible facilement
o Task : dossier content des liens symboliques vers les threads du processus
➢ Apm → Informations sur l’apm
➢ Acpi → Informations ACPI
➢ Bus → Informations sur les bus disponibles sur le système
o Pci/devices : périphériques PCI vu par le système. Utilisé par la commande lspci
o Usb : Périphériques USB vu par la système/ lsusb est la commande pour afficher les
périphériques USB
o Pccard : périphériques pcmcia
➢ Cmdline → Arguments passé au noyau lors de son démarrage
➢ Cpuinfo → Informations processeurs
➢ Devices → Les différents types de fichiers périphériques reconnus par le noyau, classés par
group, avec leurs numéros majeurs.
➢ Dma → Les canaux DMA’s utilisés
➢ Filesystems → Les systèmes de fichiers supportés par le noyau
➢ Ide → Liste les périphériques ide utilisé par le système
➢ Interrupts → Liste des IRQ utilisées par le système
➢ Iomem → Carte des plages I/O de la mémoire
➢ Ioports → Les plages d’adresse d’entrées / sorties utilisées par les périphériques
➢ Kcore → Mémoire physique
➢ Loadavg → Charge moyenne du système sur les dernières minutes
➢ Meminfo → Informations sur la mémoire
➢ Modules → Indique les modules kernels chargés
➢ Mounts → Liste des systèmes de fichiers montés
➢ Net → Permet d’accéder aux informations sur la couche réseau
o Arp : Table arp
o Dev : Status des interfaces
➢ Partitions → Disque et partitions vu par le système avec leur numéros de périphériques
➢ Scsi → Idem ide mais pour les périphériques scsi
➢ Stat → Statistiques kernel
➢ Swaps → Fichiers de mémoire virtuelle en utilisation

29
Systèmes d’exploitation open source : théorie
Laenen Maximilien SECU – BA2 – Q1

➢ Sys → Accès aux variables du kernel afin de vérifier / modifier sa configuration


o Fs :systèmes de fichiers
o Kernel
o Net : Configuration de la couche réseau
o Vm : configuration du comportement de la mémoire
➢ Tty
➢ Uptime → Délai depuis la démarrage du système et durée passée dans l’état idle
➢ Version → Version du kernel en cours
➢ Vmstat → Statistiques de la mémoire virtuelle

30
Systèmes d’exploitation open source : théorie
Laenen Maximilien SECU – BA2 – Q1

XIV. Démarrage de Linux


➢ Le boot est un processus capable de se lancer tout seul qui est composé de quelques grandes
étapes :
o Chercher, charger et exécuter le code de bootstrap (ex. : BIOS)
o Chercher, charger et exécuter un kernel
o Exécuter les instructions de démarrage et les démons
o Gérer les processus et les états du système

Firmware BIOS / UEFI :


Une fois sous tension, un processeur charge et exécute le code de démarrage situé à une adresse
prédéterminée dans la ROM (Réelle ou virtuelle).

Le firmware
➢ A connaissance des périphériques de la carte mère comme les contrôleurs SATA, réseaux,
USB, sondes de t° etc., …
➢ gère la configuration matérielle des périphériques

POST : Durant le bootstrapping, le firmware va faire l’inventaire du matériel, l’initialiser et le vérifier


Démarrage du système en chargeant le fichier de démarrage (EFI ou secteur de boot) choisi ou
configuré par défaut. L'ordre de préférence de démarrage varie selon la configuration.

➢ UEFI & GPT


o L’Unified Extensible Firmware Interface peut fonctionner en mode « legacy » pour
être compatible avec un OS ne le supportant pas
o Il utilise des partitions de type GPT qui comprend le système de fichier FAT
▪ Le firmware consule la GPT pour trouver une partition spéciale en FAT, l’ESP
▪ La fichier EFI voulu est lu pour charger le boot manager, kernel, … demandé
par l’UEFI
o N’importe quel OS supportant FAT peut lire et éditer l’ESP (EFI System Partition)
o Le fichier par défaut est /efi/boot/bootx64.efi. Pour une distribution linux, le chemin
sera en général /efi/nom_distribution/grubx64.efi.
o Il est possible de consulter et modifier les variables UEFI avec la commabde
efibootmgr
➢ BIOS & MBR
o BIOS → Firmware historique dans le PC, Basic Input Output system état écrit en
assembleur. Firmware encore régulier présenté par défaut par les hyperviseurs
o MBR → Sa taille est de 512 octets. Il contient un boot loader et la table des partitions
▪ Le MBR est chargé en mémoire par le BIOS
▪ Ensuite
• soit le chain loader par défaut intégré au MBR charge le secteur de
démarrage de la partition marquée active dans la table des partitions.
• soit le code du chain loader a été remplacé par un gestionnaire de
démarrage, qui est chargé en mémoire et exécuté. Celui-ci s'occupera
de démarrer le système. Étant donné la taille du MBR3, seule la 1ere
partie (1st stage) du BM s’y trouve. Elle ne sert en général qu'à
effectuer une seule action: charger en mémoire et lancer l'exécution
de la 2ème moitié du gestionnaire, appelée second-stage. Par
exemple avec LILO lors de cette étape s'affiche "LI". Si la suite ne
s'affiche pas ("LO") c'est que la chargement de la 2ème partie a
échoué. Le phénomène est identique avec GRUB. Cela signifie que la
2ème partie n'a pas été trouvée, parce qu'elle est abîmée, ou ne
trouve pas à l'endroit recherché.

31
Systèmes d’exploitation open source : théorie
Laenen Maximilien SECU – BA2 – Q1

Boot manager :
➢ Avant == bootloader, maintenant comme + de fonctionnalités == boot manager
➢ Plus indispensables avec l’UEFI vu qu’il est capable de charger un kernel directement si ce
dernier est prévu pour
➢ Il existe plusieurs boot manager pour Linux (Grub 2, isolinux, …)
➢ Le boot manager va s’occuper de gérer les différentes actions possibles puis décompresser,
charger en mémoire et lancer l’exécution du kernel. Il va également s’occuper de la ramdisk
➢ Le gestionnaire en passant des options au kernel, permet notamment de choisir entre
plusieurs options de démarrage, de préciser au kernel l’emplacement de la racine, …

Kernel Linux :
➢ Le noyau est exécuté et initialisé avec les options passées en boot manager. Il réserve la
mémoire, détecte et initialise les périphériques, … Pour finir, il monte le système de fichier
racine, libère le ramdisk
➢ Ensuite, il sert lance certains processus "spontanés" qui lui sont propre, repérable par des [],
ainsi que le 1er processus du système (PID=1) : le démon de gestion du système Linux, qui
tourne encore en général sous le nom init, systemd
➢ Une fois le kernel en cours d’exécution, il faut lancer le reste du système, c’est-à-dire les
processus qui tournent dans l’espace utilisateur

Gestionnaires d’initialisation du système :


➢ De nos jours, systemd remplace init et upstart dans la plupart des distributions Linux.
➢ Le rôle d’un démon de gestion d’initialisation du système est de faire fonctionner l’OS avec les
bon démons et paramètres de configuration à tout moment
➢ Pour ce faire, il y a différents modes (runlevels, init, ou targets systemd) comme :
o Single-user : pour le dépannage : Montage minimum, single user root, pas de services
chargés
o Multiuser : Montages et services, multi-utilisateurs et GUI
o Server : Idem sans GUI
o Reboot : Redémarrage du système
➢ A chaque mode correspond :
o Un ensemble de démons lancés
o Un ensemble de tâches à exécuter en début/fin de mode :
▪ Appliquer le hostname
▪ Vérifier l’heure et la mettre à jour
▪ Vérifier les FS
▪ Charger la configuration réseau
▪ Monter les systèmes de fichiers selon fstab
▪ Nettoyer /tml
▪ Configurer le firewall
▪ Configurer le kernel
▪ Arrêter/démarrer des services
➢ Systemd
o Remplace init dans les distribution modernes, reprend toutes ses fonctionnalités et
bien plus en encore, comme gérer les connexion réseaux, les logs, les logins, etc. Il
standardise la gestion des services, … qui pouvait varier d'une distribution à l'autre. Il
est composé de nombreux exécutables, librairies, composants du kernel.
o Beaucoup + intégré avec l’OS, ses sous-systèmes et le kernel qu’init qui est un simple
service
o La version de systemd utilisée peut donc ne pas supporter certaines versions du
kernel, … De plus, vu sa dépendance au kernel Linux, il n’est pas portable vers les
autres nixes
o Quelques différences entre init & systemd
▪ Les runlevels sont remplacés par des « targets »
▪ La commande init n’a plus raison d’être
▪ Inittab n’existe plus

32
Systèmes d’exploitation open source : théorie
Laenen Maximilien SECU – BA2 – Q1

▪ Les démons, … ne sont plus gérés par des scripts mais par des fichiers de
configurations (« Units »)
▪ Systemd est « aware » intégré au système, init ne fait qu’exécuter des scripts
o Les Units
▪ Une unit est n’importe quel élément géré par systemd, comme un service, un
socket, un point de montage, un timer, …
o Les targets
▪ sysVinit utilisait des renlevels statiques. Systemd peut être rétrocompatible
grâce à des targets associées aux anciens runlevels
o Gestion de systemd : systemctl
▪ Systemctl est une commande générique de systemd qui permet de vérifier le
status et modifier sa configuration
▪ L’appel de systemctl est suivi en général d’une sous-commande comme :
• Liste-unit-files / start / stop / restart / …
➢ Init
o Encore utilisé dans certaines distributions, notamment celles qui doivent être les plus
légères possibles
o /sbin/init est le 1er processus lancé. D'ailleur son PID est de 1. c'est lui qui va
s'occuper de lancer le système via le fichier de configuration /etc/inittab
o /etc/inittab configure le nombre consoles, les runlevels, l'interception de certaines
commandes claviers, …
o Runlevels
▪ Un système Linux peut fonctionner sous différents runlevels. Un niveau
d'exécution défini les fonctionnalités disponibles sur le système, ç à d les
services lancés à son démarrage.
o Les différents Runlevels
▪ Ils peuvent varier selon les distributions et être personnalisé, mais par
convention
• 1 → Mode signel user
• 0 → Eteindre le système
• 6 → Redémarrage du système
o Au démarrage le runlevel par défaut est lu dans la configuration d’init
o Les commandes init et telinit permettent de changer de runlvel
o Il est également possible de le préciser au kernel manuellement au démarrage via le
gestionnaire de démarrage
o Les scripts de démarrage de services
▪ Le répertoire /etc/init.d contient tous les scripts de démarrage de service.
Selon les fonctionnalité voulues dans le runlevel concerné, des liens
symboliques sont créés dans les répertoires rc0.d -> rc6.d
▪ Les noms des liens symbolique commencent par S pour un service à
démarrer, par un K pour un service à arrêter, suivi d'un nombre qui
détermine l'ordre de démarrage du service, puis du nom de celui-ci
▪ Fichiers de config des scripts de démarrage de init.d sont dans /etc/default
o Inconvénients d’init
▪ Les scripts rc ne sont pas tous compatibles avec des éléments comme
SELinux, …
▪ Init exécute des scripts, n’a pas « conscience » des tâches liées au mode de
fonctionnement
▪ Nombreux script sur plusieurs niveaux
▪ Difficile de
• Lancer un service suite à un évènement
• Relancer automatiquement un service
▪ Travail dupliqué d’une distribution à l’autre car il doit y être intégré
▪ Compliqué à modifier par l’utilisateur
▪ Pas de gestion des dépendances entre services
▪ Pas de parallèlisme

33
Systèmes d’exploitation open source : théorie
Laenen Maximilien SECU – BA2 – Q1

XV. Gestion du kernel


➢ Le rôle du Kernel est de gérer :
o Les processus / Les périphériques / Les I/O / Les interruptions / La mémoire / Les
systèmes de fichiers
➢ Il existe différents types de kernel :
o Monolithique → Tous les rôles sont gérés en internes du noyau, sous la forme d’un
seul bloc de code tournant dans l’espace kernel
o Microkernel → le noyau est minimal, un maximum de fonctionnalités sont déportées
sous la forme de services tournant dans l’espace utilisateur
o Hybride → Un microkernel dont toutes les fonctionnalités ne sont pas externalisées
pour optimiser les performances (ex. MaC OS X, Windows NT, …)
➢ Linux est un kernel monolithique modulaire. Autrement dit, le kernel comporte des modules
qui peuvent charger/décharger à la demande.

Les versions du noyau :


➢ Version du noyau actuel → uname
o Syntaxe → n°Majeur.n°Mineur.NiveauDePatch
➢ Numéro mineur pair == Version stable / Numéro mineur impair == Version instable
➢ Généralement, le kernel est compressé via gzip, d’où le nom bzImage et vmlinuz

Modules :
➢ Un module est un morceau de code qui peut être chargé/déchargé du noyau.
o Permet l’ajout de fonctionnalités sans reboot
o Permet d’avoir un noyau + compact
▪ Exemple de module : Supporter un système de fichiers particulier
o Si module impossible à charger, risque amoindri que le système bloque
➢ → /lib/modules/version_kernel/ (extension .ko)
➢ Inconvénients → Légère perte de performances / sécurité
➢ Lsmod → Lister les modules actifs
➢ Modinfo → Avoir les informations sur un module
➢ Insmod → Charger un module
➢ Modprobe → Charger un module gérant les dépendans de celui-ci
➢ Rmmod → Désinstaller un module

Compilation :
➢ Il faut un environnement de compilation complet : Compilateur C (GCC) + Outils pour gérer la
compilation (make)
➢ Intéressant de compiler un kernel afin qu’il supporte au mieux votre architecture. → Gain de
performances / Meilleur fonctionnement du système / … Certains processeurs necessite un
kernel personnalisé
➢ Il existe des patchs pour ajouter des fonctionnalités particulières non intégrées au kernel
➢ Kernel
o Télécharger les sources et les décompresser dans /usr/src
o Make menuconfig
o Make [-j n]
o Make install
➢ Modules → make modules_install
➢ Ramdisk → mkinitramfs

34
Systèmes d’exploitation open source : théorie
Laenen Maximilien SECU – BA2 – Q1

XVI. PAM
PAM :
➢ PAM == Pluggable Authentification Modules
o Ensemble de librairies qui fournissent un mécanisme d’authentification flexible sur un
système UNIX
o Créé par Sun. Pour linux → Linux-PAM
➢ Avant, chaque application devait gérer son propre système d’authentification (/etc/passwd,
/etc/shadow, …)
➢ PAM résout ce problème.
o Le développeur va pouvoir programmer sans tenir compte du schéma
d’authentification qui sera employé.
o Il est géré par une série de modules extérieurs, les modules PAM
➢ PAM laisse à l’administrateur le choix de la stratégie d’authentification pour les applications
utilisant PAM
➢ BUT DE PAM
o Séparer le développement des applications de celui du mécanisme d’authentification
sécurisé

Principe de fonctionnement :
Exemple avec « login »
➢ Login effectue 2 actions :
o Vérifier que l’utilisateur qui se connecte est bien qui il prétend être
o Ensuite lui fournir un shell tournant sous l’identité de l’utilisateur
➢ En général c’est un mot de passe qui est demandé pour la vérification → Déléguée à PAM
o Il serait possible de demander un vérification par voix, empreinte, … si le module PAM
existe
➢ PAM effectue 4 tâches différentes :
o Gestion de l’authentification, des comptes, des sessions et des mots de passe. Le
comportement de PAM sera déterminé par ses fichiers de configuration
➢ Login va donc appeler PAM. PAM va lire ses fichiers de configuration et ensuite chargera les
modules appropriés. Les modules sont appelés dans l’ordre des fichiers de configuration, et
vont effectuer les différentes tâches demandées. L’échange des messages avec l’utilisateur est
effectué à travers l’application via la fonction conversation(). Une fois la tâche
d’authentification terminée, PAM précisera à login si elle est réussie ou non.

35
Systèmes d’exploitation open source : théorie
Laenen Maximilien SECU – BA2 – Q1

Configuration :
➢ Librairies PAM → /lib/security
➢ Fichiers de config → /etc/pam.d
➢ Fichier unique de config → /etc/pam.conf
➢ En général pour chaque application == un fichier de config
➢ Structure générale d’un fichier PAM :
o [service] type_module contrôle chemin_module arguments_module
➢ Erreur dans le fichier de config == Message d’échec de PAM
➢ Les différents types de modules
o Auth
▪ Authentifier l’utilisateur par diverses méthodes
▪ Ensuite, lui donner l’appartenance aux groupes, … comme recevoir un certif
o Account
▪ S’occupe des tâches qui ne sont pas liées à l’authentification comme
restreindre les heures d’accès, les ressources mise à disposition, …
o Session
▪ Gère tout ce qui est lié à une session. (Répertoire personnel, msg syslog, …)
o Password
▪ Mettre à jour les données d’authentification de l’utilisateur c’est-à-dire en
général son mot de passe. → Mise en place de stratégie de mdp
➢ Les drapeaux de contrôles (Indique à PAM comment réagir en cas de réussite ou d’échec)
o Required
▪ La réussite de ce module est nécessaire
▪ En cas d’échec, cela sera précisé à l’application / l’utilisateur une fois tous ls
autres modules parcourus.
▪ En cas de réussite, le module suivant est testé (Donc ordre important)
o Requisite
▪ En cas d’échec, l’information est retournée directement, les autres modules
ne sont pas parcourus
o Suffcient
▪ En cas de réussite, envoie directement le message de réussite à l’application
sans tester les modules suivant. S’il y a échec, cela n’a pas d’importance sauf
s’il s’agit du dernier module de la pile
o Optionnal
▪ Qu’importe le résultat, cela n’a pas d’importance
➢ Les arguments et les chemins des modules
o Le module PAM par défaut dans /lib/security ou /lib64/security
➢ Les modules
o Pam_console → Permet de donner des droits supplémentaires à un utilisateur
o Pam_access → Permet d’autoriser/interdire l’accès via un username, une IP, …
o Pam_cracklib → Permet de vérifier la force d’un mot de passe
o Pam_deny → Retourne directement un échec
o Pam_ftp → Permet l’accès anonyme sur FTP, via une simple IP
o Pam_issue → Affiche le fichier /etc/issue avant de demander le login
o Pam_limits → Limiter les ressources qu’un utilisateur peut obtenir
o Pam_listfile → Autoriser/interdire un service sur base d’une liste dans une fichier
o Pam_mkhomedir → Permet la création à la volé du répertoire personnel
o Pam_mount → Permet de monter un système de fichier distant ou chiffré lors de la
connexion de l’utilisateur
o Pam_nologin → Permet de n’autoriser que le root à se connecter
o Pam_permit → Retourne automatiquement un succès
o Pam_rootok → Permet à root d’accéder à certains service sans MDP
o Pam_tally → Compte le nombre d’échec d’authentification
o Pam_time → Autoriser/interdire l’accès sur base de la date + heure
o Pam_warn → Enregistre l’username + nom de la machine dans les logs
o Pam_wheel → Resrteint l’accès au statut root (su) aux seuls membres du groupe
wheel

36
Systèmes d’exploitation open source : théorie
Laenen Maximilien SECU – BA2 – Q1

XVII. Intégration Linux Windows


Pourquoi ?
➢ Certaines solutions logiciels ne sont disponible que sur un OS bien particulier
➢ Pour des raisons de coût de licence
➢ Pour des raisons stratégiques
➢ Les habitudes des utilisateurs
➢ Pour des questions de performances, stabilités, …
➢ Selon les domaines de compétences des administrateurs informatiques
➢ ….

Rappel Domaines :
Le but d'un domaine est de centraliser la gestion des ressources d'un réseau. C'est un ensemble
d'objets partageant un ensemble de règles de sécurité communes. Il permet à un utilisateur de se
connecter sur n'importe quelle machine pour laquelle il en a reçu le droit. Grâce à un profil itinérant, il
peut accéder à son profil et ses documents de n'importe quel endroit.

Rappel Active Directory :


➢ Modèle des domaines Microsoft depuis Windows Server 2000. Combinaison de :
o Structure basée LDAP
o Authentification basée sur Kerberos
o Structure DNS dynamique

Les solutions obsolètes :


➢ LDAP → LDAP est un serveur d'annuaire sur lequel est basé l'AD. Les clients peuvent s'y
connecter pour authentifier les utilisateurs. Tout passe en clair, y compris les mots de passe
➢ Kerberos + LDAP → Kerberos est le protocole d'authentification utilisé dans l'AD, bien que la
version utilisée par Microsoft soit légèrement modifiée. Ce protocole conçoit une
authentification réseau solide pour les applications clients serveur. L'AD utilise la version 5 de
ce protocole.
➢ SFU → Services For Unix est un ensemble de services fourni par Microsoft pour l'aide à
l'intégration et la migration de services Unix dans une AD.
➢ Samba → Il s'agit d'un serveur qui est capable de créer des partages Windows, ... c'est
l'équivalent d'un serveur NT4
➢ Samba4 → Dernière version de Samba qui peut s’intégrer dans un domaine Active Directory,
mais aussi prendre le rôle de DC

Solution actuelle :
➢ Combinaison de Samba4 + Winbindd + IDMAP

Samba :
➢ Les modes de sécurité
o Samba peut fonctionner selon plusieurs modes ou niveaux de sécurité. Chaque moi
correspond à une valeur différente du paramètre security de smb.conf. Les deux
premiers modes correspondant à de simples partages Windows
o Security = user
▪ Le client envoie une demande de session, en retour le serveur lui retourne
une demande d'authentification login / mot de passe. Une fois
l'authentification réussie, le client peux accéder aux partages pour lesquels il
a reçu le droit d'accès
o Security = share
▪ Chaque ressource partagée est associée à un ou plusieurs mot de passe. Il
suffit de la connaitre pour pouvoir y accéder. Le serveur Samba doit deviner
le nom d'utilisateur à associer. C'est le seul à niveau qui se base sur les
partages. Les autres se basent sur l'utilisateur.

37
Systèmes d’exploitation open source : théorie
Laenen Maximilien SECU – BA2 – Q1

o Security = server
▪ identique au niveau de sécurité user, mis à part que l'authentification se
réaliser via un autre serveur. Comme le serveur samba n'est pas intégré à un
domaine, il peut y avoir des problèmes divers de fonctionnement. Il n'est pas
recommandé de l'utiliser.
o Security = domain
▪ Samba fait partie d'un domaine NT4. L'authentification se fait donc auprès
d'un PDC, BDC, DC ou serveur Samba jouant un de ces rôle. L'authentification
fonctionne comme pour le mode user. Les machines doivent également
t'authentifier dans le domaine.
o Security = ads
▪ Ce mode permet cette fois de s'intégrer dans une AD en mode natif. Il y a
donc emploi de LDAP et de kerberos. Il faut donc en plus du paramètre
security préciser de quel "royaume" kerberos le serveur fait partie: realm =
nom.du.royaume.kerberos.
➢ Problèmes lié à l’utilisation de Samba
o L’existence d’un compte local à la machine Samba est nécessaire
o Une solution est de créer une copie de tous les comptes du domaine sur les machines
Samba à l’aide de scripts
o Pour résumer :
▪ A chaque compte samba doit correspondre un compte Linux/unix
▪ Un script peut créer ces comptes
▪ A chaque utilisateur correspondra une entrée dans passwd et dans shadow
sur chaque machine
o → Utilisation de winbindd afin de se passer des comptes locaux

Winbindd :
➢ Présentation
o Winbindd crée des bindings, des liens entre des comptes Unix virtuels créés à la volée
et les comptes Windows. Ces informations sont stockées dans une base de données
qui fait le lien entre les UID/GID et les SID
o Il permet de se connecter à un domaine NT ou AD
o Il s’utilise via un module PAM (authentification) et nsswitch (résolution des noms de
comptes)
o Fourni avec Samba3
➢ Configuration
o Deux fichiers à configurer
▪ Nsswitch.conf → Configuration des services de noms et bdd système
▪ Smb.conf → Configuration proprement dite
▪ Ensuite, configurer PAM pour qu’il utilise WInbindd
➢ Problèmes
o Même s’il n'y a plus besoin de comptes locaux, Winbindd n'est pas la solution parfaite:
en effet, à chaque SID est créé une correspondance en UID ou GID. Or dans une
système Unix, c'est à partir de ce compte qu'est reconnu l'utilisateur. S'il y a plusieurs
serveurs Winbindd, un utilisateur risque d'avoir des numéros de comptes différents,
puisque les correspondances sont créées à la volée dans une base de données locale.
o Lors de l'emploi de services qui utilisent les User ID, comme NFS, cela va poser des
problèmes. Un utilisateur doit avoir le même UID sur tous les systèmes du réseau.
o Par contre, dans le cas d'un serveur fonctionnant seul, Winbindd est une bonne
solution.

38
Systèmes d’exploitation open source : théorie
Laenen Maximilien SECU – BA2 – Q1

IDMAP :
➢ IDMAP gère la traduction entre les ID Windows et Unix.
➢ RID
o Il existe un première solution qui a l'avantage d'être non centralisée. Elle ne
fonctionne que dans un domaine unique AD, pas de la cas de domaines avec des
trusts. Les ID Unix sont dérivées du RID1
➢ LDAP
o LDAP peut être utilisé dans les domaines de type NT4 ou AD. Les informations
concertants les bindings entre comptes Unix et Windows seront stockée dans un
serveur LDAP.

39
Systèmes d’exploitation open source : théorie
Laenen Maximilien SECU – BA2 – Q1

XVIII. Radius
Introduction :
➢ Remote Authentication Dial-in User Service → Protocole qui gère l’authentification
➢ Radius est un protocole Client Serveur&PAAA (Authentication / Authorization / Accounting).
o Authorization → Une fois que l’on a prouvé notre ID. Qu’est-ce que l’on peut faire ?
o Accounting → Compter ce qu’il s’est passer sur le réseau
➢ UDP port 1812.

Acteurs :
➢ Serveurs va gérer l’authentification, il va utiliser une DB d’identification (Txt, SQL, LDAP, ...).
➢ Client : NAS (Network Acces Server), n’importe quel service demande une authentification :
o Access Point, Portail Capitf (Hotspot) et Switch (admin, vlan, ...).
➢ Utilisateur va émettre la requête d’identification au RADIUS.
➢ Proxy : serveur radius qui redirige les requêtes vers un autre serveur radius.

Fonctionnement :
➢ Utilisateur (supplicant) : contacte le client Radius pour une demande d’authentification. Il
utilise des protocoles :
o EAP (sert à transporter l’identification) (Extensible Authentication Protocol)
▪ Supporte plein de méthode d’authentification
▪ Mot de passe :
• Natif
o PAP (Password Auth. Protocol) : le login et le mdp sont
transmis en clair sur la ligne, ils sont hachés. (Réponses :
ACK / NACK)
o CHAP (Challenge Auth. Protocol) : Le login et le mdp ne
circule pas sur le réseau.
▪ Je pose une question, si la personne répond bien ==
GOOD
▪ Challenge / Responde / Success / Failure
• Extensions Msft (Mschap, Mschapv2).
➢ Authentification « normale » : client envoie Acces-request au serveur (selon protocole user) et
le serveur répond au client (Acces-Accept ou Acces-Reject).
➢ Authentification par challenge : Le Serveur envoie au client Acces-Challenge, le client répond
au challenge par un paquet de type Acces-Request.

Attributs :
➢ Autres types de messages : Accouting-Request et Accouting-Reponses
➢ Informations transmises dans un paquet : Type, Longueur, Attribut (qui va indiquer le type
d’information Radius).
➢ User-Name
➢ User-Password
➢ CHAP-Password
➢ NAS-IP-Address
➢ Acct-Session-Time

Sécurité :
➢ Authentification Client : PSK : La sécurité entre le serveur et le client est assurée par une clé
partagée qui crypte notamment le mot de passe user, attention cependant à la faiblesse de la
clé. Il faut utiliser sur chaque NAS une clef différente, assez complexe. Basé sur md5 → pas
trop dur à casser.
➢ Authentification utilisateur : Dépend de la solution choisie (pap, chap ,challenge...). Attention
à la façon dont login/mdp sont transférés à l’hôte utilisateur.

40
Systèmes d’exploitation open source : théorie
Laenen Maximilien SECU – BA2 – Q1

XIX. Kerberos
➢ Protocole relativement ancien
➢ Fourni un système d’authentification unifié en milieu hétérogène

Principes :
➢ Clé : Employée pour chiffrer un message. Clé secrète : Soit symétrique soit asymétrique :
o Clé symétrique : on peut lire le message des 2 cotés car chacun à une clé, mais si on
a 1000 users qu’y veulent l’accès aux données, il faut dont 1000 paires de clés
o Clé asymétrique : 1 Clé privées et une clé publique qui est données à tout le monde.
C’est surtout utilisé dans les transactions bancaires. Mais cela permet de créer qu’une
seule paire de cl ». Néanmoins, cela demande beaucoup de ressources pour générer
tout cela.
➢ Clé de session : clé négociée et demandée seulement à un moment (lors d’une session)

Authentification par Secret Partagé :


➢ Alice appel Bob : A -> B : A
➢ Bob envoie Kab(la clé de partage) {NB} (nb aléatoire)
➢ Alice déchiffre et envoie Kab{NB-1}
➢ Alice envoie Kab {Na} (permet de vérifier si c’est le vrai bob)
➢ Bob déchiffre et envoie Kab{Na-1}
➢ Alice & Bob se sont authentifiés mutuellement.

Tierce partie :
➢ Partie de confiance : elle connait les clefs et s’occupe de l’échange entre les parties.
➢ La partie de confiance reçoit une demande d’Alice, elle génère une clef de sessions K ab qu’elle
envoie à Alice et Bob. Ensuite les deux peuvent communiquer.
➢ Pour diminuer le travail de la Tierce Partie, une fois la demande d’Alice reçue, il génère une
clef qu’elle partage avec Alice et Bob, mais seul bob sait déchiffrer la clef, Alice ne fait que
transmettre. (Token kerberos).
➢ Rejeu de message : Essayer de rejouer un message ancien, compromis pour s’authentifier
(utiliser une clef déjà utilisée). Ticketbr ou Une ancienne Kab.
➢ Protéger contre le rejeu : Pour cela, il faut ajouter une valeur unique dans les messages
chiffrés pour rendre invalide d’anciens messages. Ex : un nombre aléatoire, qu’Alice est
incapable de déchiffrer.

Protocol de Needam-Schroeder :
➢ Protocole utilisé sur des réseaux non-sûr,
comme Internet. Ce protocole permet aux
communiquant de prouver leurs identités
respectives à travers le réseau.

Kerberos Rôles :
➢ Client = Alice / Service = Bob.
➢ KDC = Key distribution center (centre de
distribution de clef).
➢ KDC gère un royaume (Realm): Relation
de confiance entre royaume → permet
l’authentification inter-royaume.
➢ Divisés en 2 services :
o TGS : Ticket Granting Server : Service qui fournit les tickets.
o AS : Authentification service : Service auprès duquel les clients s’authentifient

41
Systèmes d’exploitation open source : théorie
Laenen Maximilien SECU – BA2 – Q1

Fonctionnement Kerberos :
➢ Les clé secrètes sont des hashages des mots de passes

➢ Résumé :
o Client demande un TGT auprès de l’AS
o Client demande un TS auprès du TGS avec son TGT
o Client demande une session et s’authentifie avec son TS
o → SSO : Single Sing Out

Faiblesse :
➢ Dépendance au temps
➢ Single point of failure
➢ Compromission d’un mdp
➢ Services doivent supporter kerberos
➢ Algorithme de cryptage

42
Systèmes d’exploitation open source : théorie

Vous aimerez peut-être aussi