Je peux obtenir une invite racine dans le terminal en exécutant un exploit documenté ailleurs. (par exemple ici: http://wiki.cyanogenmod.com/wiki/Motorola_Droid_2_Global:_Full_Update_Guide )
À ce stade, je peux installer le binaire "su" et lui donner les autorisations 4755. Cela devrait permettre à quiconque de l'exécuter, et puisque le propriétaire du binaire est "root" et que le bit collant est défini, je devrais devenir root. Mais je n'ai apparemment aucun moyen de ne pas devenir root à partir du terminal avant de redémarrer. Mais, après avoir redémarré, je n'arrive pas à devenir root en utilisant 'su'.
$ ls -l /system/bin/su
-rwsr-xr-x root app_101 26234 2012-07-09 15:00 su
D'accord, les autorisations semblent bonnes, si je devais pouvoir l'exécuter pour devenir root, mais uniquement dans cette invocation particulière du terminal.
$ /system/bin/su
Permission denied
Il échoue également si je spécifie la commande à exécuter en tant que root, ou avec tout autre argument:
$ /system/bin/su /system/bin/sh
Permission denied
Pourquoi? Y a-t-il un autre mécanisme à l'œuvre? Je ne veux pas installer Superuser.apk, car je veux juste un moyen d'obtenir temporairement un shell racine si nécessaire, par exemple pour supprimer manuellement les fichiers indésirables. De plus, Superuser.apk s'appuie de toute façon sur le binaire su, donc il doit avoir un moyen de l'appeler, alors pourquoi ne puis-je pas le répliquer dans le terminal?
Edit: J'ai eu une autre pensée, j'ai donc essayé de copier / bin / sh vers un autre emplacement et en faire une racine suid. Mais bien que je puisse exécuter le nouveau binaire, il ne me donne pas de racine. Android fait-il quelque chose de délicat / différent avec suid que Linux ordinaire ne fait pas?