Yetenekler, Linux işlemlerinin işlevlerini yerine getirmek 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. Yetkilerin orijinal uygulaması, yürütülen dosyalarda dosya özellikleri yapılandırılmış olmadığı sürece, çatallama+yürütme işleminin özelliklerini devralmasını imkansız kılıyordu. Dosya özellikleri, dosya özelliklerine sahip bir dosyayı yürüten tüm işlemler bu özellikleri edinebileceğinden güvenlik riski oluşturur.
Ortam özellikleri, init tarafından başlatılan sistem hizmetlerinin .rc
dosyalarında özellikleri yapılandırmasına olanak tanır. Böylece, yapılandırmayı fs_config.c
dosyasında bölmek yerine tek bir dosyaya getirir. Bu, init tarafından başlatılan tüm hizmetler için ilgili hizmetin özelliklerini yapılandırmak üzere hizmetle ilişkili .rc
dosyasını kullanabileceğiniz anlamına gelir.
Çevre yetenekleri, init tarafından başlatılan hizmetlerin özelliklerini 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ında üst karakter 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 özellikleri ayarlarken fs_config.c
kullanarak dosya sistemi özelliklerini yapılandırmaya devam edin.
Ambiyans özelliklerini etkinleştirme
Belirli bir hizmet için ortam özelliklerini etkinleştirmek amacıyla, init işlevinde capabilities
anahtar kelimesini kullanın. Mevcut init dili ayrıntıları için init README.md dosyasını inceleyin.
Örneğin, AOSP hizmeti wificond
için ortam özelliklerini etkinleştirmek amacıyla wificond
hizmetinin .rc dosyası, uygun kullanıcıyı ve grupları oluşturur ve capabilities
anahtar kelimesini 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 uygulama
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 bağlandı.
Ana ortam özellikleri yaması https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=58319057b7847667f0c9585b9de0e8932b0fdb08 şu sürümlere geri taşındı:
- 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 aşağıdaki sürümlere geri taşındı:
- 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 "capabilities" anahtar kelimesini kullanmak ve ardından hizmetin beklenen özellikleri aldığını kontrol etmek, bu özelliğin çalışma zamanında test edilmesine olanak tanır.