Kemampuan memungkinkan proses Linux meninggalkan sebagian besar hak istimewa seperti {i>root<i} saat mempertahankan subset hak istimewa yang mereka perlukan untuk menjalankan fungsinya. Implementasi asli dari kemampuan membuat fork+exec tidak mungkin proses untuk mewarisi kemampuan kecuali jika file yang dieksekusi memiliki file kemampuan yang dikonfigurasi. Kemampuan file, pada akhirnya, menimbulkan risiko keamanan karena setiap proses yang mengeksekusi file dengan kemampuan file dapat memperoleh kemampuan tersebut.
Kemampuan standby memungkinkan layanan sistem yang diluncurkan oleh init untuk mengonfigurasi
dalam file .rc
-nya, yang menghadirkan konfigurasi ke dalam
satu file alih-alih memisahkan konfigurasi di
File fs_config.c
. Ini berarti bahwa untuk
layanan apa pun yang diluncurkan oleh
init, Anda dapat menggunakan file .rc
yang terkait dengan layanan tersebut untuk
mengonfigurasi kemampuan
untuk layanan tersebut.
Kemampuan standby adalah mekanisme yang lebih disukai untuk menyetel kemampuan
untuk layanan yang diluncurkan oleh init (metode ini menyimpan semua aspek layanan
konfigurasi dalam satu file .rc
). Sebaiknya gunakan standby
kapabilitas alih-alih
mengonfigurasi file
kemampuan sistem menggunakan bagian huruf besar dalam file config.fs
.
Saat mengatur kemampuan untuk layanan yang tidak diluncurkan oleh init,
melanjutkan konfigurasi kemampuan
sistem file menggunakan
fs_config.c
.
Mengaktifkan kemampuan standby
Untuk mengaktifkan kemampuan standby untuk layanan tertentu, gunakan metode
capabilities
kata kunci di init. Untuk bahasa init saat ini
selengkapnya, lihat
init README.md.
Misalnya, untuk mengaktifkan kemampuan standby layanan AOSP
wificond
,
File.rc
untuk layanan wificond
, konfigurasi
pengguna dan grup, serta memberikan layanan
kemampuan tertentu menggunakan
Kata kunci capabilities
:
service wificond /system/bin/wificond class main user wifi group wifi net_raw net_admin capabilities NET_RAW NET_ADMIN
Penerapan referensi
Implementasi referensi adalah kernel umum Android https://android.googlesource.com/kernel/common/
Patch yang diperlukan
Patch yang diperlukan telah di-backport ke semua kernel umum Android yang relevan yang berbeda.
Patch kemampuan standby 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
Bionik pengujian unit menyertakan pengujian unit untuk kemampuan standby. Selain itu, menggunakan "kemampuan" kata kunci di Android init untuk layanan, lalu memeriksanya layanan mendapatkan kemampuan yang diharapkan akan memungkinkan pengujian runtime fitur ini.