Apakah ada cara bagi saya untuk menjalankan Adb shell sebagai root tanpa mengetikkan 'su'?


45

Apakah ada cara bagi saya untuk menjalankan Adb shell sebagai root tanpa mengetik su? Saya ingin dapat memiliki akses root tanpa masuk ke shell.

Jawaban:


40

Jika saya memahami pertanyaan Anda dengan benar, Anda bertanya bagaimana mendapatkan akses root secara otomatis ketika Anda menjalankan adb shell, sehingga Anda tidak perlu masuk ke shell dan mengetik suuntuk menjalankan perintah sebagai root di ponsel Anda.

Ini dikontrol oleh flag di partisi boot Anda, yang diubah oleh sebagian besar custom ROM untuk mengizinkan izin root secara default. Jika Anda jatuh ke suatu $ketika Anda menggunakan adb shellmaka Anda memiliki dua opsi permanen dan satu opsi sementara (artinya sementara itu tidak menempel jika Anda reboot):

  1. Flash ROM yang menyertakan modifikasi
  2. Buat custom boot.img dan flash ke ponsel Anda
  3. Mulai ulang adbdpada perangkat Anda dengan izin root

Nomor 2 sebenarnya tidak terlalu sulit, tetapi bisa agak berbahaya jika Anda ceroboh. Ada artikel wiki di sini yang menjelaskan prosesnya dan menyertakan beberapa skrip Perl untuk membantu Anda. Instruksi ini mengasumsikan lingkungan Linux / Unix. Saya secara pribadi telah menggunakan instruksi ini di Fedora Linux dan dapat memberi tahu Anda bahwa itu berfungsi, tetapi saya tidak tahu tentang * nix environment lain seperti Mac. Saya juga tidak tahu tentang instruksi Windows yang serupa, tetapi saya bisa mencoba melacak beberapa jika Anda menggunakan Windows. Perintah yang tepat akan sedikit berbeda dari ponsel ke ponsel karena perangkat yang berbeda menggunakan tabel partisi yang berbeda.

Secara umum, Anda perlu menarik boot.img Anda saat ini dari ponsel Anda, membukanya, mengekstrak ramdisk, dan menemukan file default.prop . Ini adalah file plaintext, yang harus Anda buka di editor teks dan kemudian temukan baris yang berisi nilai ro.secure. Jika baris mengatakan ro.secure=1maka Anda perlu mengubahnya ro.secure=0. Setelah itu Anda dapat mengemas ulang ramdisk dan boot.img, lalu flash ke ponsel Anda. Setelah Anda reboot, Anda akan disambut dengan #prompt setiap kali Anda melakukan adb shelltanpa harus menjalankan su.

Sebagai alternatif, jika Anda menggunakan ROM khusus tetapi tidak memiliki modifikasi ini, Anda bisa membuka zip ROM dan memodifikasi boot.img yang disertakan dengannya menggunakan langkah-langkah di atas. Kemudian Anda dapat men-zip ROM dengan boot.img yang baru dimodifikasi dan mem-flash file zip seperti biasa.

Ini mungkin tidak perlu dikatakan, tetapi berhati-hatilah saat melakukan ini. Mengobrol dengan partisi boot Anda dapat dengan mudah merusak ponsel Anda dan memaksa Anda untuk pulih melalui HBoot. Saya akan sangat merekomendasikan pengujian Fastboot untuk memastikan Anda dapat menggunakan perintah Fastboot yang diperluas dan melakukan pemulihan. Ini sedikit bervariasi berdasarkan model Anda, tetapi sebagian besar ponsel memiliki beberapa jenis perangkat lunak desktop yang dapat dijalankan untuk merefleksikan ponsel juga.


Opsi ketiga adalah bahwa dalam banyak kasus dimungkinkan untuk me-restart adbdperangkat Anda dengan hak akses root. Satu kemungkinan adalah untuk mengeksekusi adb rootdari terminal PC, meskipun ini tidak akan bekerja pada semua konfigurasi ROM (ROM harus dibangun sebagai yang "userdebug"). Anda juga dapat mencoba aplikasi tidak aman Chainfire adbd . Ini tidak akan bertahan selama reboot, jadi Anda harus menggunakan aplikasi atau adb rootlagi kapan saja Anda me- restart telepon Anda.


Apakah ponsel juga bisa boot dengan izin root? Bisa jadi masalah keamanan.
Matius Baca

1
@ Matius: AFAIK, ini hanya memungkinkan adbduntuk memiliki izin root di telepon secara default. Ada pos dari anggota tim Android yang menyiratkan ini, tetapi tidak mengatakannya secara eksplisit. Komit ke AOSP ini juga menyiratkan bahwa itu hanyalah sebuah flag yang adbdmemeriksa startup (saya tidak melihatnya di tempat lain di sumber). Seperti yang saya sebutkan, sebagian besar custom ROM yang pernah saya lihat (termasuk CM) telah diatur ke 0.
eldarerathis

Saya akan mengatakan bahwa saya tidak 100% di atas. Saya tidak dapat menemukan dokumentasi resmi terkait dengan file default.prop, meskipun mungkin Google-fu saya lemah malam ini ...
eldarerathis

Baru saja menemukan adb rootperintah untuk me-restart adbd dalam mode auto-su, ternyata itu bergantung pada ini. Tapi saya pikir Anda benar karena itu hanya sebuah bendera.
Matius Baca

1
@ MatthewRead: Kode sumber di komit yang saya tautkan sebenarnya memiliki komentar untuk efek itu :) // ... except we allow running as root in userdebug builds if the service.adb.root property has been set by the "adb root" command". Kebetulan, itulah cara kerja versi pertama BurritoRoot untuk Api Kindle, IIRC.
eldarerathis

15

Jika ponsel Anda di-root, Anda dapat menjalankan perintah dengan perintah "su -c".

Berikut adalah contoh perintah kucing pada file build.prop untuk mendapatkan informasi produk ponsel.

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

Ini meminta izin root dan menjalankan perintah di dalam ''

Perhatikan 5 kutipan akhir, yang mengharuskan Anda menutup SEMUA kutipan akhir Anda atau Anda akan mendapatkan kesalahan.

Untuk klarifikasi formatnya seperti ini.

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

Pastikan Anda memasukkan perintah PERSIS seperti yang biasa Anda lakukan saat menjalankannya di shell.

Cobalah, semoga ini membantu.



1

Untuk apa Anda mencoba menjalankan root? Anda mengatakan bahwa Anda ingin menjalankan shell ADB dengan root tetapi Anda tidak ingin menggunakan shell ADB? Bisakah Anda mengklarifikasi?

Jika aplikasi meminta akses root, maka aplikasi SuperUser di ponsel Anda harus menangani memberikan izin atau tidak. Proses di mana Anda melakukan root pada ponsel Anda seharusnya sudah termasuk aplikasi SuperUser.


Saya ingin menjalankan adb shell gdbserver dari terminal saya alih-alih pergi ke shell untuk menjalankannya
Hank

2
@ Terima kasih: terminal hampir selalu perlu dihubungkan ke shell untuk melakukan pekerjaan yang bermanfaat; mungkin Anda harus mengklarifikasi definisi Anda tentang "terminal" dan "shell" karena Anda tampaknya memiliki gagasan yang berbeda tentang apa yang mereka daripada dalam bahasa Linux / Android standar
Lie Ryan

sehingga Anda dapat melakukan adb shell psatau adb shelldan kemudian psuntuk mendapatkan daftar proses yang sedang berjalan. Jadi sesuatu membutuhkan akses root, saya ingin dapat melakukan yang pertama.
Hank

1
Alasan "mengapa" (terutama yang terkait dengan gdbserver) adalah untuk dapat menggunakan kemampuan dalam skrip yang berjalan pada mesin pengembangan. Namun, skrip dapat mem-pipe perintah ke apa yang adb anggap sebagai shell interaktif, jadi memiliki adb default untuk di-root sebenarnya tidak diperlukan karena alasan itu.
Chris Stratton

1

Sebagai alternatif, Anda dapat menulis skrip di telepon dan menjalankan adb, misalnya:

adb shell sh /sdcard/myscript.sh

Skrip dapat meninggikan dirinya sendiri tanpa intervensi Anda (dengan asumsi SuperUser diatur untuk mengingat persetujuan), misalnya:

su
pm setInstallLocation 1

Saya hanya melakukan ini di ponsel saya dengan sukses, satu-satunya masalah adalah bahwa saya belum cukup tahu cara mengakhiri sesi adb shell dengan bersih. Saya harus Ctrl-C di shell Windows saya untuk kembali ke command prompt Windows - jika adb hanya duduk di #prompt dan tidak menerima input.


0

saya gunakan untuk memperbaiki masalah masalah tombol home


perangkat adb

adb shell su -c commands

atau

adb shell root sqlite3 /data/data/com.android.providers.settings/databases/settings.db "INSERT INTO secure (name, value) VALUES ('device_provisioned', '1');"

adb kill-server


-1

Anda juga dapat mengatur bit suid di 'sh' Anda. Saya menggunakan BusyBox sehingga instruksi mungkin tidak cocok dengan pengaturan Anda:

  1. adb shell
  2. su
  3. mount -o remount, rw / system (atau: adb remount)
  4. ls -la / system / bin / sh lrwxr-xr-x root shell 2012-11-10 15:20 sh -> mksh
  5. chmod 4755 / system / bin / sh
  6. ls -la / system / bin / mksh
    -rwsr-xr-x root shell 157520 2012-11-10 09:54 mksh (perhatikan bit suid diatur)
  7. ^ D
  8. adb shell

dan Anda harus memiliki prompt root


3
-1 dari saya. Ini tidak aman dan membuka lubang besar. Setiap aplikasi bisa menjadi root dan mendatangkan malapetaka.
ce4

6
Sama sekali tidak melakukan itu, ini adalah lubang keamanan bencana . (Penafian: Saya adalah mkshpengelola.)
mirabilos
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.