Enraizar um dispositivo significa poder executar programas arbitrários como root. Então, por definição, se a máquina não estiver enraizada, você não poderá rodar programas como root. Existem programas em execução como root em um dispositivo Android. Mas você não pode controlar o que eles fazem.
O Android não é um sistema operacional unix. O kernel é o mesmo que o Linux, mas o resto é diferente. No que diz respeito ao kernel, existem apenas três maneiras de executar um programa como root:
- Pode ser invocado diretamente pelo kernel. Quando o kernel termina, ele invoca o programa
init
como root. Conectar um dispositivo também pode fazer com que o kernel execute um programa como root em algumas configurações.
- Pode ser invocado por um programa que está sendo executado como root.
- Pode ser um executável setuid que pertence ao root.
Em um sistema unix, programas como su
e sudo
são setuid root. Eles podem ser invocados por qualquer usuário e eles decidem (com base em quem os chama, em qual senha eles entram e assim por diante) se devem executar um shell ou outro programa como root ou retornar um status de erro. São esses programas, não o kernel, que executam a autorização. O kernel apenas manipula IDs de usuário numérico, ele não manipula contas de usuário e senhas.
Um sistema Android padrão não tem nenhuma conta de usuário (os IDs de usuário são usados para isolar aplicativos, não para isolar usuários). Ele não usa autorização baseada em senha no sentido unix (ele pode usar um PIN ou outro método de autenticação para autenticar o usuário único do sistema). Enraizar um dispositivo Android significa fazer com que algum shell seja executado como root, normalmente para obter adb shell
para fornecer um shell executando como root. Ainda não há senha de root, já que há um único usuário do dispositivo.