4 votes

Comment remonter sdcardfs pour permettre de définir les autorisations de fichiers / propriétés ?

J'ai un OnePlus One rooté exécutant LineageOS 15.1 (Oreo 8.1). Je suis en train d'essayer d'ajuster certaines autorisations de fichiers/propriétés sur la partition de la carte sd émulée.
La partition semble être montée comme un sdcardfs:

A0001:/ # mount | grep /storage/emulated                                                                                                                                                           
/data/media on /storage/emulated type sdcardfs (rw,nosuid,nodev,noexec,noatime,fsuid=1023,fsgid=1023,gid=1015,multiuser,mask=6,derive_gid)

Je ne sais pas ce que cela signifie. Certaines personnes suggèrent qu'Android utilisait mount puis a basculé vers fuse et maintenant avec Oreo utilise sdcardfs. Je ne suis pas sûr si cela a un sens, mais je suis un peu inquiet qu'une commande comme mount -o remount, rw /mnt/sdcard/ (qui apparemment était ce que vous deviez faire dans le passé pour pouvoir définir les autorisations de fichier sur la partition de la carte sd émulée).

Démonstration courte montrant que les autorisations de fichier ne seront pas appliquées :

A0001:/ $ su
A0001:/ # ls -la /storage/emulated                                                                                                                                                                 
total 12
drwx--x--x  4 root sdcard_rw 4096 2018-07-24 17:44 .
drwxr-xr-x  4 root root        80 2018-07-24 17:21 ..
drwxrwx--x 14 root sdcard_rw 4096 2018-07-24 17:20 0
drwxrwx--x  2 root sdcard_rw 4096 1970-01-01 01:12 obb
A0001:/ # touch /storage/emulated/a
A0001:/ # ls -la /storage/emulated/a
-rw------- 1 root sdcard_rw 0 2018-07-24 17:44 /storage/emulated/a
A0001:/ # chmod 777 /storage/emulated/a
A0001:/ # ls -la /storage/emulated/a                                                                                                                                                               
-rw------- 1 root sdcard_rw 0 2018-07-24 17:44 /storage/emulated/a

(Remarque : il se passe la même chose si j'utilise /storage/emulated/0 au lieu de /storage/emulated)

Ma question est : Que dois-je exécuter afin de pouvoir changer les autorisations de fichier et les propriétés de fichier sur cette partition sdcardfs étrange.

4voto

Irfan Latif Points 16863

Vous ne pouvez pas modifier les autorisations et les propriétés des fichiers sur sdcardfs.

Sur tous les systèmes d'exploitation basés sur le noyau Linux - comme Android l'est - il est possible de définir des autorisations sur les fichiers (y compris les répertoires) à condition que le système de fichiers prenne en charge les autorisations UNIX (uid, gid, mode). Des exemples courants de tels systèmes de fichiers sont ext4 et f2fs.

Cependant, le stockage interne d'Android (appelé de manière confuse externe) qui est accessible par les applications installées à /sdcard, n'est pas un système de fichiers réel mais virtuel / émulé exposant /data/media (qui est un système de fichiers réel) via sdcardfs. sdcardfs et son prédécesseur FUSE exposent le système de fichiers émulé avec un ensemble fixe d'uid, gid et masque (mode). Ainsi, les commandes chmod et chown n'ont aucun impact, que ce soit exécuté via CLI (adb shell ou émulateur de terminal) ou GUI (explorateur de fichiers).

Il est possible de modifier les bits de permission du fichier sur le système de fichiers réel sous-jacent, mais l'accès à /data/media nécessite un accès root car seul l'UID/GID 1023 (aid_media_rw) a un accès en lecture au répertoire. Et les autorisations resteront les mêmes lorsqu'elles seront visualisées depuis la vue émulée /sdcard.

Lecture supplémentaire :

Articles associés :

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