Identyfikatory użytkowników Linuksa , których używa Android do izolowania aplikacji od siebie, nie są całkowicie powiązane z profilami użytkowników na tabletach z Androidem 4.2.
W Androidzie , każda aplikacja otrzymuje własny katalog do zapisywania danych. System identyfikatorów użytkowników Linuksa służy do upewnienia się, że aplikacje nie mogą odczytywać danych innych osób. Ale wszystkie te katalogi danych znajdują się w jednym katalogu w systemie plików, / data / user / 0
. Powiedzmy, że pierwszy użytkownik nazywa się Abulurd i instaluje aplikację Showr. Może mieć identyfikator użytkownika 1004 i katalog /data/user/0/com.shadowburst.showr
.
Załóżmy teraz, że tworzysz nowy profil użytkownika dla Beatrice . Otrzymuje nowy katalog / data / user / 1
, który zaczyna się pusty. Kiedy loguje się na urządzeniu i instaluje Showr, nie pobiera aplikacji ponownie (ponieważ instalator aplikacji na Androida wie, że plik APK jest już na urządzeniu), ale tworzy nowy identyfikator użytkownika 1007 (na przykład), i nowy katalog /data/user/1/com.shadowburst.showr
.
Android używa uprawnień systemu plików Linuksa i różnych identyfikatorów użytkowników Linuksa, nie tylko po to, aby upewnić się, że Abulurd's Showr nie może odczytać danych z innych aplikacji Abulurd, ale także tego, że Abulurd's Showr nie może odczytać danych Beatrice's Showr. Dwie instancje Showr działają w różnych procesach, z różnymi identyfikatorami użytkowników.
Jeśli znasz terminologię Linuksa, tworzenie nowego profilu użytkownika jest podobne do używania chroot
na urządzenie, aby uzyskać izolowaną część systemu plików do uruchamiania aplikacji.
To, co opisałem, to zwykły proces, ale tak jak aplikacje mogą być pisane w celu współdzielenia katalogu danych z innymi aplikacjami przez tego samego programistę (podpisane tym samym kluczem), Android daje aplikacjom możliwość powiedzenia, że współpracują wielu użytkowników. W ten sposób aplikacja może być napisana tak, aby miała jeden proces dla wszystkich profili użytkowników, aby umożliwić im udostępnianie danych lub wykonywanie specjalnych funkcji. Na przykład ekran blokady musi działać w ten sposób, ponieważ wszystkie profile użytkowników współdzielą jedną aplikację blokady ekranu, która musi czytać ustawienia ekranu blokady wszystkich użytkowników.