Le funzionalità consentono ai processi Linux di abbandonare la maggior parte dei privilegi simili a quelli della directory principale conservando il sottoinsieme dei privilegi di cui hanno bisogno per svolgere la propria funzione. L'implementazione originale delle capacità rendeva impossibile per fork+exec processi per ereditare funzionalità a meno che i file in esecuzione non avessero funzionalità configurate. Le capacità dei file, a loro volta, presentano un rischio per la sicurezza poiché qualsiasi processo che esegue un file con capacità può queste capacità.
Le funzionalità ambientali consentono ai servizi di sistema avviati da init di configurare
nei file .rc
, portando la configurazione
un singolo file, invece di suddividere la configurazione
fs_config.c
file. Ciò significa che per qualsiasi servizio lanciato
init, puoi utilizzare il file .rc
associato al servizio per
e configurare le funzionalità
per quel servizio.
Le funzionalità ambientali sono il meccanismo preferito per l'impostazione delle funzionalità
per i servizi avviati da init (questo metodo mantiene tutti gli aspetti
configurazione in un singolo file .rc
). È consigliabile usare la modalità Ambient
anziché
file di configurazione
funzionalità di sistema utilizzando la sezione maiuscole nei file config.fs
.
Quando imposti funzionalità per servizi non avviati da init,
continua a configurare le funzionalità del file system utilizzando
fs_config.c
.
Abilita le funzionalità Ambient
Per abilitare le funzionalità Ambient per un determinato servizio, utilizza
capabilities
parola chiave in init. Per la lingua init corrente
dettagli, consulta le
init README.md.
Ad esempio, per abilitare le funzionalità Ambient per il servizio AOSP
wificond
,
file.rc
per il servizio wificond
configuri
utenti e gruppi e fornisce al servizio le funzionalità specificate utilizzando
capabilities
parola chiave:
service wificond /system/bin/wificond class main user wifi group wifi net_raw net_admin capabilities NET_RAW NET_ADMIN
Implementazione dei riferimenti
L'implementazione di riferimento è il kernel comune di Android https://android.googlesource.com/kernel/common/
Patch obbligatorie
È stato eseguito il backporting delle patch richieste in tutti i kernel comuni Android pertinenti rami.
Patch delle funzionalità ambientali principali https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=58319057b7847667f0c9585b9de0e8932b0fdb08 è stato sottoposto a backporting in:
- android-3.18:
- android-4.1:
Una piccola correzione di sicurezza https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=b7f76ea2ef6739ee484a165ffbac98deb855d3d3 è stato sottoposto a backporting in:
- android-3.18:
- android-4.1:
Convalida
Bionico I test delle unità includono i test delle unità per le capacità ambientali. Inoltre, utilizzando le "funzionalità" una parola chiave in Android init per un servizio, quindi controllare il servizio ottiene le capacità previste consentire il test di runtime questa funzionalità.