So, I'm trying to make an app in android studio and I need to reference a particular file in the app, cascade.xml. I've pushed it onto the emulated phone no problem using adb (it's in the storage/sdcard folder). However, the app still can't access it and I think that's because the file permissions are -rwxrwx--- (which means no global access). These permissions are verified in ADM and using ls -l <filename>

I try to change the permissions of that cascade.xml file by going back into the shell (adb shell) using chmod 777 /storage/sdcard/cascade.xml, but it fails quietly and doesn't do anything. Tried doing other chmods, and nothing happens to it at all. If I do su and then chmod 777 /storage/sdcard/cascade.xml, same thing. Trying to do other chmods like chmod 700 and the like also do nothing (quiet fail).

Now, if I try to make a directory in the folder, I can do that using mkdir - mkdir /storage/sdcard/cascades works fine, and the file permissions of the folder are drwrwx---. However, if I try to use mkdir chmod to create the folder and end up with the same permissions - like mkdir chmod 770 /storage/sdcards/cascades2 - the shell says mkdir failed for chmod, Read-only file system. I can also make text files doing something like echo 'Hello World.' > /storage/sdcard/foo.txt (which creates it with permissions of -rwxrwx---), but if try to chmod it afterwards, nothing happens. If I try to do `echo 'Hello World.' > storage/sdcard/foo2.txt chmod 777, it's the same permission but the file size is 24 instead of 14.

I've done every iteration of mount and remount I can think of, and I still can't get chmod to work properly. I've tried running su in front of everything, and nothing. I've tried starting with adb root, and it says I'm already in root. I can also push stuff the emulator using ADM and adb push. Unfortunately, all of my environment is on a Windows 7 device, so I can't just make a file with -rwxrwxrwx permissions and just transfer it across (unless there's a permission setting in Windows that will make it transfer over as a 777 permission that I don't know about).

Edit: Forgot to mention, the emulated phone is running API 19, target Google APIs (x86 System), running KitKat.


Figured it out - seems like you just can't change permissions for files on sdcard. Moved it to data/local and chmod worked like a charm.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.