Was passiert, wenn Sie ein neues Benutzerkonto hinzufügen möchten, da jede Anwendung als separater Benutzer ausgeführt wird?

7

Nach dieser jede Anwendung in Android, wird als separater Kernel-Level - Benutzer mit einer eindeutigen Benutzer - ID und Gruppen - ID.

Was passiert also unter der Haube, wenn Sie einen neuen Benutzer hinzufügen (z. B. zu Ihrem freigegebenen Tablet)?

Betrachtung
quelle
3
Wenn ich mich daran erinnere, ist jede Aufgabe eine Anwendung, die als separater 'Benutzer' im Kernel unter dem Gesamtbenutzer ausgeführt wird, der sich angemeldet hat. Das bedeutet, dass es viele 'BENUTZER' gibt, wie bei realen Personen mit Konten, aber auf Kernelebene stuff ist ein virtueller Benutzer, keine reale Person oder ein Benutzer des Tablets / Geräts, sondern ein abstrakter isolierter Prozess. Es ist ein Sicherheits- / Datenschutzproblem. Durch Hinzufügen eines weiteren menschlichen Benutzerprofils wird lediglich eine weitere Ebene hinzugefügt. Sie sind Benutzer1 mit vielen Anwendungen, die unter virtuellen "Benutzern" ausgeführt werden, und Benutzer2 wird seine Apps unter virtuellen Benutzern ausführen. Das Wort "Benutzer" ist verwirrend.
RossC
Verwechseln Sie "Betriebssystembenutzer" nicht mit Benutzerprofilen / Konten . Die mit JellyBean hinzugefügte Funktion "Mehrbenutzer" verwendet Profile für verschiedene Konten, nicht für Betriebssystembenutzer. Zwei völlig unterschiedliche Paar Schuhe.
Izzy

Antworten:

17

Die Linux-Benutzer-IDs , mit denen Android Apps voneinander isoliert, stehen in keinem Zusammenhang mit Benutzerprofilen auf Android 4.2-Tablets.

In Android erhält jede App ein eigenes Verzeichnis zum Speichern von Daten. Das Linux-Benutzer-ID-System wird verwendet, um sicherzustellen, dass Apps die Daten der anderen Benutzer nicht lesen können. Alle diese Datenverzeichnisse befinden sich jedoch in einem Verzeichnis im Dateisystem /data/user/0. Angenommen, der erste Benutzer heißt Abulurd und installiert die App Showr. Möglicherweise wird die Benutzer-ID 1004 und das Verzeichnis angegeben /data/user/0/com.shadowburst.showr.

Angenommen, Sie erstellen ein neues Benutzerprofil für Beatrice. Sie bekommt ein neues Verzeichnis /data/user/1, das leer beginnt. Wenn sie sich am Gerät anmeldet und Showr installiert, wird die App nicht erneut heruntergeladen (da das Android-App-Installationsprogramm weiß, dass sich die APK-Datei bereits auf dem Gerät befindet), es wird jedoch eine neue Benutzer-ID 1007 erstellt (z. B.). und ein neues Verzeichnis /data/user/1/com.shadowburst.showr.

Android verwendet Linux-Dateisystemberechtigungen und die verschiedenen Linux-Benutzer-IDs, um nicht nur sicherzustellen, dass Abulurds Showr die Daten der anderen Apps von Abulurd nicht lesen kann, sondern auch, dass Abulurds Showr die Daten von Beatrices Showr nicht lesen kann. Die beiden Instanzen von Showr werden in unterschiedlichen Prozessen mit unterschiedlichen Benutzer-IDs ausgeführt.

Wenn Sie mit der Linux-Terminologie vertraut sind, ähnelt chrootdas Erstellen eines neuen Benutzerprofils der Verwendung auf dem Gerät, um einen isolierten Teil des Dateisystems zum Ausführen von Apps abzurufen.

Was ich beschrieben habe, ist der übliche Prozess, aber genau wie Apps geschrieben werden können, um ein Datenverzeichnis mit anderen Apps desselben Entwicklers (signiert mit demselben Schlüssel) zu teilen, bietet Android Apps die Möglichkeit, zu sagen, dass sie mit mehreren Benutzern arbeiten. Auf diese Weise kann eine App so geschrieben werden, dass sie einen Prozess für alle Benutzerprofile enthält, damit sie Daten gemeinsam nutzen oder eine spezielle Funktion ausführen können. Der Sperrbildschirm muss beispielsweise so funktionieren, weil alle Benutzerprofile eine Sperrbildschirm-App gemeinsam nutzen, die die Sperrbildschirmeinstellungen aller Benutzer lesen muss.

Dan Hulme
quelle
Paralleler Beitrag :) Können die Profile, um es einfacher auszudrücken, mit der Ausführung verschiedener VMs auf demselben Host unter Verwendung einer Art "gemeinsam genutztem Speicher" verglichen werden?
Izzy
Nein. Eine VM hätte einen eigenen Kernel.
Dan Hulme
Wenn also eine Person eine Anwendung installiert und sie der Benutzer-ID, z. B. app_143, zugewiesen ist und später ein anderes Benutzerprofil erstellt und die Anwendung erneut ausführt, wobei dieses Benutzerprofil irgendwann aktiv ist, kann eine andere Benutzer-ID, z. B. app_265, für dieselbe Anwendung erstellt werden.
43488
@galegosimpatico Ja, genau das ist es. Vergessen Sie nicht, dass die Anwendung für das neue Benutzerprofil installiert werden muss, bevor sie ausgeführt werden kann.
Dan Hulme
Vielen Dank. Sie sagen, dass Apps nicht zweimal heruntergeladen werden, da das Installationsprogramm weiß, dass sich die APK-Datei bereits auf dem Gerät befindet. Nun, es wird nicht heruntergeladen, aber wird die App neu installiert (auf Anfrage eines anderen Profils)? Können einige "Binärdateien" nicht von allen Benutzern gemeinsam genutzt werden? (für Neuinstallationen von wirklich schweren oder großen Anwendungen)
Reflection
2

Wenn Sie ein neues Benutzerkonto hinzufügen, wird ein neues Konto (oder "Benutzerprofil") erstellt. Dies hat überhaupt nichts mit der Benutzer- / Gruppenverwaltung auf Betriebssystemebene zu tun. Sie werden feststellen, dass die meisten Anleitungen (z. B. diese auf HowToGeek ) über Konten sprechen , da der Begriff "Benutzer" eher irreführend wäre.

Ich bin kein Android-Entwickler, daher kann ich Ihnen keine tiefere technische Erklärung geben. Soweit ich weiß, wird die Mehrbenutzerfunktion jedoch über dem Linux-Kern (dh in Java / Dalvik) realisiert. EDIT: Dan hat seine Antwort zur gleichen Zeit wie ich gepostet , also siehe dort für den technischen Hintergrund :)

Izzy
quelle