Alors en fait, les capabilities ca n'est pas du tout ca. Les caps c'est bon mangez-en.
Les caps dans le sens de la "norme" POSIX, c'est plutôt vaste, c'est
pourquoi je ne vais parler que des caps utilisés dans pure, et à priori
dans tous les daemons unix bien pensés, cad les "Process Capabilities".
Les "Process Capabilities" sont très utiles quand un process doit être
lancé en tant que root pour quelques raisons simples et chiantes
(exemples : bind sur un port < 1024 pour plein de daemons TCP, changer
l'heure système pour un client NTP, etc.).
En gros, on divise les droits root en quelques catégories (monter un FS, changer l'heure, changer le
proprio d'un fichier, ...) et un process (ntp dans mon exemple) peut
dire : "je suis root, ok, mais je me débarrasse de tous mes droits root
SAUF changer l'heure". A partir de ce moment là, il ne pourra plus
revenir en arrière, il n'aura plus aucun droit root bien que le process
tourne encore en tant que root. Et c'est valable pour tous les processus
fils.
Donc en gros le processus est toujours root mais il a moins de droits
que s'il tournait en simple user (sauf ceux qu'il n'a pas révoqué). Et
ca, niveau secu, c'est top parce que même en cas d'exploit, bah l'attaquant peut juste faire ce qu'autorisait les capas qu'il n'a pas révoqués.
PS : pour connaitre les capas implémentés par défaut dans le kernel,
jetez un oeil sur /usr/src/linux/include/linux/capability.h
[Phiropsi BES] Jean-Christophe BOHIN
http://www.phiropsi.com
