Ayrıcalıklı izin izin verilenler listesi

Ayrıcalıklı uygulamalar bir priv-app dizininde bulunan ve sistem görüntüsü bölümü. Android sürümleri için kullanılan bölümler şunlardır:

  • Android 9 ve sonraki sürümler: /system, /product, /vendor
  • Android 8.1 ve önceki sürümler: /system
ziyaret edin.

Geçmişte cihaz üreticilerinin hangi cihazlarda hangi verilerin imza | özel izinler tercih edebilirsiniz. Android 8.0 sürümünden itibaren, üreticiler XML dosyalarındaki ayrıcalıklı izinleri /etc/permissions dizini. Android 9'dan itibaren, uygulayıcılar özel izinleri açık bir şekilde verebilir veya reddedebilir. Ayrıcalıklı izinler verilmezse cihaz başlatılmıyor.

privapp-permissions.xml dosyası yalnızca onay verebilir veya reddedebilir. aynı bölümdeki ayrıcalıklı uygulamaların izinleri. Örneğin, /product bölümündeki bir uygulama özel izinler istiyorsa istek yalnızca bir privapp-permissions.xml tarafından onaylanabilir veya reddedilebilir dosyasını /product adresinde bulabilirsiniz.

İzin verilenler listesi ekleyin

Uygulamalar için izin verilenler listeleri tek bir XML dosyasında veya birden fazla olarak listelenebilir. frameworks/base/etc/permissions dizininde bulunan XML dosyaları:

  • /etc/permissions/privapp-permissions-OEM_NAME.xml
  • /etc/permissions/privapp-permissions-DEVICE_NAME.xml

İçeriklerin düzenlenme şekliyle ilgili katı bir kural yoktur. Cihaz uygulamaları /system/priv-app içindeki tüm uygulamalar olduğu sürece içerik yapısını belirley izin verilenler listesindedir. Örneğin Google, tüm ayrıcalıklı uygulamalar için tek bir izin verilenler listesi geliştirmiştir. Aşağıdaki kuruluşu öneririz:

  • Şurada bulunan uygulamalarla ilgili izinler: Android Açık Kaynak Projesi (AOSP) ağaç türleri /etc/permissions/privapp-permissions-platform.xml altında listelenir.
  • Diğer uygulamalar için aşağıdaki form dosyalarını kullanın: /etc/permissions/privapp-permissions-DEVICE_NAME.xml

İzin verilenler listesini özelleştirme

AOSP, gerektiğinde özelleştirilebilen bir izin verilenler listesi uygulaması içerir.

Bir iznin reddedilmesi gerekiyorsa XML dosyasını bir deny-permission etiketi kullanacak şekilde düzenleyin yerine permissionetiketini kullanabilirsiniz. Örnek:

<!-- 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>
    ...

Eksik izinleri bulma

Yeni bir cihaz başlatırken eksik izinleri bulmak için geçiş günlük modunu etkinleştirin:

ro.control_privapp_permissions=log

İhlaller günlük dosyasında bildirilir. Ayrıcalıksız izinler verildi. Bu işlem, cihazın çalışır durumda kalmasını sağlar ve aynı zamanda ihlal eder. Hata mesajının biçimi aşağıdaki gibidir:

PackageManager: Privileged permission {PERMISSION_NAME} for package {PACKAGE_NAME} - not in privapp-permissions allowlist

Eksik izinler uygun izin verilenler listelerine eklenerek tüm ihlaller giderilmelidir. Aşağıdakileri göz önünde bulundurun:

  • Android 9 ve sonraki sürümler, ayrıcalıklı izinlerin ihlali cihazın şunları yapmasını engeller: başlatılıyor. Bunun yerine, tüm ayrıcalıklı izinleri açıkça onaylamanız veya reddetmeniz gerekir.
  • Android 8.0 ve önceki sürümler, ancak Android 8.0 ve önceki sürümler, priv-app yolunda olma.

İzin verilenler listesini zorunlu kılma

İzin verilenler listelerinizi oluşturduktan sonra, derlemeyi ayarlayarak çalışma zamanı yaptırımını etkinleştirin ro.control_privapp_permissions=enforce mülkü.

İzin verilenler listesine ekleme, yalnızca package="android" ro.control_privapp_permissions mülk durumu şunlara bağlı olmalıdır: Bölüm 9.1 İzinler (CDD) inceleyin.