Android Ext[2-4] на SDCard

Dec 08, 2017 19:26

Коротко: практически нереально. Для хранения статики подходит за милую душу, а вот если приложения будут что-то писать на внешнюю sd-карту, то делать они это будут (сцуки...) с жесткими правами доступа: владелец и группа - приложение, которое создало файл. Права - 600 ( Read more... )

android, Шаманство

Leave a comment

Comments 4

klink0v December 8 2017, 18:53:48 UTC

Ваще-то это базовая фишка ондроеда: сделать так, чтобы одни приложения не могли бы копаться в данных других.

Reply

rustedowl December 8 2017, 19:07:25 UTC
Не, я полностью согласен - когда речь идет о разделах /system и /data
Но я-то про внешнюю sd-карту. То есть, ты сделал снимок - а посмотреть в галерее его уже не можешь, прав нет. В результате - можно использовать только файловые системы, не поддерживающие никсовые права доступа.

Reply

klink0v December 8 2017, 19:25:20 UTC
Пытаюсь сообразить как это в линухе реализовано технически...

Там есть утилита umask, которая устанавливает для контекста выполнения приложения дефолтную маску прав создания файла. Если я чего-то помню, то это работает на уровне ядра применительно к отдельно взятому процессу. И эта штука не умеет распознавать куда именно (в какую точку монтирования) хочет писать тот или иной процесс в данный момент времени. С точки зрения приложения это все VFS (Virtual File System).

Как Workaround, приложение может создавать два разных процесса: один для "штатной" работы, второй для работы с SD-картой. Но это лютый геморрой для программиста. А как сделать разные umask-и в пределах одного процесса для разных точек монтирования... лично у меня нет идей. Потому что приложение ничего не знает о том, куда оно пишет. А ядро видит один экземпляр процесса, для которого выставляет права соответствующим образом.

Reply

rustedowl December 9 2017, 06:18:23 UTC
Я смотрел в сторону ACL, можно было бы решить через него. "setfacl -R -d "g:sdcard_rw:rwx"" и никаких проблем, для новых файлов права наследуются от каталога. Но увы, в android это не поддерживается. Можно было попробовать задать права на другом никсе, а потом смонтировать sd-карту с параметром acl, но я уже задолбался, и решил что extfat мне тоже сойдет. Поддержка больших файлов есть - а больше мне ничего и не треба.

Reply


Leave a comment

Up