Quelle est la relation entre racine et noyau? [fermé]

8

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?

Ron Vince
la source
La question est trop vague / peu claire pour être répondue.
psusi
Cette question implique pratiquement plusieurs choses. Il peut être nécessaire d'en lire un sur l' appel système , le privilège et le niveau de privilège . Je ne sais pas comment mieux formuler la question. D'une certaine manière, Steven D comprend ce que je veux dire.
Ron Vince

Réponses:

13

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.

Steven D
la source
Faut-il dire que root ou UID = 0 a le privilège de niveau noyau? Ou y a-t-il des restrictions appliquées par le noyau à la racine?
Ron Vince
Les processus s'exécutant comme UID = 0 ont des privilèges de superutilisateur; cependant, ils font toujours des requêtes au noyau via l'interface d'appel système. Un processus en 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. 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. Voir linfo.org/kernel_mode.html pour plus d'informations.
Steven D
J'ai ajouté ma recommandation à la réponse avec quelques liens.
Steven D
Avez-vous des recommandations de livres Unix?
Ron Vince
Owh..merci d'avoir dit ça. Je fais toujours une revue de la littérature basée sur les réponses données. Ils désignent l'idée et le matériel documentaire, mais je n'ai pas encore la certitude de déterminer le bien ou le mal de ces réponses.
Ron Vince