Skip to content
Snippets Groups Projects
Commit 7c86784b authored by Mickael Masquelin's avatar Mickael Masquelin
Browse files

feat(exercices): Ajout exercice user

parent a1c6cf8a
No related branches found
No related tags found
No related merge requests found
......@@ -108,12 +108,45 @@ docker pull hub.chez-wam.info:443/masqueli/alpine-git:v1.0.0
Vérifiez à nouveau à l'aide de la commande `docker image list` qu'il existe bien une image correspondant au nom et au tag donné précédemment. Félicitations ! Vous connaissez désormais les opérateurs de base pour interagir avec un registre privé :)
## Utilisation de la directive USER
Clonez le projet disponible à l'adresse URL ci-après dans le répertoire de votre choix : [https://gitlab.univ-lille.fr/formation-docker-cnrs/session-debutant.git](https://gitlab.univ-lille.fr/formation-docker-cnrs/session-debutant.git).
Changez pour le répertoire `session-debutant` (ou autrement ... si vous l'avez renommé) puis créez le fichier `Dockerfile` ci-après :
```bash
FROM alpine:latest
RUN mkdir /app
RUN addgroup nemart && adduser -D -H -s /bin/false -G nemart jean
WORKDIR /app
COPY . /app
RUN chown -R jean:nemart /app
USER jean
CMD id && ls -alrt /app
```
Construisez cette image (que vous nommerez `exercice-user`) et exécutez là (`docker run --rm exercice-user`). Qu'observez-vous sur les droits (utilisateurs, fichiers, etc.) ?
> Attention : la suite peut être dangereuse si vous n'êtes pas bien reveillé ... ou en phase de digestion avancée :)
Nous allons être joueurs et monter le répertoire `/` de votre hôte (ou un autre si vous êtes sous Windows) afin de tester si nous sommes capables de supprimer des données lorsque nous sommes dans le conteneur. Ci-après la commande que j'utilise dans mon cas :
```bash
docker run -v /:/rep_serveur -it --rm exercice-user:latest sh
rm -f /rep_serveur/etc/passwd
```
Vous venez d'effacer le fichier `/etc/passwd` de votre machine (perso ou virtuelle) ... bravo !
... Non, je déconne, c'est une (mauvaise) blague. Si nous voulons que ça fonctionne, il faudra monter dans le conteneur un répertoire sur l'hôte qui possède les mêmes UID et GID que mon USER jean (1000:1000 par défaut) pour créer/modifier/supprimer des données.
Vous n'êtes pas protégé, malgré tout, d'une utilisation malveillante d'un utilisateur. Si vous lancez la commande précédente en utilisant l'option `-u <user>` lors du `run`, vous outre-passez cette règle (ce qui peut être dramatique pour le coup). Exemple pour moi :
```bash
docker run --rm -u root -it exercice-user:latest sh
id
uid=0(root) gid=0(root) groups=0(root),1(bin),2(daemon),3(sys),4(adm),6(disk),10(wheel),11(floppy),20(dialout),26(tape),27(video)
```
## Jouons avec les capabilities
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment