Google si impegna a promuovere l'equità razziale per le comunità nere. Vedi come.
Questa pagina è stata tradotta dall'API Cloud Translation.
Switch to English

Capacità ambientali

Le funzionalità consentono ai processi Linux di eliminare la maggior parte dei privilegi di tipo root mantenendo il sottoinsieme di privilegi necessari per svolgere la loro funzione. L'implementazione originale delle funzionalità ha reso impossibile per i processi fork + exec'd ereditare le funzionalità a meno che i file in esecuzione non fossero configurati. Le funzionalità dei file, a loro volta, presentano un rischio per la sicurezza poiché qualsiasi processo che esegue un file con funzionalità di file sarà in grado di ottenere tali funzionalità.

Le capacità ambientali consentono ai servizi di sistema avviati da init di configurare le capacità nei loro file .rc , portando la configurazione in un singolo file invece di dividere la configurazione nel file fs_config.c . Ciò significa che per qualsiasi servizio avviato da init, è possibile utilizzare il file .rc associato al servizio per configurare le funzionalità per quel servizio.

Le funzionalità ambientali sono il meccanismo preferito per impostare le funzionalità per i servizi avviati da init (questo metodo mantiene tutti gli aspetti della configurazione del servizio in un singolo file .rc ). Raccomandiamo di usare le capacità ambientali invece di configurare le capacità del file system usando la sezione caps nei file config.fs .

Quando si impostano le funzionalità per servizi non avviati da init , continuare a configurare le capacità del file system utilizzando fs_config.c .

Abilitazione delle capacità ambientali

Per abilitare le capacità ambientali per un determinato servizio, utilizzare la parola chiave capabilities in init. Per i dettagli sulla lingua di init corrente, consultare init README.md .

Ad esempio, per attivare le funzionalità ambientali per il servizio AOSP wificond , il file RC per i wificond set di servizio fino l'utente e gruppi appropriati e dà il servizio le capacità specificati utilizzando le capabilities per parola chiave:

service wificond /system/bin/wificond
    class main
    user wifi
    group wifi net_raw net_admin
    capabilities NET_RAW NET_ADMIN

Implementazione di riferimento

L'implementazione di riferimento è il kernel comune di Android https://android.googlesource.com/kernel/common/

Patch richieste

Le patch richieste sono state portate in backport a tutti i rami del kernel comune Android pertinenti.

La patch per le funzionalità ambientali principali https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=58319057b7847667f0c9585b9de0e8932b0fdb08 è stata importata in:

Una piccola correzione di sicurezza https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=b7f76ea2ef6739ee484a165ffbac98deb855d3d3 è stata backportata in:

Validazione

I test unitari Bionic comprendono test unitari per le capacità ambientali. Oltre a ciò, l'utilizzo della parola chiave "funzionalità" in init di Android per un servizio e quindi verificare che il servizio ottenga le funzionalità previste consentirebbe il test di runtime di questa funzionalità.