adb shell su hoạt động nhưng adb root thì không


93

Tôi đã root Galaxy S3 đã mở khóa (SGH-T999) của mình

Bây giờ, tôi đang cố chạy adb roottừ Windows Command Prompt , tuy nhiên, tôi gặp adbd cannot run as root in production buildslỗi. Vì vậy, điều đầu tiên tôi kiểm tra là điện thoại của tôi đã thực sự được root chưa?

Vì vậy, tôi đã thử những cách sau:

Mở dấu nhắc lệnh

$adb devices // lists my device
$adb shell //goes to shell
$su // opens a 'SuperSu' prompt on my phone and I 'Grant' permission
# // Before following the rooting instructions, I was getting 'no su command found' in the previous step. So, I believe my phone is ROOTED. **Correct me if I'm wrong.**

Tuy nhiên, khi tôi làm vậy adb root, tôi gặp adbd cannot run as root in production buildslỗi. Vì vậy, tôi nghĩ, tôi có thể phải làm thêm một số thứ ngoài những gì tôi đã làm ở trên. Tôi đã thử tất cả các giải pháp trong các câu hỏi SO sau:

Không có điều nào ở trên phù hợp với tôi. Tất cả những gì họ làm là cấp quyền truy cập ROOT BÊN TRONG SHELL. Tôi muốn adb rootlàm việc để có thể thực hiện các lệnh adb khác nhau mà KHÔNG đi vào trình bao.


5
không hoạt động trong android> 4.3. su bị thiếu.
drdrej

Câu trả lời:


35

adb rootLệnh thiết kế chỉ hoạt động trong các bản dựng phát triển (tức là enguserdebugro.debuggable=1theo mặc định). Vì vậy, để kích hoạt adb rootlệnh trên thiết bị đã root của bạn, chỉ cần thêm ro.debuggable=1dòng vào một trong các tệp sau:

/system/build.prop
/system/default.prop
/data/local.prop

Nếu bạn muốn adb shellbắt đầu roottheo mặc định - thì hãy thêm ro.secure=0vào.

Ngoài ra, bạn có thể sử dụng adbdnhị phân đã sửa đổi (không kiểm tra ro.debuggable)

Từ https://android.googlesource.com/platform/system/core/+/master/adb/daemon/main.cpp

#if defined(ALLOW_ADBD_ROOT)
// The properties that affect `adb root` and `adb unroot` are ro.secure and
// ro.debuggable. In this context the names don't make the expected behavior
// particularly obvious.
//
// ro.debuggable:
//   Allowed to become root, but not necessarily the default. Set to 1 on
//   eng and userdebug builds.
//
// ro.secure:
//   Drop privileges by default. Set to 1 on userdebug and user builds.

9
Tôi có thể lấy tệp thực thi đã biên dịch ở trên ở đâu?
Waqas Bukhary

3
Tôi thêm các giá trị mới cho ro.debuggable và ro.secure vào các tệp bạn đã chỉ định, nhưng chúng vẫn bị ghi đè sau mỗi lần khởi động lại và các thay đổi không có bất kỳ tác dụng nào.
Patryk Czachurski

31

Trong một số ROM thân thiện với nhà phát triển, bạn chỉ có thể bật Quyền truy cập gốc trong Cài đặt> Tùy chọn nhà phát triển> Quyền truy cập gốc . Sau đó adb rootsẽ có sẵn. Thật không may, nó không hoạt động với hầu hết các ROM có sẵn trên thị trường.


64
Tôi không thấy tùy chọn "Quyền truy cập gốc" trong tùy chọn nhà phát triển.
Amalgovinus

2
@Amalgovinus Tôi nghĩ nó phụ thuộc vào phòng bạn đang sử dụng. :)
NgaNguyenDuy

@NgaNguyenDuy Bạn có thể cho biết bạn đang dùng rom nào không?
Lobster Fighter vào

22

Tôi gặp sự cố này khi cố gắng root trình mô phỏng, tôi phát hiện ra đó là do tôi đang chạy trình giả lập Nexus 5x có Google Play trên đó. Đã tạo một trình giả lập khác không có google play và adb rootsẽ root thiết bị cho bạn. Hy vọng điều này sẽ giúp ai đó.


làm thế nào chúng ta có thể phân biệt cả hai trình giả lập?
Sanjay

@Sanjay khi bạn mở Trình quản lý thiết bị ảo Android, bạn sẽ thấy một tab dành cho Cửa hàng Play và bạn muốn đảm bảo rằng không có biểu tượng cửa hàng chơi nào hiện diện trên thiết bị bạn đang cố gắng root.
Andrew Steinmetz

1
2020, điều này đã giúp tôi nhưng tôi cần một cách để làm điều đó trên các thiết bị có bật cửa hàng chơi mà không cần điện thoại đã root nhưng không chắc liệu nó có khả thi hay không
trigster

8

Tôi sử dụng để vào chế độ su trong shell Abd

adb shell "su"


2
Trên Mac OS, tôi gặp lỗi "/ system / bin / sh: su: not found". Bất kỳ đề nghị xin vui lòng?
Sachin G

@SachinG Có thể bạn đã sử dụng sai loại dấu ngoặc kép? thử chạy cái nàyadb shell "su -c whoami"
gkpln3

@ gkpln3 Vẫn gặp lỗi tương tự. / system / bin / sh: su: not found
Sachin G

8

Tôi có một chiếc Samsung Galaxy Trend Plus (GT-S7580) đã root.

Chạy 'adb root' mang lại cho tôi lỗi tương tự 'adbd không thể chạy dưới dạng root trong bản dựng sản xuất'.

Đối với các thiết bị có Tùy chọn nhà phát triển -> Quyền truy cập root, hãy chọn "Chỉ ADB" để cung cấp quyền truy cập root adb cho thiết bị (theo gợi ý của NgaNguyenDuy ).

Sau đó, hãy thử chạy lệnh theo giải pháp tại Khởi chạy tập lệnh dưới dạng root thông qua ADB . Trong trường hợp của tôi, tôi chỉ muốn chạy lệnh 'netcfg rndis0 dhcp' và tôi đã thực hiện theo cách này:

adb shell "su -c netcfg rndis0 dhcp"

Vui lòng kiểm tra xem bạn có đang mắc lỗi nào khi chạy nó theo cách này không.

Nếu nó vẫn không hoạt động, hãy kiểm tra xem bạn đã root thiết bị đúng cách chưa. Nếu vẫn không may, hãy thử cài đặt ROM tùy chỉnh như Cyanogen Mod để 'adb root' hoạt động.


7

Bạn cần thay thế nhị phân adbd trong thư mục boot.img / sbin / thành một tệp có khả năng. Bạn cũng sẽ phải thực hiện một số chỉnh sửa default.prop.

Samsung dường như làm cho điều này khó khăn hơn các nhà cung cấp khác. Tôi có một số mã nhị phân adbd mà bạn có thể thử nhưng nó sẽ yêu cầu kiến ​​thức về giải mã và biên dịch lại boot.img với tệp nhị phân mới. Ngoài ra, nếu bạn có bộ nạp khởi động bị khóa ... điều này sẽ không xảy ra.

Ngoài ra Chainfire có một ứng dụng sẽ cấp quyền root adbd trong cửa hàng chơi: https://play.google.com/store/apps/details?id=eu.chainfire.adbd&hl=vi

Cuối cùng, nếu bạn đang cố gắng viết một tập lệnh windows với quyền SU, bạn có thể thực hiện việc này bằng cách sử dụng kiểu lệnh sau ... Tuy nhiên, ít nhất bạn sẽ cần cấp (trên điện thoại) SU quyền trong thời gian chạy của nó .. .

adb shell "su -c ls" <-list thư mục làm việc với quyền su. adb shell "su -c echo anytext> /data/test.file"

Đây chỉ là một vài ví dụ. Nếu bạn nói cụ thể những gì bạn đang cố gắng hoàn thành, tôi có thể đưa ra lời khuyên cụ thể hơn

-scosler


5

adbdcó một bộ sưu tập cờ / tùy chọn để cho phép truy cập root: ALLOW_ADBD_ROOT=1.

Lên đến Android 9: Nếu adbdtrên thiết bị của bạn được biên dịch mà không có cờ đó, nó sẽ luôn giảm đặc quyền khi khởi động và do đó "adb root" sẽ không giúp được gì cả. Tôi đã phải vá các cuộc gọi đến setuid(), setgid(), setgroups()và khả năng rút khỏi vụ nhị phân bản thân mình để có được một adbd rooted vĩnh viễn trên đọc ebook của tôi.

Với Android 10, điều này đã thay đổi; khi điện thoại / máy tính bảng được mở khóa ( ro.boot.verifiedbootstate == "orange"), thì chế độ gốc adb có thể thực hiện được trong mọi trường hợp.


1

Nếu bạn thực sự cần phải ADBchạy root, cách nhanh nhất và dễ nhất là cài đặt ROM tùy chỉnh Android và phổ biến nhất là CyanogenModnó có các Root Accesstùy chọn trong menu tùy chọn dành cho nhà phát triển, nơi bạn có thể chọn cấp quyền truy cập root apps and ADB. Tôi đã sử dụng CM trước đây nhưng vì nó không được phát triển nữa, tôi đã thử tìm kiếm một số giải pháp ngoài đó. Mặc dù CyanogenMod vẫn là một lựa chọn thay thế tốt vì nó không có bloatware.

Một giải pháp thay thế mà tôi đã tìm ra từ một người bạn đang sử adbd insecuredụng ứng dụng mà bạn có thể thử từ đây: https://forum.xda-developers.com/showthread.php?t=1687590 . Trong trường hợp của tôi, nó hoạt động tốt với nhân tùy chỉnh Android, nhưng không hoạt động với ROM gốc của Android (chỉ dành cho android vani). Bạn cũng có thể thử các lựa chọn thay thế khác như sửa đổi boot.imgROM Android.

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.