Проблема с правами доступа к файлам Android / Linux

1

Я создал каталог в моем внутреннем хранилище приложений (/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 в каталог.

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

Большое значение.

  • 0
    есть ли что-нибудь полезное в журналах, когда вы пытаетесь получить доступ к директории с телефона, который его не открывает?
  • 0
    Команды ADB Shell не возвращают ничего полезного. Если я пытаюсь прочитать / записать файл в каталоге через мое приложение, оно выдает исключение, которое описывает «Отказано в доступе». С правами drw-rw-rw- для каталога я ожидал, что смогу хотя бы написать файл. И ничего, кроме исключения трассировки стека, не печатается в logcat.
Показать ещё 1 комментарий
Теги:
permissions
adb

1 ответ

1

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

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

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

  • 0
    Я попробую это, спасибо за подсказку!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню