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?
la source
Réponses:
L'indice est dans l'ID du propriétaire / groupe ...
Notez que l'ID de groupe est défini sur 'app_101', qui devrait être 'root', mais là encore, vous avez besoin du
busybox
binaire (qui fait partie du binaire SuperUser.apk, une fois installé, il copie ledit binaire pertinent/system/xbin
) dans l'ordre pour pouvoir le fairechown
.la source
Essayez d'ajouter l'
-c
option. par exempleou
(pour plus d'arguments)
la source
Un peu plus de fouilles et je pense avoir trouvé la réponse. La raison pour laquelle cela ne fonctionne pas est que l'application Terminal ne demande pas l'autorisation de super-utilisateur dans son manifeste, par exemple:
Cette couche de sécurité supplémentaire semble être due au fait que l'application de terminal est une application java, bien qu'elle le masque bien. Le superutilisateur semble caler les choses de manière à ce que les applications java puissent obtenir cette autorisation, même si elles ne savaient pas qu'elles en avaient besoin lors de leur création.
la source
ACCESS_SUPERUSER
l'autorisation n'est pas liée à votre problème