खास अधिकार वाले ऐप्लिकेशन ऐसे सिस्टम ऐप्लिकेशन होते हैं जो किसी साइट पर priv-app
डायरेक्ट्री में मौजूद होते हैं
सिस्टम इमेज पार्टिशन. Android रिलीज़ के लिए ये सेगमेंट इस्तेमाल किए जाते हैं:
- Android 9 और उसके बाद के वर्शन:
/system, /product, /vendor
- Android 8.1 और उससे पहले वाले वर्शन:
/system
पहले, डिवाइस बनाने वाली कंपनियों का इस पर बहुत कम कंट्रोल होता था कि
हस्ताक्षर | खास अधिकार वाली अनुमतियां दी जा सकती हैं
खास अधिकार वाले ऐप्लिकेशन. Android 8.0 से, मैन्युफ़ैक्चरर इसकी अनुमति साफ़ तौर पर
में सिस्टम कॉन्फ़िगरेशन एक्सएमएल फ़ाइलों में खास अनुमतियां
/etc/permissions
डायरेक्ट्री. Android 9 के बाद से, लागू करने वाले लोग
साफ़ तौर पर सभी खास अनुमतियां देने या अस्वीकार करने के लिए. अगर खास अधिकार नहीं दिए गए हैं,
डिवाइस बूट नहीं होता.
privapp-permissions.xml
फ़ाइल सिर्फ़ अनुमति दे सकती है या अस्वीकार कर सकती है
के लिए अनुमतियां होनी चाहिए. उदाहरण के लिए, अगर
/product
बंटवारे में शामिल एक ऐप्लिकेशन, खास अधिकारों वाली अनुमतियों का अनुरोध करता है,
अनुरोध को सिर्फ़ privapp-permissions.xml
स्वीकार या अस्वीकार कर सकता है
/product
पर फ़ाइल.
अनुमति वाली सूची जोड़ें
ऐप्लिकेशन को दी गई अनुमतियों की सूची, एक एक्सएमएल फ़ाइल या एक से ज़्यादा फ़ाइलों में दी जा सकती है
frameworks/base/etc/permissions
डायरेक्ट्री में मौजूद एक्सएमएल फ़ाइलें:
/etc/permissions/privapp-permissions-OEM_NAME.xml
/etc/permissions/privapp-permissions-DEVICE_NAME.xml
कॉन्टेंट व्यवस्थित करने के तरीके पर कोई सख्त नियम लागू नहीं होता. डिवाइस लागू करने वाले ये काम कर सकते हैं
कॉन्टेंट का स्ट्रक्चर तब तक के लिए तय किया जा सकता है, जब तक /system/priv-app
के सभी ऐप्लिकेशन
अनुमति वाली सूची में शामिल हैं. उदाहरण के लिए, Google ने सभी खास ऐप्लिकेशन के लिए, अनुमति वाली एक सूची तैयार की है.
हम आपको नीचे दिए गए संगठन का सुझाव देते हैं:
- उन ऐप्लिकेशन के लिए अनुमतियां जो इसमें पहले से शामिल हैं
Android ओपन सोर्स प्रोजेक्ट (AOSP)
ट्री की सूची
/etc/permissions/privapp-permissions-platform.xml
में दी गई है. - अन्य ऐप्लिकेशन के लिए, फ़ॉर्म की फ़ाइलों का इस्तेमाल करें,
/etc/permissions/privapp-permissions-DEVICE_NAME.xml
.
अनुमति वाली सूची को पसंद के मुताबिक बनाना
एओएसपी में, अनुमति वाली सूची को लागू करने की सुविधा शामिल है. इसे अपनी ज़रूरत के हिसाब से लागू किया जा सकता है.
अगर अनुमति अस्वीकार करना ज़रूरी है, तो deny-permission
टैग का इस्तेमाल करने के लिए, एक्सएमएल में बदलाव करें
permission
टैग के बजाय. उदाहरण के लिए:
<!-- This XML file declares which signature|privileged permissions to grant to privileged apps that come with the platform --> <permissions> <privapp-permissions package="com.android.backupconfirm"> <permission name="android.permission.BACKUP"/> <permission name="android.permission.CRYPT_KEEPER"/> </privapp-permissions> <privapp-permissions package="com.android.cellbroadcastreceiver"> <!-- Don't allow the application to interact across users --> <deny-permission name="android.permission.INTERACT_ACROSS_USERS"/> <permission name="android.permission.MANAGE_USERS"/> <permission name="android.permission.MODIFY_PHONE_STATE"/> <permission name="android.permission.READ_PRIVILEGED_PHONE_STATE"/> <permission name="android.permission.RECEIVE_EMERGENCY_BROADCAST"/> </privapp-permissions> ...
अनुपलब्ध अनुमतियां ढूंढना
नया डिवाइस शुरू करते समय, उन अनुमतियों को ढूंढने के लिए जो मौजूद नहीं हैं, ट्रांज़िशनल लॉग मोड चालू करें:
ro.control_privapp_permissions=log
उल्लंघन, लॉग फ़ाइल में रिपोर्ट किए जाते हैं. सामान्य अनुमतियां दी जाती हैं. ऐसा करने से यह पक्का हो जाता है कि डिवाइस ठीक तरह से काम कर रहा है और साथ ही उल्लंघन. गड़बड़ी के मैसेज का फ़ॉर्मैट इस तरह है:
PackageManager: Privileged permission {PERMISSION_NAME} for package {PACKAGE_NAME} - not in privapp-permissions allowlist
सभी उल्लंघनों को ठीक करने के लिए, ज़रूरी अनुमतियों को अनुमति वाली सही सूची में शामिल करना होगा. ध्यान दें कि:
- Android 9 और उसके बाद के वर्शन में, खास अनुमतियों का उल्लंघन डिवाइस को शुरू कर रहे हैं. इसके बजाय, आपको सभी खास अनुमतियों वाली अनुमतियों को साफ़ तौर पर स्वीकार या अस्वीकार करना होगा.
- Android 8.0 और इससे पहले के वर्शन के लिए, जिन ऐप्लिकेशन पर असर पड़ा है उन्हें ज़रूरी अनुमतियां नहीं दी जाती हैं.
priv-app
पथ में है.
अनुमति वाली सूची लागू करना
अनुमति वाली सूची बनाने के बाद, बिल्ड सेट करके रनटाइम के दौरान नीति उल्लंघन ठीक करने का तरीका (एनफ़ोर्समेंट) चालू करें
प्रॉपर्टी ro.control_privapp_permissions=enforce
.
अनुमति वाली सूची में सिर्फ़ उन ऐप्लिकेशन की अनुमतियों की ज़रूरत होती है जिनके पास अनुमति है
package="android"
. ro.control_privapp_permissions
प्रॉपर्टी की स्थिति का पालन करना ज़रूरी है
सेक्शन 9.1 की अनुमतियां
का पालन करने के लिए डिज़ाइन किया गया है.