Sur la base d'une partie de la première réponse à ces questions :
lire à partir d'un fichier (le noyau doit vérifier que les autorisations vous permettent de lire à partir dudit fichier, puis le noyau exécute les instructions réelles sur le disque pour lire le fichier)
Il nécessite d'avoir le privilège root pour modifier l'autorisation sur un fichier. Avec le privilège root, l'utilisateur peut accéder à tous les fichiers sans se soucier de l'autorisation. Alors, quelles sont les relations entre la racine et le noyau?
permissions
kernel
root
Ron Vince
la source
la source
Réponses:
Tout d'abord, une clarification:
Depuis man 2 chmod, nous pouvons voir que l'appel système chmod () retournera EPERM (une erreur d'autorisation) si:
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.
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.
la source