Note exercices, little rework for the book

This commit is contained in:
nemunaire 2022-04-08 22:39:14 +02:00
commit bbd704d413
29 changed files with 210 additions and 120 deletions

View file

@ -1,6 +1,8 @@
\newpage
### Exercice : comparaison de *namespace* -- `cmpns.sh`
::::: {.exercice}
### Comparaison de *namespace* -- `cmpns.sh`
Les *namespaces* d'un programme sont exposés sous forme de liens symboliques
dans le répertoire `/proc/<PID>/ns/`.
@ -63,3 +65,5 @@ Et pourquoi pas :
- uts: same
```
</div>
:::::

View file

@ -1,7 +1,9 @@
\newpage
Exercice : `docker exec`
------------------------
::::: {.exercice}
`docker exec`
-------------
Après voir lu la partie concernant les *namespaces*, vous avez dû comprendre
qu'un `docker exec`, n'était donc rien de plus qu'un `nsenter(1)`.
@ -46,3 +48,5 @@ d63ceae86395
...
```
</div>
:::::

View file

@ -13,8 +13,7 @@ systèmes de fichiers.
Au premier abord, les points de montage dans l'arborescence d'un système de
fichiers n'ont pas l'air d'être remplis de notions complexes : un répertoire
peut être le point d'entrée d'un montage vers la partition d'un disque
physique... ou d'une partition virtuelle, comme nous l'avons vu dans le TP
précédent.
physique... ou d'une partition virtuelle, comme nous l'avons vu précédemment.
Mais avez-vous déjà essayé de monter la même partition d'un disque physique à
deux endroits différents de votre arborescence ?
@ -35,30 +34,30 @@ d'avoir une vision arborescente des points de montage en cours d'utilisation.
```
TARGET SOURCE FSTYPE OPTIONS
/ /dev/sda1 ext4 rw,relatime,data=ordered
├─/proc proc proc rw,nosuid,nodev,noexec,relatime
├─/sys sysfs sysfs rw,nosuid,nodev,noexec,relatime
├─/sys/kernel/security securityfs securityfs rw,nosuid,nodev,noexec,relatime
├─/sys/firmware/efi/efivars efivarfs efivarfs ro,relatime
└─/sys/fs/cgroup cgroup_root tmpfs rw,nosuid,nodev,noexec,relatime,size=10240k,mode=755
├─/sys/fs/cgroup/unified none cgroup2 rw,nosuid,nodev,noexec,relatime
├─/sys/fs/cgroup/cpuset cpuset cgroup rw,nosuid,nodev,noexec,relatime,cpuset
├─/sys/fs/cgroup/cpu cpu cgroup rw,nosuid,nodev,noexec,relatime,cpu
├─/sys/fs/cgroup/cpuacct cpuacct cgroup rw,nosuid,nodev,noexec,relatime,cpuacct
├─/sys/fs/cgroup/blkio blkio cgroup rw,nosuid,nodev,noexec,relatime,blkio
├─/sys/fs/cgroup/memory memory cgroup rw,nosuid,nodev,noexec,relatime,memory
├─/sys/fs/cgroup/devices devices cgroup rw,nosuid,nodev,noexec,relatime,devices
├─/sys/fs/cgroup/freezer freezer cgroup rw,nosuid,nodev,noexec,relatime,freezer
├─/sys/fs/cgroup/net_cls net_cls cgroup rw,nosuid,nodev,noexec,relatime,net_cls
├─/sys/fs/cgroup/perf_event perf_event cgroup rw,nosuid,nodev,noexec,relatime,perf_event
├─/sys/fs/cgroup/net_prio net_prio cgroup rw,nosuid,nodev,noexec,relatime,net_prio
└─/sys/fs/cgroup/pids pids cgroup rw,nosuid,nodev,noexec,relatime,pids
├─/dev devtmpfs devtmpfs rw,nosuid,size=10240k,nr_inodes=486250,mode=755
├─/dev/pts devpts devpts rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000
├─/dev/shm tmpfs tmpfs rw
└─/dev/mqueue mqueue mqueue rw,nosuid,nodev,noexec,relatime
├─/home /dev/sda3 ext4 rw,nosuid,nodev,relatime,data=ordered
├─/run tmpfs tmpfs rw,nosuid,nodev,noexec,mode=755
└─/tmp tmpfs tmpfs rw,nosuid,nodev,noexec,relatime
/proc proc proc rw,nosuid,nodev,noexec,relatime
/sys sysfs sysfs rw,nosuid,nodev,noexec,relatime
├─/sys/kernel/security securityfs securityfs rw,nosuid,nodev,noexec,relatime
├─/sys/firmware/efi/efivars efivarfs efivarfs ro,relatime
└─/sys/fs/cgroup cgroup_root tmpfs rw,nosuid,nodev,noexec,relatime
├─/sys/fs/cgroup/unified none cgroup2 rw,nosuid,nodev,noexec,relatime
├─/sys/fs/cgroup/cpuset cpuset cgroup rw,nosuid,nodev,noexec,relatime,cpuset
├─/sys/fs/cgroup/cpu cpu cgroup rw,nosuid,nodev,noexec,relatime,cpu
├─/sys/fs/cgroup/cpuacct cpuacct cgroup rw,nosuid,nodev,noexec,relatime,cpuacct
├─/sys/fs/cgroup/blkio blkio cgroup rw,nosuid,nodev,noexec,relatime,blkio
├─/sys/fs/cgroup/memory memory cgroup rw,nosuid,nodev,noexec,relatime,memory
├─/sys/fs/cgroup/devices devices cgroup rw,nosuid,nodev,noexec,relatime,devices
├─/sys/fs/cgroup/freezer freezer cgroup rw,nosuid,nodev,noexec,relatime,freezer
├─/sys/fs/cgroup/net_cls net_cls cgroup rw,nosuid,nodev,noexec,relatime,net_cls
├─/sys/fs/cgroup/perf_event perf_event cgroup rw,nosuid,nodev,noexec,relatime,p_event
├─/sys/fs/cgroup/net_prio net_prio cgroup rw,nosuid,nodev,noexec,relatime,net_pri
└─/sys/fs/cgroup/pids pids cgroup rw,nosuid,nodev,noexec,relatime,pids
/dev devtmpfs devtmpfs rw,nosuid,size=10240k,nr_inodes=486250
├─/dev/pts devpts devpts rw,nosuid,noexec,relatime,gid=5,ptmxmod
├─/dev/shm tmpfs tmpfs rw
└─/dev/mqueue mqueue mqueue rw,nosuid,nodev,noexec,relatime
/home /dev/sda3 ext4 rw,nosuid,nodev,relatime,data=ordered
/run tmpfs tmpfs rw,nosuid,nodev,noexec,mode=755
/tmp tmpfs tmpfs rw,nosuid,nodev,noexec,relatime
```
</div>

View file

@ -63,8 +63,9 @@ Si vous n'avez pas de partition à disposition, vous pouvez utiliser un `tmpfs`
Placez ensuite dans cette nouvelle racine le système de votre choix.
::::: {.exercice}
### Exercice : Changer de racine -- `myswitch_root.sh`
### Changer de racine -- `myswitch_root.sh`
Voici les grandes étapes du changement de racine :
@ -150,3 +151,5 @@ par :
42sh# exec chroot / command
```
</div>
:::::

View file

@ -4,11 +4,11 @@ Je vous recommande la lecture du *man* `namespaces(7)` introduisant et
énumérant les *namespaces*.
Pour tout connaître en détails, [la série d'articles de Michael Kerrisk sur les
*namespaces*](https://lwn.net/Articles/531114/) est excellente ! Auquel il faut
*namespaces*](https://lwn.net/Articles/531114/)[^lwnns1] est excellente ! Auquel il faut
ajouter [l'article sur le plus récent `cgroup`
*namespace*](https://lwn.net/Articles/621006/) et [le petit dernier sur le
*namespace* `time`](https://lwn.net/Articles/766089/).
*namespace*](https://lwn.net/Articles/621006/)[^lwnns2] et [le petit dernier sur le
*namespace* `time`](https://lwn.net/Articles/766089/)[^lwnns3].
[Cet article de Michael Crosby montrant l'utilisation de clone(2)](https://web.archive.org/web/20190206073558/http://crosbymichael.com/creating-containers-part-1.html)
est également des plus intéressants, pour ce qui concerne la programmation
plus bas-niveau.
[^lwnns1]: <https://lwn.net/Articles/531114/>
[^lwnns2]: <https://lwn.net/Articles/621006/>
[^lwnns3]: <https://lwn.net/Articles/766089/>

View file

@ -234,8 +234,11 @@ Pour construire une nouvelle interface de ce type :
Pour approfondir les différentes techniques de routage, je vous
recommande cet article :
[Linux Containers and Networking](https://blog.flameeyes.eu/2010/09/linux-containers-and-networking).
[Linux Containers and Networking](https://blog.flameeyes.eu/2010/09/linux-containers-and-networking)[^netnsmore1].
Appliqué à Docker, vous apprécierez cet article : [Understanding Docker
Networking Drivers and their use
cases](https://www.docker.com/blog/understanding-docker-networking-drivers-use-cases/).
cases](https://www.docker.com/blog/understanding-docker-networking-drivers-use-cases/)[^netnsmore2].
[^netnsmore1]: <https://blog.flameeyes.eu/2010/09/linux-containers-and-networking>
[^netnsmore2]: <https://www.docker.com/blog/understanding-docker-networking-drivers-use-cases/>

View file

@ -81,8 +81,10 @@ La sécurité du *namespace* `user` a souvent été remise en cause par le pass
on lui attribue de nombreuses vulnérabilités. Vous devriez notamment consulter
à ce sujet :
* [Security Implications of User Namespaces](https://blog.araj.me/security-implications-of-user-namespaces/) ;
* [Anatomy of a user namespaces vulnerability](https://lwn.net/Articles/543273/) ;
* [Security Implications of User Namespaces](https://blog.araj.me/security-implications-of-user-namespaces/) :\
<https://blog.araj.me/security-implications-of-user-namespaces/> ;
* [Anatomy of a user namespaces vulnerability](https://lwn.net/Articles/543273/) :\
<https://lwn.net/Articles/543273/> ;
* <http://marc.info/?l=linux-kernel&m=135543612731939&w=2> ;
* <http://marc.info/?l=linux-kernel&m=135545831607095&w=2>.