Respuestas:
Si entiendo su pregunta correctamente, está preguntando cómo obtener acceso a la raíz automáticamente cuando ejecuta adb shell
, para que no tenga que ingresar al shell y escribir su
para ejecutar un comando como root en su teléfono.
Esto está controlado por un indicador en su partición de arranque, que la mayoría de las ROM personalizadas han modificado para permitir el permiso de root de forma predeterminada. Si se cae a un $
cuando lo usa, adb shell
entonces tiene dos opciones permanentes y una temporal (lo que significa que no se pega si reinicia):
adbd
en su dispositivo con permisos de rootEl número 2 en realidad no es tan difícil, pero puede ser algo peligroso si eres descuidado. Hay un artículo wiki aquí lo que explica el proceso e incluye una par de scripts de Perl para ayudarle. Estas instrucciones asumen un entorno Linux / Unix. Personalmente he usado estas instrucciones en Fedora Linux y puedo decirle que funcionan, pero no conozco otros entornos * nix como Macs. Tampoco conozco instrucciones similares de Windows, pero podría intentar rastrear algunas si está en Windows. Los comandos exactos variarán un poco de un teléfono a otro, ya que diferentes dispositivos usan tablas de partición diferentes.
En términos generales, sin embargo, debe extraer su boot.img actual de su teléfono, descomprimirlo, extraer el disco de memoria ram y encontrar el archivo default.prop . Este es un archivo de texto sin formato, que debe abrir en un editor de texto y luego buscar la línea que contiene el valor ro.secure
. Si la línea dice, ro.secure=1
entonces debes cambiarla a ro.secure=0
. Después de eso, puede volver a empaquetar el ramdisk y boot.img, luego flashearlo a su teléfono. Una vez que reinicie, será recibido con un #
mensaje cada vez que realice adb shell
sin tener que ejecutar su
.
Alternativamente, si está utilizando una ROM personalizada pero no tiene esta modificación, puede descomprimir la ROM y modificar el archivo boot.img que se incluye con él siguiendo los pasos anteriores. Luego puede comprimir la ROM con el boot.img recién modificado y flashear el archivo zip como lo haría normalmente.
Probablemente esto sea obvio, pero tenga cuidado al hacer esto. Jugar con su partición de arranque puede destruir fácilmente su teléfono y obligarlo a recuperarse a través de HBoot. Recomiendo encarecidamente probar Fastboot para asegurarse de que puede usar comandos extendidos de Fastboot y realizar una recuperación. Esto varía un poco en función de su modelo, pero la mayoría de los teléfonos tienen algún tipo de software de escritorio que también se puede ejecutar para actualizar el teléfono.
La tercera opción es que, en muchos casos, es posible reiniciar adbd
en su dispositivo con privilegios de root. Una posibilidad es ejecutar adb root
desde un terminal de PC, aunque esto no funcionará en todas las configuraciones de ROM (la ROM debe construirse como una "depuración de usuario"). También puedes probar la aplicación insegura adbd de Chainfire . Esto no persistirá durante un reinicio, por lo que deberá usar la aplicación o adb root
nuevamente cada vez que reinicie su teléfono.
adbd
tener permiso de root en el teléfono de forma predeterminada. Hay una publicación de un miembro del equipo de Android que implica esto, pero no lo dice explícitamente. Este compromiso con el AOSP también implica que es simplemente un indicador que adbd
verifica el inicio (no lo veo en ninguna otra parte de la fuente). Como ya he mencionado, la mayoría de las ROMs personalizadas que he visto (CM incluido) lo han puesto a 0.
adb root
comando para reiniciar adbd en modo auto-su, aparentemente se basa en esto. Sin embargo, creo que tenías razón sobre que era solo una bandera.
// ... except we allow running as root in userdebug builds if the service.adb.root property has been set by the "adb root" command"
. Por cierto, así es como funcionó la primera versión de BurritoRoot para Kindle Fire, IIRC.
Bueno, si su teléfono está rooteado, puede ejecutar comandos con el comando "su -c".
Aquí hay un ejemplo de un comando cat en el archivo build.prop para obtener información del producto de un teléfono.
adb shell "su -c 'cat /system/build.prop |grep "product"'"
Esto invoca el permiso de root y ejecuta el comando dentro de ''
Observe las 5 comillas finales, es necesario que cierre TODAS sus comillas finales o obtendrá un error.
Para aclarar, el formato es así.
adb shell "su -c '[your command goes here]'"
Asegúrese de ingresar el comando EXACTAMENTE de la manera que lo haría normalmente cuando lo ejecuta en shell.
Pruébalo, espero que esto ayude.
Simplemente instale adbd Insecure .
¿Para qué intentas ejecutar como root? ¿Estás diciendo que quieres ejecutar ADB shell con root pero no quieres usar ADB shell? ¿Puedes aclarar?
Si la aplicación solicita acceso root, entonces la aplicación SuperUser en su teléfono debe manejar si le da permiso o no. El proceso en el que rooteaste tu teléfono debería haber incluido una aplicación SuperUser.
adb shell ps
o adb shell
y luego ps
obtener la lista de procesos en ejecución. Entonces, algunas cosas requieren acceso de root, quiero poder hacer lo primero.
Como alternativa, puede escribir su script en el teléfono y simplemente hacer que adb lo ejecute, por ejemplo:
adb shell sh /sdcard/myscript.sh
El script puede elevarse sin su intervención (suponiendo que SuperUser esté configurado para recordar la aprobación), por ejemplo:
su
pm setInstallLocation 1
Acabo de hacer esto en mi teléfono con éxito, el único problema es que no he descubierto cómo terminar de forma limpia la sesión de adb shell. Tengo que hacer Ctrl-C en mi shell de Windows para volver al símbolo del sistema de Windows; de lo contrario, adb simplemente se sienta en el #
símbolo del sistema y no acepta entradas.
utilizo para reparar la falla del problema del botón de inicio
dispositivos adb
adb shell su -c commands
o
adb root shell sqlite3 /data/data/com.android.providers.settings/databases/settings.db "INSERTAR EN VALORES seguros (nombre, valor) ('device_provisioned', '1');"
adb kill-server
También puede establecer el bit suid en su 'sh'. Estoy usando BusyBox, por lo que las instrucciones pueden no coincidir con su configuración:
y deberías tener la solicitud de root