10 votes

Impossible d'utiliser chmod pour modifier les permissions sur un téléphone émulé

J'essaie de créer une application dans Android Studio et j'ai besoin de faire référence à un fichier particulier dans l'application, cascade.xml. Je l'ai poussé sur le téléphone émulé sans problème en utilisant adb (il est dans le dossier storage/sdcard). Cependant, l'application ne peut toujours pas y accéder et je pense que c'est parce que les autorisations de fichiers sont les suivantes -rwxrwx--- (ce qui signifie pas d'accès global). Ces permissions sont vérifiées dans ADM et à l'aide de ls -l <filename>

J'essaie de changer les permissions de ce cascade.xml en retournant dans le shell ( adb shell ) en utilisant chmod 777 /storage/sdcard/cascade.xml mais il échoue discrètement et ne fait rien. J'ai essayé de faire d'autres chmods, et il ne se passe rien du tout. Si je fais su et ensuite chmod 777 /storage/sdcard/cascade.xml même chose. J'essaie de faire d'autres chmod s comme chmod 700 et autres ne font rien non plus (échec silencieux).

Maintenant, si j'essaie de créer un répertoire dans le dossier, je peux le faire en utilisant mkdir - mkdir /storage/sdcard/cascades fonctionne bien, et les autorisations de fichiers du dossier sont les suivantes drwrwx--- . Cependant, si j'essaie d'utiliser mkdir chmod pour créer le dossier et se retrouver avec les mêmes permissions - comme mkdir chmod 770 /storage/sdcards/cascades2 - la coquille dit mkdir failed for chmod, Read-only file system . Je peux aussi créer des fichiers texte en faisant quelque chose comme echo 'Hello World.' > /storage/sdcard/foo.txt (qui le crée avec les permissions de -rwxrwx--- ), mais si vous essayez de chmod après, rien ne se passe. Si j'essaie de faire "echo 'Hello World.' > storage/sdcard/foo2.txt chmod 777, c'est la même permission mais la taille du fichier est de 24 au lieu de 14.

J'ai fait toutes les itérations de mount y remount et je n'arrive toujours pas à faire fonctionner chmod correctement. J'ai essayé de lancer su devant tout, et rien. J'ai essayé de commencer avec adb root et ça dit que je suis déjà dans Root. Je peux aussi pousser des trucs dans l'émulateur en utilisant ADM et adb push . Malheureusement, tout mon environnement se trouve sur un appareil Windows 7, et je ne peux donc pas créer un fichier avec la commande suivante -rwxrwxrwx et le transférer (à moins qu'il n'y ait un paramètre de permission dans Windows qui le transfère en tant que permission 777 que je ne connais pas).

Edit : J'ai oublié de mentionner que le téléphone émulé fonctionne avec l'API 19, les API cibles de Google (système x86), sous KitKat.

18voto

Oleg Svechkarenko Points 994

J'ai compris - il semble que vous ne pouvez pas changer les permissions pour les fichiers sur sdcard . Déplacé vers data/local y chmod a fonctionné comme un charme.

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