From 6eeec595f23edbb0879c56c59432c4096736b2b9 Mon Sep 17 00:00:00 2001 From: nemunaire Date: Fri, 16 Nov 2018 04:03:19 +0100 Subject: [PATCH] subject: follow tuto, theme + pandoc 2 --- subject/1/Makefile | 13 +---- subject/1/project.md | 24 +++++---- subject/1/subject.md | 27 +++++----- subject/2/Makefile | 13 +---- subject/2/project-part1.md | 64 ++++++++++++------------ subject/2/project-part2.md | 100 ++++++++++++++++++++----------------- subject/2/sample.md | 68 +++++++++++++++---------- subject/2/subject.md | 54 ++++++++++---------- 8 files changed, 187 insertions(+), 176 deletions(-) diff --git a/subject/1/Makefile b/subject/1/Makefile index 4ee02d5..8bd93a9 100644 --- a/subject/1/Makefile +++ b/subject/1/Makefile @@ -1,15 +1,6 @@ +include ../../tutorial/pandoc-opts.mk + SOURCES = subject.md project.md rendu.md end.md -PANDOCOPTS = --latex-engine=xelatex \ - --standalone \ - --normalize \ - --smart \ - -M lang=fr-FR \ - -M fontsize=12pt \ - -M papersize=a4paper \ - -M mainfont="Linux Libertine O" \ - -M monofont="Inconsolata" \ - -M sansfont="Linux Biolinum O" \ - --include-in-header=../../tutorial/header.tex all: subject.pdf diff --git a/subject/1/project.md b/subject/1/project.md index a5b6935..f33bc8c 100644 --- a/subject/1/project.md +++ b/subject/1/project.md @@ -92,7 +92,7 @@ Voici les notes retrouvées dans les derniers échanges avec le sous-traitant : ![Vue d'ensemble des échanges de données entre les services](FIC-overview.png) -### Palier 0 : Récupérer les images +### Palier 0 : Récupérer les images {-} Le sous-traitant a laissé des images Docker sur le Docker Store, vous pourrez vous baser dessus pour commencer. @@ -114,12 +114,14 @@ Durant la durée du projet, les images seront peut-être amenées à être mises jour, si vous vous trouvez bloqué, commencez par vérifier que vous avez bien la dernière version disponible de l'image : -```shell - docker pull nemunaire/fic-admin nemunaire/fic-backend nemunaire/fic-frontend +
+```bash +docker pull nemunaire/fic-admin nemunaire/fic-backend nemunaire/fic-frontend ``` +
-### Palier 1 : `docker-compose.yml` +### Palier 1 : `docker-compose.yml` {-} Maintenant que vous arrivez à lancer les images, rendez cela reproductible en inscrivant tout ça dans un fichier YAML, compréhensible par `docker-compose` ! @@ -133,7 +135,7 @@ Vous devriez avoir ces services : * `nginx` (ou `apache`, ...). -### Palier 2 : retrouver les `Dockerfile` +### Palier 2 : retrouver les `Dockerfile` {-} Maintenant que vous êtes en mesure de lancer le service, il serait temps de ne plus dépendre d'une image que l'on ne peut plus modifier facilement. @@ -149,7 +151,7 @@ Arriverez-vous à générer des images plus propres que celles du prestataire disparu ?! -#### Astuces +#### Astuces {-} Les différents projets sont organisés au sein d'un [dépôt monolithique](https://danluu.com/monorepo/). Les projets ont des @@ -157,9 +159,11 @@ dépendances entre les dossiers qui se trouvent à la racine (qui sont l'équivalent de bibliothèques). Vous allez sans doute vouloir placer les trois `Dockerfile` à la racine pour simplifier les étapes de construction des images : +
```shell - docker image build --file Dockerfile-admin . +docker image build --file Dockerfile-admin . ``` +
Les [*multi-stage builds*](https://docs.docker.com/engine/userguide/eng-image/multistage-build/) @@ -171,14 +175,14 @@ supporte cette syntaxe, vous pouvez ajouter des scripts et autant de l'option de mettre à jour votre Docker !). -### Palier 3 : `fic-server.yml` prêt pour le déploiement +### Palier 3 : `fic-server.yml` prêt pour le déploiement {-} À présent, faites les éventuelles adaptations nécessaires pour que votre fichier `docker-compose.yml` puisse s'exécuter au sein d'un cluster de plusieurs machines. Via `docker stack deploy`. -### Palier 4 : `fic-server.yml` prêt pour la production +### Palier 4 : `fic-server.yml` prêt pour la production {-} Comme indiqué dans les notes du prestataire, en production, le frontend se trouve sur une machine distincte du backend. @@ -188,7 +192,7 @@ données ! Il est fort probable que vous ayez à ajouter des services à votre fichier YAML. -### Palier 5 (bonus) : `fic-server.yml` sécurisé +### Palier 5 (bonus) : `fic-server.yml` sécurisé {-} Vous avez indiqués des mots de passes bidons dans votre YAML ? Rangez les informations sensibles au sein de diff --git a/subject/1/subject.md b/subject/1/subject.md index 8bf85f3..99b83e2 100644 --- a/subject/1/subject.md +++ b/subject/1/subject.md @@ -3,18 +3,21 @@ title: Virtualisation légère -- Projet n^o^ 1 author: Pierre-Olivier *nemunaire* Mercier institute: EPITA date: EPITA -- SRS 2018 +abstract: | + M. Dessi, votre DSI, vient vous voir, paniqué : une grande + conférence se tient dans deux semaines, l'entreprise avait été + mandatée de longue date pour réaliser une interface d'animation pour + un des événements majeurs et cela fait un mois maintenant qu'il est + sans nouvelle du sous-traitant à qui cette tâche avait été + confiée. On ne peut pas attendre davantage, vous êtes dépêché pour + terminer le projet qui a été laissé en plan par le sous-traitant. + + \vspace{1em} + + Ce projet est à rendre à au plus tard le jeudi 9 + novembre 2017 à 8 h 42. ... -M. Dessi, votre DSI, vient vous voir, paniqué : une grande conférence se tient -dans deux semaines, l'entreprise avait été mandatée de longue date pour -réaliser une interface d'animation pour un des événements majeurs et cela fait -un mois maintenant qu'il est sans nouvelle du sous-traitant à qui cette tâche -avait été confiée. On ne peut pas attendre davantage, vous êtes dépêché pour -terminer le projet qui a été laissé en plan par le sous-traitant. +/newpage -\vspace{1em} - -Ce projet est à rendre à au plus tard le jeudi 9 novembre -2017 à 8 h 42. - -\tableofcontents +# Paliers diff --git a/subject/2/Makefile b/subject/2/Makefile index 94f0b3d..d6ae80c 100644 --- a/subject/2/Makefile +++ b/subject/2/Makefile @@ -1,15 +1,6 @@ +include ../../tutorial/pandoc-opts.mk + SOURCES = subject.md project-part1.md project-part2.md sample.md rendu.md end.md -PANDOCOPTS = --latex-engine=xelatex \ - --standalone \ - --normalize \ - --smart \ - -M lang=fr-FR \ - -M fontsize=12pt \ - -M papersize=a4paper \ - -M mainfont="Linux Libertine O" \ - -M monofont="FantasqueSansMono-Regular" \ - -M sansfont="Linux Biolinum O" \ - --include-in-header=../../tutorial/header.tex all: subject.pdf diff --git a/subject/2/project-part1.md b/subject/2/project-part1.md index 797f27b..946f6e7 100644 --- a/subject/2/project-part1.md +++ b/subject/2/project-part1.md @@ -1,4 +1,4 @@ -## Palier 1 : Restreindre l'environnement (2 points) {.unnumbered} +## Palier 1 : Restreindre l'environnement (2 points) {-} Après avoir mis en place les bases de votre programme, commencez par créer les différentes hiérarchies (si vous avez un noyau récent, vous pouvez utiliser les @@ -17,56 +17,56 @@ moulinette ne possède pas tous ces *CGroup*s, au lieu de planter, ne rien faire n'est pas forcément une mauvaise solution. -## Palier 2 : Réduire les *capabilities* (2 points) {.unnumbered} +## Palier 2 : Réduire les `capabilities` (2 points) {-} Réduisez au maximum les *capabilities*, de telle sorte qu'il ne soit pas possible de faire un ping dans l'environnement restreint :
-```shell - 42sh# ping 9.9.9.9 - PING 9.9.9.9 (9.9.9.9) 56(84) bytes of data. - 64 bytes from 9.9.9.9: icmp_seq=1 ttl=56 time=3.93 ms - 64 bytes from 9.9.9.9: icmp_seq=2 ttl=56 time=3.97 ms - ^C - --- 9.9.9.9 ping statistics --- - 2 packets transmitted, 2 received, 0% packet loss, time 1002ms - rtt min/avg/max/mdev = 3.931/3.954/3.978/0.067 ms +``` +42sh# ping 9.9.9.9 +PING 9.9.9.9 (9.9.9.9) 56(84) bytes of data. +64 bytes from 9.9.9.9: icmp_seq=1 ttl=56 time=3.93 ms +64 bytes from 9.9.9.9: icmp_seq=2 ttl=56 time=3.97 ms +^C +--- 9.9.9.9 ping statistics --- +2 packets transmitted, 2 received, 0% packet loss, time 1002ms +rtt min/avg/max/mdev = 3.931/3.954/3.978/0.067 ms - 42sh# ./mymoulette /bin/bash - bash# curl http://www.linuxcontainers.org/ | md5sum - c7d68d1cb4737125a84cd69f55add202 +42sh# ./mymoulette /bin/bash + bash# curl http://www.linuxcontainers.org/ | md5sum + c7d68d1cb4737125a84cd69f55add202 - bash# ping 9.9.9.9 - ping: icmp open socket: Permission denied + bash# ping 9.9.9.9 + ping: icmp open socket: Permission denied ```
-Astuces : `prctl(2)`, `capabilities(7)`, `capget(2)`, `capset(2)`, ... +**Astuces\ :** `prctl(2)`, `capabilities(7)`, `capget(2)`, `capset(2)`, ... -Aidez-vous du visualisateur de *capabilities* de la partie 4, pour voir si vous -êtes sur la bonne voie. +Aidez-vous du visualisateur de *capabilities* de la partie 4 du TP, pour voir +si vous êtes sur la bonne voie. -## Palier 3 : Utilisable par un utilisateur (1 point) {.unnumbered} +## Palier 3 : Utilisable par un utilisateur (1 point) {-} Jouez avec les attributs étendus pour qu'un utilisateur non-privilégié puisse exécuter votre moulinette. Ajoutez la/les commande(s) à votre Makefile ou script d'installation. -## Création d'un environnement d'exécution minimal {.unnumbered} +## Création d'un environnement d'exécution minimal {-} Plutôt que d'utiliser votre système hôte au complet, avec tous ses programmes et toutes ses bibliothèques, il faudrait utiliser un système contenant le strict minimum. Recréez un environnement minimaliste, comme on a pu en voir -dans la partie sur les *chroot*. +dans la partie sur les `chroot`. **Ne mettez pas cet environnement dans votre tarball de rendu, il vous sera seulement utile pour faire des tests.** -## Palier 4 : Isolation du pauvre (1 point) {.unnumbered} +## Palier 4 : Isolation du pauvre (1 point) {-} Nous n'avons pas encore vu de meilleure méthode pour mieux isoler l'environnement que de faire un `chroot`, ajoutez à votre programme cette @@ -74,17 +74,17 @@ isolation rudimentaire. Et rendez-vous au prochain cours pour avoir une meilleure isolation !
-```shell - 42sh$ which firefox - /usr/bin/firefox - 42sh# ./mymoulette ./newrootfs/ /bin/bash - bash# which firefox - which: no firefox in (/usr/bin:/usr/local/bin:/bin:/opt/bin) +``` +42sh$ which firefox +/usr/bin/firefox +42sh# ./mymoulette ./newrootfs/ /bin/bash + bash# which firefox + which: no firefox in (/usr/bin:/usr/local/bin:/bin:/opt/bin) ```
-## Palier 5 : seccomp (2 points) {.unnumbered} +## Palier 5 : seccomp (2 points) {-} Filtrez les appels systèmes de telle sorte qu'aucun programme exécuté dans votre bac à sable ne puisse plus lancer les appels systèmes suivants : @@ -96,10 +96,10 @@ votre bac à sable ne puisse plus lancer les appels systèmes suivants : N'hésitez pas à en utiliser d'autres pour vos tests ;) -Astuces : `seccomp(2)`, `seccomp_init(3)`, `seccomp_load(3)`, ... +**Astuces\ :** `seccomp(2)`, `seccomp_init(3)`, `seccomp_load(3)`, ... -## Palier bonus : Automatisation de la création de l'environnement (5 points) {.unnumbered} +## Palier bonus : Automatisation de la création de l'environnement (5 points) {-} Pour *moulinéter* plusieurs étudiants en parallèle, vous allez avoir besoin de plusieurs environnements identiques. Plutôt que de recopier cet environnement, diff --git a/subject/2/project-part2.md b/subject/2/project-part2.md index 962280b..3176484 100644 --- a/subject/2/project-part2.md +++ b/subject/2/project-part2.md @@ -1,4 +1,4 @@ -## Palier 6 : Une vraie isolation (2 points) {.unnumbered} +## Palier 6 : Une vraie isolation (2 points) {-} En plus du `chroot`, assignez de nouveaux *namespaces* au processus que vous allez lancer : `cgroups`, `IPC`, `mount`, `net`, `PID`, `UTS`. @@ -6,10 +6,10 @@ allez lancer : `cgroups`, `IPC`, `mount`, `net`, `PID`, `UTS`. Il est requis que le nouveau processus ne puisse pas s'échapper de ses *namespaces* ! -Astuce : `unshare(2)`. +**Astuce\ :** `unshare(2)`. -## Palier bonus : Révolution des utilisateurs (2 points) {.unnumbered} +## Palier bonus : Révolution des utilisateurs (2 points) {-} Utilisez le *namespace* `user` pour vous permettre de ne plus avoir besoin de lancer votre moulinette en tant que `root` ou avec plus de *capabilities* que @@ -19,7 +19,7 @@ Vous aurez besoin de déplacer le code écrit pour les premiers paliers (cgroups caps, ...), après vous être dissocié de cet espace de noms. -## Palier 7 : Empêcher les fuites d'information (2 points) {.unnumbered} +## Palier 7 : Empêcher les fuites d'information (2 points) {-} Démontez tous les systèmes de fichiers qui ne sont pas nécessaires au fonctionnement de votre conteneur et remontez les partitions @@ -27,72 +27,78 @@ fonctionnement de votre conteneur et remontez les partitions N'oubliez pas de remonter les systèmes de fichiers pour lesquels cette opération est nécessaire afin de terminer l'étape d'isolation. -Astuce : `mount(2)`. +**Astuce\ :** `mount(2)`. -## Palier 7 bis : Volume attaché au code à moulinéter (1 point) {.unnumbered} +## Palier 7 bis : Volume attaché au code à moulinéter (1 point) {-} Ajoutez une option à votre moulinette afin de lier le dossier (qui se trouve sur la machine hôte) contenant le code d'un étudiant, à l'intérieur du -conteneur. Cette option est similaire à l'option `--volume`/`-v` de Docker : +conteneur. Cette option est similaire à l'option `--volume`/`-v` de Docker\ : L'option devra attendre le répertoire contenant le code de l'étudiant, et le monter dans `/home/student` :
``` - 42sh$ ./mymoulette ./newrootfs/ /bin/bash +42sh$ ./mymoulette ./newrootfs/ /bin/bash bash# ls /home/student/ - bash# - 42sh$ ./mymoulette -v /var/lib/git/login_x/42sh/ ./newrootfs/ /bin/bash + bash# ls /var/lib/git/login_x/42sh/ + ls: cannot access '/var/lib/git/login_x/42sh/': No such file or directory + +42sh$ ls /var/lib/git/login_x/42sh/ +src/ tests/ AUTHORS configure Makefile.am README TODO + +42sh$ ./mymoulette -v /var/lib/git/login_x/42sh/ ./newrootfs/ /bin/bash bash# ls /home/student/ - src/ tests/ AUTHORS configure Makefile.am README TODO + src/ tests/ AUTHORS configure Makefile.am README TODO bash# ```
-Astuce : `mount(2)`, `mkdir(2)`. +**Astuce\ :** `mount(2)`, `mkdir(2)`. -## Palier 8 : Identification du conteneur (1 point) {.unnumbered} +## Palier 8 : Identification du conteneur (1 point) {-} Maintenant que vous avez votre conteneur, personalisez-le un peu en lui donnant un nom unique. -Astuce : `sethostname(2)` +**Astuce\ :** `sethostname(2)`
``` - 42sh$ ./mymoulette ./newrootfs/ hostname - ush9ukohh3Ch - 42sh$ ./mymoulette ./newrootfs/ hostname - shie6aif2aiH +42sh$ ./mymoulette ./newrootfs/ hostname +ush9ukohh3Ch + +42sh$ ./mymoulette ./newrootfs/ hostname +shie6aif2aiH ```
-## Palier 9 : `pivot_root` (3 points) {.unnumbered} +## Palier 9 : `pivot_root` (3 points) {-} Effectuez un `pivot_root(2)` de telle sorte qu'il ne reste plus de trace du système de fichiers hôte. -Astuce : `pivot_root(2)`, `umount(2)`. +**Astuce\ :** `pivot_root(2)`, `umount(2)`. -Attention : vos filtres `seccomp` filtrant l'appel système `pivot_root(2)`, -vous devrez donc ne les appliquer qu'après cette étape. +**Attention\ :** vos filtres `seccomp` filtrant l'appel système +`pivot_root(2)`, vous devrez donc ne les appliquer qu'après cette étape. -## Palier 10 : Bac à sable connecté (2 points) {.unnumbered} +## Palier 10 : Bac à sable connecté (2 points) {-} Partant d'une liste d'interfaces sur la machine hôte similaire à :
``` - 42sh$ ip link - 1: lo: mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1 - link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 - 2: eth0: mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000 - link/ether 90:2b:34:5e:fa:a7 brd ff:ff:ff:ff:ff:ff +42sh$ ip link +1: lo: mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1 + link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 +2: eth0: mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000 + link/ether 90:2b:34:5e:fa:a7 brd ff:ff:ff:ff:ff:ff ```
@@ -100,28 +106,28 @@ Vous devrez pouvoir `ping`er votre conteneur depuis votre hôte :
``` - 42sh$ ip address - 1: lo: mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1 - [...] - 2: eth0: mtu 1500 qdisc pfifo_fast state UP group default qlen 1000 - [...] - 3: veth3e06cad@if82: mtu 1500 qdisc noqueue master docker0 state UP mode DEFAULT group default - link/ether 42:a2:a0:89:54:ef brd ff:ff:ff:ff:ff:ff - inet 10.10.10.41/24 brd 10.10.10.255 scope global veth3e06cad - valid_lft forever preferred_lft forever - 42sh$ ping 10.10.10.42 - PING 10.10.10.42 (10.10.10.42) 56(84) bytes of data. - 64 bytes from 10.10.10.42: icmp_seq=1 ttl=56 time=3.90 ms - 64 bytes from 10.10.10.42: icmp_seq=2 ttl=56 time=3.78 ms - ^C - --- 10.10.10.42 ping statistics --- - 2 packets transmitted, 2 received, 0% packet loss, time 1003ms - rtt min/avg/max/mdev = 3.789/3.847/3.906/0.085 ms +42sh$ ip address +1: lo: mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1 +[...] +2: eth0: mtu 1500 qdisc pfifo_fast state UP group default qlen 1000 +[...] +3: veth3e06cad@if82: mtu 1500 qdisc noqueue master docker0 state UP mode DEFAULT group default + link/ether 42:a2:a0:89:54:ef brd ff:ff:ff:ff:ff:ff + inet 10.10.10.41/24 brd 10.10.10.255 scope global veth3e06cad + valid_lft forever preferred_lft forever +42sh$ ping 10.10.10.42 +PING 10.10.10.42 (10.10.10.42) 56(84) bytes of data. +64 bytes from 10.10.10.42: icmp_seq=1 ttl=56 time=3.90 ms +64 bytes from 10.10.10.42: icmp_seq=2 ttl=56 time=3.78 ms +^C +--- 10.10.10.42 ping statistics --- +2 packets transmitted, 2 received, 0% packet loss, time 1003ms +rtt min/avg/max/mdev = 3.789/3.847/3.906/0.085 ms ```
Dans l'exemple ci-dessus, l'interface dans le conteneur a l'IP `10.10.10.42`, tandis que la machine hôte a l'IP `10.10.10.41`. -Astuces : vous pouvez utiliser la `libnetlink(3)` ou même faire des appels aux -programmes `ip(8)`, `brctl(8)`, ... +**Astuces\ :** vous pouvez utiliser la `libnetlink(3)` ou même faire des appels +aux programmes `ip(8)`, `brctl(8)`,\ ... diff --git a/subject/2/sample.md b/subject/2/sample.md index 6d49a14..5fdca69 100644 --- a/subject/2/sample.md +++ b/subject/2/sample.md @@ -5,12 +5,12 @@ Exemples
``` - 42sh$ ./mymoulette -h - MyMoulette, the students' nightmare, now highly secured - Usage: ./mymoulette [-v student_workdir] environment moulette_prog [moulette_arg [...]] - environment is the path to the directory containing the new rootfs - moulette_prog will be the first program to be launched, must already be in the environment - student_workdir is the directory containing the code to grade +42sh$ ./mymoulette -h +MyMoulette, the students' nightmare, now highly secured +Usage: ./mymoulette [-v student_workdir] environment moulette_prog [moulette_arg [...]] + environment is the path to the directory containing the new rootfs + moulette_prog will be the first program to be launched, must already be in the environment + student_workdir is the directory containing the code to grade ```
@@ -19,32 +19,32 @@ Exemples
``` - 42sh$ ip address show veth0l - 2: veth0l@if82: mtu 1500 qdisc noqueue master docker0 state UP mode DEFAULT group default - link/ether 42:a2:a0:89:54:ef brd ff:ff:ff:ff:ff:ff - inet 10.10.10.41/24 brd 10.10.10.255 scope global veth3e06cad - valid_lft forever preferred_lft forever +42sh$ ip address show veth0l +2: veth0l@if82: mtu 1500 qdisc noqueue master docker0 state UP mode DEFAULT group default + link/ether 42:a2:a0:89:54:ef brd ff:ff:ff:ff:ff:ff + inet 10.10.10.41/24 brd 10.10.10.255 scope global veth3e06cad + valid_lft forever preferred_lft forever - 42sh$ ./mymoulette ./newrootfs/ /usr/bin/ip address show veth0r - 2: veth0r@if82: mtu 1500 qdisc noqueue master docker0 state UP mode DEFAULT group default - link/ether 42:a2:a0:89:55:ef brd ff:ff:ff:ff:ff:ff - inet 10.10.10.42/24 brd 10.10.10.255 scope global veth3e06cad - valid_lft forever preferred_lft forever +42sh$ ./mymoulette ./newrootfs/ /usr/bin/ip address show veth0r +2: veth0r@if82: mtu 1500 qdisc noqueue master docker0 state UP mode DEFAULT group default + link/ether 42:a2:a0:89:55:ef brd ff:ff:ff:ff:ff:ff + inet 10.10.10.42/24 brd 10.10.10.255 scope global veth3e06cad + valid_lft forever preferred_lft forever - 42sh$ ping -c 1 10.10.10.42 - PING 10.10.10.42 (10.10.10.42) 56(84) bytes of data. - 64 bytes from 10.10.10.42: icmp_seq=1 ttl=56 time=3.90 ms +42sh$ ping -c 1 10.10.10.42 +PING 10.10.10.42 (10.10.10.42) 56(84) bytes of data. +64 bytes from 10.10.10.42: icmp_seq=1 ttl=56 time=3.90 ms - --- 10.10.10.42 ping statistics --- - 1 packets transmitted, 1 received, 0% packet loss, time 1003ms - rtt min/avg/max/mdev = 3.789/3.847/3.906/0.085 ms +--- 10.10.10.42 ping statistics --- +1 packets transmitted, 1 received, 0% packet loss, time 1003ms +rtt min/avg/max/mdev = 3.789/3.847/3.906/0.085 ms ```
``` - 42sh$ ./mymoulette ./newrootfs/ /usr/bin/curl http://www.linuxcontainers.org/ | md5sum - c7d68d1cb4737125a84cd69f55add202 +42sh$ ./mymoulette ./newrootfs/ /usr/bin/curl http://www.linuxcontainers.org/ | md5sum +c7d68d1cb4737125a84cd69f55add202 ```
@@ -53,7 +53,23 @@ Exemples
``` - 42sh$ ./mymoulette ./newrootfs/ /bin/ping 9.9.9.9 - ping: icmp open socket: Permission denied +42sh$ ./mymoulette ./newrootfs/ /bin/ping 9.9.9.9 +ping: icmp open socket: Permission denied +``` +
+ +
+``` +42sh$ ./mymoulette ./newrootfs/ /usr/local/bin/view_caps +cap_user_header_t +----------------- +Version: 20080522 +PID: 0 + +cap_user_data_t +--------------- +effective: 0x0 +permitted: 0x0 +inheritable: 0x0 ```
diff --git a/subject/2/subject.md b/subject/2/subject.md index 4a52428..446fcaf 100644 --- a/subject/2/subject.md +++ b/subject/2/subject.md @@ -3,35 +3,35 @@ title: Virtualisation légère -- Projet author: Pierre-Olivier *nemunaire* Mercier institute: EPITA date: EPITA -- SRS 2019 +abstract: | + Le laboratoire des assistants a besoin de votre expertise afin de + renforcer la sécurité et la réactivité de son système de correction + automatisé. + + Votre mission consistera à réaliser la partie d'isolation de la + moulinette des ACUs : dans un premier temps vous ferez en sorte de + restreindre un groupe de processus pour qu'il ne puisse pas faire de + déni de service sur notre machine ; puis dans une seconde partie, + vous vous assurerez de l'isolation de chaque étudiant. + + \vspace{1em} + + Il n'y a pas de restriction sur le langage utilisé, vous pouvez tout + aussi bien utiliser du C, du C++, du Python, etc. + + L'usage de bibliothèques **non relatives** au projet est autorisé : + le but de ce sujet est d'évaluer votre compréhension et votre + utilisation de la tuyauterie bas-niveau du noyau liée à la + virtualisation légère. À partir du moment où vous n'utilisez pas une + bibliothèque qui abstrait complètement cette plomberie, n'hésitez + pas à l'utiliser ! + + \vspace{1em} + + Ce projet est à rendre à au plus tard le dimanche + 25 novembre 2018 à 23 h 42. ... -Le laboratoire des assistants a besoin de votre expertise afin de renforcer la -sécurité et la réactivité de son système de correction automatisé. - -Votre mission consistera à réaliser la partie d'isolation de la moulinette des -ACUs : dans un premier temps vous ferez en sorte de restreindre un groupe de -processus pour qu'il ne puisse pas faire de déni de service sur notre machine ; -puis dans une seconde partie, vous vous assurerez de l'isolation de chaque -étudiant. - -\vspace{1em} - -Il n'y a pas de restriction sur le langage utilisé, vous pouvez tout aussi bien -utiliser du C, du C++, du Python, etc. - -L'usage de bibliothèques **non relatives** au projet est autorisé : le but de -ce sujet est d'évaluer votre compréhension et votre utilisation de la -tuyauterie bas-niveau du noyau liée à la virtualisation légère. À partir du -moment où vous n'utilisez pas une bibliothèque qui abstrait complètement cette -plomberie, n'hésitez pas à l'utiliser ! - -\vspace{1em} - -Ce projet est à rendre à au plus tard le dimanche -25 novembre 2018 à 23 h 42. - -\tableofcontents - \newpage Paliers