2 votos

¿En qué se diferencia adb shell de un emulador de terminal?

Tengo un par de tareas que quiero realizar en Android 6.0.1 y necesitan acceso Root cuando las ejecute en el dispositivo. Este dispositivo de destino no está rooteado.

¿Puedo utilizar adb desde un PC para ejecutar comandos igual que si utilizara un emulador de terminal en un Android rooteado? Pensé que adb da algún tipo de acceso temporal sin restricciones (como Root temporal).

2voto

Firelord Puntos 161

Pensé que adb da algún tipo de acceso temporal sin restricciones (como Root temporal).

Cuando abres una aplicación ordinaria de emulador de terminal, se te muestra un terminal y se inicia automáticamente la sesión como un usuario determinado. El ID de usuario de este usuario particular es el ID de usuario de su app emuladora de terminal mostrada. Ese usuario y esa aplicación se consideran poco fiables y no se les permite hacer muchas cosas. Puede ver los elementos de la lista negra en el código fuente de untrusted_app.te .

Por otro lado, ADB, cuando interactúa con el dispositivo, utiliza el ID de usuario 2000. Este usuario se llama shell y puede hacer bastantes cosas con el fin de depurar pero todavía no puede satisfacer las intrincadas demandas de un usuario final 1 . A menos que Android ofrezca un mecanismo para cambiar a otro usuario a voluntad (como 'su'; no gráfico sino de consola), el usuario final está limitado a hacer un buen uso del usuario shell sólo cuando el dispositivo está conectado al PC en modo de depuración. Sigue el código fuente de shell.te para conocer los privilegios de los que goza el usuario de la shell.

En resumen, si el Android no está rooteado el usuario shell obviamente sale ganando por los privilegios que se le otorgan en contraste con un usuario no confiable, pero no sirve como un buen sustituto del superusuario (su). Además de eso, como he señalado anteriormente viene con un costo.

Recurso relacionado: IDs de usuario que vienen definidos en Android


1 Temporal o no, el usuario Root siempre tiene el ID de usuario 0.

0voto

Matthew Read Puntos 35808

adb no concede el acceso Root automático a menos que se modifique el sistema para ejecutar adbd como Root (y si eres capaz de hacerlo, probablemente tengas Root de todos modos) o si estás ejecutando una ROM de desarrollo insegura (normalmente sólo para dispositivos Nexus) y ejecutas adb root .

Así que normalmente, tienes que estar rooteado y ejecutar su en adb shell al igual que lo harías dentro de una aplicación de emulador de terminal.

Sin embargo, ADB se ejecuta con algunos permisos adicionales (ver este comentario ). Una aplicación de emulador de terminal podría solicitar algunos de esos permisos, pero si no lo hace entonces necesitarás Root para hacer uso de ellos.

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