2013-06-05 4 views
20

जब मैं अपने फोन को कंप्यूटर से कनेक्ट करता हूं, तो मैं अपने फोन और इनपुट ps कमांड के साथ संवाद करने के लिए "adb shell" कमांड का उपयोग करता हूं जो वर्तमान में मेरे फोन पर चलने वाली आउटपुट प्रक्रियाओं की जानकारी , मुझे दो विशेष उपयोगकर्ता मिलते हैं, एक रूट है, दूसरा सिस्टम है, जहां तक ​​मुझे पता है, एंड्रॉइड लिनक्स पर आधारित है, इसलिए रूट उपयोगकर्ता सबसे बड़ा प्राधिकारी उपयोगकर्ता है, लेकिन मैं सिस्टम उपयोगकर्ता से भ्रमित हूं, शायद मैं इसे एक के रूप में मान सकता हूं लिनक्स सिस्टम में सामान्य उपयोगकर्ता, लेकिन यह एंड्रॉइड में विशेष है, इसमें एंड्रॉइड से संबंधित कई अनुमतियां हैं, तो क्या कोई मुझे रूट उपयोगकर्ता और सिस्टम उपयोगकर्ता के बीच वास्तविक अंतर बता सकता है, और एंड्रॉइड को सिस्टम उपयोगकर्ता जोड़ने की आवश्यकता क्यों है? धन्यवाद:)एंड्रॉइड सिस्टम उपयोगकर्ता और लिनक्स रूट उपयोगकर्ता के बीच क्या अंतर है

उत्तर

21

जहां तक ​​लिनक्स का संबंध है, system उपयोगकर्ता केवल एक नियमित उपयोगकर्ता (यूआईडी 1000) है। हालांकि एंड्रॉइड सेवाएं इसे विशेष अनुमति देती हैं और आप बहुत ज्यादा पहुंच प्राप्त कर सकते हैं।

private static final void enforceSystemOrRoot(String message) { 
    final int uid = Binder.getCallingUid(); 
    if (uid != Process.SYSTEM_UID && uid != 0) { 
     throw new SecurityException(message); 
    } 
} 

क्या करता है जो कोई जड़ या system नहीं है में पहुंचने से रोका है: अधिकांश सेवाओं इस कहीं की तरह कोड है। shell उपयोगकर्ता (यूआईडी 2000) (adb shell करते समय आपको क्या मिलता है) एक और उपयोगकर्ता है जिसमें बहुत सी शक्ति (कई समूहों का सदस्य) है। सी एफ

system:

$ su 1000 
$ id 
uid=1000(system) gid=1000(system) 
groups=1003(graphics),1004(input),1007(log),1009(mount), 
1011(adb),1015(sdcard_rw),1028(sdcard_r),3001(net_bt_admin), 
3002(net_bt),3003(inet),3006(net_bw_stats) 

shell:

$ adb shell 
[email protected]:/ $ id 
uid=2000(shell) gid=2000(shell) 
groups=1003(graphics),1004(input),1007(log),1009(mount), 
1011(adb),1015(sdcard_rw),1028(sdcard_r),3001(net_bt_admin), 
3002(net_bt),3003(inet),3006(net_bw_stats) 

एंड्रॉयड हर अनुप्रयोग के लिए एक अलग उपयोगकर्ता का उपयोग करता है, और सिस्टम सेवाओं को भी अपने समर्पित उपयोगकर्ताओं (media, radio, wifi, आदि) है। रूट के रूप में बहुत कम चीजें चलती हैं (ज्यादातर देशी डिमन्स)।

+0

तो, अगर मैं sysyem privs मिला है, मुझे लगता है कि इस्तेमाल कर सकते हैं डिवाइस रूट करने के लिए या मैं सच uid 0 की आवश्यकता होगी? – Seth

+0

यदि आप 'system' पर पहुंचने के लिए प्रबंधन करते हैं, तो आपको अभी भी विशेषाधिकारों को रूट करने के लिए एक तरीका ढूंढना होगा। हालांकि, ऐसा करने के लिए आपको एक विशेषाधिकार प्राप्त सेवा में भेद्यता की आवश्यकता है। –

+0

@ निकोलेएलेनकोव मैं एडब शैल में सिस्टम उपयोगकर्ता का उपयोग कैसे करूं? जब मैं सैमसंग 4 पर सु 1000 करता हूं, तो यह कहता है कि su कमांड नहीं मिला ... –

0

सिस्टम उपयोगकर्ता अन्य उपयोगकर्ता की फ़ाइलों तक नहीं पहुंच सकता है।

यदि आप कार्य करें: ls /data/data/com.google.android.gm/shared_prefs/ -l

आप मिल जाएगा 'अनुमति नहीं दी'

आप उपयोगकर्ता जड़ कर रहे हैं, आप कर सकते हैं कुछ भी करो। आप सभी फाइल सिस्टम तक पहुंच सकते हैं, सभी डेटा मिटा सकते हैं।

तुम भी फोन को रिबूट कर सकते हैं, आदि

संबंधित मुद्दे