2016-07-19 20 views
0

Ich entwickle eine Anwendung zusammen mit einem benutzerdefinierten Android-ROM, das erfordert, dass ich auf einen bestimmten Ordner im Android-Dateisystem zugreifen kann. Die Anwendung verfügt über Privilegien-System und die Benutzer System druckt folgende beim AusführenGruppe zu Systembenutzer hinzufügen auf Android

id 

Ausgang:

uid=1000(system) gid=1000(system) groups=1001(radio),1002(bluetooth),1003(graphics),1004(input),1005(audio),1006(camera),1007(log),1008(compass),1009(mount),1010(wifi),1018(usb) 

Der Ordner, den ich zugreifen müssen, ist von einem anderen Benutzer (eine Android-Anwendung auf der Bibliotheken Schicht erstellt) und ist auf eine Gruppe beschränkt, zu der ich nicht gehört.

Also meine Fragen sind: Wo in der Android-Quellcode wäre es geeignet, um das System Benutzer der bestehenden Gruppe hinzuzufügen? (Oder wie ist es mit den anderen Gruppen, die System Teil von ist)

+0

Hinzufügen von Android-Benutzer (Anwendungen) zu Gruppen ist nicht am besten im Quellcode auf Android getan - weder der Android-Quellcode noch anderen Quellcode. Also ich denke deine Frage hat keine Antwort. Es wäre besser, wenn du deine Frage so formulieren würdest, dass sie die Form hat: "Ich versuche X zu erreichen. Wie soll ich das am besten machen?" – AnotherSmellyGeek

+0

@AnotherSmellyGeek Ich habe eine Antwort auf meine eigene Frage hinzugefügt. – GilCol

+1

Ja, das ist die richtige Antwort auf die Frage, die ich dich fragen wollte :-) – AnotherSmellyGeek

Antwort

0

Ich habe herausgefunden, dass GIDs während der Laufzeit angefordert werden können, indem Sie Android-Systemberechtigungen anfordern. Der Benutzer (wie im Linux-Benutzer), der die Anwendung ausführt, besitzt vorübergehend diese Berechtigung. Nicht alle Berechtigungen gewähren gids.

Hier ist ein Beispiel für platform.xml aus der AOSP-Projektquelle, in der die Systemberechtigungen, die grids gewähren, aufgelistet und teilweise zugeordnet werden (der gid-Name muss auch in android_filesystem_config.h einer Nummer zugeordnet werden).

https://android.googlesource.com/platform/frameworks/base/+/cd92588/data/etc/platform.xml

Z.B. Erstellen Sie eine Systemanwendung und fügen Sie Ihrem AndroidManifest.xml android.permission.BLUETOOTH hinzu. Dies ergibt uid = 1000 (System) mit gid = **** (net_bt) zusätzlich zu anderen Gids, die höchstwahrscheinlich als Standard enthalten sein werden. Anfordern android.permission.BLUETOOTH geben Sie gid net_bt die wiederum auf eine Nummer in der Plattform Quellcode zugeordnet ist (ich kenne nicht die Standardeinstellung für net_bet, weshalb ich es maskiert).

Ich habe dieses Thema in einem anderen Beitrag berührt, wo ich erkläre, wie man Berechtigungen und Gids erstellt und wie sie einander zugeordnet werden. https://stackoverflow.com/a/39775558/2815572