Tôi có thể nhận được một dấu nhắc gốc trong thiết bị đầu cuối bằng cách chạy một khai thác được ghi lại ở nơi khác. (ví dụ: tại đây: http://wiki.cyanogenmod.com/wiki/Motorola_Droid_2_Global:_Full_Update_Guide )
Tại thời điểm này, tôi có thể cài đặt nhị phân "su" và cấp cho nó quyền 4755. Điều này sẽ cho phép bất cứ ai thực hiện nó và vì chủ sở hữu của nhị phân là "root" và bit dính được đặt, tôi sẽ trở thành root. Nhưng rõ ràng là tôi không có cách nào để không trở thành root từ thiết bị đầu cuối khi khởi động lại. Nhưng, sau khi tôi khởi động lại, sau đó tôi dường như không thể trở thành root bằng cách sử dụng 'su'.
$ ls -l /system/bin/su
-rwsr-xr-x root app_101 26234 2012-07-09 15:00 su
Ok, các quyền trông ổn, nếu tôi có thể chạy nó để trở thành root, nhưng chỉ trong lệnh gọi cụ thể này của thiết bị đầu cuối.
$ /system/bin/su
Permission denied
Nó cũng không thành công nếu tôi chỉ định lệnh chạy dưới quyền root hoặc với bất kỳ đối số nào khác:
$ /system/bin/su /system/bin/sh
Permission denied
Tại sao? Có một số cơ chế khác trong công việc? Tôi không muốn cài đặt Superuser.apk, vì tôi chỉ muốn một cách mà tôi có thể tạm thời lấy shell gốc nếu cần, ví dụ để xóa các tệp không mong muốn theo cách thủ công. Bên cạnh đó, Superuser.apk vẫn dựa vào nhị phân su, vì vậy nó phải có cách gọi nào đó, vậy tại sao tôi không thể sao chép nó trong thiết bị đầu cuối?
Chỉnh sửa: Tôi đã có một suy nghĩ khác, vì vậy tôi đã thử sao chép / bin / sh sang một vị trí khác và làm cho nó hoàn toàn root. Nhưng trong khi tôi có thể thực thi nhị phân mới, nó không cho tôi root. Android có làm điều gì đó khó khăn / khác biệt với suid mà Linux thông thường không làm được không?