Как исправить права доступа к файлам на Android 5, чтобы определенное приложение могло получить доступ к определенным файлам?

Предыстория: у меня был Nexus 4 с root-доступом и Android 4.4.4, который работал хорошо. Потом пришло уведомление об обновлении до Android 5. Для этого я прошил стоковое рекавери для Android 4.4.4 от Google и начал обновление (но не рутировал телефон, возможно это была ошибка). Сам процесс обновления прошел гладко. После обновления я перепрошил TWRP 2.8.2 и перепрошил с помощью SuperSU 2.36, и сделал резервную копию.

Затем я понял, что некоторые данные (фотографии, электронные книги и т. д.) отсутствуют. Ну, на самом деле не отсутствует, а находится в поддельном каталоге «0» (/storage/emulated/0/0). Кроме того, когда я попытался получить доступ к своей папке с электронными книгами напрямую с помощью FBReader, мне сказали, что недостаточно прав для доступа к каталогу.

Сначала я попробовал кнопку «Исправить разрешения» в TWRP, но это поставило меня в цикл загрузки. После восстановления резервной копии я использовал файловый менеджер TWRP, чтобы переместить все данные из поддельного каталога «0» туда, где они принадлежат, и удалил теперь пустой каталог «0». Перезагрузка снова вызвала экран «Оптимизация приложений», но только для 7 приложений. Теперь я снова могу получить доступ к своим электронным книгам, но по-прежнему нет (старых) фотографий в приложении Google Photos. Фотографии, сделанные после резервного копирования, отображаются нормально. С файловым менеджером или терминалом я могу получить доступ ко всем фотографиям, как только позвоню setenforce 0. Разрешения, показанные ls -Z /storage/emulated/0/DCIM/Cameraпохожими на все фотографии, как видимые, так и невидимые в приложении для фотографий:-rw-rw---- root sdcard_r u:object_r:fuse:s0. Итак, я предполагаю, что есть какое-то дополнительное разрешение SELinux, которое я должен установить для старых файлов изображений, чтобы приложение для фотографий могло получить к ним доступ. Поэтому мой вопрос: какие концепции разрешений здесь работают и какие команды необходимы для назначения файлов/каталогов определенному приложению? Спасибо.

Обновление: я только что узнал, что могу делать новые снимки только с помощью setenforce 0, поэтому где-то должна быть серьезная поломка SELinux.

Ответы (1)

Попробуйте использовать бета-версию Supersu 2.49 для Lollipop (LP) 5.0.

Сначала сделайте полный рут.

У меня есть LP 5.0 Touchwiz на вкладке Samsung с SElinux, обеспечивающим и работающим корнем. Версия Supersu в вашем рекавери, вероятно, может быть заменена распаковкой вашего рекавери любым количеством методов и / или наборов инструментов и заменой архива. Лучшим подходом было бы обновить восстановление, если оно доступно. Кроме того, для сценариев исправления разрешений требуется другой/новый подход, начиная с Android 5.0.

Это мой несовершенный сценарий исправления разрешений для другой моей вкладки Samsung с LP 5.1.1:

#!/system/bin/sh
mount -o rw,remount /system
find -type d -exec chmod 755 {} \;
find -type d -name '.*' -exec chmod 755 {} \;
find -type f -name '.*' -exec chmod 644 {} \;
find -type f -name '.su' -exec chmod 755 {} \;
find -type f -exec chmod 755 {} \;
find -type f -name '*.h' -exec chmod 644 {} \;
find -type f -name '*.a' -exec chmod 644 {} \;
find -type f -name '*.o' -exec chmod 644 {} \;
find -type f -name '*.so' -exec chmod 644 {} \;
find -type f -name '*.so.*' -exec chmod 644 {} \;
find -type f -name '*.c' -exec chmod 644 {} \;
find -type f -name '*.cpp' -exec chmod 644 {} \;
find -type f -name '*.cgf' -exec chmod 644 {} \;
find -type f -name '*.xml' -exec chmod 644 {} \;
Привет! Могу я узнать, как вы пришли к выводу, что права доступа к этим файлам должны быть такими, какие вы написали? Я предполагаю, что либо вы сравнили свое ПЗУ с чистой установкой и проверили разрешения, либо, возможно, вы взяли информацию из источника, но забыли упомянуть.
@Firelord хорошая мысль, сумасшедшие каталоги всегда имеют номер 755, если только не происходит что-то особенное. двоичные файлы, скрипты и в некоторых случаях библиотеки [специальные] всегда 755 общих библиотек, статические библиотеки, файлы конфигурации, xml, cfg, config, txt и т. д., всегда 644. Это почти универсально с несколькими/специальными исключениями, и это " стандартная» схема Android. В 5.0 и более поздних версиях блокировкой каталогов управляет selinux независимо от владельца или режима.