14 votes

Pourquoi les autorisations du superutilisateur sont-elles nécessaires pour accéder à la partition /data ?

Le compte par défaut est l'utilisateur normal, et je l'ai utilisé pour installer l'APK Google Play Store (pour /data ). Ensuite, Google Play Store a été ouvert en utilisant les autorisations de mon utilisateur actuel, et il est utilisé pour télécharger et installer d'autres APK dans /data . Cela signifie que j'ai un accès complet à la /data partition.

Pourquoi les applications de gestion de fichiers ne peuvent-elles pas afficher cette partition sans les autorisations de la racine ?

15voto

Irfan Latif Points 16863

D'abord pour clarifier seulement root (UID 0 ) n'est pas suffisant pour accéder à /data Le contrôle d'accès discrétionnaire basé sur les UID/GID traditionnels d'UNIX ne répond pas aux besoins des systèmes d'exploitation modernes et complexes tels qu'Android. Le contrôle d'accès discrétionnaire est complété par le contrôle d'accès obligatoire (MAC) ; SELinux dans le cas d'Android. Ainsi, pour accéder à /data votre processus/utilisateur doit avoir une politique d'autorisation explicitement définie.

Google Play Store a été ouvert avec l'autorisation de mon utilisateur actuel

Ce n'est pas correct. Le concept de "utilisateurs" est différent sur Android et sur les Linux normaux. Sur Android, chaque application se voit attribuer un UID unique (de 10000 à 19999) et s'exécute sous son propre utilisateur. Les privilèges sont alors contrôlés par la fonction cadre d'autorisation . Au niveau du système de fichiers, chaque application est liée à quelques répertoires (privés et partagés), qui sont également soumis à certaines autorisations. Pour plus de détails, voir Où les applications Android stockent-elles les données ?

Il n'y a donc pas d'utilisateur humain qui puisse exécuter tous ses programmes sous l'utilisateur/UID actuel.

il a téléchargé et installé d'autres APK dans /data. Cela signifie que j'ai un accès complet à l'espace /data partition.

Play Store ne s'installe pas apk il effectue simplement quelques vérifications et télécharge le fichier à l'aide du Download Manager ( com.android.providers.downloads ) qui fonctionne sous son propre UID. Installation de l'application sur /data/app et d'autres répertoires pertinents est principalement géré par Gestionnaire de paquets service fonctionnant sous l'UID 1000 ( system_server ) dans la pile Java et installd fonctionnant sous l'UID 0 dans la pile native. Installateur de paquets ( com.android.packageinstaller ) est l'application système - fonctionnant sous son propre UID - qui fournit une interface utilisateur permettant d'installer ou de désinstaller des applications manuellement. Voir plus de détails aquí . De même, toutes les applications et tous les processus ont leurs propres contextes SELinux pour permettre l'accès aux processus et aux fichiers nécessaires. Un certain nombre d'API et d'IPC sont impliquées dans ce processus.

Pourquoi l'autorisation du super-utilisateur est-elle nécessaire pour accéder à /data partition ?

En clair, il s'agit d'une protection. Comme vous avez besoin d'un accès Root pour modifier /etc sous les systèmes d'exploitation Linux et, sous Windows, vous devez disposer des droits d'administrateur pour ouvrir l'éditeur du registre. Cette restriction a pour but d'isoler et de protéger les processus de chaque application dans un environnement confiné. Autres que les DAC y MAC d'autres phénomènes comme Linux capacités , espaces nominatifs , cgroupes y seccomp Les filtres sont également utilisés à cette fin bac à sable . Il permet également de limiter l'accès des applications aux ressources et facilite l'audit.

Quelques raisons courantes tirées de ma réponse à la question Comment accéder à $HOME/storage en dehors de Termux ? :

/data La partition contient également les paramètres du système, y compris des données sensibles telles que les bases de données de mots de passe (bien qu'elles ne soient pas sauvegardées en texte clair), les contacts, les journaux d'appels et les statistiques des applications. Donc /data n'est pas accessible sans Root pour :

  • Protéger les données privées des applications contre les autres applications
  • Protéger les données et les paramètres du système contre les mauvaises applications et les logiciels malveillants
  • Isoler les utilisateurs/profils des autres utilisateurs/profils
  • Ne pas laisser les applications accéder au stockage partagé sans autorisation de stockage.
  • Appliquer les API du cadre Android afin que les applications ne puissent pas utiliser les ressources du système et lire/manipuler les informations et les paramètres de l'appareil sans les autorisations appropriées.

Et il y a peut-être d'autres raisons. Pour plus de détails, voir Les utilisateurs multiples sont-ils protégés les uns des autres différemment des applications ?

androidalle.com

AndroidAlle est une communauté de androiders où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X