Google berkomitmen untuk mendorong terwujudnya keadilan ras bagi komunitas Kulit Hitam. Lihat caranya.

Izin Hak Istimewa yang Diizinkan

Tetap teratur dengan koleksi Simpan dan kategorikan konten berdasarkan preferensi Anda.

Aplikasi istimewa adalah aplikasi sistem yang terletak di direktori priv-app pribadi di salah satu partisi citra sistem. Partisi yang digunakan untuk rilis Android adalah

  • Android 8.1 dan lebih rendah - /system
  • Android 9 dan lebih tinggi - /system, /product, /vendor

Sepanjang halaman ini, /etc/permissions/priv-app memutuskan untuk partition /etc/permissions/priv-app .

Secara historis, produsen perangkat memiliki sedikit kendali atas tanda tangan|izin istimewa mana yang dapat diberikan ke aplikasi istimewa. Mulai Android 8.0, produsen harus secara eksplisit memberikan izin istimewa dalam file XML konfigurasi sistem di direktori /etc/permissions . Mulai Android 9, pelaksana harus secara eksplisit memberikan atau menolak semua izin istimewa atau perangkat tidak dapat melakukan booting.

File privapp-permissions.xml hanya dapat memberikan atau menolak izin untuk aplikasi istimewa di partisi yang sama. Misalnya, jika aplikasi di partisi /product meminta izin istimewa, permintaan tersebut hanya dapat diberikan atau ditolak oleh file privapp-permissions.xml yang juga ada di /product .

Menambahkan daftar yang diizinkan

Daftar izin yang diizinkan untuk aplikasi dapat dicantumkan dalam satu XML atau dalam beberapa file XML yang terletak di direktori frameworks/base/etc/permissions sebagai berikut:

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

Tidak ada aturan ketat untuk mengatur konten. Pelaksana perangkat dapat menentukan struktur konten selama semua aplikasi dari /system/priv-app diizinkan. Misalnya, Google memiliki satu daftar yang diizinkan untuk semua aplikasi istimewa yang dikembangkan oleh Google, dan merekomendasikan organisasi berikut:

  • Izin untuk aplikasi yang sudah disertakan dalam pohon Android Open Source Project (AOSP) tercantum di /etc/permissions/privapp-permissions-platform.xml .
  • Izin untuk aplikasi Google tercantum di /etc/permissions/privapp-permissions-google.xml .
  • Untuk aplikasi lain, gunakan file berbentuk: /etc/permissions/privapp-permissions- DEVICE_NAME .xml .

Menyesuaikan daftar yang diizinkan

AOSP menyertakan implementasi daftar yang diizinkan yang dapat disesuaikan sesuai kebutuhan. Izin untuk aplikasi yang disertakan dalam AOSP sudah diizinkan di /etc/permissions/privapp-permissions-platform.xml .

Jika ada izin yang harus ditolak, edit XML untuk menggunakan tag "deny-permission" alih-alih tag "permission". Contoh:

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

Menemukan izin yang hilang

Untuk menemukan izin yang hilang saat membuka perangkat baru, aktifkan mode log transisi:

ro.control_privapp_permissions=log

Pelanggaran dilaporkan dalam file log, tetapi izin nonprivileged masih diberikan. Ini membuat perangkat dalam keadaan bekerja sambil memberikan daftar pelanggaran. Ini adalah format pesan kesalahan:

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

Semua pelanggaran harus diatasi dengan menambahkan izin yang hilang ke daftar yang diizinkan.

  • Di Android 8.0 dan yang lebih rendah, aplikasi yang terpengaruh tidak diberikan izin yang hilang meskipun berada di jalur priv-app pribadi.
  • Di Android 9 dan lebih tinggi, pelanggaran (izin istimewa ) berarti perangkat tidak bisa boot . Anda harus secara eksplisit mengizinkan atau menolak semua izin istimewa

Menegakkan daftar yang diizinkan

Setelah daftar yang diizinkan diterapkan, aktifkan penegakan waktu proses dengan menyetel properti build ro.control_privapp_permissions=enforce .