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 शेल चलाने की कोशिश कर रहे हैं; जब तक लक्ष्य डिवाइस पर आप रूट अनुमति तक / डेटा फ़ोल्डर तक नहीं पहुंच सकते।
वामसी

21
के बाद adb root>> adbd cannot run as root in production buildsक्या करना है?
d.popov

3
मैं तुम्हें एक जड़ें फोन की जरूरत है कि चलाने के लिए सक्षम होने के लिए लगता है
Caner

हाँ मैं जानता हूँ। लेकिन, जैसा कि आप देख रहे हैं कि वर्तमान में मेरे पास लेखक की पोस्ट पर टिप्पणी करने के लिए प्रतिष्ठा नहीं है, लेकिन मुझे यह समस्या थी, इसलिए एक ही तरीका था कि नई पोस्ट जोड़ें, या डुप्लिकेट थ्रेड को खोलें, इसलिए मैंने एक पोस्ट जोड़ने का फैसला किया।
d.popov

1
फोन जड़ दिया गया था, लेकिन ओएस के साथ कुछ गलत हो गया। रिबूट पर होम स्क्रीन लोड करने के बाद यह जम गया था। वैसे भी - स्टॉक रॉम के साथ फोन को चमकाने वाले नंद्रोइड ने समस्या को हल किया।
d.popov

जवाबों:


130

के अनुसार adb help:

adb root                     - restarts the adbd daemon with root permissions

जिसने वास्तव में मेरे लिए इस मुद्दे को हल कर दिया।


2
यदि आपने पहले से ऐसा नहीं किया है तो आपको adb के लिए रूट एक्सेस को सक्षम करने की भी आवश्यकता होगी - @ Macarse का उत्तर देखें।
पॉल व्हिटेकर

दरअसल, तात्कालिक समस्या यह है कि एंड्रॉइड अभी भी (आपके लेखन के दो साल बाद) एक findकमांड के साथ जहाज नहीं करता है । कहा कि, बिना adb के रूट के रूप में चल रहा है यह सच है कि आप किसी भी अन्य कमांड के साथ / डेटा विभाजन को नीचे नहीं ला पाएंगे, या तो (हालांकि आप अभी भी इसके भीतर स्पष्ट स्थानों तक पहुंचने में सक्षम हो सकते हैं)।
क्रिस स्ट्रैटन

1
यह सच नहीं है। आपको बस सही उपयोगकर्ता पर स्विच करना होगा। नीचे मेरा जवाब देखें: stackoverflow.com/a/38292436/342947
फैबियन ज़ींडल

2
आपका उत्तर स्पष्ट नहीं है। क्या इस टिप्पणी को डिवाइस पर या कंप्यूटर पर निष्पादित किया जाना चाहिए?
सौरॉन

23
adbd cannot run as root in production buildsजब आप दौड़ते हैं तो आपको क्या मिलता है adb root। यह हाल ही में एंड्रॉइड एसडीके के साथ मैकओएस इंस्टॉल पर है। मुझे नहीं लगता कि यह उत्तर बिल्कुल सही है, और मैंने अन्य लोगों को इस समस्या का उल्लेख करते देखा है। इतने अपवित्र क्यों?
एंड्रयू कोस्टर

40

बिना रूट किए : यदि आप अपने फोन को रूट नहीं कर सकते हैं, तो run-as <package>अपने एप्लिकेशन के डेटा तक पहुंचने में सक्षम होने के लिए कमांड का उपयोग करें।

उदाहरण:

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

exec-out एक शेल शुरू करने और आउटपुट का प्रबंधन किए बिना कमांड निष्पादित करता है।


9
यह केवल डीबग किए जाने वाले ऐप्स के लिए काम करता है - यानी, आप इसे उन ऐप्स के लिए उपयोग कर सकते हैं, जिन्हें आप विकसित कर रहे हैं, लेकिन यह आपके ऐप के प्रोडक्शन रिलीज़, या किसी और के ऐप के लिए काम नहीं करना चाहिए।
क्रिस स्ट्रैटन

2
run-as: Could not set capabilities: Operation not permittedमेरे लिए यह रिटर्न
टॉम एम

1
यह एमुलेटर एपीआई 29 के लिए काम करता है, और .debugडिबग ऐप्स के लिए ऐप के पैकेज के अंत में उपसर्ग
लगाना

19

"अनुमति अस्वीकृत" का कारण यह है कि आपकी Android मशीन सही ढंग से रूट नहीं की गई है। $आपने शुरू करने के बाद क्या देखा adb shell? यदि आपने अपनी मशीन को सही ढंग से निहित किया है, तो आपको #इसके बजाय देखा होगा।

यदि आप देखते हैं $, तो टाइप करके सुपर उपयोगकर्ता मोड में प्रवेश करने का प्रयास करें su। यदि रूट सक्षम किया गया है, तो आप #- पासवर्ड मांगे बिना - देखेंगे ।


2
एक बार जब आप अपनी मशीन को सही ढंग से रूट कर लेते हैं, तो आपको अपने suकदम को काम करने से पहले एडीबी रूट एक्सेस को सक्षम करने और रूट मोड में एडीबी चलाने की आवश्यकता होगी - देखें @ Macarse's और @ रोमन के जवाब।
पॉल व्हिटकेर

1
नहीं, "अनुमति से इनकार" का कारण यह है कि कोई findआदेश नहीं है ।
क्रिस स्ट्रैटन

@ChrisStratton आपने मेरी जान बचाई, मैं पहले से ही adb शेल के अंदर से शेल कमांड लिख रहा था
दिव्यांशु कुशवाहा

1
मैं एंड्रॉइड सिम्युलेटर में फाइलें देखने की कोशिश कर रहा हूं। मैं '$' के बाद 'su' टाइप करता हूं और यह कहता है: su: नहीं मिला
पीट एल्विन

5

आपको डेवलपर सेटिंग मेनू से adb रूट को सक्रिय करने की आवश्यकता हो सकती है। यदि आप adb rootcmd लाइन से चलते हैं तो आप प्राप्त कर सकते हैं:

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

एक बार जब आप रूट विकल्प (ADB केवल या Apps और ADB) को सक्रिय करते हैं तो adb पुनः आरंभ हो जाएगा और आप cmos लाइन से रूट का उपयोग कर पाएंगे।


3
यदि आप अपने सेटिंग मेनू में 'डेवलपर विकल्प' आइटम नहीं देख सकते हैं, तो इसे दिखाई देने के तरीके के विवरण के लिए यह उत्तर देखें। (संक्षेप में: सेटिंग> फोन के बारे में> बिल्ड नंबर> 7 बार टैप करें (!)।
पॉल व्हिटकेकर

1
लेकिन एक बार में, मैं यहाँ कुछ भी नहीं देख रहा हूँ! इसे क्या कहना चाहिए?
जॉनीटेक्स

36
यह विकल्प स्टॉक एंड्रॉइड बिल्ड में मौजूद नहीं है - यदि यह बिल्कुल भी मौजूद है, तो यह किसी के aftermarket रोम तक ही सीमित होगा।
क्रिस स्ट्रैटन

क्या GUI के बिना ऐसा करने का कोई तरीका है? मुझे लगता है कि इसके लिए एक विकल्प है /system/build.prop, लेकिन मैं इसे नहीं ढूँढ सकता।
जेरोन

मुझे सेटिंग देखने के लिए मेनू कहां मिलेगा?
Martinkunev

0

स्लैश से सावधान रहें, "/" के लिए "/" बदलें, इस तरह: adb.exe पुश SuperSU-v2.79-20161205182033.apk / storage


0

data विभाजन गैर रूट उपयोगकर्ता के लिए सुलभ नहीं है, यदि आप इसे एक्सेस करना चाहते हैं तो आपको अपना फोन रूट करना होगा।

adb root सभी उत्पाद के लिए काम नहीं करते हैं और फोन बिल्ड प्रकार पर निर्भर करते हैं।

एंड्रॉइड स्टूडियो पर नए संस्करण में आप /data/dataडिबग करने योग्य एप्लिकेशन के लिए पथ का पता लगा सकते हैं।



-4

अपने cmdव्यवस्थापक के रूप में चलाएं यह मेरे मुद्दों को हल करेगा। धन्यवाद।


नहीं, प्रश्न एंड्रॉइड से इनकार करने की चिंता करता है, विंडोज से नहीं।
क्रिस स्ट्रैटन

-5

मेरे लिए समाधान था ( डेविड Ljung मैडिसन पोस्ट के लिए )

  1. फोन को रूट करें और सुनिश्चित करें कि यह रूट है
  2. Adb सर्वर (adbd) को रूट के रूप में नहीं चलाया गया इसलिए adbd असुरक्षित ऐप डाउनलोड और इंस्टॉल किया गया
  3. पुनः आरंभ करें अदब adb kill-server
  4. इसे चलाएं और फूल की तरह काम करें!
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.