Tout d'abord, une clarification:
Il nécessite d'avoir le privilège root pour modifier l'autorisation sur un fichier.
Depuis man 2 chmod, nous pouvons voir que l'appel système chmod () retournera EPERM (une erreur d'autorisation) si:
L'UID effectif ne correspond pas au propriétaire du fichier et le processus n'est pas privilégié (Linux: il n'a pas la capacité CAP_FOWNER).
Cela signifie généralement que vous soit besoin d'être le propriétaire du fichier ou l'utilisateur root. Mais nous pouvons voir que la situation sous Linux pourrait être un peu plus compliquée.
Alors, quelles sont les relations entre la racine et le noyau?
Comme l'a souligné le texte que vous avez cité, le noyau est chargé de vérifier que l'UID du processus effectuant un appel système (c'est-à-dire l'utilisateur sous lequel il s'exécute) est autorisé à faire ce qu'il demande. Ainsi, les super pouvoirs de root viennent du fait que le noyau a été programmé pour toujours permettre une opération demandée par l'utilisateur root (UID = 0).
Dans le cas de Linux, la plupart des différentes vérifications des autorisations qui se produisent vérifient si l'UID donné a la capacité nécessaire . Le système de capacités permet un contrôle plus fin sur qui est autorisé à faire quoi.
Cependant, afin de conserver la signification UNIX traditionnelle de l'utilisateur "root", un processus exécuté avec l'UID de 0 a toutes les capacités.
Notez que même si les processus exécutés avec UID = 0 ont des privilèges de superutilisateur, ils doivent toujours faire des requêtes au noyau via l'interface d'appel système.
Ainsi, un processus de l'espace utilisateur, même exécuté en tant que root, est toujours limité dans ce qu'il peut faire car il s'exécute en " mode utilisateur " et le noyau s'exécute en " mode noyau " qui sont en fait des modes de fonctionnement distincts pour le CPU lui-même. En mode noyau, un processus peut accéder à n'importe quelle mémoire ou émettre n'importe quelle instruction. En mode utilisateur (sur les processeurs x86, il existe en fait un certain nombre de modes protégés différents), un processus ne peut accéder qu'à sa propre mémoire et ne peut émettre que des instructions. Ainsi, un processus de l'espace utilisateur exécuté en tant que root n'a toujours accès qu'aux fonctionnalités du mode noyau que le noyau lui expose.