Saya bisa mendapatkan root prompt di terminal dengan menjalankan satu exploit yang didokumentasikan di tempat lain. (misal di sini: http://wiki.cyanogenmod.com/wiki/Motorola_Droid_2_Global:_Full_Update_Guide )
Pada titik ini, saya dapat menginstal biner "su" dan memberikannya izin 4755. Ini harus memungkinkan siapa pun untuk mengeksekusinya, dan karena pemilik biner adalah "root" dan bit lengket diatur, saya harus menjadi root. Tapi saya rupanya tidak punya cara un-menjadi root dari terminal sebelum reboot. Tapi, setelah saya reboot, sepertinya saya tidak bisa menjadi root menggunakan 'su'.
$ ls -l /system/bin/su
-rwsr-xr-x root app_101 26234 2012-07-09 15:00 su
Ok, izin terlihat baik-baik saja, seharusnya saya bisa menjalankannya untuk menjadi root, tetapi hanya dalam permohonan khusus terminal ini.
$ /system/bin/su
Permission denied
Itu juga gagal jika saya menentukan perintah untuk dijalankan sebagai root, atau dengan argumen lain:
$ /system/bin/su /system/bin/sh
Permission denied
Mengapa? Apakah ada mekanisme lain yang bekerja? Saya tidak ingin menginstal Superuser.apk, karena saya hanya ingin cara agar saya dapat sementara mendapatkan root shell jika diperlukan, misalnya untuk menghapus file yang tidak diinginkan secara manual. Selain itu, Superuser.apk juga bergantung pada su binary, jadi ia harus memiliki beberapa cara untuk memanggilnya, jadi mengapa saya tidak bisa meniru itu di terminal?
Sunting: Saya punya pemikiran lain, jadi saya mencoba menyalin / bin / sh ke lokasi lain dan membuatnya suid root. Tapi sementara saya bisa menjalankan biner baru, itu tidak memberi saya root. Apakah Android melakukan sesuatu yang rumit / berbeda dengan suid yang Linux biasa tidak lakukan?
sumber
Jawaban:
Petunjuknya ada di id pemilik / grup ...
Perhatikan id grup diatur ke 'app_101', yang seharusnya menjadi 'root', tetapi sekali lagi, Anda membutuhkan
busybox
biner (yang merupakan bagian dari biner SuperUser.apk, ketika diinstal, ia menyalin biner yang bersangkutan ke dalam/system/xbin
) agar untuk dapat melakukannyachown
.sumber
Coba tambahkan
-c
opsi. misalnyaatau
(untuk argumen lainnya)
sumber
Sedikit lebih menggali dan saya pikir saya telah menemukan jawabannya. Alasan tidak berfungsi adalah karena aplikasi Terminal tidak meminta izin pengguna super dalam manifesnya, misalnya:
Lapisan keamanan tambahan ini tampaknya karena aplikasi terminal adalah aplikasi java, meskipun ia menyembunyikannya dengan baik. Superuser tampaknya menipiskan hal-hal entah bagaimana sehingga aplikasi java bisa mendapatkan izin ini, bahkan jika mereka tidak tahu mereka membutuhkannya ketika mereka dibuat.
sumber
ACCESS_SUPERUSER
izin tidak terhubung dengan masalah Anda