Don't force line return on ####

This commit is contained in:
nemunaire 2022-04-09 02:50:14 +02:00
parent bbd704d413
commit 6e135a40de
19 changed files with 48 additions and 43 deletions

View File

@ -172,7 +172,7 @@ Il s'agit d'une représentation d'une structure du noyau, pas forcément très
lisible en l'état. On utilisera `getfacl` pour la version lisible.
#### `ping`\
#### `ping`
De la même manière que l'on peut définir de façon plus fine les droits d'accès
par utilisateur, un attribut de l'espace de nom *security* peut être défini

View File

@ -5,7 +5,7 @@
Poursuivons [notre script de monitoring](#script-monitoring) afin d'envoyer nos
résultats vers InfluxDB : nous l'appellerons `./telegraf.sh`.
#### Rappel d'InfluxDB\
#### Rappel d'InfluxDB
Commençons par lancer le conteneur Docker d'InfluxDB (pour éviter de
l'installer sur notre machine) :
@ -32,7 +32,7 @@ EOF
Vérifiez que la base de données `metrics` a bien été créée.
#### Monitoring vers InfluxDB\
#### Monitoring vers InfluxDB
Maintenant, envoyons nos données vers la base
<https://docs.influxdata.com/influxdb/v1.8/guides/write_data/> :
@ -54,7 +54,7 @@ SELECT * from "$my_cgroup_name";
</div>
#### Monitorer davantage de données\
#### Monitorer davantage de données
Liste non exhaustive de données à monitorer :
@ -70,7 +70,7 @@ accessible ici :
- v2 : <https://www.kernel.org/doc/html/latest/admin-guide/cgroup-v2.html>
#### Permettre à l'utilisateur de monitorer des processus\
#### Permettre à l'utilisateur de monitorer des processus
Maintenant, séparons notre script en deux parties afin qu'un utilisateur normal
(non-root) puisse utiliser la partie monitoring de notre script.

View File

@ -98,7 +98,7 @@ Les distributions *à l'ancienne* proposent de télécharger leur système de ba
sous forme de tarball :
#### Gentoo\
#### Gentoo
<http://gentoo.mirrors.ovh.net/gentoo-distfiles/releases/amd64/autobuilds/current-stage3-amd64-openrc/stage3-amd64-openrc-20211128T170532Z.tar.xz>
@ -123,7 +123,7 @@ chroot newroot/ bash
</div>
#### Alpine\
#### Alpine
<https://dl-cdn.alpinelinux.org/alpine/v3.14/releases/x86_64/alpine-minirootfs-3.14.2-x86_64.tar.gz>

View File

@ -55,7 +55,7 @@ ce sujet :\
::::: {.exercice}
#### À vous de jouer {-}\
#### À vous de jouer {-}
Continuons l'exercice précédent où nous avions [fixé les
limites](#Fixer-des-limites) de mémoire que pouvez réserver les processus de

View File

@ -81,7 +81,7 @@ Vous devriez constater l'effet de cette commande sans plus attendre !
::::: {.exercice}
#### `procinfo`\
#### `procinfo`
Explorons le pseudo système de fichiers `/proc` pour écrire un script qui va
afficher des informations sur un processus donné :
@ -125,7 +125,7 @@ uts:[4026531838]
</div>
#### `batinfo.sh`, `cpuinfo.sh`\
#### `batinfo.sh`, `cpuinfo.sh`
Explorons le pseudo système de fichiers `/sys` pour écrire un script
qui va, en fonction de ce que vous avez de disponible :
@ -188,7 +188,7 @@ Thermal throttle count: 0
N'hésitez pas à rajouter toute sorte d'information intéressantes !
#### `rev_kdb_leds.sh`, `suspend_schedule.sh`\
#### `rev_kdb_leds.sh`, `suspend_schedule.sh`
Maintenant que vous savez lire des informations dans `/sys`, tentons d'aller
modifier le comportement de notre système. Au choix, réalisez l'un des scripts

View File

@ -22,7 +22,7 @@ Nous allons voir dans cette partie plusieurs méthodes pour utiliser ces espaces
de noms.
#### Avec son coquillage\
#### Avec son coquillage
De la même manière que l'on peut utiliser l'appel système `chroot(2)` depuis un
shell via la commande `chroot(1)`, la commande `unshare(1)` permet de faire le
@ -55,7 +55,7 @@ Nous avons pu ici modifier le nom de la machine, sans que cela n'affecte notre
machine hôte.
#### Les appels systèmes\
#### Les appels systèmes
L'appel système par excellence pour contrôler l'isolation d'un nouveau
processus est `clone(2)`.

View File

@ -1,6 +1,6 @@
\newpage
Les espaces de noms -- *namespaces* {#namespaces}
Les espaces de noms -- *namespaces*
===================================
Nous avons vu un certain nombre de fonctionnalités offertes par le noyau Linux

View File

@ -30,7 +30,6 @@ obtenir un descripteur de fichier valide vers le *namespace* (pour passer à
::::: {.question}
#### Faire persister un *namespace* ? {-}
\
Il n'est pas possible de faire persister un espace de noms d'un reboot à
l'autre.\

View File

@ -45,7 +45,7 @@ montage virtuels. Le changement de racine sera donc effectif uniquement dans
cet espace de noms.
#### L'environnement\
#### L'environnement
Pour pouvoir changer de racine, il est nécessaire que la nouvelle racine soit
la racine d'un point de montage, comme l'explique `pivot_root(2)`. En effet, il
@ -75,7 +75,7 @@ Voici les grandes étapes du changement de racine :
3. `pivot_root` !
#### S'isoler\
#### S'isoler
Notre but étant de démonter toutes les partitions superflues, nous allons
devoir nous isoler sur :
@ -95,7 +95,7 @@ Isolons-nous :
</div>
#### Dissocier la propagation des démontages\
#### Dissocier la propagation des démontages
Attention ! avant de pouvoir commencer à démonter les partitions, il faut
s'assurer que les démontages ne se propagent pas via une politique de *shared
@ -111,13 +111,13 @@ comme esclaves :
</div>
#### Démonter tout !\
#### Démonter tout !
À vous maintenant de démonter vos points d'attache. Il ne devrait vous rester
après cette étape que : `/`, `/dev`, `/sys`, `/proc`, `/run` et leurs fils.
#### Switch !\
#### Switch !
À ce stade, dans votre console, vous avez plusieurs solutions : utiliser
`switch_root(8)` ou `pivot_root(8)`. La première abstrait plus de choses que la

View File

@ -151,7 +151,7 @@ partout, mais c'est loin d'être la technique la plus rapide ou la moins
gourmande.
#### VLAN\
#### VLAN
Il est possible d'attribuer juste une interface de VLAN, si l'on a un switch
supportant la technologie [802.1q](https://fr.wikipedia.org/wiki/IEEE_802.1Q)
@ -166,7 +166,7 @@ derrière notre machine.
</div>
#### MACVLAN\
#### MACVLAN
<!-- https://hicu.be/bridge-vs-macvlan -->

View File

@ -45,7 +45,7 @@ notre système initial. Pour s'en sortir, il est nécessaire de s'isoler dans un
*namespace* `mount` séparé.
#### Double isolation : ajout du *namespace* `mount`\
#### Double isolation : ajout du *namespace* `mount`
Voici la nouvelle ligne de commande que l'on va utiliser :

View File

@ -1,4 +1,4 @@
#### Exemple C\
#### Exemple C
Voici un exemple de code C utilisant `setns(2)` :
@ -36,7 +36,7 @@ main(int argc, char *argv[])
</div>
#### Exemple shell\
#### Exemple shell
Dans un shell, on utilisera la commande `nsenter(1)` :

View File

@ -8,7 +8,7 @@ respectivement un *file descriptor* ou le chemin vers le fichier, lien
symbolique, représentant l'espace de nom.
#### Voir les *namespace*s d'un processus\
#### Voir les *namespace*s d'un processus
Chaque processus lancé est rattaché à une liste d'espaces de nom, y compris
s'il est issu du système de base (« l'hôte »).
@ -55,7 +55,9 @@ Pour les commandes *shell*, il convient de donner en argument le chemin vers le
lien symbolique : la commande se chargera d'`open(2)` le fichier.
#### `*_for_children`\
::::: {.question}
##### `*_for_children` {-}
Vous avez peut-être remarqué des fichiers `*_for_children` dans le dossier `ns`
de vos processus. Nous verrons par la suite que les espaces de noms *PID* et
@ -65,3 +67,5 @@ processus/threads fils.
`pid_for_children` et `time_for_children` représentent donc les *namespace*s
qui seront attribués aux fils lancés après un `unshare(2)` réussi.
:::::

View File

@ -1,7 +1,7 @@
### Prérequis
#### Noyau Linux \
#### Noyau Linux
Pour pouvoir suivre les exercices ci-après, vous devez disposez d'un noyau
Linux, idéalement dans sa version 5.6 ou mieux. Il doit de plus être compilé
@ -55,7 +55,7 @@ Référez-vous, si besoin, à la précédente configuration que l'on a faite pou
marche à suivre.
#### Paquets \
#### Paquets
Nous allons utiliser des programmes issus des
[`util-linux`](https://www.kernel.org/pub/linux/utils/util-linux/), de
@ -75,7 +75,7 @@ Sous ArchLinux et ses dérivés, ces paquets sont respectivement :
* `libcap`
#### À propos de la sécurité de l'espace de noms `user` \
#### À propos de la sécurité de l'espace de noms `user`
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

View File

@ -34,7 +34,7 @@ garder dans le nouvel espace, que les utilisateurs et les groupes utiles au
processus, en les renumérotant au passage si besoin.
#### L'utilisateur -2 : *nobody*\
#### L'utilisateur -2 : *nobody*
Lorsque l'on arrive dans un nouvel espace, aucun utilisateur ni groupe n'est
défini. Dans cette situation, tous les identifiants d'utilisateur et de groupe,
@ -45,7 +45,7 @@ l'utilisateur *nobody* et au groupe *nogroup*.
non-modification d'un paramètre passé en argument d'une fonction.
#### `uid_map` et `gid_map` \
#### `uid_map` et `gid_map`
Pour établir la correspondance, une fois que l'on a créé le nouveau
*namespace*, ces deux fichiers, accessibles dans `/proc/self/`, peuvent être

View File

@ -59,11 +59,13 @@ docker swarm join-token worker
Lançons maintenant la commande `join` indiquée, sur une autre machine, en
utilisant `docker-machine`.
[^avertVM]: Si vous utilisez Docker dans une VM, il faut que celle-ci soit
configurée en mode bridge pour qu'elle soit sur le même sous-réseau. Il n'y
a pas de problème à avoir des nœuds *workers* derrière un NAT, mais il est
primordial que les managers soient joignables. Vous pouvez tenter de faire
des redirections de ports, mais le résultat n'est pas garanti !
::::: {.warning}
Si vous utilisez Docker dans une VM, il faut que celle-ci soit
configurée en mode bridge pour qu'elle soit sur le même sous-réseau. Il n'y
a pas de problème à avoir des nœuds *workers* derrière un NAT, mais il est
primordial que les managers soient joignables. Vous pouvez tenter de faire
des redirections de ports, mais le résultat n'est pas garanti !
:::::
<div lang="en-US">
```bash

View File

@ -268,7 +268,7 @@ produit de notre compilation.
L'image ainsi générée est minime, car elle ne contient rien d'autre que le
strict nécessaire pour s'exécuter.
#### Étapes nommées\
#### Étapes nommées
Nous avons utilisé `--from=0` pour désigner la première image de notre
`Dockerfile`. Lorsque l'on réalise des montages plus complexes, on peut vouloir

View File

@ -62,7 +62,7 @@ place.
### Ordonnez vos lignes de commandes complexes
#### Allez à la ligne pour séparer les longues lignes de commandes complexes\
#### Allez à la ligne pour séparer les longues lignes de commandes complexes
Aérez vos `Dockerfile` !
@ -81,7 +81,7 @@ RUN apt-get update && apt-get install -y \
Notez les backslashs à la fin des lignes, indiquant qu'elle n'est pas terminée.
#### Triez les arguments par ordre alphabétique\
#### Triez les arguments par ordre alphabétique
Lorsque c'est possible, ordonnez vos lignes suivant un ordre logique. Par
exemple :

View File

@ -40,7 +40,7 @@ chmod +x ~/.docker/cli-plugins/docker-buildx
```
</div>
#### Utilisation\
#### Utilisation
Nous pouvons réutiliser le `Dockerfile` que vous avez écrit pour `youp0m`, en
remplaçant simplement la ligne de `docker build` par celle-ci :
@ -60,7 +60,7 @@ Actions* :\
:::::
#### Changer la syntaxe de nos `Dockerfile`\
#### Changer la syntaxe de nos `Dockerfile`
Parfois on peut se sentir un peu frustré par la syntaxe des `Dockerfile` ou par
son manque d'évolutivité. Avec BuildKit, il est possible de préciser un parseur
@ -107,7 +107,7 @@ notamment :
`Dockerfile`, et autres scripts de CI et de tests.
#### `docker/dockerfile:1.3`\
#### `docker/dockerfile:1.3`
La version habituelle de la syntaxe des `Dockerfile` est la version 1.1. En
utilisant BuildKit, nous pouvons dès à présent passer à la version 1.2 (stable)