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?
fonte
Respostas:
A pista está no ID do proprietário / grupo ...
Observe que o ID do grupo está definido como 'app_101', que deve ser 'root', mas, novamente, você precisa do
busybox
binário (que faz parte do binário SuperUser.apk, quando instalado, copia o respectivo binário relevante/system/xbin
) em ordem ser capazchown
disso.fonte
Tente adicionar a
-c
opção. por exemploou
(para mais argumentos)
fonte
Um pouco mais cavando e acho que encontrei a resposta. O motivo pelo qual não está funcionando é porque o aplicativo Terminal não solicita permissão de superusuário no manifesto, por exemplo:
Essa camada extra de segurança parece ser porque o aplicativo de terminal é um aplicativo java, embora faça um bom trabalho de ocultá-lo. O superusuário parece calçar as coisas de alguma maneira, para que os aplicativos java possam obter essa permissão, mesmo que não soubessem que precisavam dela quando foram criados.
fonte
ACCESS_SUPERUSER
permissão não está conectada com o seu problema