Ayrıcalıklı İzin İzin Verilenler Listesi

Ayrıcalıklı uygulamalar, sistem görüntüsü bölümlerinden birinde özel priv-app dizininde bulunan sistem uygulamalarıdır. Android sürümleri için kullanılan bölümler şunlardır:

  • Android 8.1 ve altı - /system
  • Android 9 ve üstü - /system, /product, /vendor

Bu sayfa boyunca /etc/permissions/priv-app partition /etc/permissions/priv-app çözümlenir.

Tarihsel olarak, cihaz üreticilerinin ayrıcalıklı uygulamalara hangi imza|ayrıcalıklı izinlerin verilebileceği üzerinde çok az kontrolü vardı. Android 8.0'dan başlayarak, üreticilerin /etc/permissions dizinindeki sistem yapılandırma XML dosyalarında açıkça ayrıcalıklı izinler vermesi gerekir. Android 9'dan itibaren, uygulayıcılar tüm ayrıcalıklı izinleri açıkça vermeli veya reddetmelidir, aksi takdirde cihaz önyükleme yapmaz.

privapp-permissions.xml dosyası yalnızca aynı bölümdeki ayrıcalıklı uygulamalar için izin verebilir veya reddedebilir. Örneğin, /product bölümündeki bir uygulama ayrıcalıklı izinler isterse, istek yalnızca / /product üzerinde bulunan bir privapp-permissions.xml dosyası tarafından verilebilir veya reddedilebilir.

İzin verilenler listesi ekleme

Uygulamalar için izin verilenler listeleri, tek bir XML'de veya frameworks/base/etc/permissions dizininde bulunan birden çok XML dosyasında aşağıdaki gibi listelenebilir:

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

İçeriği düzenlemek için katı bir kural yoktur. Cihaz uygulayıcıları, /system/priv-app içindeki tüm uygulamalar izin verilenler listesine eklendiği sürece içerik yapısını belirleyebilir. Örneğin, Google, Google tarafından geliştirilen tüm ayrıcalıklı uygulamalar için tek bir izin verilenler listesine sahiptir ve aşağıdaki kuruluşu önerir:

  • Android Açık Kaynak Projesi (AOSP) ağacına zaten dahil olan uygulamalar için izinler /etc/permissions/privapp-permissions-platform.xml içinde listelenir.
  • Google uygulamalarına ilişkin izinler /etc/permissions/privapp-permissions-google.xml içinde listelenmiştir.
  • Diğer uygulamalar için şu biçimdeki dosyaları kullanın: /etc/permissions/privapp-permissions- DEVICE_NAME .xml .

İzin verilenler listelerini özelleştirme

AOSP, gerektiğinde özelleştirilebilen bir izin verilenler listesi uygulaması içerir. AOSP'ye dahil olan uygulamalara ilişkin izinler, /etc/permissions/privapp-permissions-platform.xml içinde zaten izin verilenler listesine eklenmiştir.

Reddedilmesi gereken izinler varsa, XML'i "izin" etiketi yerine "izin verme" etiketi kullanacak şekilde düzenleyin. Ö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 açarken eksik izinleri bulmak için geçiş günlüğü modunu etkinleştirin:

ro.control_privapp_permissions=log

İhlaller günlük dosyasında bildirilir, ancak ayrıcalıklı olmayan izinler yine de verilir. Bu, ihlallerin listesini sağlarken cihazı çalışır durumda tutar. Bu hata mesajı formatıdır:

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.

  • Android 8.0 ve önceki sürümlerde, etkilenen uygulamalara özel priv-app yolunda olsalar bile eksik izinler verilmez.
  • Android 9 ve sonraki sürümlerde ( ayrıcalıklı izinlerin ihlali), cihazın önyükleme yapmadığı anlamına gelir. Tüm ayrıcalıklı izinlere açıkça izin vermeli veya bunları reddetmelisiniz

İzin verilenler listesini zorunlu kılma

İzin verilenler listeleri oluşturulduktan sonra, ro.control_privapp_permissions=enforce yapı özelliğini ayarlayarak çalışma zamanı zorlamasını etkinleştirin.