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 ?