8 votes

Comment puis-je accéder à `$HOME/storage` en dehors de Termux (avec un explorateur de fichiers) ?

Comment puis-je accéder à $HOME/storage Répertoire Termux sur Android Pie avec un explorateur de fichiers GUI ?

Dans Termux, j'imprime le répertoire de travail avec pwd et il montre $HOME/storage comme :

/data/data/com.termux/files/home

Mon stockage interne ressemble à ceci :

.
 Alarms
 Android
|   data
|   |   ...
|   |   com.termux
|   |  |    files
|   |  |        0 items
|   |   ...
|    ...
 DCIM
 Download
 ...

Mon stockage externe ressemble à ceci :

.
 Android
|   data
|   |   ...
|   |   com.termux
|   |  |    files
|   |  |        0 items
|   |   ...
|    ...
 LOST.DIR

Ni mon stockage interne, ni ma carte sd, ne contiennent une /data/ au niveau de la racine. Où se trouve ce /data/ ? D'ailleurs, où se trouve la racine /storage/ répertoire ? Où se trouve la racine /emulated/ répertoire ? Où se trouvent ces répertoires et pourquoi ne puis-je pas y accéder ?

6voto

Irfan Latif Points 16863

Si vous l'avez fait termux-setup-storage précédemment, créer random_file.txt dans $HOME/storage/shared . Cela sera créé sur /sdcard/ . Mais vous n'avez pas besoin de vous embêter avec ça. Il suffit d'accorder l'autorisation de stockage Termux et de sauvegarder directement sur /sdcard/ par exemple

echo xyz >/sdcard/random_file.txt

$HOME/storage est en fait /data/data/com.termux/files/home/storage qui n'est pas accessible aux autres applications sans accès Root. C'est ainsi que la sécurité d'Android est conçue.

Où se trouve cette /data/ répertoire ?

C'est une partition nommée userdata monté dans rootfs à /data . Pour plus de détails, voir Comment l'espace disque est utilisé sur un appareil Android ?

où se trouve la Racine /storage/ répertoire ?

Il s'agit également d'un répertoire dans rootfs où tmpfs est monté. Le contenu de ce répertoire est différent selon les applications en raison des espaces de noms de montage et de l'émulation du système de fichiers.

Où se trouve la racine /emulated/ répertoire ?

C'est aux trois endroits suivants :

/mnt/runtime/default/emulated
/mnt/runtime/read/emulated
/mnt/runtime/write/emulated

Où se trouvent ces répertoires et pourquoi ne puis-je pas y accéder ?

Ces répertoires sont ceux que vous voyez lorsque vous ouvrez une application d'exploration de fichiers. Le chemin du système de fichiers émulé est /sdcard .

Sur Android 6+, /data/media est émulée à trois VIEWS mentionnés ci-dessus. L'un d'entre eux est monté en liaison avec /storage/emulated en fonction de l'état des autorisations de stockage de l'application. emulated contient les User_ID de tous les utilisateurs (s'il y a plusieurs utilisateurs ou profils). Le propriétaire du dispositif est toujours 0 . Donc /sdcard Les points suivants /storage/emulated/0 . C'est le stockage que les applications peuvent lire et écrire.

De plus, les applications peuvent lire et écrire dans leur répertoire de données privé dans /data/user/<User_ID>/ (qui est /data/data/ pour le propriétaire du dispositif). Pour plus de détails, voir Qu'est-ce que /storage/emulated/0/ ? y Qu'est-ce que l'UID "u#_everybody" ? .

D'après votre commentaire :

Est-ce que Termux peut écrire sur la carte SD physiquement insérée dans mon téléphone ? Si oui, comment ?

Les applications n'ont pas d'accès en écriture au niveau du système de fichiers sur la carte SD externe, sauf celles qui utilisent les API SAF. Citation de documentation officielle Termux n'a pas de support pour SAF :

Pourquoi Termux a-t-il un accès en lecture seule à la carte SD externe ?

Sur les versions récentes d'Android, l'accès en écriture à la carte SD externe se fait via le Storage Access Framework. Il n'est pas possible de fournir son API aux programmes en ligne de commande. .

Cependant, les applications peuvent toujours (avec et sans la permission de Storage) lire et écrire dans leurs répertoires privés dans le stockage partagé, c'est-à-dire dans le répertoire Android/data/ (et quelques autres) sur /sdcard/ et une carte SD externe. Pour plus de détails, voir Comment déplacer des fichiers vers une carte SD externe sur un Android non rooté ?

D'après votre commentaire :

Donc, en gros, je n'ai pas accès au répertoire racine de mon propre appareil, sans le faire démarrer ? Je ne peux commencer qu'au troisième niveau ? C'est frustrant.

/data contient également les paramètres du système, y compris des données sensibles comme les bases de données de mots de passe (bien qu'elles ne soient pas enregistrées en texte clair). Ainsi, /data n'est pas accessible sans Root pour :

  • Protéger les données privées des applications contre les autres applications (chaque application est un utilisateur UNIX avec un UID unique).
  • Protégez les données et les paramètres du système contre les applications malveillantes et les logiciels malveillants.
  • Isoler les utilisateurs/profils des autres utilisateurs/profils
  • Ne pas permettre aux applications d'accéder au stockage partagé sans l'autorisation de stockage accordée
  • 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