tuto4 ready

This commit is contained in:
nemunaire 2022-11-11 10:14:16 +01:00
commit e928733d61
17 changed files with 789 additions and 203 deletions

View file

@ -10,17 +10,18 @@ notre machine.
Ces fonctionnalités sont très utiles pour éviter les dénis de service, mais nos
processus ne sont pas particulièrement isolés du reste du système. On aimerait
maintenant que nos processus n'aient pas accès à l'ensemble des fichiers, ne
puissent pas interagir avec les autres processus, avoir sa propre pile
puissent pas interagir avec les autres processus, avoir leur propre pile
réseau, ... Voyons maintenant les *namespaces* qui vont nous permettre de faire
cela.
Initiation rapide
-----------------
Présentation des *namespaces*
-----------------------------
Les espaces de noms du noyau, que l'on appelle *namespaces*, permettent de
dupliquer certaines structures, habituellement considérées uniques pour le
noyau, dans le but de les isoler d'un groupe de processus à un autre.
noyau, dans le but qu'un groupe de processus soit isolé d'autres processus, sur
certains aspects de l'environnement dans lequel il s'exécute.
On en dénombre huit (le dernier ayant été ajouté dans Linux 5.6) : `cgroup`,
`IPC`, `network`, `mount`, `PID`, `time`, `user` et `UTS`.
@ -33,12 +34,13 @@ que AppArmor, SELinux, Yama, ...).
[^NSDOC]: <https://www.kernel.org/doc/ols/2006/ols2006v1-pages-101-112.pdf>
Commençons par passer en revue rapidement les différents *namespaces*.
#### L'espace de noms `mount` {.unnumbered #mount-ns}
Depuis Linux 2.4.19.
Cet espace de noms isole la liste des points de montage.
Cet espace de noms dissocie la liste des points de montage.
Chaque processus appartenant à un *namespace mount* différent peut monter,
démonter et réorganiser à sa guise les points de montage, sans que cela n'ait
@ -47,6 +49,9 @@ donc pas nécessairement démontée après un appel à `umount(2)`, elle le sera
lorsqu'elle aura effectivement été démontée de chaque *namespace mount* dans
lequel elle était montée.
Il s'agit d'une version améliorée de nos bons vieux `chroot`, puisqu'il n'est
plus possible de s'en échapper en remontant l'arborescence.
#### L'espace de noms `UTS` {.unnumbered #uts-ns}
@ -136,7 +141,7 @@ Depuis Linux 5.6.
Avec cet espace de noms, il n'est pas possible de virtualiser l'heure d'un de
nos conteneurs (on peut seulement changer le fuseau horaire, puisqu'ils sont
gérés par la `libc`). Les horloges virtualisations avec ce *namespace* sont les
gérés par la `libc`). Les horloges virtualisées avec ce *namespace* sont les
compteurs `CLOCK_MONOTONIC` et `CLOCK_BOOTTIME`.
Lorsque l'on souhaite mesurer un écoulement de temps, la méthode naïve consiste