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
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 permission
etiketini 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.