Kemampuan standby

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:

Perbaikan keamanan kecil https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=b7f76ea2ef6739ee484a165ffbac98deb855d3d3 telah di-backport di:

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.