Ortam Yetenekleri

Yetenekler, Linux işlemlerinin, işlevlerini yerine getirmek için ihtiyaç duydukları ayrıcalıkların alt kümesini korurken, kök benzeri ayrıcalıkların çoğunu bırakmasına olanak tanır. Yeteneklerin orijinal uygulaması, yürütülecek dosyalar yapılandırılmış dosya yeteneklerine sahip olmadıkça fork + tarafından yürütülen işlemlerin yetenekleri devralmasını imkansız hale getirdi. Dosya yetenekleri, dosya yeteneklerine sahip bir dosyayı yürüten herhangi bir işlem bu yetenekleri kazanabileceğinden, bir güvenlik riski oluşturur.

Ortam özellikleri, init tarafından başlatılan sistem hizmetlerinin .rc dosyalarındaki yetenekleri yapılandırmasına izin vererek, yapılandırmayı fs_config.c dosyasında bölmek yerine tek bir dosyaya fs_config.c . Bu, init tarafından başlatılan herhangi bir hizmet için, o hizmetin özelliklerini yapılandırmak için hizmetle ilişkili .rc dosyasını kullanabileceğiniz anlamına gelir.

Ortam yetenekleri, init tarafından başlatılan hizmetlere yönelik yetenekleri ayarlamak için tercih edilen mekanizmadır (bu yöntem, hizmet yapılandırmasının tüm yönlerini tek bir .rc dosyasında tutar). config.fs dosyalarındaki büyük harf bölümünü kullanarak dosya sistemi yeteneklerini yapılandırmak yerine ortam yeteneklerini kullanmanızı öneririz.

fs_config.c tarafından başlatılmayan hizmetler için yetenekleri ayarlarken, fs_config.c kullanarak dosya sistemi yeteneklerini yapılandırmaya devam fs_config.c .

Ortam yeteneklerini etkinleştirme

Belirli bir hizmet için ortam yeteneklerini etkinleştirmek için init'teki capabilities anahtar sözcüğünü kullanın. Mevcut başlangıç ​​dili ayrıntıları için, başlangıç ​​README.md'ye bakın.

Örneğin, wificond AOSP hizmeti için ortam yeteneklerini etkinleştirmek üzere wificond hizmetinin .rc dosyası uygun kullanıcı ve grupları kurar ve capabilities anahtar sözcüğünü kullanarak hizmete belirtilen özellikleri verir:

service wificond /system/bin/wificond
    class main
    user wifi
    group wifi net_raw net_admin
    capabilities NET_RAW NET_ADMIN

Referans uygulaması

Referans uygulama, Android ortak çekirdeğidir https://android.googlesource.com/kernel/common/

Gerekli yamalar

Gerekli yamalar, ilgili tüm Android ortak çekirdek dallarına geri aktarılmıştır.

Ana ortam yetenekleri yaması https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=58319057b7847667f0c9585b9de0e8932b0fdb08 şu konumlara geri aktarıldı:

Küçük bir güvenlik düzeltmesi https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=b7f76ea2ef6739ee484a165ffbac98deb855d3d3 şu konumlara geri aktarıldı:

Doğrulama

Biyonik birim testleri , ortam özellikleri için birim testlerini içerir. Bunun ötesinde, bir hizmet için Android init'te "yetenekler" anahtar sözcüğünü kullanmak ve ardından hizmetin beklenen yetenekleri aldığını kontrol etmek, bu özelliğin çalışma zamanı testine olanak tanır.