9 votos

¿Por qué "adb root" no hace nada?

Tengo un OnePlus 6T. Está rooteado con TWRP y Magisk. He establecido ro.debuggable a 1. Pero cuando escribo adb root hace esto:

C:\Users\ituser> adb root

C:\Users\ituser> adb remount
Not running as root. Try "adb root" first.

entrar descripción de la imagen aquí

No puedo incluso usar adb pull en archivos del sistema.

1 votos

Me pregunto por qué no arroja un mensaje de error. Hasta donde tengo entendido, adb root no funciona en "versiones de producción" (como ROMs originales, incluso si están rooteadas). Entonces, a menos que tengas una "ROM de desarrollador", las posibilidades de que esto funcione son bastante bajas.

2 votos

He establecido ro.debuggable a 1, sin embargo.

0 votos

Dudo que eso sea suficiente. Pero hace bastantes años que jugué por última vez con eso.

15voto

Jack Wade Puntos 231

En producción, en la construcción user de una ROM, no se puede iniciar adbd como root a menos que la ROM o al menos el binario adbd se reconstruya con las modificaciones requeridas. La razón es la bandera de compilación ALLOW_ADBD_ROOT (1, 2).
Por eso se desarrolló adbd Insecure, que reemplazó el binario adbd con uno modificado.

En una construcción userdebug o eng (o con el binario adbd inseguro extraído de cualquiera de estos tipos de construcción):

  • Si ro.secure=0, adbd se ejecuta como root cuando se habilita desde Configuración (Opciones de desarrollador) (3). Sin embargo, adb root no funcionará (4).
  • Si ro.debuggable=1, adb root reiniciará adbd como root (5, 6).

Sin embargo, adbd se puede compilar a partir de código fuente modificado para omitir todas estas comprobaciones. Además, SELinux también debe ser tenido en cuenta, si está en modo enforcing. adbd debe ser permitido para ejecutarse en un contexto de superusuario no restringido: u:r:su:s0 (7, 8), lo cual no es el caso para las compilaciones user (9, 10, 11). Ver esta respuesta para más detalles.

Las propiedades de Android se pueden sobrescribir usando /data/local.prop en las compilaciones userdebug/eng, es decir, si se establece la bandera de compilación ALLOW_LOCAL_PROP_OVERRIDE (12, 13). Pero esto no funciona para propiedades ro.* (14) y lo mismo es cierto para la herramienta de línea de comandos setprop. Sin embargo, el archivo default.prop / prop.default, que podría estar ubicado en múltiples ubicaciones posibles dependiendo de las configuraciones de construcción del dispositivo (15), se puede modificar para cambiar propiedades de solo lectura (si aún no están establecidas desde algún otro archivo de propiedades o archivo *.rc). Si el archivo está en la ramdisk, se necesita modificar boot.img.

La herramienta resetprop de Magisk puede restablecer las propiedades de solo lectura aunque ya estén establecidas. Las propiedades ro.secure y ro.debuggable probablemente hayan sido cambiadas como parte de la política de MagiskHide (16), las cuales puedes revertir para permitir que adbd se ejecute como root.

Otra propiedad relacionada es ro.adb.secure, que controla la autenticación de clave pública. Al establecer ro.adb.secure=0 en las compilaciones userdebug/eng, la autenticación se omite (nunca se muestra el mensaje device unauthorized) (17, 18, 19); relacionado: Ubicación de almacenamiento de "adb_keys".

2 votos

Como información adicional, el tipo de compilación del ROM se puede encontrar mirando ro.build.type

0voto

helper Puntos 160

Tengo la respuesta a esta pregunta.

Fue resuelto por alecxs aquí: Adb pull - acceso denegado

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