Ist es möglich, die Berechtigungen einer App auf bestimmte Ordner (und Unterordner) zu beschränken?

Bei der Installation einer App ist je nach App der Zugriff auf das Dateisystem erforderlich und wird zum Zeitpunkt der Installation angefordert. Ist es möglich, dies auf bestimmte Ordner und deren Unterordner zu beschränken? Zum Beispiel ein Fotoeditor oder eine Tagebuch-App: Warum sollten solche Apps auf das gesamte Dateisystem zugreifen können?

Wenn nicht, wäre es sicherheitstechnisch vielleicht keine schlechte Idee ...

1) Vielleicht habe ich es verpasst, aber ich erinnere mich nicht an eine Android-Berechtigung für den Zugriff auf das Dateisystem, sondern nur für den gemeinsam genutzten Speicher. 2) Android verwendet einen Linux-Kernel, sodass Sie Dateien und Ordner immer auf etwas beschränken können, indem Sie Gruppen verwenden. // Das heißt, Ihre Idee ist für mich weit gefasst, daher schlage ich vor, dass Sie das spezifische Problem, das Sie haben, genau bestimmen.
Wenn Sie keinen Zugriff benötigen (mit Ausnahme von App-spezifischen Ordnern), fordern Sie einfach keinen an. Standardmäßig kann jede App auf ihren eigenen Speicherplatz schreiben, dh /data/data/<package_name>und /sdcard/Android/data/<package_name>. Ein Fotoeditor benötigt natürlich "Vollzugriff", wenn Sie vorhandene Fotos bearbeiten möchten, die sich außerhalb dieses Bereichs befinden. // Abgesehen davon, was ist der Hintergrund Ihrer Frage? Welche Erlaubnis angefordert wird, ist eine Entscheidung des App-Entwicklers, mit der wir Benutzer nicht umgehen können.
Es ist nicht klar, nach welchem ​​Dateisystem und welchen Verzeichnissen OP fragt. Entweder geht es um komplett privaten Speicher oder private Verzeichnisse in Shared Storage oder Public Shared Storage oder Betriebssystempartition ( /systemetc.)

Antworten (1)

Könnte theoretisch funktionieren.

Jede auf einem Android-Telefon installierte App erhält eine Benutzer-ID, beginnend mit 10000 für die erste App, und es wird eine Gruppe mit derselben ID erstellt.

BusyBox (und vielleicht root?) erforderlich!

Um die UID einer App zu erhalten, führen Sie Folgendes in einem Terminalemulator aus.

dumpsys package com.example.myapp

Ersetzen Sie com.example.myapp durch den Paketnamen Ihrer Ziel-App.

  1. Formatieren Sie Ihren Speicher (extern/intern) mit ext4, vorausgesetzt, Sie haben eine Sicherungskopie aller Dateien.
  2. Stellen Sie die Sicherung wieder her.
  3. chown und chmod die Ordner, die Sie einschränken möchten. Es ist eine bessere Option, Ihre Beschränkungen auf Gruppen zu stützen.

Wieder ist es nur Theorie. Kann funktionieren oder nicht. Wenn Sie einen der Schritte nicht verstanden haben, machen Sie sich mit ihnen vertraut oder versuchen Sie sie nicht. Dies kann sowohl zu vorübergehendem als auch zu dauerhaftem Datenverlust führen.

Im Speicherdesign von Android ext4ist das Formatieren von externem Speicher nicht möglich. Es ist ein von vielen UIDs gemeinsam genutzter Speicher, sodass ein Dateisystem ohne Berechtigungen verwendet wird.
@IrfanLatif Sie sollen selbst mit ext4 formatieren. Ich habe nie gesagt, dass es mit ext4 kommt. Bei einigen Geräten war es möglich, dass Ihre SD-Karte mit einem nicht standardmäßigen fs erkannt wurde. Mit Ausnahme der emulierten SD-Karte und anderer externer Speicher sind alle Speicherpfade bereits basierend auf der UID der Apps eingeschränkt.