खास सुविधाओं के लिए अनुमति वाली सूची

खास अधिकार वाले ऐप्लिकेशन ऐसे सिस्टम ऐप्लिकेशन होते हैं जो किसी साइट पर 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 की अनुमतियां का पालन करने के लिए डिज़ाइन किया गया है.