मैं काफी समय से सोच रहा था; एंड्रॉइड यह उपयोगकर्ता और समूह आईडी जानकारी कहां संग्रहीत करता है?
उदाहरण के लिए, मानक लिनक्स पर, उपयोगकर्ता और समूह जानकारी में संग्रहित है /etc/passwd
और /etc/group
क्रमश:। जब आप किसी समूह में किसी उपयोगकर्ता को जोड़ते हैं, तो उसका उपयोगकर्ता नाम / यूआईडी उस समूह के उपयोगकर्ताओं की सूची में जुड़ जाता है, उदाहरण के लिए मेरा ऑडियो समूह प्रविष्टि /etc/group
इस तरह दिखता है:
audio:x:29:pulse,edge-case
जहाँ पल्सएडियो डैमन के यूड में पल्स को मैप किया जाता है और मेरे लिनक्स बॉक्स पर एज-केस को मेरे यूआईडी (1000) में मैप किया जाता है।
जैसा कि मैं इसे समझता हूं, प्रत्येक ऐप जो एंड्रॉइड पर इंस्टॉल हो जाता है, वह स्वयं यूआईडी और जीआईडी हो जाता है और यह ऐप के "सैंडबॉक्सिंग" का आधार है जो एंड्रॉइड पर होता है क्योंकि वे सभी अपनी प्रक्रिया में चलते हैं और दूसरे के डेटा तक नहीं पहुंच सकते हैं किसी अन्य ऐप के स्वामित्व वाली प्रक्रिया या फ़ाइलें जब तक कि ऐप प्रोग्रामर द्वारा बनाई गई मैनिफ़ेस्ट फ़ाइल में घोषणा नहीं होती है जो यह बताती है कि अन्य ऐप को क्या जानकारी साझा करनी है और क्या नहीं। यह भी है कि ऐप्प कैसे प्राप्त करते हैं या स्थापना के दौरान नेटवर्किंग सेवाओं तक पहुँच प्राप्त करने का अनुरोध करते हैं, ऐसा इंटरनेट ग्रुप में जोड़ने का अनुरोध करते हुए या कुछ इस तरह से करते हैं, मुझे नेट नेट समूह के नाम पर उद्धृत नहीं करते हैं, यह INET की तरह हो सकता है या INET6, किसी भी तरह से मुझे पता है कि नेटवर्क एक्सेस के कई स्तर हैं जो एंड्रॉइड पर इस तंत्र के माध्यम से किसी एप्लिकेशन को दिए जा सकते हैं।
मेरा प्रश्न यह है कि यह जानकारी Android में कहाँ संग्रहीत है?
इसके अलावा, क्या इसे संशोधित करना संभव है?
मैं इसके साथ एक शानदार स्टैक को एकीकृत करना चाहता हूं और इसके भीतर डेटा मेरी /etc/{passwd,group}
फाइलों में है, मुझ पर विश्वास करो, वे मेरे फोन पर मौजूद हैं, मेरे पास बहुत से अन्य अच्छाइयों के साथ स्थापित है।
अद्यतन: अधिक खोज कर रहा है और यह वही हो सकता है जिसकी मुझे तलाश है।
मुझे थोड़ा गहरा खुदाई करने और यह सुनिश्चित करने की आवश्यकता होगी कि यह वह सब कुछ है जिसकी मुझे तलाश है।
अपडेट: (5:40 जून 27 2014)
चूंकि कोई सोचता है कि मुझे नहीं पता कि मैं क्या कर रहा हूं या इसके बारे में बात कर रहा हूं, मुझे स्पष्ट करें;
एंड्रॉइड पर उपयोगकर्ता यूआईडी 100000 के साथ ऑफसेट होते हैं और ऐप यूआईडी 10000 के साथ ऑफसेट होते हैं जब उपयोगकर्ता नंबर _ एप नंबर पर मैप किया जाता है, इसलिए जब कोई पीएस u0_a10 जैसा कुछ दिखाता है, जिसका अर्थ है कि यूआईडी 100000 वाला उपयोगकर्ता यूआईडी 10010 के साथ ऐप चला रहा है,
मैंने सिस्टम / कोर से यूआईडी और उपयोगकर्ता / डेमॉन नामों को खींच लिया है / इसमें / निजी / android_filesystem_config.h शामिल हैं और उन लोगों को मेरे / etc / passwd और / etc / group फ़ाइलों को अपडेट करने के लिए उपयोग किया है (उदाहरण के लिए मेरे एंड्रॉइड बॉक्स पर), उदाहरण के लिए my / etc / passwd फ़ाइल (मेरे Android बॉक्स पर) इस तरह दिखाई देती है:
....
brainard:x:100002:100002:Professor Brainard,0420,,:/home/brainard
:/bin/bash
radio:x:1001:1001::/data/radio:/bin/false
bluetooth:x:1002:1002::/data/bluetooth:/bin/false
graphics:x:1003:1003::/home/graphics:/bin/false
input:x:1004:1004::/home/input:/bin/false
camera:x:1006:1006::/home/camera:/bin/false
log:x:1007:1007::/home/log:/bin/false
compass:x:1008:1008::/home/compass:/bin/false
mount:x:1009:1009::/home/mount:/bin/false
wifi:x:1010:1010::/home/wifi:/bin/false
adb:x:1011:1011::/home/adb:/bin/false
install:x:1012:1012::/home/install:/bin/false
media:x:1013:1013::/home/media:/bin/false
dhcp:x:1014:1014::/home/dhcp:/bin/false
....
मैंने नए उपयोगकर्ताओं को ऐसा बनाने के लिए /etc/adduser.conf में कॉन्फ़िगरेशन सेट किया है (मेरे Android बॉक्स पर):
# FIRST_[GU]ID to LAST_[GU]ID inclusive is the range of UIDs of dynamically
# allocated user accounts/groups.
FIRST_UID=100001
LAST_UID=199999
FIRST_GID=100001
LAST_GID=199999
यह एंड्रॉइड की नीति के अनुसार है, मैंने "glibc आधारित" सिस्टम उपयोगकर्ताओं को अभी भी 100-999 श्रेणी से बनाया है, मेरा मानना है कि और मैंने ऑडियो उपयोगकर्ता को अपने / etc / passwd और / etc / समूह फ़ाइलों को 1005 के रूप में संशोधित किया, जैसे यह Android पर है।
मुझे एंड्रॉइड को अपडेट करने और अपने यूजर यूआईडी के साथ-साथ अपने डेमॉन या सिस्टम यूजर यूआईडी के साथ ग्लिबैक स्टैक के बारे में जानकारी के साथ सिंक्रनाइज़ करने की आवश्यकता है।
आपने पुस्तक "एंबेडेड एंड्रॉयड" करीम Yaghmour द्वारा इस बारे में और अधिक पढ़ सकते हैं यहां बिक
मेरा लक्ष्य काम करने के लिए एनवीएलसी जैसे कार्यक्रम प्राप्त करना है, लेकिन मुझे यूआईडी और जीआईडी को सिंक्रनाइज़ करने की आवश्यकता है ताकि एंड्रॉइड को मेरे उपयोगकर्ताओं और उन समूहों के बारे में पता हो, जो उदाहरण के लिए, मेरे दिमाग के उपयोगकर्ता जिनके पास ऑडियो डिवाइस हैं।
इसके अलावा, मुझे एंड्रॉइड को पोस्टर्स के बारे में सूचित करने की आवश्यकता है और यह नेटवर्क समूह में सदस्यता है ताकि यह सॉकेट खोल सके और डेटाबेस तक पहुंच की अनुमति दे सके। मैंने फिलहाल कर्नेल में PARANOID_NETWORKING को अक्षम कर दिया है, लेकिन यह हैक केवल Android को वेनिला लिनक्स के रूप में सिक्योर बनाने का काम करता है, कम नहीं। यह अच्छा होगा कि पैरानॉयड सेटिंग रखें और समूह अनुमतियों को उन डेमों / उपयोगकर्ताओं के लिए लागू करें जिन्हें मैं फिट देखता हूं।
यह एंड्रॉइड को इस तरह के पागल और ठीक ट्यून किए गए नियंत्रणों के साथ सार्वजनिक सामना करने वाले सर्वरों के लिए एक महान ऑपरेटिंग सिस्टम बना देगा। कर्बेरॉस, LDAP, PAM, या जब आप रेडियस को कॉन्फ़िगर किए जा रहे WAP के रूप में फोन का उपयोग कर रहे हैं, जिसमें से सभी डिबियन और अन्य वितरण रिपॉजिट से मुफ्त में उपलब्ध हैं।
मुझे यह सब पता चल गया है, मुझे बस यह जानना होगा कि एंड्रॉइड के यूआईडी / जीआईडी डेटाबेस को कैसे अपडेट किया जाए, जो हर बार जब आप ऐप इंस्टॉल करते हैं तो अपडेट हो जाता है, इसलिए मुझे पता है कि यह संभव है।
अपडेट: (7:08 बजे 30 जून, 2014)
निम्न फ़ाइलों में डेटा पर जाने के बाद ...
/data/system/packages.list
/data/system/packages.xml
/data/system/user/userlist.xml
/data/system/user/0.xml
... मैंने अपने प्रश्न को शामिल करने के लिए अपडेट किया है "मैं इसकी व्याख्या कैसे करूं?"
- मुझे लगता है कि मुझे एक कस्टम PAM मॉड्यूल बनाने और Bionic और Glibc को एक ही C लाइब्रेरी में मिलाने की आवश्यकता है, उन्हें दोनों पक्षों के अनुप्रयोगों के साथ संगत करने की आवश्यकता है, कोई अपवाद नहीं, C ++ अपवादों की अपेक्षा करें; p --- मैंने लिखा है अपने आप को पालन करने के लिए अंगूठे -2 के कुछ नियम। मुझे rpm और apt जैसे लोकप्रिय पैकेज मैनेजमेंट सिस्टम के लिए एक रैपर लिखना भी पड़ सकता है, जो एपीके इंस्टॉलेशन को फेक करता है और प्रत्येक नई डिबेट देता है। rpm पैकेज एक UID और शायद सिंपल-लिंक सब कुछ FHS में। यह सबसे आदर्श समाधान हो सकता है, जिसके लिए मैं जा सकता था, हालांकि सबसे अधिक काम, क्योंकि प्रत्येक को अपने "मैनिफ़ेस्ट" में अनुमतियों के एक सेट की आवश्यकता होगी, हो सकता है कि उपयोगकर्ता स्थापित करने के दौरान एक मेनू दे सकता है और आवश्यकतानुसार ले सकता है।
- क्या किसी के पास एक अच्छा संदर्भ है जो इन फ़ाइलों के सिंटैक्स की व्याख्या करता है? मैं एक्सएमएल के साथ बहुत अच्छी तरह से वाकिफ नहीं हूं, यह उल्लेख नहीं है कि इसका उपयोग आमतौर पर उस एप्लिकेशन पर निर्भर करता है जो इसे व्याख्या करता है।
- मैं
packages.list
फ़ाइलnull
को अंतिम कॉलम में प्रविष्टि के अपवाद के साथ समझता हूं , क्या कोई इसे समझा सकता है?