Android: adb: Quyền bị Từ chối


91

Bất cứ điều gì tôi nhập sau khi adb shellnó không thành công với Permission denied:

D:\android-sdk-windows\platform-tools>adb shell find /data -name *.db
find: permission denied

D:\android-sdk-windows\platform-tools>adb shell test
test: permission denied

D:\android-sdk-windows\platform-tools>adb remount
remount failed: No such file or directory

Có ý kiến ​​gì không?


Bạn đang cố gắng chạy adb shell, trong trình mô phỏng hoặc thiết bị đích ở đâu; nếu trên thiết bị mục tiêu, bạn không thể truy cập vào thư mục / data cho đến khi bạn có quyền root.
Vamsi

20
sau adb root>> adbd cannot run as root in production buildsphải làm gì?
d.popov 14/11/12

3
Tôi đoán bạn cần một chiếc điện thoại bắt nguồn để có thể chạy mà
Caner

Vâng tôi biết. Tuy nhiên, như bạn thấy hiện tại tôi không có uy tín để nhận xét bài đăng của Tác giả, nhưng tôi đã gặp vấn đề này, vì vậy cách duy nhất là thêm bài đăng mới hoặc mở chuỗi trùng lặp, vì vậy tôi quyết định thêm bài đăng.
d.popov

1
điện thoại đã được root nhưng đã xảy ra lỗi với hệ điều hành. Nó bị đóng băng sau khi tải màn hình chính khi khởi động lại. Dù sao - nandroid flash điện thoại với ROM gốc đã giải quyết được vấn đề.
d.popov

Câu trả lời:


129

Theo adb help:

adb root                     - restarts the adbd daemon with root permissions

Mà thực sự đã giải quyết vấn đề cho tôi.


2
Bạn cũng sẽ cần bật quyền truy cập root cho adb nếu bạn chưa làm như vậy - hãy xem câu trả lời của @ Macarse.
Paul Whittaker

Trên thực tế, vấn đề trước mắt là android vẫn không (hai năm sau khi bạn viết) gửi findlệnh. Điều đó nói rằng, nếu không có adb chạy dưới dạng root thì đúng là bạn sẽ không thể xuống phân vùng / data bằng bất kỳ lệnh nào khác (mặc dù bạn vẫn có thể truy cập các vị trí rõ ràng bên trong nó).
Chris Stratton

1
Đây không phải là sự thật. Bạn chỉ cần chuyển sang đúng người dùng. Xem câu trả lời của tôi dưới đây: stackoverflow.com/a/38292436/342947
Fabian Zeindl

2
Câu trả lời của bạn không rõ ràng. Nhận xét này nên được thực thi trên thiết bị hay trên máy tính?
Sauron

20
adbd cannot run as root in production buildslà những gì bạn nhận được khi bạn chạy adb root. Đây là bản cài đặt MacOS gần đây với Android SDK cập nhật. Tôi không nghĩ câu trả lời này đúng chút nào, và tôi đã thấy những người khác đề cập đến vấn đề này. Tại sao rất nhiều ủng hộ?
Andrew Koster

40

Không cần root : Nếu bạn không thể root điện thoại của mình, hãy sử dụng run-as <package>lệnh để có thể truy cập dữ liệu của ứng dụng của bạn.

Thí dụ:

$ adb exec-out run-as com.yourcompany.app ls -R /data/data/com.yourcompany.app/

exec-out thực thi lệnh mà không cần khởi động trình bao và xử lý đầu ra.


9
Điều này chỉ hoạt động đối với các ứng dụng được xây dựng để có thể gỡ lỗi - tức là bạn có thể sử dụng nó cho các ứng dụng bạn đang phát triển nhưng nó sẽ không hoạt động với các bản phát hành chính thức của ứng dụng của bạn hoặc ứng dụng của bất kỳ ai khác.
Chris Stratton

2
Điều này trả lại run-as: Could not set capabilities: Operation not permittedcho tôi
Tom M

Nó hoạt động cho API giả lập 29 và đừng quên đặt .debugtiền tố vào cuối gói ứng dụng để gỡ lỗi ứng dụng:
ultraon

19

Lý do "quyền bị từ chối" là do máy Android của bạn chưa được root chính xác. Bạn có thấy $sau khi bắt đầu adb shellkhông? Nếu bạn đã root máy một cách chính xác, bạn sẽ thấy #thay thế.

Nếu bạn thấy $, hãy thử vào chế độ Người dùng siêu bằng cách nhập su. Nếu Root được bật, bạn sẽ thấy #- mà không cần hỏi mật khẩu.


2
Khi bạn đã root máy một cách chính xác, bạn sẽ cần phải bật quyền truy cập root adb và chạy adb ở chế độ root trước khi subước của bạn có thể hoạt động - xem câu trả lời của @ Macarse và @ Roman.
Paul Whittaker

1
Không. Lý do cho "quyền bị từ chối" là không có findlệnh.
Chris Stratton

@ChrisStratton Bạn đã cứu mạng tôi, tôi cũng đã được ghi chép lại lệnh shell từ bên trong adb shell đã
Divyanshu Kushwaha

1
Tôi đang cố gắng xem các tệp trong trình mô phỏng Android. Tôi gõ 'su' sau khi '$' và nó nói: su: không tìm thấy
Pete Alvin

5

Bạn có thể cần kích hoạt gốc adb từ menu cài đặt dành cho nhà phát triển. Nếu bạn chạy adb roottừ dòng cmd, bạn có thể nhận được:

root access is disabled by system setting - enable in settings -> development options

Sau khi bạn kích hoạt tùy chọn gốc (chỉ ADB hoặc Ứng dụng và ADB), adb sẽ khởi động lại và bạn sẽ có thể sử dụng quyền root từ dòng cmd.


3
Nếu bạn không thể thấy mục 'Tùy chọn nhà phát triển' trong menu Cài đặt, hãy xem câu trả lời này để biết chi tiết về cách hiển thị mục này. (Nói tóm lại: Cài đặt> Giới thiệu về điện thoại> Số Build> Tap 7 lần ()!.)
Paul Whittaker

1
Nhưng khi đã vào, tôi không thấy gì ở đây cả! Nó nên nói gì?
JohnyTex

36
Tùy chọn này không tồn tại trong các bản dựng Android gốc - nếu nó tồn tại, nó sẽ bị giới hạn trong ROM hậu mãi của ai đó.
Chris Stratton

Có cách nào để thực hiện việc này mà không cần GUI không? Tôi đoán có một tùy chọn cho nó /system/build.prop, nhưng tôi không thể tìm thấy nó.
Jeroen

Tôi tìm menu để tìm cài đặt ở đâu?
martinkunev

0

Hãy cẩn thận với dấu gạch chéo, thay đổi "\" cho "/", như sau: adb.exe push SuperSU-v2.79-20161205182033.apk / storage


0

data phân vùng không thể truy cập cho người dùng không root, nếu bạn muốn truy cập nó, bạn phải root điện thoại của bạn.

adb root không hoạt động cho tất cả các sản phẩm và phụ thuộc vào loại cấu tạo điện thoại.

trong phiên bản mới trên android studio, bạn có thể khám phá /data/datađường dẫn cho các ứng dụng có thể gỡ lỗi.



-4

Chạy cmdvới tư cách quản trị viên của bạn, điều này sẽ giải quyết các vấn đề của tôi. Cảm ơn.


Không. Câu hỏi liên quan đến sự từ chối từ Android, không phải từ Windows.
Chris Stratton

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.