Funzionalità ambientali

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:

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:

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à.