Android: adb: การอนุญาตถูกปฏิเสธ


93

สิ่งที่ฉันพิมพ์หลังจากadb shellล้มเหลวด้วย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

ความคิดใด ๆ ?


คุณกำลังพยายามเรียกใช้เชลล์ adb ในโปรแกรมจำลองหรืออุปกรณ์เป้าหมายที่ไหน หากบนอุปกรณ์เป้าหมายคุณไม่สามารถเข้าถึงโฟลเดอร์ / data ได้จนกว่าคุณจะได้รับอนุญาตจาก root
Vamsi

20
หลังadb root>> adbd cannot run as root in production buildsทำยังไง?
d.popov

3
ฉันเดาว่าคุณต้องมีโทรศัพท์ที่รูทเพื่อให้สามารถใช้งานได้
Caner

ใช่ฉันรู้. แต่อย่างที่คุณเห็นในตอนนี้ฉันไม่มีชื่อเสียงในการแสดงความคิดเห็นในโพสต์ของผู้เขียน แต่ฉันมีปัญหานี้ดังนั้นวิธีเดียวคือเพิ่มโพสต์ใหม่หรือเปิดเธรดที่ซ้ำกันดังนั้นฉันจึงตัดสินใจเพิ่มโพสต์
d.popov

1
โทรศัพท์ได้รับการรูท แต่มีบางอย่างผิดพลาดกับระบบปฏิบัติการ มันค้างหลังจากโหลดหน้าจอหลักเมื่อรีบูต อย่างไรก็ตาม - nandroid กระพริบโทรศัพท์ด้วย ROM หุ้นช่วยแก้ปัญหาได้
d.popov

คำตอบ:


130

ตามadb help:

adb root                     - restarts the adbd daemon with root permissions

ซึ่งแก้ไขปัญหาให้ฉันได้อย่างแท้จริง


2
คุณจะต้องเปิดใช้งานการเข้าถึงรูทสำหรับ adb หากคุณยังไม่ได้ดำเนินการ - ดูคำตอบของ @ Macarse
Paul Whittaker

จริงๆแล้วปัญหาเฉพาะหน้าคือ android ยังไม่ได้ (สองปีหลังจากที่คุณเขียน) มาพร้อมกับfindคำสั่ง ที่กล่าวว่าหากไม่มี adb ทำงานในฐานะรูทมันก็เป็นจริงคุณจะไม่สามารถลง / data partition ด้วยคำสั่งอื่น ๆ ได้เช่นกัน (แม้ว่าคุณจะยังสามารถเข้าถึงตำแหน่งที่ชัดเจนภายในได้ก็ตาม)
Chris Stratton

1
นี่ไม่เป็นความจริง. คุณต้องเปลี่ยนไปใช้ผู้ใช้ที่ถูกต้อง ดูคำตอบของฉันด้านล่าง: stackoverflow.com/a/38292436/342947
Fabian Zeindl

2
คำตอบของคุณไม่ชัดเจน ความคิดเห็นนี้ควรดำเนินการบนอุปกรณ์หรือบนคอมพิวเตอร์?
Sauron

23
adbd cannot run as root in production buildsadb rootคือสิ่งที่คุณได้รับเมื่อคุณเรียกใช้ นี่คือการติดตั้ง MacOS ล่าสุดที่มี Android SDK ล่าสุด ฉันไม่คิดว่าคำตอบนี้ถูกต้อง แต่อย่างใดและฉันเคยเห็นคนอื่นพูดถึงปัญหานี้ ทำไมโหวตเยอะจัง?
Andrew Koster

40

โดยไม่ต้องรูท : หากคุณไม่สามารถรูทโทรศัพท์ของคุณให้ใช้run-as <package>คำสั่งเพื่อให้สามารถเข้าถึงข้อมูลของแอปพลิเคชันของคุณ

ตัวอย่าง:

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

exec-out รันคำสั่งโดยไม่เริ่มเชลล์และทำให้เอาต์พุตแตก


9
ใช้งานได้กับแอปที่สร้างขึ้นเพื่อแก้ปัญหาได้เท่านั้นกล่าวคือคุณสามารถใช้กับแอปที่คุณกำลังพัฒนาได้ แต่ไม่ควรใช้กับแอปเวอร์ชันที่ใช้งานจริงหรือแอปของใครก็ตาม
Chris Stratton

2
คืนนี้run-as: Could not set capabilities: Operation not permittedให้ฉัน
Tom M

1
ใช้งานได้กับ emulator API 29 และอย่าลืมใส่.debugคำนำหน้าต่อท้ายแพ็คเกจของแอพสำหรับแก้ปัญหาแอพ:
ultraon

19

สาเหตุของ "การอนุญาตถูกปฏิเสธ" เนื่องจากเครื่อง Android ของคุณไม่ได้รับการรูทอย่างถูกต้อง คุณเห็น$หลังจากที่คุณเริ่มadb shellหรือไม่? หากคุณรูทเครื่องของคุณอย่างถูกต้องคุณจะได้เห็น#แทน

ถ้าคุณเห็นการพยายามเข้าสู่โหมดผู้ใช้ซูเปอร์โดยการพิมพ์$ suหากเปิดใช้งานรูทคุณจะเห็น#- โดยไม่ต้องถามรหัสผ่าน


2
เมื่อคุณรูทเครื่องของคุณอย่างถูกต้องคุณจะต้องเปิดใช้งานการเข้าถึงรูท adb และเรียกใช้ adb ในโหมดรูทก่อนที่suขั้นตอนของคุณจะทำงานได้ - ดูคำตอบของ @ Macarse และ @ Roman
Paul Whittaker

1
ไม่เหตุผลสำหรับ "การอนุญาตถูกปฏิเสธ" คือไม่มีfindคำสั่ง
Chris Stratton

@ChrisStratton คุณช่วยชีวิตฉันฉันยังเขียนคำสั่งเชลล์จากในเชลล์ adb อยู่แล้ว
Divyanshu Kushwaha

1
ฉันกำลังพยายามดูไฟล์ในโปรแกรมจำลอง Android ฉันพิมพ์ 'su' หลัง '$' แล้วมันขึ้นว่า su: not found
Pete Alvin

5

คุณอาจต้องเปิดใช้งาน adb root จากเมนูการตั้งค่าของนักพัฒนา หากคุณเรียกใช้adb rootจากบรรทัด cmd คุณจะได้รับ:

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

เมื่อคุณเปิดใช้งานตัวเลือก root (เฉพาะ ADB หรือ Apps และ ADB) adb จะรีสตาร์ทและคุณจะสามารถใช้ root จากบรรทัด cmd ได้


3
หากคุณไม่เห็นรายการ "ตัวเลือกสำหรับนักพัฒนา" ในเมนูการตั้งค่าของคุณโปรดดูคำตอบนี้เพื่อดูรายละเอียดวิธีการแสดง (โดยย่อ: การตั้งค่า> เกี่ยวกับโทรศัพท์> หมายเลขบิลด์> แตะ 7 ครั้ง (!))
Paul Whittaker

1
แต่เมื่อเข้าไปแล้วฉันไม่เห็นอะไรเลย! มันควรจะพูดอะไร?
JohnyTex

36
ตัวเลือกนี้ไม่มีอยู่ในรุ่น Android ในสต็อก - หากมีอยู่เลยมันจะถูก จำกัด ไว้ที่ ROM หลังการขายของใครบางคน
Chris Stratton

มีวิธีดำเนินการโดยไม่ใช้ GUI หรือไม่? ฉันเดาว่ามีตัวเลือกสำหรับมัน/system/build.propแต่ฉันหาไม่เจอ
Jeroen

ฉันจะค้นหาเมนูเพื่อค้นหาการตั้งค่าได้ที่ไหน
martinkunev

0

ระวังด้วยเครื่องหมายทับเปลี่ยน "\" สำหรับ "/" เช่นนี้ adb.exe กด SuperSU-v2.79-20161205182033.apk / storage


0

data พาร์ติชันไม่สามารถเข้าถึงได้สำหรับผู้ใช้ที่ไม่ใช่รูทหากคุณต้องการเข้าถึงคุณต้องรูทโทรศัพท์ของคุณ

adb root ใช้ไม่ได้กับผลิตภัณฑ์ทั้งหมดและขึ้นอยู่กับประเภทการสร้างโทรศัพท์

ในเวอร์ชันใหม่บน Android Studio คุณสามารถสำรวจ/data/dataเส้นทางสำหรับแอปที่แก้ไขข้อบกพร่องได้



-4

เรียกใช้คุณcmdในฐานะผู้ดูแลระบบสิ่งนี้จะช่วยแก้ปัญหาของฉันได้ ขอบคุณ.


ไม่คำถามเกี่ยวข้องกับการปฏิเสธจาก Android ไม่ใช่จาก Windows
Chris Stratton

-5

ทางออกสำหรับฉันคือ (ขอบคุณโพสต์ David Ljung Madison )

  1. รูทโทรศัพท์และตรวจสอบให้แน่ใจว่าได้รูทแล้ว
  2. เซิร์ฟเวอร์ Adb (adbd) ไม่ได้ทำงานในฐานะรูทดังนั้นจึงดาวน์โหลดและติดตั้งแอป adbd ที่ไม่ปลอดภัย
  3. รีสตาร์ท adb adb kill-server
  4. เรียกใช้และทำงานเหมือนดอกไม้!
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.