「su」と入力せずにルートとしてAdbシェルを実行する方法はありますか?


45

入力せずにルートとしてAdbシェルを実行する方法はありますsuか?シェルに入ることなく、rootアクセスできるようにしたいです。

回答:


40

私があなたの質問を正しく理解しているなら、を実行するときにrootアクセスを自動的に取得する方法を尋ねているadb shellので、シェルに移動しsuて電話でrootとしてコマンドを実行する必要はありません。

これは、ブートパーティションのフラグによって制御されます。ほとんどのカスタムROMは、デフォルトでルート権限を許可するように変更されています。$使用時にa にドロップされた場合、adb shell2つの永続的なオプションと1つの一時的なオプションがあります(一時的な意味は、再起動しても固執しません)。

  1. 変更を含むROMをフラッシュします
  2. カスタムboot.imgを作成し、それを電話機にフラッシュします
  3. adbdルート権限でデバイスを再起動します

数字2は実際にはそれほど難しくありませんが、不注意だと多少危険です。ここには、プロセスを説明するWiki記事があり、いくつかのPerlスクリプトが含まれています。これらの手順は、Linux / Unix環境を前提としています。私は個人的にこれらの指示をFedora Linuxで使用し、それらが機能することを伝えることができますが、Macのような他の* nix環境については知りません。同様のWindowsの指示も知りませんが、Windowsを使用している場合は追跡することもできます。デバイスごとに異なるパーティションテーブルを使用するため、正確なコマンドは電話ごとに多少異なります。

ただし、一般的に言えば、現在のboot.imgを携帯電話から取り出して展開し、ramdiskを抽出し、default.propファイルを見つける必要があります。これはプレーンテキストファイルです。テキストエディターで開き、値を含む行を見つける必要がありますro.secure。行に表示されている場合、ro.secure=1それをに変更する必要がありますro.secure=0。その後、ramdiskとboot.imgを再パックし、それを携帯電話にフラッシュします。再起動すると、#実行adb shellせずに実行するたびにプロンプ​​トが表示されますsu

または、カスタムROMを使用しているがこの変更がない場合は、ROMを解凍し、上記の手順を使用して、ROMに含まれているboot.imgを変更できます。次に、新しく変更したboot.imgでROMを圧縮し、通常どおりにzipファイルをフラッシュします。

これはおそらく言うまでもないですが、これを行うときは注意してください。ブートパーティションをいじってしまうと、電話機が簡単に壊れてしまい、HBootで強制的に復旧することができます。拡張Fastbootコマンドを使用して回復を実行できることを確認するために、Fastbootをテストすることを強くお勧めします。これはモデルによって多少異なりますが、ほとんどの携帯電話には、携帯電話を再フラッシュするために実行できるデスクトップソフトウェアがあります。


3番目のオプションは、多くの場合adbd、root権限でデバイスを再起動できる可能性があることです。1つの可能性はadb root、PC端末から実行することですが、これはすべてのROM構成で機能するわけではありません(ROMは「userdebug」として構築する必要があります)。また、Chainfireのadbd安全でないアプリを試すこともできます。これは再起動後も保持されないため、スマートフォンadb rootを再起動するたびにアプリを使用するか、再度使用する必要があります。


電話もルート権限で起動しますか?セキュリティの問題である可能性があります。
マシューリード

1
@Matthew:私の知る限り、adbdデフォルトでは電話のルート権限のみが許可されています。これを暗示するAndroidチームのメンバーからの投稿がありますが、明示的には述べていません。この AOSPへのコミットは、adbd起動時にチェックする単なるフラグであることも意味します(ソースの他の場所には表示されません)。
先ほど

ただし、上記については100%ではありません。default.propファイルに関連する公式ドキュメントは見つかりませんが、おそらく今夜のGoogle-fuは弱いだけです
...-eldarerathis

adb rootauto-suモードでadbdを再起動するコマンドを発見しましたが、明らかにこれに依存しています。しかし、あなたはそれがただの旗であることについて正しいと思います。
マシューリード

1
@MatthewRead:私がリンクしたコミットのソースコードには、実際にその効果に対するコメントがあります:) // ... except we allow running as root in userdebug builds if the service.adb.root property has been set by the "adb root" command"。ちなみに、それがKindle FireのBurritoRootの最初のバージョンであるIIRCの仕組みです。
eldarerathis

15

電話がルート化されている場合は、「su -c」コマンドを使用してコマンドを実行できます。

これは、携帯電話の製品情報を取得するbuild.propファイルのcatコマンドの例です。

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

これにより、ルート権限が呼び出され、「」内でコマンドが実行されます

5つの終了引用符に注意してください。すべての終了引用符を閉じると、エラーが発生します。

明確にするために、形式は次のようになります。

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

シェルでコマンドを実行するときに通常どおり正確にコマンドを入力してください。

試してみてください、これが役立つことを願っています。



1

ルートとして何を実行しようとしていますか?rootでADBシェルを実行したいが、ADBシェルを使用したくないと言っているのですか?明確にできますか?

アプリケーションがルートアクセスを要求する場合、携帯電話のSuperUserアプリケーションは許可を与えるかどうかを処理する必要があります。電話をルート化するプロセスには、SuperUserアプリケーションが含まれている必要があります。


私はそれを実行するためにシェルに入るのではなく、私の端末からadb shell gdbserverを実行したいです
ハンク

2
@Hank:有用な作業を行うには、ほとんどの場合、端末をシェルに接続する必要があります。あなたは、標準のLinux / Androidの用語ではより彼らが何であったかの異なった考えを持っていると思われるので、おそらくあなたは、「端末」と「シェル」のあなたの定義を明確にすべき
リー・ライアン

adb shell psまたはadb shellps実行してから、実行中のプロセスリストを取得できます。だから、何かがルートアクセスを必要とする、私は前者を行うことができるようにしたい。
ハンク

1
「なぜ」(特にgdbserverが関係する場合)理由は、開発マシンで実行されているスクリプトで機能を使用できるようにするためです。ただし、スクリプトがコマンドをadbが対話型シェルと見なすものにパイプすることは可能です。そのため、adbのデフォルトをルートに設定する必要はありません。
クリスストラットン

1

別の方法として、電話でスクリプトを記述し、adbにそれを実行させることもできます。次に例を示します。

adb shell sh /sdcard/myscript.sh

スクリプトは、ユーザーの介入なしに自分自身を昇格させることができます(SuperUserが承認を記憶するように設定されていると仮定)、例えば:

su
pm setInstallLocation 1

私は自分の携帯電話でこれを成功させましたが、唯一の問題はadbシェルセッションをきれいに終了する方法を十分に理解していないことです。Windowsコマンドプロンプトに戻るには、WindowsシェルでCtrl-Cを押す必要があります。それ以外の場合、adbは#プロンプトに座って入力を受け入れません。


0

ホームボタンの問題の修復に使用する


adbデバイス

adbシェルsu -c commands

または

adbルートシェルsqlite3 /data/data/com.android.providers.settings/databases/settings.db「INSERT INTO secure(name、value)VALUES( 'device_provisioned'、 '1');」

adb kill-server


-1

「sh」にsuidビットを設定することもできます。BusyBoxを使用しているため、手順が設定と一致しない場合があります。

  1. adbシェル
  2. mount -o remount、rw / system(または:adb remount)
  3. ls -la / system / bin / sh lrwxr-xr-x root shell 2012-11-10 15:20 sh-> mksh
  4. chmod 4755 / system / bin / sh
  5. ls -la / system / bin / mksh
    -rwsr-xr-x root shell 157520 2012-11-10 09:54 mksh(suidビットが設定されていることに注意してください)
  6. ^ D
  7. adbシェル

ルートプロンプトが必要です


3
私から-1。これは安全ではなく、大きな穴を開けます。すべてのAPPがルートになり、大混乱を招く可能性があります。
ce4

6
絶対にそれをしないでください、これは壊滅的なセキュリティホールです。(免責事項:私はmkshメンテナーです。)
ミラビロス14年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.