2 votes

Adb autorisation refusée pour pousser des fichiers vers un sous-répertoire

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/..

1voto

Firelord Points 23064

Tel qu'il apparaît dans ce commentaire, les autorisations de fichiers et le contrôle d'accès à SubDir diffèrent de ce qui devrait être idéalement.

Le problème :

# ls -l sur /data/media/0/Dir
dwrxrwxr-x root root

Le groupe d'utilisateurs aurait dû être media_rw au lieu de root.

La solution est de changer de groupe approprié ou de rendre le répertoire accessible en écriture par d'autres.

chmod 777 /data/media/0/Dir/SubDir       # rendre SubDir accessible en écriture par d'autres
chgrp media\_rw /data/media/0/Dir/SubDir  # Ou changer le groupe de root à media\_rw

Remarque : vous devrez peut-être installer Busybox ou Toybox pour avoir et utiliser chmod et/ou chgrp.

0voto

Aaron Points 445

Il y a un problème similaire signalé dans adb push ... Permission denied où j'ai fini par pousser le fichier dans /sdcard/ puis utilisé adb shell pour copier le fichier dans le sous-répertoire où je devais le mettre.

Pour compléter:

Supposons que j'ai un fichier d'extension test.obb que je veux installer sur un appareil Android physique local, et le nom de mon package de l'application est app.example.test.

J'ai poussé le fichier en utilisant adb push par exemple adb push test.obb /sdcard/

adb shell

cd /sdcard/Android/obb/app.example.test/
cp /sdcard/test.obb .
ls -la

Je peux maintenant voir que le fichier obb est dans le dossier où il doit être.

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