Nuestros desarrolladores estrellas agotaron sus provisiones de café, por su búsqueda noche y día por la respuesta, hasta que Mónica encontró el arreglo en GitLab y hoy la compartimos con nosotros.
Solución:
Los privilegios de root y no root son cosas relacionadas con el espacio del usuario. Por ejemplo, un usuario raíz puede instalar una aplicación y un usuario normal no.
Sin embargo, incluso el usuario root tiene algunas limitaciones. Esas limitaciones impuestas por el diseño del sistema operativo diferencian entre el espacio del usuario y el espacio del kernel. Por ejemplo, incluso si es un 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á 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 espacio del 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 que permite el acceso ilimitado a todos los recursos del sistema. Sin embargo, ese acceso ilimitado solo 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.
(Trataré de ser breve.)
En teoría, hay dos dimensiones de privilegios:
-
Las computadoras set de instrucciones arquitectura (ISA), que protege cierta información y/o funciones de la máquina.
-
Él Sistema operativo (OS) creando un ecosistema para aplicaciones y comunicación. Su núcleo es el núcleo, 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, puede imaginar el kernel como el único programa que ejecuta la computadora. Las aplicaciones, los procesos y los usuarios son artefactos del ecosistema creado por el sistema operativo y especialmente por 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 impone los permisos de archivo que restringen la obtención de datos de un directorio específico. Examina algunos ID asociados con el archivo, interpreta algunos bits que representan privilegios y luego obtiene los datos o se niega a hacerlo.
La jerarquía de privilegios dentro de ISA proporciona las herramientas que utiliza el núcleo 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 el ISA y el modo de usuario donde se realizan las 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 de usuario primero realiza algunas comprobaciones para ver si la dirección de memoria está en una dirección de memoria específica. intervalo de direcciones permitidas en las que se pueden escribir datos. Si se determina que la dirección no se puede escribir, por lo general, 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 en la página web que está visitando actualmente no pueda hacer que su aplicación de banca en línea realice transacciones dudosas…
Tenga en cuenta que en el modo kernel no se activa nada más para hacer cumplir lo correcto, se supone que el programa que se ejecuta en el 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 tan poderosos como los del usuario root.
Técnicamente, el modo kernel es mucho más poderoso que simplemente ser el usuario raíz en su sistema operativo.
Si te gusta este mundo, tienes la habilidad dejar una reseña acerca de qué le añadirías a esta reseña.