Puedo obtener un mensaje raíz en el terminal ejecutando uno de los exploits documentados en otro lugar. (por ejemplo, aquí: http://wiki.cyanogenmod.com/wiki/Motorola_Droid_2_Global:_Full_Update_Guide )
En este punto, puedo instalar el binario "su" y darle permisos 4755. Esto debería permitir que cualquiera lo ejecute, y dado que el propietario del binario es "root" y el bit fijo está configurado, debería convertirme en root. Pero aparentemente no tengo forma de deshacerme de la raíz del terminal antes de reiniciar. Pero, después de reiniciar, parece que no puedo convertirme en root usando 'su'.
$ ls -l /system/bin/su
-rwsr-xr-x root app_101 26234 2012-07-09 15:00 su
Ok, los permisos se ven bien, debería poder ejecutarlo para que se convierta en root, pero solo en esta invocación particular del terminal.
$ /system/bin/su
Permission denied
También falla si especifico el comando para ejecutar como root, o con cualquier otro argumento:
$ /system/bin/su /system/bin/sh
Permission denied
¿Por qué? ¿Hay algún otro mecanismo en el trabajo? No quiero instalar Superuser.apk, porque solo quiero una forma de obtener temporalmente un shell raíz si es necesario, por ejemplo, para eliminar manualmente los archivos no deseados. Además, Superuser.apk se basa en el binario su de todos modos, por lo que debe tener alguna forma de llamarlo, entonces, ¿por qué no puedo replicar eso en la terminal?
Editar: tuve otro pensamiento, así que intenté copiar / bin / sh en otra ubicación y lo hice suid root. Pero aunque puedo ejecutar el nuevo binario, no me da root. ¿Android está haciendo algo complicado / diferente con suid que Linux normal no hace?