adb shell su bekerja tetapi adb root tidak

93

Saya me-root Galaxy S3 saya yang tidak terkunci (SGH-T999)

Sekarang, saya mencoba menjalankan adb rootdari Windows Command Prompt , namun saya mendapatkan adbd cannot run as root in production buildskesalahan. Jadi, hal pertama yang saya periksa adalah apakah ponsel saya benar-benar di-root?

Jadi saya mencoba yang berikut ini:

Buka Command prompt

$adb devices // lists my device
$adb shell //goes to shell
$su // opens a 'SuperSu' prompt on my phone and I 'Grant' permission
# // Before following the rooting instructions, I was getting 'no su command found' in the previous step. So, I believe my phone is ROOTED. **Correct me if I'm wrong.**

Namun, ketika saya melakukannya adb root, saya mendapatkan adbd cannot run as root in production buildskesalahan. Jadi, saya pikir, saya mungkin harus melakukan beberapa hal tambahan di luar apa yang saya lakukan di atas. Saya mencoba semua solusi dalam pertanyaan SO berikut:

Semua hal di atas tidak berhasil untuk saya. Yang mereka lakukan hanyalah memberikan akses ROOT DI DALAM SHELL. Saya ingin adb rootbekerja agar saya dapat menjalankan berbagai perintah adb TANPA masuk ke shell.

rumit patel
sumber
5
tidak berfungsi di android> 4.3. su hilang.
drdrej

Jawaban:

35

Dengan adb rootperintah desain bekerja dalam pengembangan pembangunan saja (yaitu engdan userdebugyang memiliki ro.debuggable=1secara default). Jadi untuk mengaktifkan adb rootperintah pada perangkat Anda yang telah di- rooting, cukup tambahkan ro.debuggable=1baris ke salah satu file berikut:

/system/build.prop
/system/default.prop
/data/local.prop

Jika Anda ingin adb shellmemulai sebagai rootdefault - tambahkan ro.secure=0juga.

Atau Anda dapat menggunakan adbdbiner yang dimodifikasi (yang tidak memeriksa ro.debuggable)

Dari https://android.googlesource.com/platform/system/core/+/master/adb/daemon/main.cpp

#if defined(ALLOW_ADBD_ROOT)
// The properties that affect `adb root` and `adb unroot` are ro.secure and
// ro.debuggable. In this context the names don't make the expected behavior
// particularly obvious.
//
// ro.debuggable:
//   Allowed to become root, but not necessarily the default. Set to 1 on
//   eng and userdebug builds.
//
// ro.secure:
//   Drop privileges by default. Set to 1 on userdebug and user builds.
Alex P.
sumber
9
Di mana saya bisa mendapatkan kompilasi yang dapat dieksekusi di atas?
Waqas Bukhary
3
Saya menambahkan nilai baru untuk ro.debuggable dan ro.secure ke file yang Anda tentukan, tetapi mereka masih ditimpa pada setiap reboot dan perubahan tidak berpengaruh apa pun.
Patryk Czachurski
31

Di beberapa ROM yang ramah pengembang, Anda bisa mengaktifkan Akses Root di Pengaturan> Opsi pengembang> Akses root . Setelah itu adb roottersedia. Sayangnya itu tidak berfungsi untuk sebagian besar ROM saham di pasar.

NgaNguyenDuy
sumber
64
Saya tidak melihat opsi "Akses root" di opsi dev.
Amalgovinus
2
@Amalgovinus Saya pikir itu tergantung pada ruangan mana yang Anda gunakan. :)
NgaNguyenDuy
@NgaNguyenDuy Bisakah Anda mengidentifikasi rom yang Anda gunakan?
Lobster Fighter
22

Saya mengalami masalah ini ketika mencoba melakukan root pada emulator, saya menemukan itu karena saya menjalankan emulator Nexus 5x yang memiliki Google Play di dalamnya. Membuat emulator berbeda yang tidak memiliki google play dan adb rootakan melakukan root pada perangkat untuk Anda. Semoga ini bisa membantu seseorang.

Andrew Steinmetz
sumber
bagaimana cara membedakan kedua emulator?
Sanjay
@Sanjay saat Anda membuka Pengelola Perangkat Virtual Android, Anda akan melihat tab untuk Play Store dan Anda ingin memastikan tidak ada ikon play store yang ada di perangkat yang Anda coba root.
Andrew Steinmetz
1
2020, ini membantu saya tetapi saya benar-benar membutuhkan cara untuk melakukannya di perangkat dengan play store diaktifkan tanpa ponsel yang di-rooting tetapi tidak yakin apakah itu memungkinkan
trigster
8

Saya gunakan untuk masuk ke mode su di shell abd

adb shell "su"

Samuel Ivan
sumber
2
Di Mac OS, saya mendapatkan kesalahan "/ system / bin / sh: su: tidak ditemukan". Ada saran, tolong?
Sachin G
@SachinG Mungkin Anda menggunakan jenis kutipan yang salah? coba jalankan iniadb shell "su -c whoami"
gkpln3
@ gkpln3 Masih mendapatkan error yang sama. / system / bin / sh: su: tidak ditemukan
Sachin G
Saya memiliki kesalahan yang sama
jack
8

Saya memiliki Samsung Galaxy Trend Plus (GT-S7580) yang telah di-root.

Menjalankan 'adb root' memberi saya kesalahan 'adbd can't run as root in production builds' yang sama.

Untuk perangkat yang memiliki Opsi Pengembang -> Akses root, pilih "Hanya ADB" untuk memberikan akses root adb ke perangkat (seperti yang disarankan oleh NgaNguyenDuy ).

Kemudian coba jalankan perintah sesuai solusi di Luncurkan skrip sebagai root melalui ADB . Dalam kasus saya, saya hanya ingin menjalankan perintah 'netcfg rndis0 dhcp', dan saya melakukannya dengan cara ini:

adb shell "su -c netcfg rndis0 dhcp"

Harap periksa apakah Anda membuat kesalahan saat menjalankannya dengan cara ini.

Jika masih tidak berhasil, periksa apakah Anda melakukan root pada perangkat dengan benar. Jika masih belum berhasil, coba instal ROM kustom seperti Cyanogen Mod agar 'adb root' berfungsi.

Antony
sumber
7

Anda perlu mengganti biner adbd di folder boot.img / sbin / ke yang su mampu. Anda juga harus melakukan beberapa pengeditan default.prop juga.

Samsung sepertinya membuat ini lebih sulit dari vendor lain. Saya memiliki beberapa binari adbd yang dapat Anda coba tetapi akan membutuhkan pengetahuan tentang de-kompilasi dan kompilasi ulang boot.img dengan biner baru. Juga, jika Anda memiliki bootloader yang terkunci ... ini tidak akan terjadi.

Chainfire juga memiliki aplikasi yang akan memberikan izin root adbd di play store: https://play.google.com/store/apps/details?id=eu.chainfire.adbd&hl=id

Terakhir, jika Anda mencoba menulis skrip windows dengan izin SU, Anda dapat melakukan pembelian ini menggunakan gaya perintah berikut ... Namun, Anda setidaknya perlu memberikan izin SU (di telepon) sebelum dijalankan .. .

adb shell "su -c ls" <-list direktori kerja dengan hak su. adb shell "su -c echo anytext> /data/test.file"

Ini hanyalah beberapa contoh. Jika Anda menyatakan secara spesifik apa yang ingin Anda capai, saya mungkin dapat memberikan saran yang lebih spesifik

-scosler

scrosler
sumber
5

adbdmemiliki kompilasi bendera / pilihan untuk mengaktifkan akses root: ALLOW_ADBD_ROOT=1.

Hingga Android 9: Jika adbdperangkat Anda dikompilasi tanpa tanda tersebut, hak istimewa akan selalu dicabut saat memulai dan dengan demikian "adb root" tidak akan membantu sama sekali. Aku harus menambal panggilan ke setuid(), setgid(), setgroups()dan kemampuan tetes keluar dari biner sendiri untuk mendapatkan adbd berakar secara permanen pada pembaca ebook saya.

Dengan Android 10 ini berubah; ketika ponsel / tablet tidak terkunci ( ro.boot.verifiedbootstate == "orange"), maka mode root adb dimungkinkan dalam hal apa pun.

cweiske.dll
sumber
1

Jika Anda benar-benar perlu ADBmenjalankan sebagai root, cara tercepat dan termudah adalah menginstal ROM Kustom Android dan yang paling populer adalah CyanogenModkarena memiliki Root Accessopsi di menu opsi pengembang tempat Anda dapat memilih untuk memberikan akses root apps and ADB. Saya menggunakan CM sebelumnya tetapi karena tidak dikembangkan lagi, saya mencoba mencari beberapa solusi di luar sana. Meskipun CyanogenMod masih menjadi alternatif yang bagus karena tidak memiliki bloatware.

Salah satu alternatif yang saya temukan dari seorang teman adalah menggunakan adbd insecureaplikasi yang dapat Anda coba dari sini: https://forum.xda-developers.com/showthread.php?t=1687590 . Dalam kasus saya, ini berfungsi perferct dengan kernel khusus Android, tetapi tidak dengan ROM stok Android (hanya vanilla android). Anda juga dapat mencoba alternatif lain seperti memodifikasi boot.imgROM Android.

warfreak92
sumber