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

25
tutorial/4/setns-pid.md Normal file
View file

@ -0,0 +1,25 @@
\
D'une manière similaire à notre dernier exemple, depuis Linux 5.8, `setns(2)`
peut utiliser comme premier argument, un *file descriptor* pointant un
processus (`pidfd`).
Eh oui, outre l'obtention d'un *file descriptor* sur un lien symbolique étrange
d'une structure du noyau, il est possible d'en obtenir un sur un processus :
- soit en réalisant un `open(2)` d'un dossier `/proc/<PID>` ;
- soit en utilisant l'appel système `pidfd_open(2)`, en précisant l'identifiant
du processus dont on souhaite obtenir le *file descriptor* ;
- soit en retour d'un `clone(2)` avec l'option `CLONE_PIDFD`.
<div lang="en-US">
```bash
int fd = pidfd_open(42, 0);
setns(fd, CLONE_NEWUSER | CLONE_NEWNET | CLONE_NEWUTS);
```
</div>
À travers cet exemple, on cherche à récupérer un *file descriptor* pour le
processus 42. On le passe ensuite à `setns(2)` en précisant que l'on ne
souhaite rejoindre que les espaces de noms Utilisateurs, Réseau et UTS (nom de
la machine).