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:
- Android 3.18:
- Android 4.1
Niewielka poprawka zabezpieczeń: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=b7f76ea2ef6739ee484a165ffbac98deb855d3d3. został przeniesiony w:
- Android 3.18:
- Android 4.1
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ę.