2012-04-05 10 views
8

Posible duplicado: what does the su mean: process = Runtime.getRuntime().exec("su");¿Cómo funciona su Android? ¿Y cuáles son los requisitos previos para que funcione? ¿Qué está enraizando en Android?

Estoy cansado de intentar todas las cosas diferentes, sin embargo todavía no tengo éxito en la comprensión de cuándo funcionará. ¿Qué es rootear un dispositivo en Android? Alguien por favor ayúdeme con esto.

Respondí a la siguiente pregunta. La solución que publiqué allí, probé y también funcionó.

Adding full permission for a image file in android.

Aquí es mi pregunta:

He intentado Siguiendo.

Copied su.

Instalado SuperUser.apk,

De programa Llamé a su y luego usando el proceso de nueva creación que llevan a cabo las operaciones necesarias.

Esto tiene 2 resultados.

1) Cuando el dispositivo está rooteado (como la ejecución de la opción de raíz permanente en z4root), funciona, cambia los permisos del archivo del sistema.

2) Cuando el dispositivo no está rooteado, no funciona.

Explicar qué cosas extra realiza z4root lo que hace que la tarea sea posible. Explique en resumen por favor.

Dejarme saber si mi pregunta no es clara. Muchas gracias.

Respuesta

23

¿Qué z4root (o cualquier otro programa de enraizamiento) ejecuta algún exploit para cambiar su propio uid (user-id) a 0 (raíz).Puedes pensar que es como ejecutar algún truco y engañar kernel para que piense que realmente tiene derecho a ser root (entonces, si z4root era un virus, podría hacer todo lo posible con tu teléfono de instalar keyloggers a bricking). Por supuesto, si es posible engañar al kernel para darle acceso root, se considera una vulnerabilidad de seguridad (cualquier aplicación podría hacer eso y realizar algunas cosas maliciosas) y generalmente se arregla en futuras actualizaciones del kernel (es por eso que z4root puede no funciona si actualiza su firmware).

Cuando z4root ha fijado su UID a 0 hace lo siguiente: vuelve a montar /system partición como se puede escribir (por defecto Es sólo lectura), las copias más de su binario, Superuser.apk y busybox y luego vuelve a montar /system atrás como de sólo lectura .

Entonces, ¿cómo el su binario le da acceso a la raíz sin hacer el "truco" cuando normalmente las aplicaciones tienen el mismo uid que el proceso principal? Esto se debe a que su binary tiene establecido el indicador set-uid y siempre se ejecuta como uid 0 (raíz).

Ahora, si ha copiado su binario a /system/bin, entonces debe haber tenido acceso de root, lo que significa que simplemente se olvidó de cambiar propietario/permisos (chown root:root /system/bin/su; chmod 6755 /system/bin/su) pero aún necesita acceso de raíz para hacerlo.

+1

Gracias ... ¿Pero alguna pista sobre cómo cambiar el Uid a 0 programáticamente ...? –

+1

@ happy2Help No puede cambiar su uid a menos que sea root (uid 0). Solo root puede cambiar el uid; de lo contrario, cualquier usuario podría otorgarse privilegios elevados. Respuesta: ejecutable de llamada que tiene establecido el indicador setuid (en la mayoría de los Linuxes por defecto solo su y sudo tienen, pero usted puede crear el suyo; sin embargo, necesitará acceso de root para desactivarlo como root). – matix2267

+1

Creo que el 3er párrafo y debajo son incorrectos. El su de Android no usa bandera de setuid porque Android no respeta la bandera. En cambio, los contactos de su de Android con un daemon de proceso daemonsu, que se bifurca directamente por init. Entonces, el programa que ejecuta utilizando su no es un proceso secundario de su, sino un proceso secundario de daemonsu. –

0

Al rootear un dispositivo sobrescribe o modifica la imagen del sistema operativo en la ROM para otorgarle permisos elevados. Instalar aplicaciones en modo de usuario no puede darle una escalada de privilegios en ninguna versión de Linux en ninguna parte. Si algún usuario pudiera hacerse root al "copiar su", no existiría la seguridad.

+0

¿Qué es exactamente lo que estoy tratando de entender de las diferencias de imagen del sistema operativo ... Gracias por responder –

+0

"La instalación de aplicaciones ... no puede darle una escalada de privilegios" Acepto que no se supone, pero esto es en general, cómo funcionan los métodos de enraizamiento de dispositivos. La explotación de una vulnerabilidad de seguridad se realiza para escalar el proceso actual no raíz a la raíz, luego se implementa un cambio permanente para permitir una escalada de privilegios más sencilla más tarde (por ejemplo, copiar su en el sistema de archivos 'de sistema' generalmente de solo lectura). – user2957811

0

No estoy seguro de lo que estás preguntando, pero parece una cosa simple. Estás intentando convertirte en "superusuario" o hacer cosas con derechos de superusuario. Solo puede hacer esto si tiene los derechos reales para hacerlo, dado a la cuenta de usuario que se está ejecutando actualmente en su dispositivo. Normalmente no tienes ese derecho.

Tenga en cuenta que "superusuario" es lo mismo que "raíz"

  • Si "raíz" el dispositivo que significa que usted se da el derecho a convertirse en superusuario. Puedes hacer cosas que requieren ser súper usuario: "su" es uno de esos comandos, ya que dice "iniciar sesión como superusuario". Obviamente necesitas permisos de superusuario para convertirte en ese usuario.
  • Si no ha rooteado el dispositivo, no tiene los derechos para hacer las cosas que el superusuario puede. Entonces, llamar al su no funcionará.

Así que solo puede hacer root cosas si tiene rooted su dispositivo.

+1

"Así que solo puedes hacer root si has rooteado tu dispositivo" Lo que trato de entender es cuál es la diferencia entre antes y después de rootear el dispositivo. Dentro de OS está algo agregado que hará que su funcione? o lo que es? –

+0

Mírelo así: está "conectado" en su dispositivo como usuario, como en cualquier otra computadora. Ese usuario no tiene los derechos para hacer cosas de superusuario. Todo lo que ejecuta (aplicaciones, etc.) se ejecuta con sus derechos. El cambio que realiza es que permite que los usuarios aleatorios (por ejemplo, usted) se conviertan en root. Míralo así: normalmente es como iniciar sesión en una computadora de la biblioteca: no eres administrador. "enraizamiento" significaría "piratear" la computadora para que el usuario predeterminado se convierta en administrador. – Nanne

Cuestiones relacionadas