Risposte:
Se capisco correttamente la tua domanda, mi stai chiedendo come ottenere automaticamente l'accesso root quando esegui adb shell
, in modo da non dover andare nella shell e digitare su
per eseguire un comando come root sul tuo telefono.
Questo è controllato da un flag nella partizione di avvio, che la maggior parte delle ROM personalizzate ha modificato per consentire l'autorizzazione di root per impostazione predefinita. Se vieni lasciato cadere a $
quando utilizzi, adb shell
hai due opzioni permanenti e una temporanea (il che significa che non si attacca al riavvio):
adbd
sul dispositivo con i permessi di rootIl numero 2 in realtà non è poi così difficile, ma può essere alquanto pericoloso se non si tiene conto. C'è un articolo wiki qui che spiega il processo e include un paio di script Perl per aiutarti. Queste istruzioni presuppongono un ambiente Linux / Unix. Ho usato personalmente queste istruzioni su Fedora Linux e posso dirti che funzionano, ma non conosco altri ambienti * nix come i Mac. Inoltre non conosco istruzioni simili per Windows, ma potrei provare a rintracciarne alcune se sei su Windows. I comandi esatti variano leggermente da telefono a telefono poiché diversi dispositivi utilizzano tabelle di partizione diverse.
In generale, tuttavia, è necessario estrarre il file boot.img corrente dal telefono, decomprimerlo, estrarre il ramdisk e trovare il file default.prop . Questo è un file di testo semplice, che è necessario aprire in un editor di testo e quindi trovare la riga che contiene il valore ro.secure
. Se la riga indica che ro.secure=1
è necessario modificarlo in ro.secure=0
. Dopodiché puoi reimballare ramdisk e boot.img, quindi inviarlo sul tuo telefono. Una volta riavviato, verrai accolto con un #
prompt ogni volta che eseguirai adb shell
senza eseguire su
.
In alternativa, se si utilizza una ROM personalizzata ma non presenta questa modifica, è possibile decomprimere la ROM e modificare il file boot.img che è incluso con essa seguendo i passaggi precedenti. Quindi puoi comprimere la ROM con il file boot.img appena modificato e eseguire il flashing del file zip come faresti normalmente.
Questo probabilmente è ovvio, ma fai attenzione quando lo fai. Fare casino con la partizione di avvio può facilmente distruggere il telefono e costringerti a recuperare tramite HBoot. Consiglio vivamente di provare Fastboot per essere sicuro di poter utilizzare i comandi Fastboot estesi ed eseguire un ripristino. Questo varia un po 'in base al modello, ma la maggior parte dei telefoni ha una sorta di software desktop che può essere eseguito anche per il reflash del telefono.
La terza opzione è che in molti casi potrebbe essere possibile riavviare adbd
il dispositivo con i privilegi di root. Una possibilità è quella di eseguire adb root
da un terminale PC, anche se questo non funzionerà su tutte le configurazioni della ROM (la ROM deve essere costruita come "userdebug"). Puoi anche provare l'app adbd insecure di Chainfire . Ciò non persisterà durante il riavvio, quindi sarà necessario utilizzare l'app o adb root
nuovamente ogni volta che si riavvia il telefono.
adbd
di avere l'autorizzazione di root sul telefono solo per impostazione predefinita. C'è un post di un membro del team Android che implica questo, ma non lo dice esplicitamente. Questo impegno con l'AOSP implica anche che si tratta semplicemente di un flag che adbd
verifica all'avvio (non lo vedo altrove nella fonte). Come ho già detto, la maggior parte delle ROM personalizzate che ho visto (CM incluso) lo hanno impostato su 0.
adb root
comando per riavviare adbd in modalità auto-su, apparentemente si basa su questo. Penso che avessi ragione sul fatto che fosse solo una bandiera, però.
// ... except we allow running as root in userdebug builds if the service.adb.root property has been set by the "adb root" command"
. Per inciso, è così che ha funzionato la prima versione di BurritoRoot per Kindle Fire, IIRC.
Bene, se il tuo telefono è rootato puoi eseguire i comandi con il comando "su -c".
Ecco un esempio di un comando cat sul file build.prop per ottenere informazioni sul prodotto di un telefono.
adb shell "su -c 'cat /system/build.prop |grep "product"'"
Questo invoca il permesso di root ed esegue il comando all'interno di ''
Nota le 5 virgolette finali, che sono necessarie per chiudere TUTTE le virgolette finali o riceverai un errore.
Per chiarimenti il formato è così.
adb shell "su -c '[your command goes here]'"
Assicurati di inserire il comando ESATTAMENTE come faresti normalmente quando lo esegui nella shell.
Provalo, spero che questo ti aiuti.
Installa semplicemente adbd Insecure .
Cosa stai cercando di eseguire come root? Stai dicendo che vuoi eseguire la shell ADB con root ma non vuoi usare la shell ADB? Puoi chiarire?
Se l'applicazione richiede l'accesso come root, l'applicazione SuperUser sul telefono dovrebbe gestirle autorizzando o meno. Il processo in cui hai effettuato il root del tuo telefono dovrebbe aver incluso un'applicazione SuperUser.
adb shell ps
oe adb shell
quindi ps
ottenere l'elenco dei processi in esecuzione. Quindi qualcosa richiede l'accesso come root, voglio essere in grado di fare il primo.
In alternativa, puoi scrivere il tuo script sul telefono e semplicemente far eseguire adb, ad esempio:
adb shell sh /sdcard/myscript.sh
Lo script può elevarsi senza il tuo intervento (supponendo che SuperUser sia impostato per ricordare l'approvazione), ad esempio:
su
pm setInstallLocation 1
Ho appena fatto questo sul mio telefono con successo, l'unico problema è che non ho ancora capito come terminare in modo pulito la sessione della shell adb. Devo Ctrl-C nella mia shell di Windows per tornare al prompt dei comandi di Windows, altrimenti adb si trova solo al #
prompt e non accetta l'input.
io uso per riparazione problema pulsante home home
dispositivi adb
shell adb su -c commands
o
shell root adb sqlite3 /data/data/com.android.providers.settings/database/settings.db "INSERIRE VALORI (nome, valore) sicuri ('device_provisioned', '1');"
kill-server adb
Puoi anche impostare il bit di suid sul tuo 'sh'. Sto usando BusyBox, quindi le istruzioni potrebbero non corrispondere alla tua configurazione:
e dovresti avere il prompt di root
mksh
manutentore.)