El proceso en modo usuario cambia al modo kernel. ¿Entonces el proceso tendrá privilegios de root?

El proceso en modo usuario cambia al modo kernel. ¿Entonces el proceso tendrá privilegios de root?

De acuerdo ahttp://www.linfo.org/kernel_mode.htmlen el párrafo 7:

Cuando un proceso de usuario ejecuta una parte del código del kernel a través de una llamada al sistema, el proceso se convierte temporalmente en un proceso del kernel y está en modo kernel. Mientras esté en modo kernel, el proceso tendrá privilegios de root (es decir, administrativos) y acceso a recursos clave del sistema. Todo el kernel, que no es un proceso sino un controlador de procesos, se ejecuta sólo en modo kernel. Cuando el kernel ha satisfecho la solicitud de un proceso, devuelve el proceso al modo de usuario.

No me queda claro la línea,

Mientras esté en modo kernel, el proceso tendrá privilegios de root (es decir, administrativos) y acceso a recursos clave del sistema.

¿Cómo es que un proceso de espacio de usuario que no se ejecuta como root tendrá privilegios de root? ¿En qué se diferencia del proceso del espacio de usuario que se ejecuta como root?

Respuesta1

Los privilegios de root y no root son cosas relacionadas con el espacio del usuario. Por ejemplo, un usuario root puede instalar una aplicación y un usuario normal no.

Sin embargo, incluso el usuario root tiene algunas limitaciones. Esas limitaciones son impuestas por el diseño del sistema operativo y diferencian entre espacio de usuario y espacio de kernel. Por ejemplo, aunque sea usuario root, no puede cambiar la velocidad a la que gira el disco duro si esa opción no se le proporciona a través del controlador (puede escribir un controlador que permita la función, pero incluso entonces no estás accediendo al hardware directamente sino a través del controlador).

La razón de esto es que el control real del hardware se realiza en el espacio del kernel y la forma en que el usuario accede a él es a través de llamadas al sistema. Un espacio del kernel no es un lugar para un usuario :)

Para responder a su pregunta, no es el proceso el que obtiene los privilegios de root, es el cambio al modo kernel el que permite el acceso ilimitado a todos los recursos del sistema. Sin embargo, ese acceso ilimitado sólo está disponible para el código que se ejecuta en modo kernel, por lo que su proceso no lo tiene. Solo usa las llamadas del código del kernel.

El código que se ejecuta en modo kernel tiene un acceso completamente ilimitado al sistema.

Respuesta2

(Intentaré ser breve).

En teoría, existen dos dimensiones de privilegios:

  • Las computadorasset de instrucciones arquitectura(ISA), que protege determinada información y/o funciones de la máquina.

  • ElSistema operativo(OS) creando un ecosistema para aplicaciones y comunicación. En esencia, está el kernel, un programa que puede ejecutarse en ISA sin dependencias de ningún tipo.

Los sistemas operativos actuales realizan muchas tareas muy diferentes para que podamos usar las computadoras como lo hacemos hoy. En una vista muy (, muy, muy) simplificada, puedes imaginar el kernel como el único programa que ejecuta la computadora. Las aplicaciones, los procesos y los usuarios son todos artefactos del ecosistema creado por el sistema operativo y especialmente el kernel.

Cuando hablamos de privilegios de usuario (espacio) con respecto al sistema operativo, hablamos de privilegios administrados, otorgados y aplicados por el sistema operativo. Por ejemplo, el kernel aplica los permisos de archivos que restringen la obtención de datos de un directorio específico. Observa algunos ID asociados con el archivo, interpreta algunos bits que representan privilegios y luego recupera los datos o se niega a hacerlo.

La jerarquía de privilegios dentro de ISA proporciona las herramientas que el núcleo utiliza para sus propósitos. Los detalles específicos varían mucho, pero en general está el modo kernel, en el que los programas ejecutados por la CPU tienen mucha libertad para realizar E/S y utilizar las instrucciones que ofrece la ISA y el modo usuario donde se realizan E/S y las instrucciones. constreñido.

Por ejemplo, al leer la instrucción para escribir datos en una dirección de memoria específica, una CPU en modo kernel podría simplemente escribir datos en una dirección de memoria específica, mientras que en modo usuario primero realiza algunas comprobaciones para ver si la dirección de memoria está en una dirección de memoria específica. rango de direcciones permitidas en las que se pueden escribir datos. Si se determina que no se puede escribir en la dirección, normalmente el ISA cambiará al modo kernel y comenzará a ejecutar otro flujo de instrucciones, que es parte del kernel y hará lo correcto (TM).

Ese es un ejemplo de una estrategia de cumplimiento para garantizar que un programa no interfiera con otro programa... de modo que el javascript de la página web que está visitando actualmente no pueda hacer que su aplicación de banca en línea realice transacciones dudosas...

Observe que en modo kernel no se activa nada más para hacer cumplir lo correcto; se supone que el programa que se ejecuta en modo kernel está haciendo lo correcto. Es por eso que en el modo kernel nada puede obligar a un programa a adherirse a las reglas y conceptos abstractos del ecosistema del sistema operativo. Es por eso que los programas que se ejecutan en modo kernel son comparables a los del usuario root.

Técnicamente, el modo kernel es mucho más poderoso que simplemente ser el usuario root de su sistema operativo.

información relacionada