क्या मेरे लिए Adb शेल को रूट के रूप में 'su' में टाइप किए बिना चलाने का कोई तरीका है?


45

क्या मेरे लिए Adb शेल को बिना टाइप किए रूट के रूप में चलाने का कोई तरीका है su? मैं खोल में जाने के बिना रूट एक्सेस करने में सक्षम होना चाहता हूं।

जवाबों:


40

यदि मैं आपके प्रश्न को सही ढंग से समझ रहा हूं, तो आप पूछ रहे हैं कि आपके द्वारा चलाए जाने पर रूट एक्सेस स्वचालित रूप से कैसे प्राप्त किया adb shellजाए, ताकि आपको शेल में जाने और suअपने फोन पर रूट के रूप में कमांड निष्पादित करने के लिए टाइप न करना पड़े ।

यह आपके बूट विभाजन में एक ध्वज द्वारा नियंत्रित किया जाता है, जिसे अधिकांश कस्टम रोम ने डिफ़ॉल्ट रूप से रूट अनुमति देने के लिए संशोधित किया है। यदि आप $उपयोग करते समय गिर जाते हैं adb shellतो आपके पास दो स्थायी विकल्प होते हैं और एक अस्थायी एक होता है (अस्थायी अर्थ है कि अगर आप रिबूट करते हैं तो यह छड़ी नहीं करता है):

  1. एक ROM फ़्लैश करें जिसमें संशोधन शामिल है
  2. एक कस्टम boot.img बनाएं और इसे अपने फोन पर फ्लैश करें
  3. adbdरूट अनुमतियों के साथ अपने डिवाइस पर पुनरारंभ करें

नंबर 2 वास्तव में उतना मुश्किल नहीं है, लेकिन अगर आप लापरवाह हैं तो यह कुछ खतरनाक हो सकता है। यहां एक विकी लेख है जो प्रक्रिया की व्याख्या करता है और इसमें आपकी मदद करने के लिए पर्ल स्क्रिप्ट के एक जोड़े शामिल हैं। ये निर्देश लिनक्स / यूनिक्स वातावरण को मानते हैं। मैंने व्यक्तिगत रूप से फेडोरा लिनक्स पर इन निर्देशों का उपयोग किया है और आपको बता सकता है कि वे काम करते हैं, लेकिन मुझे मैक जैसे अन्य * निक्स वातावरण के बारे में नहीं पता है। मुझे किसी भी समान विंडोज निर्देशों का पता नहीं है, लेकिन मैं कुछ डाउन ट्रैक करने की कोशिश कर सकता हूं यदि आप विंडोज पर हैं। विभिन्न उपकरणों के अलग-अलग टेबल का उपयोग करने के बाद से सटीक कमांड फोन से फोन पर कुछ हद तक भिन्न होंगे।

आम तौर पर बोलना, हालाँकि, आपको अपने फोन से अपने वर्तमान बूट.मग को खींचने की जरूरत है, इसे अनपैक करें, रैमडिस्क निकालें, और default.prop फ़ाइल ढूंढें । यह एक प्लेनटेक्स्ट फाइल है, जिसे आपको टेक्स्ट एडिटर में खोलने की जरूरत है और फिर वह लाइन ढूंढें जिसमें वैल्यू हो ro.secure। यदि रेखा कहती है ro.secure=1तो आपको इसे बदलने की आवश्यकता है ro.secure=0। उसके बाद आप रैमडिस्क और बूट.मग को फिर से पैक कर सकते हैं, फिर इसे अपने फोन पर फ्लैश कर सकते हैं। एक बार जब आप रिबूट करते हैं, तो #जब भी आप adb shellबिना रन बनाए प्रदर्शन करेंगे, आपको एक संकेत के साथ बधाई दी जाएगी su

वैकल्पिक रूप से, यदि आप एक कस्टम रॉम का उपयोग कर रहे हैं, लेकिन इसमें यह संशोधन नहीं है, तो आप रॉम को अनज़िप कर सकते हैं और बूट कर सकते हैं। ऊपर दिए गए चरणों का उपयोग करके इसके साथ शामिल किया गया। फिर आप नए संशोधित boot.img के साथ ROM को ज़िप कर सकते हैं और ज़िप फ़ाइल को फ्लैश कर सकते हैं जैसा कि आप सामान्य रूप से करते हैं।

यह शायद बिना कहे चला जाता है, लेकिन ऐसा करते समय सावधान रहें । अपने बूट विभाजन के साथ मेसिंग आपके फ़ोन को आसानी से मिटा सकता है और आपको HBoot के माध्यम से पुनर्प्राप्त करने के लिए मजबूर कर सकता है। मैं अत्यधिक फास्टबूट के परीक्षण की सिफारिश करूंगा ताकि यह सुनिश्चित हो सके कि आप विस्तारित फास्टबूट कमांड का उपयोग कर सकते हैं और एक रिकवरी कर सकते हैं। यह आपके मॉडल के आधार पर थोड़ा भिन्न होता है, लेकिन अधिकांश फोनों में कुछ प्रकार के डेस्कटॉप सॉफ़्टवेयर होते हैं जिन्हें फ़ोन को फिर से चलाने के लिए भी चलाया जा सकता है।


तीसरा विकल्प यह है कि कई मामलों में adbdआपके डिवाइस पर रूट विशेषाधिकारों के साथ पुनरारंभ करना संभव हो सकता है । एक संभावना adb rootएक पीसी टर्मिनल से निष्पादित करने के लिए है, हालांकि यह सभी ROM कॉन्फ़िगरेशन पर काम नहीं करेगा (ROM को "userdebug" के रूप में बनाया जाना चाहिए)। आप चैनफायर के एडबर्ड असुरक्षित ऐप को भी आज़मा सकते हैं । यह एक रिबूट के पार नहीं रहेगा, इसलिए आपको या तो ऐप का उपयोग करने की आवश्यकता होगी या adb rootफिर किसी भी समय आप अपने फोन को पुनः आरंभ करेंगे।


क्या रूट अनुमति के साथ फोन बूट भी करता है? सुरक्षा मुद्दा हो सकता है।
मैथ्यू पढ़ें

1
@ मैथ्यू: AFAIK, यह केवल adbdडिफ़ॉल्ट रूप से फोन पर रूट अनुमति देने की अनुमति देता है। एंड्रॉइड टीम के एक सदस्य का एक पोस्ट है जो इसका तात्पर्य करता है, लेकिन इसे स्पष्ट रूप से नहीं कहता है। इस के लिए प्रतिबद्ध AOSP के लिए भी संकेत मिलता है कि यह केवल एक ध्वज है कि adbdस्टार्टअप पर जाँच करता है (मैं इसे कहीं और स्रोत में नहीं दिख रहा है)। जैसा कि मैंने उल्लेख किया है, कस्टम रोम का अधिकांश हिस्सा जो मैंने देखा है (सीएम शामिल है) ने इसे 0 पर सेट किया है
eldarerathis

मैं कहूंगा कि मैं उपरोक्त पर 100% नहीं हूं, हालांकि। मुझे डिफ़ॉल्ट.प्रॉप फ़ाइल से संबंधित कोई भी आधिकारिक दस्तावेज़ नहीं मिल सकता है, हालाँकि शायद आज रात मेरा गूगल-
फ़्यूज़

बस adb rootऑटो-सु मोड में adbd को पुनः आरंभ करने के लिए कमांड की खोज की , जाहिर तौर पर यह इस पर निर्भर करता है। मुझे लगता है कि आप इसके बारे में सिर्फ एक झंडा होने के बारे में सही थे, हालांकि।
मैथ्यू पढ़ें

1
@MatthewRead: मेरे द्वारा वास्तव में लिंक किए गए कमिट में स्रोत कोड में उस प्रभाव के लिए एक टिप्पणी है :) // ... except we allow running as root in userdebug builds if the service.adb.root property has been set by the "adb root" command"। संयोग से, यह कैसे जलाने आग के लिए BurritoRoot का पहला संस्करण काम किया, IIRC।
एल्डररैथिस

15

यदि आप फोन रूट करते हैं तो आप "su -c" कमांड के साथ कमांड चला सकते हैं।

फ़ोन उत्पाद जानकारी प्राप्त करने के लिए build.prop फ़ाइल पर कैट कमांड का एक उदाहरण यहाँ दिया गया है।

adb shell "su -c 'cat /system/build.prop |grep "product"'"

यह रूट की अनुमति देता है और '' के अंदर कमांड चलाता है

5 अंत उद्धरणों पर ध्यान दें, यह आवश्यक है कि आप अपने सभी अंत उद्धरणों को बंद करें या आपको एक त्रुटि मिलेगी।

स्पष्टीकरण के लिए प्रारूप इस प्रकार है।

adb shell "su -c '[your command goes here]'"

सुनिश्चित करें कि आप कमांड दर्ज करते हैं ठीक उसी तरह जिस तरह से आप इसे खोलते समय सामान्य रूप से चलाते हैं।

इसे आज़माएँ, आशा है कि इससे मदद मिलेगी।



1

क्या आप के लिए रूट के रूप में चलाने की कोशिश कर रहे हैं? आप कह रहे हैं कि आप एडीबी शेल को रूट के साथ चलाना चाहते हैं, लेकिन आप एडीबी शेल का उपयोग नहीं करना चाहते हैं? क्या आप स्पष्ट कर सकते हो?

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


मैं इसे चलाने के लिए शेल में जाने के बजाय अपने टर्मिनल से adb शेल gdbserver चलाना चाहता हूं
Hank

2
@ हांक: किसी भी उपयोगी काम को करने के लिए एक टर्मिनल को लगभग हमेशा एक शेल से जुड़ा होना चाहिए; शायद आपको "टर्मिनल" और "शेल" की अपनी परिभाषा को स्पष्ट करना चाहिए, क्योंकि आपको लगता है कि मानक लिनक्स / एंड्रॉइड पार्लियांस की तुलना में उनका अलग विचार है
रेयान

तो आप कर सकते हैं adb shell psया adb shellफिर psचल रही प्रक्रिया सूची प्राप्त करने के लिए। इसलिए कुछ चीज़ों को रूट एक्सेस की आवश्यकता होती है, मैं पूर्व को करने में सक्षम होना चाहता हूं।
हांक

1
कारण "क्यों" (विशेष रूप से जहां gdbserver का संबंध है) विकास मशीन पर चलने वाली स्क्रिप्ट में क्षमता का उपयोग करने में सक्षम होगा। हालाँकि, स्क्रिप्ट के लिए यह संभव है कि एडीबी एक इंटरेक्टिव शेल के रूप में क्या सोचता है, इसलिए एडब डिफॉल्ट को रूट करना वास्तव में उस कारण के लिए आवश्यक नहीं है।
क्रिस स्ट्रैटन

1

एक विकल्प के रूप में, आप फोन पर अपनी स्क्रिप्ट लिख सकते हैं और उदाहरण के लिए, बस इसे निष्पादित करें:

adb shell sh /sdcard/myscript.sh

स्क्रिप्ट आपके हस्तक्षेप के बिना खुद को ऊंचा कर सकती है (यह मानते हुए कि सुपरयूज़र अनुमोदन को याद रखने के लिए सेट है), उदाहरण के लिए:

su
pm setInstallLocation 1

मैंने बस सफलता के साथ अपने फोन पर ऐसा किया, एकमात्र समस्या यह है कि मुझे यह पता नहीं चला है कि एडीबी शेल सत्र को कैसे साफ किया जाए। मुझे विंडोज़ कमांड प्रॉम्प्ट पर लौटने के लिए अपने विंडोज शेल में Ctrl-C करना होगा - अन्यथा adb बस #प्रॉम्प्ट पर बैठता है और इनपुट स्वीकार नहीं करता है।


0

मैं मरम्मत के होम बटन की विफलता के लिए उपयोग करता हूं


अदब उपकरण

adb खोल su -c commands

या

adb root shell sqlite3 /data/data/com.android.providers.settings/dat डेटाबेस/settings.db "INSERT INTO Secure (नाम, मूल्य) VALUES ('डिवाइस -प्रोसेसर', '1');"

adb मार-सर्वर


-1

आप suid bit को अपने 'sh' पर भी सेट कर सकते हैं। मैं बिजीबॉक्स का उपयोग कर रहा हूं, इसलिए निर्देश आपके सेटअप से मेल नहीं खा सकते हैं:

  1. अदब का खोल
  2. सु
  3. माउंट-रिम रिमाउंट, आरडब्ल्यू / सिस्टम (या: एडीबी रिमाउंट)
  4. ls -la / system / bin / sh lrwxr-xr-x root shell 2012-11-10 15:20 sh -> mhh
  5. chmod 4755 / प्रणाली / बिन / श
  6. ls -la / system / bin / mksh
    -rwsr-xr-x root shell 157520 2012-11-10 09:54 mksh (नोटिस सुइड बिट सेट है)
  7. ^ डी
  8. अदब का खोल

और आपको रूट प्रॉम्प्ट होना चाहिए


3
-1 मुझसे। यह असुरक्षित है और एक बड़ा छेद खोलता है। कोई भी एपीपी जड़ बन सकता है और कहर बरपा सकता है।
Ce4

6
बिल्कुल ऐसा मत करो, यह एक भयावह सुरक्षा छेद है । (डिस्क्लेमर: मैं mksh
मेंटेनर हूं
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.