En primer lugar necesito decir que sé que este tema ha sido discutido muchas veces pero ninguna de las respuestas ayudó y creo que esta pregunta es algo diferente a las otras.
He tratado de rootear mi teléfono Android 4.2.1 intentando varios métodos automáticos, donde todos ellos fallaron. También rootear usando update.zip
no funciona debido al error "OTA inválido, falta de dispersión".
Sin embargo, soy capaz de obtener acceso a root usando adb root
" así que he tratado de robar mi teléfono manualmente:
- '
adb root
yadb remount
para acceder a la partición del sistema - descargado el nuevo binario de su (versión 3.1.1)
- lo empujó a '
/system/xbin/su
' - set suid y sgid bit:
'chmod 6755 su'
-->ls -l
muestra'-rwsr-sr-x root root 380532 2008-02-29 02:33 su'
- enlazado
/system/xbin/su
a/system/bin/su
' - instaló el nuevo superusuario de Google play (3.1.3)
- instaló busybox (aunque esto no es necesario si lo entiendo correctamente?)
Ahora se pone interesante:
Cuando yo adb shell
en mi teléfono, puedo usar su
y automáticamente obtiene privilegios de root ($ cambia a # y puedo acceder a los archivos de Root), y se registra en la aplicación de superusuario con el creador como 'Shell'. PERO cuando intento una aplicación que necesita Root, tarda mucho (10 segundos) y luego falla (he probado 'Root Checker Basic' de la tienda).
La aplicación Superuser nunca muestra ningún popup, tampoco está en el registro. Parece que rechaza automáticamente todas las solicitudes.
Así que aquí está mi pregunta: ¿He hecho todos los pasos correctamente? (tal vez me estoy perdiendo algo muy importante)
Estoy bastante desesperado en este momento (pasé casi 2 días enteros tratando de hacer esto), así que incluso recurriría a soluciones como editar algunos archivos de configuración del superusuario y habilitar el acceso Root para la aplicación manualmente.
P.D.: Si necesita información adicional, sólo pregunte, trataré de llenar la información si es posible.
Más investigación:
- El ajuste de auto-permiso en el Superusuario tampoco funciona.
- corriendo
su
desde el terminal lanza la excepción: java.lang.SecurityExcepción: la emisión pide ejecutarse como usuario -1 pero está llamando desde el usuario 0; esto requiere Android.permission.INTERACT_ACROSS_USERS_FULL o Android.permission.INTERACT_ACROSS_USERS. Así que necesito establecer este permiso en algún lugar
1 votos
No estoy 100% seguro, pero ¿no debería el
su
ser propiedad desystem:system
? AFAIK no hay usuario "Root" en los dispositivos Android (de ahí el userID negativo "inválido", supongo). Tal vez intentechown system:system /system/xbin/su
y ver si eso hace el truco. Por favor, infórmame: si funciona, haré de esto una respuesta.0 votos
@Izzy Así que he probado tu sugerencia con varias cuentas, sistema, Root, -1, rumbers al azar... Y es raro - siempre falla con la misma excepción, incluyendo la de "llamar desde el usuario 0". Los bits de Suid y Sgid eran correctos (triplemente comprobados).
0 votos
El uid 0 es el usuario más privilegiado (Root en Linux), por lo que la "llamada desde" se ve bien. Puedes probar qué usuario pertenece a este id "demandando" a él y emitiendo el
id
comando. // Por cierto, acabo de comprobarlo en uno de mis dispositivos, y tengo que retirar mi suposición anterior:su
aparece como-rwsr-sr-x root root
sólo difiere el tamaño (104800 2013-12-31 23:32 su
en mi dispositivo ICS). ¿Tal vez tu superusuario tiene un problema? Compruebels -l /system/app/Super*
El mío me da-rw-r--r-- root root 570342 2012-01-01 04:41 Superuser.apk
.0 votos
@Izzy Interesante. Así que tal vez estoy usando mal o anticuado
su
. He probado varias 3 o 4 versiones y ninguna coincidía en tamaño. ¿Podría comprobarlo, por favor?su -v
para su versión? ¿Y quéSuperuser
¿aplicación que utilizas (me refiero a quién)?0 votos
Estoy usando SuperSu (y la salida es
1.86:SUPERSU
) en un LG O4X 4.0.3 (es el dispositivo que he comprobado). AFAIR Tengo superusuario de chainfire en mis otros dispositivos.