Проблема с правами доступа к файлам Android / Linux - PullRequest
1 голос
/ 18 ноября 2010

Я создал каталог во внутреннем хранилище моего приложения (/data/data/com.my_app) и дал глобальные разрешения на чтение / запись для каталога с помощью метода

context.getDir(DATA_DIR_NAME, Context.MODE_WORLD_READABLE | Context.MODE_WORLD_WRITEABLE);

Через мое приложение я проверил правильность прав доступа к файлу linux:

drw-rw-rw- app_71 app_71 2010-11-16 18:38 app_data

И я смог читать / записывать файлы в / из каталога app_data простохорошо.Однако один из моих разработчиков вдруг не смог больше писать в каталог.Наше приложение имеет проблемы с доступом к каталогу на своем устройстве.

Странно то, что разрешение на доступ к файлу для каталога остается прежним.Мы не можем делать какие-либо записи в каталог, и мы больше не можем читать какие-либо файлы в каталоге (ранее файлам было предоставлено глобальное разрешение rw).

Единственное, что мы можем сделать, это adb shell ls /data/data/my_app/app_data, чтобы увидеть наш список файлов.Выполнение adb shell ls -l /data/data/my_app/app_data странным образом ничего не возвращает.И мы не можем записать CD в каталог.

У кого-нибудь есть указатель на то, в чем проблема или как ее решить?Мы находимся в конце нашего ума.

Очень ценится.

1 Ответ

1 голос
/ 18 ноября 2010

В каталогах должен быть установлен бит execute (X), чтобы иметь возможность доступа к содержимому каталога. Я не знаю режимы android, но поищите MODE_WORLD_EXECUTABLE и посмотрите, сможете ли вы его установить.

По сути, вам нужен режим 0777 (rwxrwxrwx) для глобального доступа к каталогу со всеми разрешениями.

Причина, по которой работает ls, заключается в том, что у вас есть разрешение на чтение имен файлов в каталоге. ls -l не работает, потому что вы не можете получить доступ к файлам в каталоге, чтобы получить метаданные, которые -l напечатает.

...