Posso obter um prompt root no terminal executando uma exploração documentada em outro lugar. (por exemplo, aqui: http://wiki.cyanogenmod.com/wiki/Motorola_Droid_2_Global:_Full_Update_Guide )
Neste ponto, eu posso instalar o binário "su" e conceder permissões 4755. Isso deve permitir a qualquer pessoa executá-lo e, como o proprietário do binário é "root" e o bit fixo está definido, eu devo me tornar root. Mas, aparentemente, não tenho como remover a raiz do terminal antes da reinicialização. Mas, após a reinicialização, parece que não consigo me tornar root usando 'su'.
$ ls -l /system/bin/su
-rwsr-xr-x root app_101 26234 2012-07-09 15:00 su
Ok, as permissões parecem boas, eu deveria poder executá-lo para se tornar root, mas apenas nessa chamada específica do terminal.
$ /system/bin/su
Permission denied
Também falha se eu especificar o comando para executar como root ou com qualquer outro argumento:
$ /system/bin/su /system/bin/sh
Permission denied
Por quê? Existe algum outro mecanismo em ação? Não quero instalar o Superuser.apk, porque só quero uma maneira de obter temporariamente um shell raiz, se necessário, por exemplo, para excluir manualmente os arquivos indesejados. Além disso, o Superuser.apk depende do binário su de qualquer maneira, então ele deve ter uma maneira de chamá-lo, então por que não consigo replicar isso no terminal?
Edit: Eu tinha outro pensamento, então tentei copiar / bin / sh para outra localização e o fiz suid root. Mas enquanto eu posso executar o novo binário, ele não me dá raiz. O Android está fazendo algo complicado / diferente com suid que o Linux comum não faz?