¿Cuál es la relación entre raíz y núcleo? [cerrado]

8

Basado en parte de la primera respuesta de esta pregunta :

leer desde un archivo (el núcleo debe verificar que los permisos le permitan leer desde dicho archivo, y luego el núcleo lleva a cabo las instrucciones reales en el disco para leer el archivo)

Requiere tener privilegios de root para cambiar el permiso a un archivo. Con el privilegio de root, el usuario puede acceder a cualquier archivo sin preocuparse por el permiso. Entonces, ¿hay alguna relación entre la raíz y el núcleo?

Ron Vince
fuente
La pregunta es demasiado vaga / poco clara para responder.
psusi
Esta pregunta implica prácticamente varias cosas. Puede requerir uno para leer sobre la llamada al sistema , el privilegio y el nivel de privilegio . No sé cómo formular mejor la pregunta. De alguna manera, Steven D entiende lo que quiero decir.
Ron Vince

Respuestas:

13

Primero, una aclaración:

Requiere tener privilegios de root para cambiar el permiso a un archivo.

Desde man 2 chmod podemos ver que la llamada al sistema chmod () devolverá EPERM (un error de permisos) si:

El UID efectivo no coincide con el propietario del archivo, y el proceso no tiene privilegios (Linux: no tiene la capacidad CAP_FOWNER).

Normalmente, esto significa que o bien tiene que ser el propietario del archivo o el usuario root. Pero podemos ver que la situación en Linux podría ser un poco más complicada.

Entonces, ¿hay alguna relación entre la raíz y el núcleo?

Como ha señalado el texto que ha citado, el núcleo es responsable de verificar que el UID del proceso que realiza una llamada al sistema (es decir, el usuario con el que se está ejecutando) puede hacer lo que está pidiendo. Por lo tanto, los superpoderes de root provienen del hecho de que el kernel ha sido programado para permitir siempre una operación solicitada por el usuario root (UID = 0).

En el caso de Linux, la mayoría de las diversas verificaciones de permisos que ocurren verifican si el UID dado tiene la capacidad necesaria . El sistema de capacidades permite un control más detallado sobre quién puede hacer qué.

Sin embargo, para preservar el significado tradicional de UNIX del usuario "raíz", un proceso ejecutado con el UID de 0 tiene todas las capacidades.

Tenga en cuenta que si bien los procesos que se ejecutan como UID = 0 tienen privilegios de superusuario, aún deben realizar solicitudes al núcleo a través de la interfaz de llamada del sistema.

Por lo tanto, un proceso de espacio de usuario, incluso ejecutándose como root, todavía está limitado en lo que puede hacer, ya que se ejecuta en " modo de usuario " y el kernel se ejecuta en " modo de kernel ", que en realidad son modos de operación distintos para la CPU. En modo kernel, un proceso puede acceder a cualquier memoria o emitir cualquier instrucción. En el modo de usuario (en las CPU x86 en realidad hay varios modos protegidos diferentes), un proceso solo puede acceder a su propia memoria y solo puede emitir algunas instrucciones. Por lo tanto, un proceso de espacio de usuario que se ejecuta como root todavía solo tiene acceso a las funciones del modo kernel que el kernel le expone.

Steven D
fuente
¿Deberíamos decir que root o UID = 0 tiene el privilegio de nivel de kernel? ¿O hay alguna restricción aplicada por el núcleo a la raíz?
Ron Vince
Los procesos que se ejecutan como UID = 0 tienen privilegios de superusuario; sin embargo, aún hacen solicitudes del núcleo a través de la interfaz de llamada del sistema. Un proceso de espacio de usuario, incluso ejecutándose como root, todavía está limitado en lo que puede hacer, ya que se ejecuta en "modo de usuario" y el kernel se ejecuta en "modo de kernel", que en realidad son modos de operación distintos para la propia CPU. Un proceso de espacio de usuario que se ejecuta como root todavía solo tiene acceso a las funciones del modo kernel que el kernel le expone. Consulte linfo.org/kernel_mode.html para obtener más información.
Steven D
Agregué mi recomendación a la respuesta con algunos enlaces.
Steven D
¿Tienes alguna recomendación de los libros de Unix?
Ron Vince
Owh ... gracias por decir eso. Todavía estoy haciendo una revisión de la literatura basada en las respuestas dadas. Señalan la idea y los materiales de la literatura, pero aún no tengo certeza para determinar si esas respuestas son correctas o incorrectas.
Ron Vince