Índice:
Adoramos receber suas perguntas. É sempre bom podermos ajudar um ao outro, e aprendemos coisas quando procuramos as respostas. Embora não possamos encontrar tempo para responder a todos eles, às vezes uma certa pergunta surge o suficiente para merecer uma resposta detalhada.
"O que raiz significa?" é uma dessas perguntas. O conceito pode ser simples para alguns de nós, mas para muitas pessoas que não passaram um tempo brincando com o Android ou qualquer outro sistema operacional baseado em permissões, é algo para fazer perguntas. Vou tentar responder a todos da melhor maneira possível.
Permissões
Antes de definirmos raiz, é importante entender por que ela existe e como funciona. É porque o Android usa permissões (permissões baseadas em Linux, para ser exato) na estrutura do arquivo. Todo arquivo, toda pasta e toda partição tem um conjunto de permissões. Essas permissões decidem quem pode ler um arquivo (examinar ou acessar o conteúdo sem alterá-lo), gravar em um arquivo (poder alterar o conteúdo desse arquivo ou criar um novo arquivo dentro de uma pasta ou partição) e executar um arquivo (execute o arquivo se for um tipo que possa ser executado, como um aplicativo). Isso é feito com base em usuários e permissões - certos usuários têm acesso, enquanto usuários que não têm as permissões corretas são impedidos de ter acesso.
Quando você configura o telefone e o liga pela primeira vez, você recebe um ID de usuário. Se outro usuário fizer login pelo Google, ele receberá um ID de usuário diferente. Quando um aplicativo é instalado no seu telefone, ele também recebe um ID de usuário. O sistema em si é um usuário e outros processos que precisam ser executados no telefone podem ter seu próprio ID de usuário. Tudo o que pode fazer qualquer coisa com qualquer arquivo no seu Android é um usuário.
Um sistema de usuários e permissões é como o Android acompanha quem pode fazer o que.
Digamos que você instale um aplicativo de mensagens. É atribuído um ID do usuário quando você o instala. Ele também recebe um ponto em sua partição de dados por si só, ao qual somente ele tem acesso. Você tem permissões para executar o aplicativo e, quando o aplicativo é executado, tem permissão para acessar sua própria pasta e arquivos de dados. O aplicativo também pode solicitar permissão para acessar itens como seu catálogo de endereços, cartão SD ou biblioteca de fotos. Se você responder sim a essas solicitações (ou se concordar com as permissões em versões mais antigas do Android), o ID do usuário do aplicativo terá permissão para os arquivos de dados dessas coisas, o que significa que ele pode olhar para a pasta de dados e seu conteúdo e, possivelmente, alterar ou adicione novos arquivos. O aplicativo não pode acessar nenhum arquivo de dados para o qual não tem permissão para "olhar". Isso significa (no nosso exemplo) que ele não pode fazer coisas como examinar o banco de dados de configurações ou acessar a pasta de dados de outro aplicativo. O termo sandbox é frequentemente usado para isso - os aplicativos estão em sandbox e só podem ser reproduzidos nas sandboxs nas quais eles têm permissão para entrar.
Para arquivos que são programas e podem ser executados (como aplicativos), o mesmo modelo de permissão se aplica. Seu ID do usuário tem permissão para executar os aplicativos que você instalou enquanto você está conectado. O usuário do sistema tem permissão para executá-los e outros usuários no nível do sistema podem ter acesso aos aplicativos ou a certos processos que os aplicativos usam. Outros aplicativos não podem iniciar aplicativos que não têm permissão para iniciar. Se você adicionou um usuário secundário, ele não tem acesso aos seus aplicativos ou arquivos e vice-versa. Existem arquivos, pastas e aplicativos no seu telefone que o seu ID de usuário não tem permissão para ver, alterar ou executar. Geralmente, essas partes do Android exigem permissões no nível do sistema (o ID do usuário do sistema) para fazer qualquer coisa, e você não é o usuário do sistema ou um usuário com permissões no nível do sistema.
Alternando permissões
Embora seja tecnicamente possível alterar a maneira como o telefone é inicializado e os arquivos usados para iniciar o sistema em execução e atribuir permissões elevadas ao seu ID de usuário, isso não é seguro nem prático. Mas o Android (e a maioria dos sistemas baseados em Unix ou Linux) tem o que é chamado de usuário root e suporta o binário SubstituteUser (pense em um binário como um aplicativo pequeno) para alterar os IDs do usuário. Esses são usados para administrar o sistema no nível principal.
Como as pessoas que criaram seu telefone não querem que você tenha acesso fácil ao ID do usuário raiz - e nem todos os motivos são egoístas porque também protege você e seus dados privados - o binário SubstituteUser não está incluído na maioria das compilações de Android. Sem SubstituteUser, não podemos mudar nosso ID do usuário. A maioria das coisas no nível do sistema do Android tem nomes fáceis semelhantes, a propósito. A segurança principal (arquivos no gerenciador de inicialização e / ou no próprio kernel) também é criada de forma a impedir que você troque os IDs do usuário como parte do módulo do kernel do SELinux (Linux com segurança ecológica - disse que os nomes são fáceis). Alguns telefones (o Knox da Samsung vem à mente) têm proteções adicionais, e quase todas as empresas que fabricam Androids exigem que, para fazer alterações, o gerenciador de inicialização precise ser desbloqueado para que esses arquivos possam ser alterados e permita a troca de IDs de usuário.. Alguns telefones, como o BlackBerry Priv, dão um passo adiante e não inicializam se mudarmos alguma coisa (mesmo que pudéssemos).
Para se tornar root, você precisa de uma maneira de alterar seu ID do usuário.
Depois de superar tudo isso - desbloqueando o gerenciador de inicialização por meios autorizados ou usando algum tipo de exploração - podemos colocar o binário SU (SubstituteUser) em um local que ele possa executar quando for chamado a executar - que é chamado de PATH. Se algum aplicativo estiver no CAMINHO do seu ID de usuário, ele será executado sem informar ao sistema exatamente onde está. Você também precisa garantir que o binário SU esteja em um local em que seu ID de usuário tenha permissão para executar (executar) arquivos. Qualquer outro aplicativo (o Google Play tem vários aplicativos que precisam de permissões de root) também precisará do mesmo acesso. Quando você usa um método para fazer root no telefone, tudo isso é resolvido pelas pessoas que criaram o método root.
Quando tudo estiver no lugar, podemos executar o binário SU (ou outro aplicativo pode executar o binário SU).
Obtendo acesso root
É aqui que entra a raiz. O binário SU usa sinalizadores quando é executado para informar ao sistema para qual ID de usuário você deseja alternar. Por exemplo, se eu executar o binário SU no meu computador Ubuntu como este "su Jim -c nano", executarei o comando nano como o usuário Jim (depois de fornecer a senha de Jim). Se você executar o binário SU sem sinalizadores ou argumentos, ele alternará para o usuário raiz. Normalmente, você precisará fornecer uma senha, mas como "root" é um usuário não utilizado no Android, ele não tem senha. A execução do comando "su" alternará você para a raiz do usuário, atribuirá o ID de usuário 0 e o colocará no grupo raiz. Agora você é o superusuário.
Como superusuário, você pode fazer qualquer coisa com qualquer arquivo, pasta ou partição no seu Android. Por qualquer coisa, queremos dizer literalmente qualquer coisa. Você pode remover aplicativos de bloatware e também remover arquivos essenciais do sistema que quebram o telefone. Você também pode fazer coisas no hardware, como alterar a frequência da CPU e arruinar seu telefone para sempre.
Raiz é o super usuário, que pode fazer qualquer coisa. E queremos dizer qualquer coisa.
Os aplicativos podem fazer a mesma coisa. SU é colocado onde está no aplicativo PATH e qualquer aplicativo pode chamá-lo e executá-lo. Esse aplicativo tem permissões de superusuário e pode fazer o que quiser com qualquer arquivo em qualquer lugar do seu telefone. É por isso que as pessoas que criaram seu telefone realmente não querem que você tenha esse nível de acesso, e as empresas que permitem desbloquear o gerenciador de inicialização e alterar as coisas ainda não colocam o binário da SU no telefone por padrão. Ter acesso root sem nenhuma maneira de controlar quem ou o que pode ser usado é perigoso para o software do seu telefone e seus dados pessoais.
É por isso que você precisa instalar um aplicativo que o força a permitir acesso root sempre que você ou outro aplicativo tenta invocar as permissões de superusuário. Na maioria das vezes, quando você usa um método raiz para o telefone, é incluído um, juntamente com outros binários úteis, como o conjunto de ferramentas BusyBox. Se você fez as coisas manualmente, precisará instalar uma. O SuperSU de Chainfire no Google Play é bom para começar.
Miudezas
Muitos telefones e alguns métodos raiz fazem as coisas de maneira um pouco diferente (o Android 4.3 trouxe muitas mudanças) e exigem scripts ou um daemon (você verá palavras como daemonsu ou su.d mencionadas) em vez de simplesmente colocar o binário da SU no lugar. Eles são usados para chamar SubstituteUser para que você possa alternar para o usuário raiz, exatamente como o método binário bruto. As pessoas que descobriram como fazer root no seu telefone resolveram tudo isso e o mesmo funcionará do lado do usuário.
Também é possível "temp-root" alguns Androids. Isso significa que você pode ter permissões de superusuário e fazer algumas coisas necessárias, mas uma reinicialização remove o acesso root. Da mesma forma, você pode ter um "shell-root", no qual só pode acessar o usuário root através de adb no seu computador.
Por fim, quero enfatizar que, se você tiver essas perguntas, precisará considerar se está pronto para ter um Android enraizado. Não estávamos brincando quando dissemos que é fácil arruinar seu telefone com o acesso de Superusuário. Não há razão para se envergonhar por precisar fazer uma pequena leitura ou fazer mais algumas perguntas antes de fazer coisas que podem danificar seu telefone ou dar a algum aplicativo aleatório de acesso aleatório todos os seus dados.
É para isso que estamos aqui.