Respostas:
Se estou entendendo sua pergunta corretamente, você está perguntando como obter acesso root automaticamente quando você executa adb shell
, para não precisar entrar no shell e digitar su
para executar um comando como root no telefone.
Isso é controlado por um sinalizador na partição de inicialização, que a maioria das ROMs personalizadas modificou para permitir a permissão root por padrão. Se você cair para a $
quando usar adb shell
, você tem duas opções permanentes e uma temporária (temporária, o que significa que não será mantida se você reiniciar):
adbd
no seu dispositivo com permissões de rootO número 2 não é tão difícil, mas pode ser um pouco perigoso se você for descuidado. Há um artigo wiki aqui que explica o processo e inclui alguns scripts Perl para ajudá-lo. Essas instruções assumem um ambiente Linux / Unix. Eu pessoalmente usei essas instruções no Fedora Linux e posso dizer que elas funcionam, mas não conheço outros ambientes * nix como Macs. Também não conheço instruções semelhantes do Windows, mas poderia tentar rastrear algumas se você estiver no Windows. Os comandos exatos variam um pouco de telefone para telefone, pois dispositivos diferentes usam tabelas de partição diferentes.
De maneira geral, porém, você precisa extrair o boot.img atual do telefone, descompactá-lo, extrair o ramdisk e encontrar o arquivo default.prop . Este é um arquivo de texto sem formatação, que você precisa abrir em um editor de texto e, em seguida, localize a linha que contém o valor ro.secure
. Se a linha indicar ro.secure=1
, você precisará alterá-lo para ro.secure=0
. Depois disso, você pode reembalar o ramdisk e o boot.img e depois enviá-lo para o seu telefone. Depois de reiniciar, você será recebido com um #
aviso sempre que executar adb shell
sem precisar executar su
.
Como alternativa, se você estiver usando uma ROM personalizada, mas ela não tiver essa modificação, basta descompactar a ROM e modificar o boot.img que está incluído nas etapas acima. Em seguida, você pode compactar a ROM com o boot.img recém-modificado e atualizar o arquivo zip como faria normalmente.
Provavelmente isso é desnecessário, mas tenha cuidado ao fazer isso. Mexer com a partição de inicialização pode facilmente destruir o telefone e forçá-lo a se recuperar via HBoot. Eu recomendo testar o Fastboot para garantir que você possa usar comandos estendidos do Fastboot e executar uma recuperação. Isso varia um pouco com base no seu modelo, mas a maioria dos telefones possui algum tipo de software de desktop que pode ser executado para atualizar o telefone também.
A terceira opção é que, em muitos casos, pode ser possível reiniciar adbd
no seu dispositivo com privilégios de root. Uma possibilidade é executar a adb root
partir de um terminal de PC, embora isso não funcione em todas as configurações de ROM (a ROM deve ser construída como uma "depuração do usuário"). Você também pode experimentar o aplicativo inseguro adbd da Chainfire . Isso não persistirá durante uma reinicialização; portanto, você precisará usar o aplicativo ou adb root
novamente sempre que reiniciar o telefone.
adbd
ter permissão de root no telefone por padrão. Há uma postagem de um membro da equipe do Android que implica isso, mas não diz isso explicitamente. Esse comprometimento com o AOSP também implica que é simplesmente um sinalizador que adbd
verifica a inicialização (não o vejo em nenhum outro lugar na fonte). Como eu mencionei, a maioria das ROMs personalizadas que eu vi (incluindo o CM) o definiram como 0. #
adb root
comando para reiniciar o adbd no modo auto-su, aparentemente ele depende disso. Eu acho que você estava certo sobre ser apenas uma bandeira.
// ... except we allow running as root in userdebug builds if the service.adb.root property has been set by the "adb root" command"
. Aliás, foi assim que a primeira versão do BurritoRoot para o Kindle Fire funcionou, IIRC.
Bem, se o telefone estiver enraizado, você poderá executar comandos com o comando "su -c".
Aqui está um exemplo de um comando cat no arquivo build.prop para obter informações sobre o produto do telefone.
adb shell "su -c 'cat /system/build.prop |grep "product"'"
Isso chama a permissão root e executa o comando dentro do ''
Observe as 5 cotações finais, pois é necessário que você feche TODAS as cotações finais ou você receberá um erro.
Para esclarecimento, o formato é o seguinte.
adb shell "su -c '[your command goes here]'"
Certifique-se de inserir o comando EXATAMENTE da maneira que você faria normalmente ao executá-lo no shell.
Experimente, espero que ajude.
Basta instalar o adbd Insecure .
O que você está tentando executar como root? Você está dizendo que deseja executar o shell ADB com root, mas não deseja usar o shell ADB? Você pode esclarecer?
Se o aplicativo solicitar acesso root, o aplicativo SuperUser do telefone deverá permitir a permissão ou não. O processo em que você enraizou o telefone deveria ter incluído um aplicativo SuperUser.
adb shell ps
ou adb shell
e ps
obter a lista de processos em execução. Então, algumas coisas exigem acesso root, eu quero poder fazer a primeira.
Como alternativa, você pode escrever seu script no telefone e simplesmente pedir para executá-lo, por exemplo:
adb shell sh /sdcard/myscript.sh
O script pode elevar-se sem a sua intervenção (supondo que o SuperUser esteja configurado para lembrar a aprovação), por exemplo:
su
pm setInstallLocation 1
Acabei de fazer isso no meu telefone com sucesso, o único problema é que ainda não descobri como encerrar corretamente a sessão do shell adb. Eu tenho que Ctrl-C no meu shell do Windows para retornar ao prompt de comando do Windows - caso contrário, o adb fica no #
prompt e não aceita entrada.
eu uso para reparar o problema do botão home
dispositivos adb
shell adb su -c commands
ou
shell raiz adb sqlite3 /data/data/com.android.providers.settings/databases/settings.db "INSERIR EM VALORES seguros (nome, valor) ('device_provisioned', '1');"
adb kill-server
Você também pode definir o suid bit no seu 'sh'. Estou usando o BusyBox para que as instruções não correspondam à sua configuração:
e você deve ter o prompt raiz