Kemampuan memungkinkan proses Linux menghilangkan sebagian besar hak istimewa seperti root sambil mempertahankan subset hak istimewa yang diperlukan untuk menjalankan fungsinya. Implementasi kemampuan asli membuat proses fork+exec'd proses tidak dapat mewarisi kemampuan kecuali jika file yang dieksekusi memiliki kemampuan file yang dikonfigurasi. Kemampuan file, pada gilirannya, menimbulkan risiko keamanan karena proses apa pun yang menjalankan file dengan kemampuan file dapat memperoleh kemampuan tersebut.
Kemampuan sekitar memungkinkan layanan sistem yang diluncurkan oleh init untuk mengonfigurasi
kemampuan dalam file .rc, sehingga konfigurasi berada dalam
satu file, bukan membagi konfigurasi dalam
file fs_config.c. Artinya, untuk layanan apa pun yang diluncurkan oleh
init, Anda dapat menggunakan file .rc yang terkait dengan layanan untuk
mengonfigurasi kemampuan layanan tersebut.
Kemampuan sekitar adalah mekanisme pilihan untuk menetapkan kemampuan
untuk layanan yang diluncurkan oleh init (metode ini menyimpan semua aspek untuk konfigurasi layanan dalam satu .rc file). Sebaiknya gunakan kemampuan sekitar, bukan mengonfigurasi kemampuan sistem file menggunakan bagian caps dalam config.fs file.
Saat menetapkan kemampuan untuk layanan yang tidak diluncurkan oleh init,
terus konfigurasikan kemampuan sistem file menggunakan
fs_config.c.
Mengaktifkan kemampuan sekitar
Untuk mengaktifkan kemampuan sekitar untuk layanan tertentu, gunakan kata kunci
capabilities di init. Untuk mengetahui detail bahasa init saat ini, lihat init README.md.
Misalnya, untuk mengaktifkan kemampuan sekitar untuk layanan AOSP
wificond, file
.rc
untuk layanan wificond menyiapkan pengguna dan grup yang sesuai serta memberikan kemampuan yang ditentukan kepada layanan menggunakan kata kunci
capabilities:
service wificond /system/bin/wificond
class main
user wifi
group wifi net_raw net_admin
capabilities NET_RAW NET_ADMINImplementasi referensi
Implementasi referensi adalah kernel umum Android https://android.googlesource.com/kernel/common/
Patch yang diperlukan
Patch yang diperlukan telah di-backport ke semua cabang kernel umum Android yang relevan.
Patch kemampuan sekitar utama https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=58319057b7847667f0c9585b9de0e8932b0fdb08 telah di-backport di:
- android-3.18:
- android-4.1:
Perbaikan keamanan kecil https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=b7f76ea2ef6739ee484a165ffbac98deb855d3d3 telah di-backport di:
- android-3.18:
- android-4.1:
Validasi
Pengujian unit Bionic mencakup pengujian unit untuk kemampuan sekitar. Selain itu, menggunakan kata kunci "capabilities" di init Android untuk layanan, lalu memeriksa apakah layanan tersebut mendapatkan kemampuan yang diharapkan akan memungkinkan pengujian runtime fitur ini.