50 votes

Existe-t-il un moyen pour moi de lancer le shell Adb en tant que Root sans taper 'su' ?

Existe-t-il un moyen pour moi de lancer le shell Adb en tant que Root sans taper dans su ? Je veux pouvoir avoir un accès Root sans entrer dans le shell.

46voto

David Negron Points 971

Si je comprends bien votre question, vous demandez comment obtenir automatiquement l'accès Root lorsque vous exécutez adb shell de sorte que vous n'ayez pas à entrer dans le shell et taper su pour exécuter une commande comme Root sur votre téléphone.

Ceci est contrôlé par un drapeau dans votre partition de démarrage, que la plupart des ROMs personnalisées ont modifié pour permettre la permission Root par défaut. Si vous tombez sur une $ lorsque vous utilisez adb shell vous disposez alors de deux options permanentes et d'une option temporaire (temporaire signifiant qu'elle ne sera pas conservée si vous redémarrez) :

  1. Flash une ROM qui inclut la modification
  2. Créer un boot.img personnalisé et le flasher sur votre téléphone.
  3. Redémarrer adbd sur votre appareil avec les autorisations Root

Le numéro 2 n'est en fait pas si difficile, mais il peut être quelque peu dangereux si vous êtes imprudent. Il y a un article wiki aquí qui explique le processus et inclut quelques scripts Perl pour vous aider. Ces instructions supposent un environnement Linux/Unix. J'ai personnellement utilisé ces instructions sur Fedora Linux et je peux vous dire qu'elles fonctionnent, mais je ne connais pas d'autres environnements *nix comme les Macs. Je ne connais pas non plus d'instructions similaires pour Windows, mais je pourrais essayer d'en trouver si vous êtes sous Windows. Les commandes exactes varieront quelque peu d'un téléphone à l'autre, car les différents appareils utilisent des tables de partition différentes.

D'une manière générale, vous devez extraire votre fichier boot.img actuel de votre téléphone, le décompresser, extraire le disque RAM, et trouver le fichier default.prop fichier. Il s'agit d'un fichier en texte clair, que vous devez ouvrir dans un éditeur de texte, puis trouver la ligne qui contient la valeur suivante ro.secure . Si la ligne dit ro.secure=1 alors vous devez le changer en ro.secure=0 . Après cela, vous pouvez ré-emballer le ramdisk et boot.img, puis le flasher sur votre téléphone. Une fois que vous aurez redémarré, vous serez accueilli avec une # à chaque fois que vous effectuez adb shell sans avoir à exécuter su .

Alternativement, si vous utilisez une ROM personnalisée mais qu'elle n'a pas cette modification, vous pouvez simplement dézipper la ROM et modifier le boot.img qui est inclus avec elle en utilisant les étapes ci-dessus. Ensuite, vous pouvez zipper la ROM avec le boot.img nouvellement modifié et flasher le fichier zip comme vous le feriez normalement.

Cela va probablement sans dire, mais Soyez prudent. lorsque vous faites cela. En jouant avec votre partition de démarrage, vous pouvez facilement détruire votre téléphone et vous obliger à le récupérer via HBoot. Je vous recommande vivement de tester Fastboot pour vous assurer que vous pouvez utiliser les commandes Fastboot étendues et effectuer une restauration. Cela varie un peu en fonction de votre modèle, mais la plupart des téléphones ont une sorte de logiciel de bureau qui peut être exécuté pour reflasher le téléphone ainsi.


La troisième option est que, dans de nombreux cas, il peut être possible de redémarrer les activités de l'entreprise. adbd sur votre appareil avec les privilèges Root. Une possibilité est d'exécuter adb root à partir d'un terminal PC, bien que cela ne fonctionne pas sur toutes les configurations de ROM (la ROM doit être construite comme une ROM "userdebug"). Vous pouvez également essayer L'application adbd non sécurisée de Chainfire . Cela ne persistera pas lors d'un redémarrage, vous devrez donc utiliser soit l'application, soit la fonction adb root à chaque fois que vous redémarrez votre téléphone.

0 votes

Le téléphone démarre-t-il également avec les autorisations Root ? Cela pourrait être un problème de sécurité.

1 votes

@Matthew : AFAIK, il permet seulement adbd pour avoir la permission de Root sur le téléphone par défaut. Il y a un poste d'un membre de l'équipe Android qui le laisse entendre, mais ne le dit pas explicitement. Cet engagement à l'AOSP implique également qu'il s'agit simplement d'un drapeau qui adbd vérifie au démarrage (je ne le vois pas ailleurs dans la source). Comme je l'ai mentionné, la majorité des ROMs personnalisées que j'ai vues (CM inclus) l'ont mis à 0.

0 votes

Je dois dire que je ne suis pas sûr à 100% de ce qui précède, cependant. Je ne trouve aucune documentation officielle concernant le fichier default.prop, mais peut-être que mon Google-fu est juste faible ce soir...

18voto

Ajster1989 Points 181

Si votre téléphone est enraciné, vous pouvez exécuter des commandes avec la commande "su -c".

Voici un exemple de commande cat sur le fichier build.prop pour obtenir des informations sur un produit téléphonique.

adb shell "su -c 'cat /system/build.prop |grep "product"'"

Ceci invoque la permission de Root et exécute la commande à l'intérieur du ' '.

Remarquez les 5 guillemets de fin, vous devez fermer TOUS vos guillemets de fin ou vous obtiendrez une erreur.

Pour clarifier, le format est le suivant.

adb shell "su -c '[your command goes here]'"

Veillez à saisir la commande EXACTEMENT comme vous le feriez normalement en l'exécutant dans le shell.

Essayez, j'espère que cela vous aidera.

0 votes

Par exemple, vous pouvez utiliser adb shell -t "su -c 'sh'" pour exécuter un shell en tant que Root. Le site -t est nécessaire pour obtenir l'invite.

3voto

linuxmaniax Points 21

Il suffit d'installer adbd Insecure .

1voto

Bryan Denny Points 21817

Pourquoi essayez-vous d'utiliser Root ? Vous dites que vous voulez exécuter le shell ADB avec Root mais que vous ne voulez pas utiliser le shell ADB ? Pouvez-vous préciser ?

Si l'application demande l'accès à la racine, l'application SuperUser de votre téléphone doit lui donner l'autorisation ou non. Le processus par lequel vous avez enraciné votre téléphone devrait inclure une application SuperUser.

0 votes

Je veux exécuter adb shell gdbserver à partir de mon terminal au lieu d'aller dans le shell pour l'exécuter.

2 votes

@Hank : un terminal a presque toujours besoin d'être connecté à un shell pour faire un travail utile ; peut-être devriez-vous clarifier votre définition de "terminal" et "shell" puisque vous semblez avoir une idée différente de ce qu'ils sont dans le langage standard de Linux/Android.

0 votes

Pour que vous puissiez faire adb shell ps o adb shell et ensuite ps pour obtenir la liste des processus en cours. Certaines choses nécessitent un accès à la racine, je veux être capable de faire la première chose.

1voto

Matthew Read Points 50150

Comme alternative, vous pourriez écrire votre script sur le téléphone et simplement demander à adb de l'exécuter, par exemple :

adb shell sh /sdcard/myscript.sh

Le script peut s'élever lui-même sans votre intervention (en supposant que SuperUser est configuré pour se souvenir de l'approbation), par exemple :

su
pm setInstallLocation 1

Je viens de faire cela sur mon téléphone avec succès, le seul problème étant que je n'ai pas encore trouvé comment terminer proprement la session du shell adb. Je dois faire Ctrl-C dans mon shell Windows pour revenir à l'invite de commande Windows -- sinon adb reste juste à l'écran d'accueil. # et n'accepte aucune entrée.

androidalle.com

AndroidAlle est une communauté de androiders où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X