Typo + exo not in submissions

This commit is contained in:
nemunaire 2016-10-06 03:58:52 +02:00 committed by Pierre-Olivier Mercier
commit 6fd83df1fd
6 changed files with 93 additions and 73 deletions

View file

@ -27,7 +27,8 @@ On trouve par exemple :
* `CAP_KILL` : permet de tuer n'importe quel processus ;
* `CAP_SYS_BOOT` : permet d'arrêter ou de redémarrer la machine ;
* `CAP_SYS_MODULE` : permet de charger et décharger des modules ;
* et beaucoup d'autres, il y en a environ 39 en tout !
* et beaucoup d'autres, il y en a environ 39 en tout (ça dépend de la
version du noyau) !
### `ping`
@ -44,16 +45,16 @@ utilisateur de prendre les droits du super-utilisateur, le temps de l'exécution
du programme.
Les problèmes surviennent lorsque l'on découvre des vulnérabilités dans les
programmes Setuid root. En effet, s'il devient possible à un utilisateur
programmes Setuid root. En effet, s'il devient possible pour un utilisateur
d'exécuter du code arbitraire, ce code sera exécuté avec les privilèges de
l'utilisateur root ! Dans le cas de ping, on se retrouverait alors à pouvoir
lire l'intégralité de la mémoire, alors que l'on avait juste besoin d'écrire
sur une interface réseau.
C'est donc à ce moment que les *capabilities* entrent en jeu : un processus (ou
même un thread) privilégié peut décider, à son lancement, de réduire ses
*capabilities*, pour ne garder que celles dont il a réellement besoin. Ainsi,
`ping` pourrait se contenter de `CAP_NET_RAW`.
même un thread) privilégié peut décider, généralement à son lancement, de
réduire ses *capabilities*, pour ne garder que celles dont il a réellement
besoin. Ainsi, `ping` pourrait se contenter de `CAP_NET_RAW`.
## Les attributs de fichier étendus
@ -95,8 +96,8 @@ cat: toto: Permission denied
Hello World!
```
Bien que les droits UNIX traditionnels ne vous donne pas accès au fichier, les
ACL POSIX vous autorisent à lire le contenu du fichier.
Bien que les droits UNIX traditionnels ne vous donnent pas accès au fichier,
les ACL POSIX vous autorisent à le lire.
Vous pouvez voir ces attributs avec la commande :
@ -134,18 +135,41 @@ Ou, dans sa version plus lisible :
## Exercice : visualisateur de capabilities d'un processus
Écrivons maintenant un script permettant de voir les *capabilities* d'un
processus :
Écrivons maintenant un programme permettant de voir les *capabilities*
d'un processus :
```shell
42sh$ ./view_caps 1
cap_user_header_t
-----------------
Version: 20080522
PID: 1
cap_user_data_t
---------------
effective: 0xffffffff
CAP_AUDIT_CONTROL
CAP_AUDIT_READ
CAP_AUDIT_WRITE
CAP_BLOCK_SUSPEND
CAP_CHOWN
CAP_DAC_OVERRIDE
CAP_DAC_READ_SEARCH
permitted: 0xffffffff
CAP_AUDIT_CONTROL
CAP_AUDIT_READ
CAP_AUDIT_WRITE
CAP_BLOCK_SUSPEND
CAP_CHOWN
CAP_DAC_OVERRIDE
CAP_DAC_READ_SEARCH
inheritable: 0x0
```
## Rendu
Astuces : `capget(2)`, X-macros, ...
## Aller plus loin
## Pour aller plus loin
Je vous recommande la lecture des *man* suivants :
@ -154,7 +178,10 @@ Je vous recommande la lecture des *man* suivants :
Et de ces quelques articles :
* [https://www.freedesktop.org/wiki/CommonExtendedAttributes/](Guidelines for
extended attributes)
* [https://lwn.net/Articles/211883/](File-based capabilities)
* [http://lwn.net/Articles/199004/](A bid to resurrect Linux capabilities)
* [Guidelines for extended attributes](https://www.freedesktop.org/wiki/CommonExtendedAttributes/)
* [File-based capabilities](https://lwn.net/Articles/211883/)
* [A bid to resurrect Linux capabilities](https://lwn.net/Articles/199004/)
Pour revenir à Docker, par défaut, un certain nombre de *capabilities* sont
désactivées par défaut ; vous pouvez en ajouter et en retirer via les arguments
`--cap-add` et `--cap-drop` du `docker run`.