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?