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:
- 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 şurada desteklendi:
- android-3.18:
- android-4.1:
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.