Funkcje trybu nieaktywnego

Uprawnienia pozwalają procesom Linux na pomijanie większości uprawnień roota, zachowywanie podzbioru uprawnień wymaganych do wykonywania swojej funkcji. Pierwotne wdrożenie funkcji uniemożliwiło do dziedziczenia możliwości, chyba że uruchamiane pliki skonfigurowanych funkcji. Funkcje plików stwarzają z kolei zagrożenie dla bezpieczeństwa bo każdy proces wykonujący plik z właściwościami plików może zyskać tych funkcji.

Funkcje trybu nieaktywnego umożliwiają konfigurowanie usług systemowych uruchamianych przez inicjalizację w plikach .rc, przenosząc konfigurację do w jednym pliku zamiast dzielić konfigurację w fs_config.c. Oznacza to, że w przypadku każdej usługi uruchomionej przez możesz użyć pliku .rc powiązanego z usługą, skonfigurować możliwości tej usługi.

Funkcje trybu nieaktywnego to preferowany mechanizm konfigurowania funkcji dla usług uruchamianych przez inicjowanie (ta metoda zachowuje wszystkie aspekty usługi w jednym pliku .rc). Zalecamy użycie wygaszacza z powiadomieniami możliwości, a nie Konfigurowanie pliku możliwości systemu w sekcji z ograniczeniami w plikach config.fs.

Podczas ustawiania możliwości usług nieuruchamianych przez inicjowanie dalej konfigurować funkcje systemu plików za pomocą fs_config.c

Włącz funkcje otoczenia

Aby włączyć w danej usłudze funkcje trybu nieaktywnego, użyj funkcji Liczba inicjowanych słów kluczowych: capabilities. Dla bieżącego języka inicjowania Więcej informacji znajdziesz w init README.md.

Aby na przykład włączyć funkcje otoczenia zwane w usłudze AOSP wificond, plik.rc dla usługi wificond konfiguruje odpowiednie użytkownika i grup, a także nadaje usłudze określone uprawnienia za pomocą capabilities słowo kluczowe:

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

Implementacja referencyjna

Implementacją referencyjną jest popularne jądro Androida: https://android.googlesource.com/kernel/common/.

Wymagane poprawki

Wymagane poprawki zostały przeniesione do wszystkich odpowiedniego wspólnego jądra Androida gałęzie.

Główna poprawka funkcji otoczenia https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=58319057b7847667f0c9585b9de0e8932b0fdb08 został przeniesiony w:

Niewielka poprawka zabezpieczeń: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=b7f76ea2ef6739ee484a165ffbac98deb855d3d3. został przeniesiony w:

Weryfikacja

Bionicz testy jednostkowe obejmują testy jednostkowe możliwości otoczenia. Poza tym dzięki funkcji „możliwości” słowa kluczowego w Androidzie init dla usługi, a następnie sprawdzić, usługa uzyskuje oczekiwane możliwości umożliwiające testowanie w czasie działania tę funkcję.