Update 2018
This commit is contained in:
parent
84f99be155
commit
5b03f090fe
10 changed files with 64 additions and 64 deletions
|
|
@ -1,5 +1,5 @@
|
||||||
SOURCES_TUTO = tutorial.md setup.md cmpns.md docker-exec.md mountns.md rendu.md
|
SOURCES_TUTO = tutorial.md setup.md cmpns.md docker-exec.md mountns.md rendu.md
|
||||||
SOURCES_LESSON = lesson.md namespaces.md networkns.md pidns.md userns.md
|
SOURCES_LESSON = lesson.md mount.md namespaces.md networkns.md pidns.md userns.md
|
||||||
|
|
||||||
PANDOCOPTS = --latex-engine=xelatex \
|
PANDOCOPTS = --latex-engine=xelatex \
|
||||||
--standalone \
|
--standalone \
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,7 @@ title: Virtualisation légère -- Linux Internals partie 2
|
||||||
subtitle: Support de cours
|
subtitle: Support de cours
|
||||||
author: Pierre-Olivier *nemunaire* Mercier
|
author: Pierre-Olivier *nemunaire* Mercier
|
||||||
institute: EPITA
|
institute: EPITA
|
||||||
date: Jeudi 2 novembre 2017
|
date: Mercredi 7 novembre 2018
|
||||||
...
|
...
|
||||||
|
|
||||||
Le but de cette seconde partie sur les mécanismes internes du noyau va nous
|
Le but de cette seconde partie sur les mécanismes internes du noyau va nous
|
||||||
|
|
|
||||||
|
|
@ -124,12 +124,12 @@ sein d'un système de fichiers attaché à plusieurs endroits.
|
||||||
|
|
||||||
### partagé -- *shared mount*
|
### partagé -- *shared mount*
|
||||||
|
|
||||||
Dans une montage partagé, une nouvelle accroche sera propagée parmi tous les
|
Dans un montage partagé, une nouvelle accroche sera propagée parmi tous les
|
||||||
systèmes de fichiers de ce partage (on parle de *peer group*).
|
systèmes de fichiers de ce partage (on parle de *peer group*).
|
||||||
|
|
||||||
<div lang="en-US">
|
<div lang="en-US">
|
||||||
```shell
|
```shell
|
||||||
# Création de nos répertoires de travail
|
# Création de notre répertoire de travail
|
||||||
mkdir /mnt/test-shared
|
mkdir /mnt/test-shared
|
||||||
|
|
||||||
# On s'assure que le dossier que l'on va utiliser pour nos tests utilise bien la politique shared
|
# On s'assure que le dossier que l'on va utiliser pour nos tests utilise bien la politique shared
|
||||||
|
|
@ -19,7 +19,7 @@ ne sont pas encore *containerisables* :
|
||||||
[le document fondateur](https://www.kernel.org/doc/ols/2006/ols2006v1-pages-101-112.pdf)
|
[le document fondateur](https://www.kernel.org/doc/ols/2006/ols2006v1-pages-101-112.pdf)
|
||||||
parle ainsi d'isoler les périphériques, ou encore l'horloge. Pour ce
|
parle ainsi d'isoler les périphériques, ou encore l'horloge. Pour ce
|
||||||
dernier,
|
dernier,
|
||||||
[un patch a même déjà été proposé](https://lwn.net/Articles/179825/).
|
[un patch a même déjà été proposé](https://lwn.net/Articles/766089/).
|
||||||
|
|
||||||
### L'espace de noms `mount` {#mount-ns}
|
### L'espace de noms `mount` {#mount-ns}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -153,7 +153,7 @@ gourmande.
|
||||||
|
|
||||||
### VLAN
|
### VLAN
|
||||||
|
|
||||||
Il est possible d'attribuer juste une interface de VLAN, si l'on a switch
|
Il est possible d'attribuer juste une interface de VLAN, si l'on a un switch
|
||||||
supportant la technologie [802.1q](https://fr.wikipedia.org/wiki/IEEE_802.1Q).
|
supportant la technologie [802.1q](https://fr.wikipedia.org/wiki/IEEE_802.1Q).
|
||||||
|
|
||||||
<div lang="en-US">
|
<div lang="en-US">
|
||||||
|
|
|
||||||
|
|
@ -11,11 +11,11 @@ comme l'`init`.
|
||||||
|
|
||||||
Contrairement aux autres *namespaces* où l'on peut demander à se séparer du
|
Contrairement aux autres *namespaces* où l'on peut demander à se séparer du
|
||||||
*namespace* en question à n'importe quel moment de l'exécution du processus,
|
*namespace* en question à n'importe quel moment de l'exécution du processus,
|
||||||
via `unshare(2)` ou `setns(2)` par exemple, ici, le changement n'est valable
|
via `unshare(2)` ou `setns(2)` par exemple, ici, le changement ne sera valable
|
||||||
qu'après le prochain `fork(2)` (ou similaire).
|
qu'après le prochain `fork(2)` (ou similaire).
|
||||||
L'espace de noms PID du processus courant n'est pas changé, afin que le
|
En effet, l'espace de noms n'est pas changé, afin que le processus ne change
|
||||||
processus ne change pas de PID en cours de route (puisque fonction du
|
pas de PID en cours de route, puisqu'il dépend du *namespace* dans lequel il se
|
||||||
*namespace* dans lequel il se trouve).
|
trouve.
|
||||||
|
|
||||||
|
|
||||||
## Isolons !
|
## Isolons !
|
||||||
|
|
@ -65,12 +65,12 @@ Cette fois, `top` et `ps` nous rapportent bien que l'on est seul dans notre
|
||||||
## Arborescence à l'extérieur du *namespace*
|
## Arborescence à l'extérieur du *namespace*
|
||||||
|
|
||||||
Lors de notre première tentative de `top`, lorsque `/proc` était encore monté
|
Lors de notre première tentative de `top`, lorsque `/proc` était encore monté
|
||||||
sur le `procfs` de l'espace de noms initial : votre processus (au PID 1 dans
|
sur le `procfs` de l'espace de noms initial : notre processus (au PID 1 dans
|
||||||
son nouveau *namespace*) était présent dans l'arborescence de l'espace initial
|
son nouveau *namespace*) était présent dans l'arborescence de l'espace initial
|
||||||
avec un PID dans la continuité des autres processus, étonnant !
|
avec un PID dans la continuité des autres processus, étonnant !
|
||||||
|
|
||||||
En fait, l'isolation consiste en une virtualisation des numéros du processus :
|
En fait, l'isolation consiste en une virtualisation des numéros du processus :
|
||||||
la plupart des processus du système intial ne sont pas accessibles, et ceux qui
|
la plupart des processus du système initial ne sont pas accessibles, et ceux qui
|
||||||
font partie de l'espace de noms créé disposent d'une nouvelle numérotation. Et
|
font partie de l'espace de noms créé disposent d'une nouvelle numérotation. Et
|
||||||
c'est cette nouvelle numérotation qui est montrée au processus.
|
c'est cette nouvelle numérotation qui est montrée au processus.
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -26,9 +26,6 @@ sera pas pris en compte.
|
||||||
Par ailleurs, n'oubliez pas de répondre à
|
Par ailleurs, n'oubliez pas de répondre à
|
||||||
[l'évaluation du cours](https://www.epitaf.fr/moodle/mod/quiz/view.php?id=42).
|
[l'évaluation du cours](https://www.epitaf.fr/moodle/mod/quiz/view.php?id=42).
|
||||||
|
|
||||||
Afin de m'aider à améliorer ce cours, je vous invite à remplir
|
|
||||||
[ce sondage anonyme](https://www.epitaf.fr/moodle/mod/quiz/view.php?id=44).
|
|
||||||
|
|
||||||
|
|
||||||
Tarball
|
Tarball
|
||||||
-------
|
-------
|
||||||
|
|
|
||||||
|
|
@ -63,7 +63,7 @@ Nous allons utiliser des programmes issus des
|
||||||
[`procps-ng`](https://gitlab.com/procps-ng/procps) ainsi que ceux de la
|
[`procps-ng`](https://gitlab.com/procps-ng/procps) ainsi que ceux de la
|
||||||
[`libcap`](http://www.friedhoff.org/posixfilecaps.html).
|
[`libcap`](http://www.friedhoff.org/posixfilecaps.html).
|
||||||
|
|
||||||
Sous Debian et ses dérivés, ses paquets sont respectivement :
|
Sous Debian et ses dérivés, ces paquets sont respectivement :
|
||||||
|
|
||||||
* `util-linux`
|
* `util-linux`
|
||||||
* `procps`
|
* `procps`
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,7 @@ title: Virtualisation légère -- TP n^o^ 4
|
||||||
subtitle: Linux Internals partie 2
|
subtitle: Linux Internals partie 2
|
||||||
author: Pierre-Olivier *nemunaire* Mercier
|
author: Pierre-Olivier *nemunaire* Mercier
|
||||||
institute: EPITA
|
institute: EPITA
|
||||||
date: Jeudi 2 novembre 2017
|
date: Mercredi 7 novembre 2018
|
||||||
...
|
...
|
||||||
|
|
||||||
Le but de ce second TP sur les mécanismes internes du noyau va nous permettre
|
Le but de ce second TP sur les mécanismes internes du noyau va nous permettre
|
||||||
|
|
@ -11,7 +11,7 @@ d'utiliser les commandes et les appels systèmes relatifs aux *namespaces* ainsi
|
||||||
que d'appréhender la complexité des systèmes de fichiers.
|
que d'appréhender la complexité des systèmes de fichiers.
|
||||||
|
|
||||||
Tous les exercices de ce TP sont à rendre à <virli@nemunai.re> au plus tard le
|
Tous les exercices de ce TP sont à rendre à <virli@nemunai.re> au plus tard le
|
||||||
jeudi 9 novembre 2017 à 8 h 42.
|
mercredi 14 novembre 2017 à 12 h 42.
|
||||||
|
|
||||||
En tant que personnes sensibilisées à la sécurité des échanges électroniques,
|
En tant que personnes sensibilisées à la sécurité des échanges électroniques,
|
||||||
vous devrez m'envoyer vos rendus signés avec votre clef PGP. Pensez à
|
vous devrez m'envoyer vos rendus signés avec votre clef PGP. Pensez à
|
||||||
|
|
|
||||||
|
|
@ -34,13 +34,16 @@ garder dans le nouvel espace, que les utilisateurs et les groupes utiles au
|
||||||
processus, en les renumérotant au passage si besoin.
|
processus, en les renumérotant au passage si besoin.
|
||||||
|
|
||||||
|
|
||||||
### L'utilisateur -1 : *nobody*
|
### L'utilisateur -2 : *nobody*
|
||||||
|
|
||||||
Lorsque l'on arrive dans un nouvel espace, aucun utilisateur ni groupe n'est
|
Lorsque l'on arrive dans un nouvel espace, aucun utilisateur ni groupe n'est
|
||||||
défini. Dans cette situation, tous les identifiants d'utilisateur et de groupe,
|
défini. Dans cette situation, tous les identifiants d'utilisateur et de groupe,
|
||||||
renvoyés par le noyau sont à -1 ; valeur qui correspond en toute circonstance à
|
renvoyés par le noyau sont à -2 ; valeur qui correspond par convention à
|
||||||
l'utilisateur *nobody* et au groupe *nogroup*.
|
l'utilisateur *nobody* et au groupe *nogroup*.
|
||||||
|
|
||||||
|
-1 étant réservé pour indiqué une erreur dans le retour d'une commande, ou la
|
||||||
|
non-modification d'un paramètres passé en argument d'une fonction.
|
||||||
|
|
||||||
|
|
||||||
### `uid_map` et `gid_map`
|
### `uid_map` et `gid_map`
|
||||||
|
|
||||||
|
|
@ -56,7 +59,7 @@ Sur chaque ligne, on doit indiquer :
|
||||||
en question.
|
en question.
|
||||||
- L'identifiant marquant le début de la plage d'utilisateurs, pour le processus
|
- L'identifiant marquant le début de la plage d'utilisateurs, pour le processus
|
||||||
affichant le fichier.
|
affichant le fichier.
|
||||||
- La taille de la page.
|
- La taille de la plage.
|
||||||
|
|
||||||
|
|
||||||
Par exemple, le *namespace* `user` initial défini la correspondance suivante :
|
Par exemple, le *namespace* `user` initial défini la correspondance suivante :
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue