Làm cách nào để gọi ra su su từ một dấu nhắc thiết bị đầu cuối?


7

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?


1
Có một 'su' không được bảo vệ trên thiết bị là khá rủi ro, vì bất cứ điều gì cố gắng sử dụng nó sẽ nhận được nó mà không có bất kỳ xác nhận nào của người dùng rằng những thứ như ứng dụng siêu người dùng đó cố gắng thêm làm cổng.
Chris Stratton

Phải, tốt ... tôi đã cố gắng lên kế hoạch trước. Không chắc chắn cách cập nhật tiếp theo sẽ cố gắng loại bỏ su, vì vậy tôi đặt nó ở một loạt các địa điểm khác nhau với các tên khác nhau. Hóa ra bản cập nhật sẽ loại bỏ bit dính và tôi không thể chạy suid từ những nơi khác ngoài hệ thống. À
Michael

Câu trả lời:


6

Manh mối nằm trong id chủ sở hữu / nhóm ...

$ ls -l /system/bin/su
-rwsr-xr-x root    app_101    26234 2012-07-09 15:00 su

Lưu ý id nhóm được đặt thành 'app_101', đó phải là 'root', nhưng một lần nữa, bạn cần busyboxnhị phân (là một phần của nhị phân SuperUser.apk, khi được cài đặt, nó sao chép nhị phân có liên quan vào /system/xbin) theo thứ tự để có thể chownnó.


Có, đây sẽ là một vấn đề Cuối cùng bận rộn không cần thiết vì stock android chown cũng có thể thay đổi nhóm, sử dụng tên tệp chown user.group (ít nhất là từ Froyo-ICS)
Chris Stratton

1

Hãy thử thêm -ctùy chọn. ví dụ

su -c sh

hoặc là

 su -c 'echo bogus'

(để biết thêm đối số)


0

Đào thêm một chút và tôi nghĩ rằng tôi đã đưa ra câu trả lời. Lý do nó không hoạt động là vì ứng dụng Terminal không yêu cầu quyền siêu người dùng trong tệp kê khai của nó, ví dụ:

<uses-permission android:name="android.permission.ACCESS_SUPERUSER"/>

Lớp bảo mật bổ sung này dường như là do ứng dụng đầu cuối là một ứng dụng java, mặc dù nó làm rất tốt việc ẩn nó. Superuser dường như bắt chước mọi thứ bằng cách nào đó để các ứng dụng java có thể có được quyền này, ngay cả khi họ không biết họ cần nó khi chúng được tạo.


2
ACCESS_SUPERUSERphép không được kết nối với vấn đề của bạn
janot
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.