5 votos

¿Es lo mismo el modo kernel del sistema operativo y los permisos Root en Android?

Como está escrito en el libro de Peter Baer Galvin Conceptos del sistema operativo , hay dos modos de funcionamiento -

1.modo usuario
2.modo kernel

Entonces, mi pregunta es cuando rooteamos nuestro Android ¿alteramos el kernel de linux para obtener los permisos del modo kernel?

0 votos

Un usuario Root puede utilizar todas las llamadas del sistema proporcionadas por el kernel (API) sin ninguna restricción, mientras que al ejecutarse en modo kernel, el kernel puede literalmente, hacer cualquier cosa Desde las operaciones a nivel de bits hasta el control directo del hardware y la memoria.

14voto

slugster Puntos 27178

Los permisos de root y el modo kernel no son lo mismo. Los programas con acceso Root pueden acceder a parte del kernel, pero Root no es el kernel en sí.

El modelo de usuario de Android (y Linux) tiene un conjunto de usuarios, cada uno de los cuales forma parte de un conjunto de grupos. Estos grupos se utilizan para gestionar qué usuarios tienen acceso a qué. Por ejemplo, en Linux puedes configurar todos los dispositivos de impresión para que sean propiedad del grupo de impresión, de modo que sólo los usuarios que forman parte del grupo de impresión puedan acceder a las impresoras.

En Android cada aplicación tiene su propia cuenta de usuario para evitar que las aplicaciones accedan a los datos de las demás.

Entre todos estos usuarios, hay uno especial: Root. Este es el usuario con el mayor conjunto de permisos, también llamado "superusuario". Básicamente, todas las comprobaciones de permisos están deshabilitadas para este usuario. Root puede hacer cosas como cambiar la propiedad de los archivos, añadir usuarios a los grupos, gestionar los componentes del sistema y mucho más.

El modo Kernel es ligeramente diferente. Cuando un sistema basado en Linux arranca, el kernel es lo primero que carga el gestor de arranque. El kernel se encarga de procesar los comandos del sistema ("escribir byte x en el archivo y", "listar todos los dispositivos conectados al bus USB"). También es donde residen muchos controladores, que ayudan al sistema a entender cómo comunicarse con un dispositivo.

Tras la inicialización, el kernel inicia un programa en modo usuario. Los programas que se ejecutan en este modo no pueden acceder directamente a la memoria de los dispositivos, no pueden modificar las tablas de páginas, básicamente no pueden hacer nada de lo que se supone que hace el núcleo. La única manera de ejecutar un comando del sistema es pasando por el kernel, y el kernel decide si un programa puede hacerlo o no.

En Android, el núcleo inicia un programa de inicialización que, a su vez, pone en marcha algunos procesos de fondo y el sistema Android con el que se puede interactuar.

El núcleo decide a qué usuario se le permite ejecutar ciertas funciones del sistema. Muchas funciones del sistema, como montar una partición para hacerla escribible, sólo son accesibles para los programas que se ejecutan como Root. Root puede contactar y controlar el kernel, pero al final el kernel decide lo que Root puede y no puede hacer.

Así que: generalmente el modo kernel se refiere al código que se ejecuta dentro del kernel, mientras que Root se refiere a los permisos que tiene un programa.

En aras de la claridad, estoy ignorando herramientas como SELinux, que está diseñado para limitar los archivos a los que pueden acceder los programas que se ejecutan como Root. Esta es una medida de seguridad para que incluso si un programa del sistema que se ejecuta como Root es explotado y comienza a ejecutar código de los hackers, no puede comprometer el sistema. Esto se hace utilizando un módulo especial en el kernel.

1 votos

Una forma de pensar en esto es que el modo kernel es un modo que puede hacer cualquier cosa que permite la CPU. El código que se ejecuta como Root no está en modo kernel, sino que se ejecuta en un modo que el kernel permite hacer casi cualquier cosa. Un módulo del núcleo podría cambiar lo que Root puede ejecutar, pero Root no puede cambiar lo que el kernel puede hacer (a menos que el kernel permita a Root hacer tal cambio)

0voto

Foe Puntos 41

Cuando haces Root, estás concediendo permisos completos al dispositivo. Ya utilizas el kernel (drivers, comandos) así que el Root te permite modificar todo el sistema (añadir usuarios, modificar archivos del sistema). Mi respuesta es extremadamente simple, otra respuesta explora lo mismo.

PreguntAndroid.com

PreguntAndroid es una comunidad de usuarios de Android en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X