Google 致力于为黑人社区推动种族平等。查看具体举措
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 root mantenendo il sottoinsieme di privilegi necessari per svolgere la loro funzione. L'implementazione originale delle funzionalità rendeva impossibile ai processi fork + exec'd ereditare le capacità a meno che i file in esecuzione non avessero configurate le funzionalità dei file. Le funzionalità dei file, a loro volta, rappresentano un rischio per la sicurezza poiché qualsiasi processo che esegue un file con funzionalità di file sarà in grado di acquisire tali funzionalità.

Le capacità ambientali consentono ai servizi di sistema lanciati da init di configurare le capacità nei loro file .rc , portando la configurazione in un singolo file invece di suddividere 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 capacità ambientali sono il meccanismo preferito per l'impostazione delle capacità per i servizi lanciati da init (questo metodo conserva tutti gli aspetti per la configurazione del servizio in un unico file .rc ). Si consiglia di utilizzare le funzionalità ambientali invece di configurare le funzionalità del file system utilizzando la sezione caps nei file config.fs .

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

Abilitazione delle capacità ambientali

Per abilitare le capacità ambientali per un dato servizio, usa la parola chiave capabilities in init. Per i dettagli sul linguaggio init corrente, fare riferimento a init README.md .

Ad esempio, per abilitare le funzionalità ambientali per il servizio AOSP wificond , il file .rc per il servizio wificond imposta l'utente e i gruppi appropriati e fornisce al servizio le funzionalità specificate utilizzando la parola chiave capabilities :

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 Android https://android.googlesource.com/kernel/common/

Patch richieste

Le patch richieste sono state trasferite su tutti i rami del kernel comuni Android pertinenti.

La patch delle principali funzionalità ambientali https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=58319057b7847667f0c9585b9de0e8932b0fdb08 è stata sottoposta a backport in:

Una piccola correzione per la sicurezza https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=b7f76ea2ef6739ee484a165ffbac98deb855d3d3 è stata sottoposta a backport in:

Validazione

Gli unit test bionici includono unit test per le capacità ambientali. Oltre a ciò, l'utilizzo della parola chiave "capacità" in Android init per un servizio e quindi il controllo che il servizio ottenga le capacità previste consentirebbe il test di runtime di questa funzionalità.