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?
fuente
Respuestas:
La pista está en la identificación del propietario / grupo ...
Observe que la identificación del grupo está establecida en 'app_101', que debería ser 'raíz', pero nuevamente, necesita el
busybox
binario (que es parte del binario SuperUser.apk, cuando está instalado, copia dicho binario relevante/system/xbin
en orden) para poderlochown
.fuente
Intenta agregar la
-c
opción. p.ejo
(para más argumentos)
fuente
Un poco más de excavación y creo que he encontrado la respuesta. La razón por la que no funciona es porque la aplicación Terminal no solicita permiso de superusuario en su manifiesto, por ejemplo:
Esta capa adicional de seguridad parece deberse a que la aplicación de terminal es una aplicación de Java, aunque hace un buen trabajo al ocultarla. El Superusuario parece calzar las cosas de alguna manera para que las aplicaciones Java puedan obtener este permiso, incluso si no sabían que lo necesitaban cuando se crearon.
fuente
ACCESS_SUPERUSER
el permiso no está relacionado con su problema