Update tuto 3
This commit is contained in:
parent
12b62208bd
commit
beb834c01c
@ -8,9 +8,10 @@ Les *capabilities*
|
|||||||
Historiquement, dans la tradition UNIX, on distinguait deux catégories de
|
Historiquement, dans la tradition UNIX, on distinguait deux catégories de
|
||||||
processus :
|
processus :
|
||||||
|
|
||||||
* les processus *privilégiés* : dont l'identifiant de son utilisateur est 0 ;
|
* les processus *privilégiés* : dont l'identifiant numérique de son utilisateur
|
||||||
* les processus *non-privilégiés* : dont l'identifiant de son utilisateur n'est
|
est 0 ;
|
||||||
pas 0.
|
* les processus *non-privilégiés* : dont l'identifiant numérique de son
|
||||||
|
utilisateur n'est pas 0.
|
||||||
|
|
||||||
Lors des différents tests de permission fait par le noyau, les processus
|
Lors des différents tests de permission fait par le noyau, les processus
|
||||||
privilégiés outrepassaient ces tests, tandis que les autres devaient passer les
|
privilégiés outrepassaient ces tests, tandis que les autres devaient passer les
|
||||||
@ -143,7 +144,7 @@ Ou, dans sa version plus lisible :
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
## Exercice : visualisateur de capabilities d'un processus
|
## Exercice : visualisateur de capabilities d'un processus {-}
|
||||||
|
|
||||||
Écrivons maintenant un programme permettant de voir les *capabilities*
|
Écrivons maintenant un programme permettant de voir les *capabilities*
|
||||||
d'un processus :
|
d'un processus :
|
||||||
@ -190,7 +191,7 @@ Je vous recommande la lecture des *man* suivants :
|
|||||||
|
|
||||||
Et de ces quelques articles :
|
Et de ces quelques articles :
|
||||||
|
|
||||||
* [Secure Your Containers with this One Weird Trick](https://rhelblog.redhat.com/2016/10/17/secure-your-containers-with-this-one-weird-trick/)
|
* [Secure Your Containers with this One Weird Trick](https://www.redhat.com/en/blog/secure-your-containers-one-weird-trick)
|
||||||
* [Guidelines for extended attributes](https://www.freedesktop.org/wiki/CommonExtendedAttributes/)
|
* [Guidelines for extended attributes](https://www.freedesktop.org/wiki/CommonExtendedAttributes/)
|
||||||
* [File-based capabilities](https://lwn.net/Articles/211883/)
|
* [File-based capabilities](https://lwn.net/Articles/211883/)
|
||||||
* [A bid to resurrect Linux capabilities](https://lwn.net/Articles/199004/)
|
* [A bid to resurrect Linux capabilities](https://lwn.net/Articles/199004/)
|
||||||
|
@ -93,7 +93,7 @@ fichier\newline `/sys/fs/cgroup/freezer/virli/freezer.state`.
|
|||||||
|
|
||||||
Pour plus d'information sur les différents fichiers présents dans ce *cgroup*,
|
Pour plus d'information sur les différents fichiers présents dans ce *cgroup*,
|
||||||
consultez
|
consultez
|
||||||
[la documentation associée](https://www.kernel.org/doc/Documentation/cgroup-v1/freezer-subsystem.txt).
|
[la documentation associée](https://www.kernel.org/doc/html/latest/admin-guide/cgroup-v1/freezer-subsystem.html).
|
||||||
|
|
||||||
|
|
||||||
### Changement d'état
|
### Changement d'état
|
||||||
@ -221,7 +221,8 @@ Liste non exhaustive de données à monitorer :
|
|||||||
* ...
|
* ...
|
||||||
|
|
||||||
Tous les cgroups existants dans le dernier noyau publié ont leur documentation
|
Tous les cgroups existants dans le dernier noyau publié ont leur documentation
|
||||||
accessible ici : <https://www.kernel.org/doc/Documentation/cgroup-v1/>
|
accessible ici :
|
||||||
|
<https://www.kernel.org/doc/html/latest/admin-guide/cgroup-v1/index.html>
|
||||||
|
|
||||||
|
|
||||||
### Permettre à l'utilisateur de monitorer des processus
|
### Permettre à l'utilisateur de monitorer des processus
|
||||||
@ -282,4 +283,4 @@ avait dans la v1. Davantage d'informations sont disponibles :
|
|||||||
|
|
||||||
* [Understanding the new control groups API](https://lwn.net/Articles/679786/)
|
* [Understanding the new control groups API](https://lwn.net/Articles/679786/)
|
||||||
;
|
;
|
||||||
* [Kernel Document about Control Group v2](https://www.kernel.org/doc/Documentation/cgroup-v2.txt).
|
* [Kernel Document about Control Group v2](https://www.kernel.org/doc/html/latest/admin-guide/cgroup-v2.html).
|
||||||
|
46
tutorial/3/check.sh
Executable file
46
tutorial/3/check.sh
Executable file
@ -0,0 +1,46 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
note_init() {
|
||||||
|
NOTE=0
|
||||||
|
echo -n $@
|
||||||
|
}
|
||||||
|
|
||||||
|
note() {
|
||||||
|
NOTE=$(($NOTE + $1))
|
||||||
|
echo -n ,$@
|
||||||
|
}
|
||||||
|
|
||||||
|
for LOGIN in $@
|
||||||
|
do
|
||||||
|
note_init $LOGIN
|
||||||
|
|
||||||
|
if [ -f "$LOGIN" ]; then
|
||||||
|
QUESTIONSF="$LOGIN"
|
||||||
|
else
|
||||||
|
QUESTIONSF="$LOGIN/questions.txt"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Questions
|
||||||
|
|
||||||
|
if grep -E -i "(grsec)" "${QUESTIONSF}" 2> /dev/null > /dev/null; then
|
||||||
|
note 1
|
||||||
|
else
|
||||||
|
note 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
if grep -E -i "(/proc/.*/oom_|score)" "${QUESTIONSF}" 2> /dev/null > /dev/null; then
|
||||||
|
note 1
|
||||||
|
else
|
||||||
|
note 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
if grep -E -i "root" "${QUESTIONSF}" 2> /dev/null > /dev/null; then
|
||||||
|
note 1
|
||||||
|
else
|
||||||
|
note 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
echo #" = $NOTE"
|
||||||
|
done
|
@ -58,7 +58,7 @@ l'utilisateur lors de l'installation) le système de base.
|
|||||||
|
|
||||||
<div lang="en-US">
|
<div lang="en-US">
|
||||||
```bash
|
```bash
|
||||||
debootstrap jessie newroot/ http://httpredir.debian.org/debian/
|
debootstrap buster newroot/ http://httpredir.debian.org/debian/
|
||||||
```
|
```
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -72,7 +72,7 @@ de base sous forme de tarball\ :
|
|||||||
|
|
||||||
<div lang="en-US">
|
<div lang="en-US">
|
||||||
```bash
|
```bash
|
||||||
wget http://gentoo.mirrors.ovh.net/gentoo-distfiles/releases/amd64/autobuilds/current-stage3-amd64/stage3-amd64-20181021T214502Z.tar.xz
|
wget http://gentoo.mirrors.ovh.net/gentoo-distfiles/releases/amd64/autobuilds/current-stage3-amd64/stage3-amd64-20191020T214501Z.tar.xz
|
||||||
tar xpf stage3-amd64-*.tar.xz -C newroot/
|
tar xpf stage3-amd64-*.tar.xz -C newroot/
|
||||||
```
|
```
|
||||||
</div>
|
</div>
|
||||||
|
@ -12,7 +12,7 @@ mémoire est donc utilisée de manière plus efficace.
|
|||||||
|
|
||||||
[^vm-overcommit]: Dépendant de la valeur de `/proc/sys/vm/overcommit_memory`,
|
[^vm-overcommit]: Dépendant de la valeur de `/proc/sys/vm/overcommit_memory`,
|
||||||
généralement 0. Voir
|
généralement 0. Voir
|
||||||
<https://www.kernel.org/doc/Documentation/vm/overcommit-accounting>.
|
<https://www.kernel.org/doc/html/latest/vm/overcommit-accounting.html>.
|
||||||
|
|
||||||
Mais évidemment, cela peut donner lieu à des situations où le noyau n'est plus
|
Mais évidemment, cela peut donner lieu à des situations où le noyau n'est plus
|
||||||
en mesure de trouver de bloc physiquement disponible, alors qu'ils avaient
|
en mesure de trouver de bloc physiquement disponible, alors qu'ils avaient
|
||||||
@ -48,5 +48,5 @@ Grâce à cette notification, il est possible de figer le processus pour
|
|||||||
l'envoyer sur une autre machine. Et ainsi libérer la mémoire avant que l'OOM
|
l'envoyer sur une autre machine. Et ainsi libérer la mémoire avant que l'OOM
|
||||||
killer ne passe.
|
killer ne passe.
|
||||||
|
|
||||||
Jetez un œil à [cet article parru sur LVM](https://lwn.net/Articles/590960/) à
|
Jetez un œil à [cet article parru sur LWN](https://lwn.net/Articles/590960/) à
|
||||||
ce sujet.
|
ce sujet.
|
||||||
|
@ -10,7 +10,7 @@ envoyé à une autre adresse et/ou non signé et/ou reçu après la correction n
|
|||||||
sera pas pris en compte.
|
sera pas pris en compte.
|
||||||
|
|
||||||
Par ailleurs, n'oubliez pas de répondre à
|
Par ailleurs, n'oubliez pas de répondre à
|
||||||
[l'évaluation du cours](https://www.epitaf.fr/moodle/mod/quiz/view.php?id=40).
|
[l'évaluation du cours](https://www.epitaf.fr/moodle/mod/quiz/view.php?id=308).
|
||||||
|
|
||||||
|
|
||||||
## Tarball
|
## Tarball
|
||||||
@ -24,9 +24,10 @@ pour chaque exercice) :
|
|||||||
|
|
||||||
<div lang="en-US">
|
<div lang="en-US">
|
||||||
```
|
```
|
||||||
|
login_x-TP3/
|
||||||
login_x-TP3/escape.c
|
login_x-TP3/escape.c
|
||||||
login_x-TP3/procinfo.sh
|
login_x-TP3/procinfo.sh
|
||||||
login_x-TP3/rev_kdb_leds.sh
|
login_x-TP3/suspend_schedule.sh
|
||||||
login_x-TP3/view_caps.c
|
login_x-TP3/view_caps.c
|
||||||
login_x-TP3/monitor.sh
|
login_x-TP3/monitor.sh
|
||||||
login_x-TP3/monitor_init.sh
|
login_x-TP3/monitor_init.sh
|
||||||
|
@ -125,38 +125,14 @@ uts:[4026531838]
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
### `rev_kdb_leds.sh`, `batinfo.sh`, `cpuinfo.sh`
|
### `batinfo.sh`, `cpuinfo.sh`
|
||||||
|
|
||||||
Explorons le pseudo système de fichiers `/sys` pour écrire un script
|
Explorons le pseudo système de fichiers `/sys` pour écrire un script
|
||||||
qui va, en fonction de ce que vous avez de disponible :
|
qui va, en fonction de ce que vous avez de disponible :
|
||||||
|
|
||||||
* inverser l'état des diodes de notre clavier ;
|
|
||||||
* nous afficher des statistiques sur notre batterie ;
|
* nous afficher des statistiques sur notre batterie ;
|
||||||
* nous afficher des statistiques la fréquence de notre CPU.
|
* nous afficher des statistiques la fréquence de notre CPU.
|
||||||
|
|
||||||
#### `rev_kdb_leds.sh`
|
|
||||||
|
|
||||||
Si vous avez :
|
|
||||||
|
|
||||||
* numlock On,
|
|
||||||
* capslock Off,
|
|
||||||
* scrolllock Off ;
|
|
||||||
|
|
||||||
Après avoir exécuté le script, nous devrions avoir :
|
|
||||||
|
|
||||||
* numlock Off,
|
|
||||||
* capslock On,
|
|
||||||
* scrolllock On.
|
|
||||||
|
|
||||||
Voici un exemple d'utilisation :
|
|
||||||
|
|
||||||
<div lang="en-US">
|
|
||||||
```
|
|
||||||
42sh$ ./rev_kdb_leds.sh input20
|
|
||||||
```
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
#### `batinfo.sh`
|
#### `batinfo.sh`
|
||||||
|
|
||||||
Voici un exemple d'utilisation :
|
Voici un exemple d'utilisation :
|
||||||
@ -207,3 +183,67 @@ Thermal throttle count: 0
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
N'hésitez pas à rajouter toute sorte d'information intéressantes !
|
N'hésitez pas à rajouter toute sorte d'information intéressantes !
|
||||||
|
|
||||||
|
|
||||||
|
### `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éaliser l'un des scripts
|
||||||
|
suivant, en fonction du matériel dont vous disposez :
|
||||||
|
|
||||||
|
* inverser l'état des diodes de notre clavier ;
|
||||||
|
* mettre en veille votre machine, en ayant programmé une heure de réveil.
|
||||||
|
|
||||||
|
#### `rev_kdb_leds.sh`
|
||||||
|
|
||||||
|
Si vous avez :
|
||||||
|
|
||||||
|
* numlock On,
|
||||||
|
* capslock Off,
|
||||||
|
* scrolllock Off ;
|
||||||
|
|
||||||
|
Après avoir exécuté le script, nous devrions avoir :
|
||||||
|
|
||||||
|
* numlock Off,
|
||||||
|
* capslock On,
|
||||||
|
* scrolllock On.
|
||||||
|
|
||||||
|
Voici un exemple d'utilisation :
|
||||||
|
|
||||||
|
<div lang="en-US">
|
||||||
|
```
|
||||||
|
42sh# ./rev_kdb_leds.sh input20
|
||||||
|
```
|
||||||
|
</div>
|
||||||
|
|
||||||
|
`input20` correspond à l'identifiant de votre clavier, sous
|
||||||
|
`/sys/class/input/`.
|
||||||
|
|
||||||
|
#### `suspend_schedule.sh`
|
||||||
|
|
||||||
|
Votre script prendra en argument l'heure à laquelle votre machine doit être
|
||||||
|
réveillée, avant de la mettre effectivement en veille.
|
||||||
|
|
||||||
|
Bien sûr, vous ne devez utiliser que des écritures (et des lectures) dans le
|
||||||
|
système de fichiers `/sys`. Il n'est pas question de faire appel à un autre
|
||||||
|
programme (vous pourriez cependant avoir besoin de `date(1)` pour faire les
|
||||||
|
calculs horaires).
|
||||||
|
|
||||||
|
Voici un exemple d'utilisation :
|
||||||
|
|
||||||
|
<div lang="en-US">
|
||||||
|
```
|
||||||
|
42sh# ./suspend_schedule.sh 15:42
|
||||||
|
|
||||||
|
```
|
||||||
|
</div>
|
||||||
|
|
||||||
|
Vous aurez besoin de définir une alarme au niveau de votre RTC, via le
|
||||||
|
fichier : `/sys/class/rtc/rtcX/wakealarm`.
|
||||||
|
|
||||||
|
Attention au fuseau horaire utilisé par votre RTC, si votre système principal
|
||||||
|
est Windows, elle utilisera sans doute le fuseau horaire courant. Sinon, ce
|
||||||
|
sera UTC.
|
||||||
|
|
||||||
|
Un article très complet sur le sujet est disponible ici :
|
||||||
|
<https://www.linux.com/tutorials/wake-linux-rtc-alarm-clock/>
|
||||||
|
@ -3,7 +3,7 @@ title: Virtualisation légère -- TP n^o^ 3
|
|||||||
subtitle: Linux Internals partie 1
|
subtitle: Linux Internals partie 1
|
||||||
author: Pierre-Olivier *nemunaire* [Mercier]{.smallcaps}
|
author: Pierre-Olivier *nemunaire* [Mercier]{.smallcaps}
|
||||||
institute: EPITA
|
institute: EPITA
|
||||||
date: Mercredi 24 octobre 2018
|
date: Mercredi 23 octobre 2019
|
||||||
abstract: |
|
abstract: |
|
||||||
Ce premier TP consacré aux Linux Internals va nous permettre
|
Ce premier TP consacré aux Linux Internals va nous permettre
|
||||||
d'appréhender les notions de pseudos systèmes de fichiers, de
|
d'appréhender les notions de pseudos systèmes de fichiers, de
|
||||||
@ -12,14 +12,14 @@ abstract: |
|
|||||||
\vspace{1em}
|
\vspace{1em}
|
||||||
|
|
||||||
Certains éléments de ce TP sont à rendre à <virli@nemunai.re> au
|
Certains éléments de ce TP sont à rendre à <virli@nemunai.re> au
|
||||||
plus tard le mercredi 7 novembre 2018 à 12 h 42. Consultez la
|
plus tard le mercredi 6 novembre 2019 à 13 h 42. Consultez la
|
||||||
dernière section de chaque partie pour plus d'information sur les
|
dernière section de chaque partie pour plus d'information sur les
|
||||||
éléments à rendre.
|
éléments à rendre.
|
||||||
|
|
||||||
En tant que personnes sensibilisées à la sécurité des échanges
|
En tant que personnes sensibilisées à la sécurité des échanges
|
||||||
électroniques, vous devrez m'envoyer vos rendus signés avec votre
|
électroniques, vous devrez m'envoyer vos rendus signés avec votre
|
||||||
clef PGP. Pensez à
|
clef PGP. Pensez à
|
||||||
[me](https://pgp.mit.edu/pks/lookup?op=vindex&search=0x842807A84573CC96)
|
[me](https://keys.openpgp.org/search?q=nemunaire%40nemunai.re)
|
||||||
faire signer votre clef et n'hésitez pas à [faire signer votre
|
faire signer votre clef et n'hésitez pas à [faire signer la
|
||||||
clef](https://www.meetup.com/fr/Paris-certification-de-cles-PGP-et-CAcert/).
|
votre](https://www.meetup.com/fr/Paris-certification-de-cles-PGP-et-CAcert/).
|
||||||
...
|
...
|
||||||
|
1757
tutorial/3/tutorial.tex
Normal file
1757
tutorial/3/tutorial.tex
Normal file
File diff suppressed because it is too large
Load Diff
Loading…
x
Reference in New Issue
Block a user