É impossível rodar como 'root' se a máquina não estiver enraizada?

4

Por padrão, o usuário do dispositivo não tem acesso a determinados objetos root (por exemplo, o diretório /data ). Mesmo que esses objetos estejam fora dos limites, no entanto, parece-me que esses objetos estão lá por uma razão; algum processo executado como root para acessar esses objetos, ou então por que eles existiriam.

Mas tenho pouca experiência com UNIX e Android e queria pedir para ter certeza: O usuário root pode ser executado em um dispositivo Android que não tenha sido "enraizado"? Em quais casos um processo pode iniciar uma ação root -level? (por exemplo, atualizações do sistema operacional?). A senha root deve ser fornecida em todos os casos?

Embora eu mesmo tentasse responder a essa pergunta, todas as coisas "UNIX" e "Android" parecem muito para ler, e não tenho certeza de onde encontrar a resposta para minha pergunta específica.

    
por T. Webster 28.12.2012 / 07:39

3 respostas

4

Certos programas e serviços executados a partir do / system no Android são executados como root - algumas técnicas de enraizamento envolvem a injeção de um comando para remontar / sistema para esses 'programas'. Sem o / system sendo montado rw, não há como um programa adicionado ser executado como root. No que se refere a / data, cada aplicativo recebe seu próprio ID de usuário, e as pastas / data / data onde os dados do aplicativo são armazenados recebem permissões de tal forma que apenas esse usuário pode ter acesso (basicamente chmod 700). Naturalmente, é necessário um processo de nível raiz para criar isso, que é executado novamente a partir do / system.

    
por 28.12.2012 / 16:00
2

Sua primeira suposição não é necessariamente verdadeira, pois os arquivos "objects" ou mais precisos ou executáveis podem ter essas permissões apenas para que eles não possam ser executados ou lidos pelo usuário / processo normal, mas com o que foi dito há múltiplos processos em um telefone Android rodando com root privilégios.

Eu acho que é muito importante entender que o Android é apenas um sistema Linux, ou seja, tudo que você vê em um telefone não tem muito em comum com um sistema Linux como o Ubuntu ou o Fedora, ou seja, você não pode simplesmente executar um comando como root com a maioria das imagens Android armazenadas em hardware real. Também não há necessidade de inserir uma senha root (até onde eu sei, o android não tem uma senha root definida), já que o Android não era um sistema multiusuário.

Como você já tem um usuário normal em seu telefone, pode ser possível explorar / atacar o próprio sistema para obter privilégios de root. Isso foi feito, por exemplo, com sucesso para sistemas Android mais antigos, como o 2.1.

Acho que você deveria dar uma olhada no Como faço para fazer o root? meu dispositivo Android , pode ajudar a simplificar e explicar algumas coisas.

    
por 28.12.2012 / 10:37
1

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.

    
por 01.01.2013 / 04:23