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ı:
- android-3.18:
- android-4.1:
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ı:
- android-3.18:
- android-4.1:
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.