Câu trả lời:
Nếu tôi hiểu chính xác câu hỏi của bạn, bạn đang hỏi cách tự động truy cập root khi bạn chạy adb shell
, để bạn không phải vào shell và gõ su
để thực thi lệnh dưới quyền root trên điện thoại.
Điều này được kiểm soát bởi một cờ trong phân vùng khởi động của bạn, mà hầu hết các ROM tùy chỉnh đã sửa đổi để cho phép quyền root theo mặc định. Nếu bạn bị rớt xuống $
khi bạn sử dụng adb shell
thì bạn có hai tùy chọn vĩnh viễn và một tùy chọn tạm thời (nghĩa là tạm thời nó không bị dính nếu bạn khởi động lại):
adbd
trên thiết bị của bạn với quyền rootSố 2 thực sự không khó lắm, nhưng nó có thể hơi nguy hiểm nếu bạn bất cẩn. Có một bài viết wiki ở đây giải thích quá trình và bao gồm một vài tập lệnh Perl để giúp bạn. Các hướng dẫn này giả định môi trường Linux / Unix. Cá nhân tôi đã sử dụng các hướng dẫn này trên Fedora Linux và có thể cho bạn biết rằng chúng hoạt động, nhưng tôi không biết về các môi trường * nix khác như máy Mac. Tôi cũng không biết bất kỳ hướng dẫn tương tự nào của Windows, nhưng tôi có thể thử theo dõi một số nếu bạn ở trên Windows. Các lệnh chính xác sẽ thay đổi phần nào từ điện thoại này sang điện thoại khác vì các thiết bị khác nhau sử dụng các bảng phân vùng khác nhau.
Tuy nhiên, nói chung, bạn cần phải rút boot.img hiện tại khỏi điện thoại của mình, giải nén nó, giải nén ramdisk và tìm tệp default.prop . Đây là một tệp văn bản gốc, bạn cần mở trong trình soạn thảo văn bản và sau đó tìm dòng chứa giá trị ro.secure
. Nếu dòng nói ro.secure=1
thì bạn cần thay đổi nó thành ro.secure=0
. Sau đó, bạn có thể đóng gói lại ramdisk và boot.img, sau đó flash nó vào điện thoại của bạn. Khi bạn khởi động lại, bạn sẽ được chào đón bằng #
lời nhắc bất cứ khi nào bạn thực hiện adb shell
mà không phải chạy su
.
Ngoài ra, nếu bạn đang sử dụng ROM tùy chỉnh nhưng nó không có sửa đổi này, bạn có thể giải nén ROM và sửa đổi boot.img đi kèm với nó bằng các bước trên. Sau đó, bạn có thể nén ROM bằng boot.img vừa được sửa đổi và flash tệp zip như bình thường.
Điều này có thể đi mà không nói, nhưng hãy cẩn thận khi làm điều này. Lộn xộn với phân vùng khởi động của bạn có thể dễ dàng phá hỏng điện thoại của bạn và buộc bạn phải khôi phục thông qua HBoot. Tôi đặc biệt khuyên bạn nên thử nghiệm Fastboot để đảm bảo bạn có thể sử dụng các lệnh Fastboot mở rộng và thực hiện khôi phục. Điều này thay đổi một chút dựa trên kiểu máy của bạn, nhưng hầu hết các điện thoại đều có một số loại phần mềm máy tính để bàn có thể chạy để phản hồi điện thoại.
Tùy chọn thứ ba là trong nhiều trường hợp có thể khởi động lại adbd
trên thiết bị của bạn với quyền root. Một khả năng là thực thi adb root
từ thiết bị đầu cuối PC, mặc dù điều này sẽ không hoạt động trên tất cả các cấu hình ROM (ROM phải được xây dựng dưới dạng "userdebug"). Bạn cũng có thể dùng thử ứng dụng không an toàn adbd của Chainfire . Điều này sẽ không tồn tại trong quá trình khởi động lại, vì vậy bạn sẽ cần sử dụng ứng dụng hoặc adb root
một lần nữa bất cứ khi nào bạn khởi động lại điện thoại.
adbd
có quyền root trên điện thoại theo mặc định. Có một bài đăng từ một thành viên của nhóm Android ngụ ý điều này, nhưng không nói rõ ràng. Cam kết này với AOSP cũng ngụ ý rằng nó chỉ đơn giản là một lá cờ adbd
kiểm tra khi khởi động (tôi không thấy nó ở nơi nào khác trong nguồn). Như tôi đã đề cập, phần lớn các ROM tùy chỉnh mà tôi đã thấy (bao gồm CM) đã được đặt thành 0.
adb root
lệnh khởi động lại adbd trong chế độ tự động su, rõ ràng nó phụ thuộc vào điều này. Tôi nghĩ rằng bạn đã đúng về việc nó chỉ là một lá cờ, mặc dù.
// ... except we allow running as root in userdebug builds if the service.adb.root property has been set by the "adb root" command"
. Ngẫu nhiên, đó là cách phiên bản đầu tiên của BurritoRoot cho Kindle Fire hoạt động, IIRC.
Vâng, nếu điện thoại của bạn đã được root, bạn có thể chạy các lệnh bằng lệnh "su -c".
Dưới đây là một ví dụ về lệnh mèo trên tệp build.prop để lấy thông tin sản phẩm điện thoại.
adb shell "su -c 'cat /system/build.prop |grep "product"'"
Điều này gọi quyền gốc và chạy lệnh bên trong ''
Lưu ý 5 dấu ngoặc kép, yêu cầu bạn đóng TẤT CẢ dấu ngoặc kép của bạn nếu không bạn sẽ gặp lỗi.
Để làm rõ định dạng là như thế này.
adb shell "su -c '[your command goes here]'"
Hãy chắc chắn rằng bạn nhập lệnh CHÍNH XÁC theo cách mà bạn thường làm khi chạy nó trong shell.
Hãy thử, hy vọng điều này sẽ giúp.
Đơn giản chỉ cần cài đặt adbd Không an toàn .
Bạn đang cố gắng chạy root để làm gì? Bạn đang nói rằng bạn muốn chạy shell ADB bằng root nhưng bạn không muốn sử dụng shell ADB? Bạn có thể làm rõ?
Nếu ứng dụng yêu cầu quyền truy cập root, thì ứng dụng SuperUser trên điện thoại của bạn có nên xử lý cho phép hay không. Quá trình bạn root điện thoại nên có ứng dụng SuperUser.
adb shell ps
hoặc adb shell
sau đó ps
để có được danh sách quy trình đang chạy. Vì vậy, đôi khi yêu cầu quyền truy cập root, tôi muốn có thể làm trước đây.
Thay vào đó, bạn có thể viết tập lệnh của mình trên điện thoại và chỉ cần adb thực thi nó, ví dụ:
adb shell sh /sdcard/myscript.sh
Tập lệnh có thể tự nâng cao mà không cần sự can thiệp của bạn (giả sử SuperUser được đặt để ghi nhớ phê duyệt), ví dụ:
su
pm setInstallLocation 1
Tôi đã thực hiện điều này trên điện thoại thành công, vấn đề duy nhất là tôi chưa tìm ra cách kết thúc sạch phiên adb shell. Tôi phải Ctrl-C trong trình bao Windows của mình để trở về dấu nhắc lệnh của Windows - nếu không thì adb chỉ nằm ở #
dấu nhắc và không chấp nhận đầu vào.
tôi sử dụng để sửa lỗi nút home
thiết bị adb
vỏ adb su -c commands
hoặc là
adb root shell sqlite3 /data/data/com.android.providers.sinstall/database/sinstall.db "INSERT INTO an toàn (tên, giá trị) VALUES ('device_provisioned', '1');"
máy chủ tiêu diệt adb
Bạn cũng có thể đặt bit suid trên 'sh' của mình. Tôi đang sử dụng BusyBox để hướng dẫn có thể không khớp với thiết lập của bạn:
và bạn nên có dấu nhắc gốc