Work on tuto 3
This commit is contained in:
parent
f216cc220c
commit
84fbd90d66
6 changed files with 165 additions and 7 deletions
96
tutorial/3/chroot.md
Normal file
96
tutorial/3/chroot.md
Normal file
|
|
@ -0,0 +1,96 @@
|
|||
\newpage
|
||||
|
||||
L'isolation du pauvre
|
||||
=====================
|
||||
|
||||
Depuis les premières version d'Unix, il est possible de changer le répertoire
|
||||
vu comme étant la racine du système de fichiers.
|
||||
|
||||
|
||||
## Mise en place de l'environnement
|
||||
|
||||
Pour se créer un environnement afin de changer notre racine, il va falloir
|
||||
commencer par créer le dossier de notre nouvelle racine :
|
||||
|
||||
```shell
|
||||
mkdir newroot
|
||||
```
|
||||
|
||||
### `busybox`
|
||||
|
||||
On a déjà parlé du porjet Busybox : c'est un programme linké statiquement,
|
||||
c'est-à-dire qu'il n'a pas de dépendance sur des bibliothèques
|
||||
dynamiques. Il se suffit donc à lui-même dans un chroot (dans lequel on ne peut
|
||||
pas accéder aux bibliothèques du système, il faudrait toutes les copier à la
|
||||
main).
|
||||
|
||||
```shell
|
||||
cp $(which busybox) newroot/
|
||||
chroot newroot /busybox ash
|
||||
```
|
||||
|
||||
|
||||
### `debootstrap`
|
||||
|
||||
`debootstrap` est le programme utilisé par l'installeur des distributions
|
||||
Debian et ses dérivés. Il permet d'installer dans un dossier (en général, ce
|
||||
dossier correspond au point de montage de la nouvelle racine choisi par
|
||||
l'utilisateur lors de l'installation) le système de base.
|
||||
|
||||
```shell
|
||||
debootstrap jessie newroot/ http://httpredir.debian.org/
|
||||
```
|
||||
|
||||
`pacstrap` est le programme équivalent pour Archlinux.
|
||||
|
||||
|
||||
### *stage3*
|
||||
|
||||
Les distributions « à l'ancienne » proposent encore de télécharger leur système
|
||||
de base sous forme de tarball :
|
||||
|
||||
```shell
|
||||
wget ftp://gentoo.mirrors.ovh.net/gentoo-distfiles/releases/amd64/autobuilds/20160929/stage3-amd64-20160929.tar.bz2
|
||||
tar xpf stage3-amd64-*.tar.bz2 -C newroot/
|
||||
```
|
||||
|
||||
L'avantage de télécharger l'archive de Gentoo est que l'on a déjà `gcc` dans un
|
||||
environnement qui tient dans 300 MB.
|
||||
|
||||
|
||||
## Exercice
|
||||
|
||||
Écrivons maintenant un programme dont le seul but est de s'échaper du `chroot`:
|
||||
|
||||
```shell
|
||||
make escape
|
||||
echo bar > ../foo
|
||||
chroot .
|
||||
```
|
||||
|
||||
Dans le nouvel environnement, vous ne devriez pas pouvoir faire :
|
||||
|
||||
```shell
|
||||
cat ../foo
|
||||
```
|
||||
|
||||
Mais une fois votre programme exécuté, vous devriez pouvoir !
|
||||
|
||||
```shell
|
||||
./escape
|
||||
cat /path/to/foo
|
||||
```
|
||||
|
||||
|
||||
## Rendu
|
||||
|
||||
### Fichiers
|
||||
|
||||
Rendez un fichier `.c` contenant un programme qui, lorsqu'il est compilé puis
|
||||
exécuté dans un chroot, permet de s'en échapper pour rejoindre la véritable
|
||||
racine.
|
||||
|
||||
|
||||
### Questions
|
||||
|
||||
1. Citez un moyen d'empêcher l'échappement du `chroot`.
|
||||
Loading…
Add table
Add a link
Reference in a new issue