tuto4 ready
This commit is contained in:
parent
b5de41662b
commit
e928733d61
17 changed files with 789 additions and 203 deletions
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue