Pourquoi aurais-je une permission refusée en utilisant adb pour copier un répertoire dans un sous-répertoire sur mon téléphone, alors que je pouvais copier dans son répertoire parent et que les deux ont les mêmes permissions?
J'ai essayé cela de mon PC à mon Nexus 5 fonctionnant sous 6.0.1 (Oct 5):
adb push Dir /sdcard/Dir/Subdir
Cela a échoué avec
Permission refusée
Cela a déjà fonctionné, sans aucun changement dont je suis conscient.
J'ai lancé adb shell et exécuté
ls -l
pour obtenir les autorisations pour /sdcard (stockage/emulated/0), /sdcard/Dir et /sdcard/Dir/Subdir:
drwxrwx--x root sdcard_rw
Ensuite:
cd /sdcard/Dir/Subdir
mkdir XYZ
Je reçois
mdkdir: XYZ: Permission Denied
J'ai essayé:
su
mkdir XYZ
Encore une fois, permission refusée
J'ai ensuite essayé un autre push
adb push XYZ /sdcard/Dir
Cela a fonctionné et a copié tous les fichiers.
Pourquoi cela fonctionnerait-il vers /sdcard/Dir et pas vers /sdcard/Dir/Subdir, alors que les deux ont les mêmes permissions? Pourquoi la permission serait-elle refusée pour root?
1 votes
Avez-vous créé ce sous-répertoire en naviguant dans /data/media/0/Dir/? Quoi qu'il en soit, veuillez fournir la sortie de
su -c 'ls -l /data/media/0/Dir/Sous-répertoire'
et comparer les autorisations avec le reste des sous-répertoires là-bas.0 votes
@Firelord Je n'ai pas créé le sous-répertoire lorsque j'ai navigué dessus. L'ensemble de l'arborescence de répertoires (/sdcard/Dir) a été créé par un adb push. Les autorisations pour Dir sont dwrxrwxr-x media_rw media_rw, tandis que pour Subdir elles sont dwrxrwxr-x root root. Lorsque j'utilise simplement ls -l sur storage/emulated/0, j'obtiens dwrxrwx--x root sdcard_rw sur Dir?
1 votes
Pouvez-vous changer la permission de /data/media/0/Dir/Subdir en rwxrwxrwx, ou alors changer le groupe d'utilisateurs de root à media_rw? Assurez-vous d'exécuter les opérations sur le chemin /data/media/0/.. et non sur /storage/emulated/..
0 votes
@Firelord Cela a fonctionné (chmod 777). Merci. Quelle est la différence entre /data/media/0 et /storage/emulated ou /sdcard? Ils semblent tous contenir les mêmes fichiers?
0 votes
/data/media est le chemin réel dans le système de fichiers EXT4. /storage héberge le /data/media style émulé en FAT que vous et les applications pouvez lire et écrire. Je ne connais pas la raison derrière cette émulation.