Quelle est la différence entre Linux capabilities et Root ?
Root est un marteau-piqueur, là où les Capabilities sont un scalpel de chirurgien.
Pour comprendre la différence, imaginez que vous possédez un trousseau de clés pour un immense hôtel.
1. Le modèle "Root" (Tout ou rien)
Traditionnellement, sous Linux (et Unix), il n'existe que deux types d'utilisateurs : le Super-utilisateur (Root, avec l'ID utilisateur 0) et les utilisateurs normaux.
* L'approche Root : C'est le "Passe-partout" total. Si un processus a besoin de faire une seule chose privilégiée (comme ouvrir un port réseau sécurisé), vous devez lui donner les droits Root complets.
* Le problème : Si ce processus est piraté, l'attaquant devient Root et peut tout faire sur la machine (lire vos fichiers, supprimer le système, etc.). C'est le principe du "Tout ou Rien".
2. Les Linux Capabilities (La précision chirurgicale)
Les Capabilities ont été introduites pour briser ce monopole du Root. Elles découpent les pouvoirs immenses du super-utilisateur en petites unités de privilèges distinctes.
* L'approche Capabilities : Au lieu de donner le "Passe-partout", on ne donne que la clé spécifique nécessaire.
* Exemple concret : Si un serveur web doit écouter sur le port 80 (réservé à Root), on ne le lance pas en tant que Root. On lui donne simplement la capacité CAP_NET_BIND_SERVICE. Il pourra ouvrir son port, mais il sera incapable de redémarrer le système ou de modifier les mots de passe.
Pourquoi est-ce important ?
C'est la base de la sécurité moderne, notamment pour les containers (Docker, Kubernetes). Un container ne devrait jamais fonctionner en tant que "vrai" Root. On lui retire presque toutes ses capabilities pour s'assurer que, même s'il est compromis, l'attaquant reste enfermé dans une boîte très limitée.
Root est un marteau-piqueur, là où les Capabilities sont un scalpel de chirurgien.,