Ortam Yetenekleri

Yetenekler, Linux süreçlerinin işlevlerini yerine getirmek için ihtiyaç duydukları ayrıcalıkların alt kümesini korurken çoğu kök benzeri ayrıcalıkları bırakmasına izin verir. Yeteneklerin orijinal uygulaması, yürütülmekte olan dosyalar yapılandırılmış dosya yeteneklerine sahip olmadığı sürece, fork+exec'd işlemlerinin 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 yetenekleri, init tarafından başlatılan sistem hizmetlerinin, fs_config.c dosyasındaki yapılandırmayı bölmek yerine yapılandırmayı tek bir dosyaya getirerek, .rc dosyalarındaki yetenekleri yapılandırmasına olanak tanır. Bu, init tarafından başlatılan herhangi bir hizmet için, o hizmetin özelliklerini yapılandırmak üzere hizmetle ilişkili .rc dosyasını kullanabileceğiniz anlamına gelir.

Ortam yetenekleri, init tarafından başlatılan hizmetler için 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 özelliklerini yapılandırmak yerine ortam özelliklerini kullanmanızı öneririz.

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

Ortam yeteneklerini etkinleştirme

Belirli bir hizmet için ortam özelliklerini etkinleştirmek için init'te capabilities anahtar sözcüğünü kullanın. Geçerli init dili ayrıntıları için init README.md dosyasına bakın.

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

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

Referans uygulaması

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

Gerekli yamalar

Gerekli yamalar, ilgili tüm Android ortak çekirdek dallarına geri gönderildi.

Ana ortam yetenekleri yaması https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=58319057b7847667f0c9585b9de0e8932b0fdb08 şurada desteklenmiştir:

Küçük bir güvenlik düzeltmesi https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=b7f76ea2ef6739ee484a165ffbac98deb855d3d3 şurada desteklendi:

doğrulama

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