¿Cómo regula su los permisos de las aplicaciones?

Vi muchas aplicaciones en el mercado que brindan funcionalidad de superusuario a las aplicaciones. Sin embargo, hay un requisito previo para rootear su teléfono. Tengo curiosidad por saber cómo un teléfono rooteado ya tiene esos permisos.

Descargué el código fuente y logré ubicar el archivo su.c que podría invocar una aplicación para cambiar. Pero todavía no estoy seguro. ¿Alguien puede dar una idea de esto?

¿Qué archivos reales delegan permisos? ¿Todas las aplicaciones del sistema reciben permisos de root al inicio?

setuidno funciona en Android desde la versión 4.3. Entonces, se ejecuta un demonio privilegiado en el arranque: ¿Cómo funciona Magisk?

Respuestas (5)

Érase una vez una ciudad amurallada con una gran puerta cerrada sujeta por un candado mágico que solo se puede abrir con una espada mágica. Según las tradiciones de la gente de la ciudad, cualquiera que traiga la espada mágica y abra la puerta mágica está destinado a ser el señor de la ciudad.

Un día, un joven héroe llega a la ciudad trayendo consigo la espada mágica que tomó de la raíz del árbol Yggdrasil. Golpeó suavemente la puerta con la espada, e inmediatamente la puerta mágica se abrió y se abrió. La gente de la ciudad vitoreó y, según su tradición, ungieron al joven héroe como el señor de la ciudad.

Como señor de la ciudad, tenía muchas tareas que hacer, una de las cuales era garantizar la seguridad de su pueblo, especialmente ahora que la puerta está abierta y los bandidos y ladrones pueden intentar entrar en la ciudad y robarle a la gente de la ciudad sus pertenencias.

Para asegurar los días pacíficos de la gente de la ciudad, el sabio señor contrató a un gerente de SU de confianza para que vigilara la puerta; obedientemente, el gerente de SU ingresa a la ciudad, y cerró la puerta detrás de él , y puso una cerradura que solo él puede abrir, luego crea una gran perilla de puerta para que los extraños golpeen la puerta, un pequeño agujero en la puerta donde él puede mirar afuera y mirar a los extraños, luego le pregunta al señor de la ciudad si permite o no la entrada de extraños.

En la eternidad, el sabio señor gobernó la ciudad durante mucho tiempo y la gente de la ciudad vive feliz para siempre.

Esto es genial (sin voto negativo), pero un poco demasiado obtuso (sin voto positivo).
Me enamoré de esto
una buena historia con un final feliz.
@MatthewRead Estoy bastante seguro de que así es literalmente como funciona; Android en realidad está hecho de gente pequeña. ;)

¿Qué archivos reales delegan permisos?

Por lo general, hay una aplicación de "superusuario" que se incluye en los procesos de enraizamiento. Esta aplicación es el guardián/controlador de las aplicaciones que obtienen acceso de root. Cada vez que una aplicación solicite acceso a la raíz, esta aplicación aparecerá y le pedirá que apruebe o rechace la solicitud.

¿Todas las aplicaciones del sistema reciben permisos de root al inicio?

Hasta donde yo sé, todo debe pasar por la aplicación "superusuario".

A menos que exploten algún otro exploit para obtener la raíz. Esto, con suerte, no es una gran amenaza para la mayoría de los usuarios.

Yo mismo he estado buscando una respuesta para esto, y la información ha sido realmente difícil de alcanzar. Pero entre otras respuestas y preguntas aquí, y leyendo el blog de superusuario, creo que he podido reconstruir cómo funciona.

En un sistema *Nix estándar, suverifica si el usuario está autorizado para convertirse en root (en algunos sistemas, todos lo están; en otros, tienen que ser miembros de un grupo wheelo algo así), solicita la contraseña de root y luego otorga acceso de root .

En un Android rooteado, lo que parece estar sucediendo es que el superusuario viene con una versión personalizada suque determina qué aplicación lo invocó y luego verifica la base de datos de acceso del superusuario para ver si esa aplicación puede o no convertirse en root. Si es así, entonces da el salto a la raíz. Si no, genera la interfaz de usuario de autorización.

Un desarrollador tiene que llamar a su dentro de la aplicación. una vez que lo llama, y ​​el usuario ha otorgado permiso para usar su , ejecuta comandos en el shell que tiene permisos de root.

En cierto modo, las aplicaciones del sistema tienen permisos "especiales" pero no de root como lo haría una aplicación llamando a su . Tienen los permisos que otorga Android a las aplicaciones del sistema.

Los sistemas basados ​​en Unix tienen un tipo de permiso especial llamado setuidque permite que un usuario no root ejecute un archivo como si fuera el usuario root.

En nuestro caso particular, sutiene el setuidpermiso y por lo tanto se está ejecutando como rootusuario.

Una vez invocado, los sucontroles binarios (con la aplicación SuperUser) para ver si debe otorgar la solicitud roota la aplicación solicitante, si se aprueba la solicitud, abre un shell como root, (lo que supuede hacer ya que se ejecuta como rootdebido al setuidpermiso que tiene).

setuidno funciona en Android desde la versión 4.3: android.stackexchange.com/a/217949/218526 .