Note exercices, little rework for the book
This commit is contained in:
parent
0794ecaa2b
commit
bbd704d413
29 changed files with 210 additions and 120 deletions
|
|
@ -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>
|
||||
|
||||
:::::
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
||||
:::::
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
||||
:::::
|
||||
|
|
|
|||
|
|
@ -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/>
|
||||
|
|
|
|||
|
|
@ -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/>
|
||||
|
|
|
|||
|
|
@ -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>.
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue