Ortam Yetenekleri

Yetenekler, Linux işlemlerinin, işlevlerini gerçekleştirmek için ihtiyaç duydukları ayrıcalık 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ülen dosyaların yapılandırılmış dosya yetenekleri olmadığı sürece fork+exec'd işlemlerinin yetenekleri devralmasını imkansız hale getirdi. Dosya yetenekleri, dosya yeteneklerine sahip bir dosyayı çalıştıran herhangi bir işlemin bu yetenekleri kazanabilmesi nedeniyle bir güvenlik riski oluşturur.

Ambient yetenekleri, init tarafından başlatılan sistem hizmetlerinin .rc dosyalarındaki yetenekleri yapılandırmasına olanak tanır ve fs_config.c dosyasındaki yapılandırmayı bölmek yerine yapılandırmayı tek bir dosyaya getirir. Bu, init tarafından başlatılan herhangi bir hizmet için, o hizmetin yeteneklerini yapılandırmak amacıyla hizmetle ilişkili .rc dosyasını kullanabileceğiniz anlamına gelir.

Ortam yetenekleri, init tarafından başlatılan hizmetlerin yeteneklerini 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 harfler bölümünü kullanarak dosya sistemi özelliklerini yapılandırmak yerine ortam yeteneklerini kullanmanızı öneririz.

init tarafından başlatılmayan hizmetlerin yeteneklerini ayarlarken, fs_config.c kullanarak dosya sistemi yeteneklerini yapılandırmaya devam edin.

Ortam özelliklerini etkinleştirme

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

Örneğin, AOSP hizmeti wificond için ortam yeteneklerini etkinleştirmek amacıyla, wificond hizmetinin .rc dosyası uygun kullanıcıyı ve grupları ayarlar ve yetenekler capabilities sözcüğünü kullanarak hizmete 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 desteklendi.

Ana ortam özellikleri 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 desteklenmiştir:

Doğrulama

Biyonik birim testleri, ortam yeteneklerine yönelik 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 alıp almadığını kontrol etmek, bu özelliğin çalışma zamanı testine izin verecektir.