Где пути каталогов отображаются на метки в SE Linux? - PullRequest
1 голос
/ 14 апреля 2020

Я вижу, что типы файловой системы и типы файлов объявлены в /external/sepolicy/file.te в AOSP. Но каждый тип представляет или отображается в определенный каталог, как указано в комментариях.

Ссылка: https://android.googlesource.com/platform/external/sepolicy/+/refs/heads/lollipop-release/file.te

Пример 1:

#Default type for anything under /system.
type system_file, file_type;

Пример 2:

#/data/data subdirectories - app sandboxes
type app_data_file, file_type, data_file_type;

Это означает, что мы объявляем тип app_data_file и связываем этот тип с атрибутами file_type и data_file_type

Примечание. Все атрибуты объявлены в файл атрибутов.

Ссылка: https://android.googlesource.com/platform/external/sepolicy/+/refs/heads/lollipop-release/attributes

  1. Упоминается, что тип system_file предназначен для пути /system и app_data_file для /data/data подкаталогов. Но где эти типы и пути отображаются или связаны явно? Если они нигде не отображаются, то как ОС узнает, что system_file для /system

  2. Если мне нужно создать новый тип my_app_type и сопоставить его с dir /data/com.my_app/photos/, как мне этого добиться?

1 Ответ

2 голосов
/ 14 апреля 2020

Они маркируются, например. с device/manufacturer/device-name/sepolicy/file_contexts и другими file_contexts файлами (как видно при сборке AOSP). См. Обозначьте новые услуги и отказы в адресах для более подробного объяснения.

Также см. Документацию RHEL (откуда она взята), поскольку вторая часть вопроса трудно ответить; Я бы предпочел задаться вопросом, требуется ли это вообще и почему? Если я правильно понимаю назначение этого каталога, на Android это может быть задача для FileProvider, чтобы открыть эти файлы для других приложений. Понижение стандартов безопасности, как правило, не является хорошей идеей, в то время как есть другой доступный способ, который бы осуществлял доступ из уже разрешенного контекста безопасности. Я имею в виду, что даже если можно перечислить метки с помощью ls -laZ (подобно списку файловой системы), контекст безопасности всегда является перспективой, с которой происходит доступ. Пример AndroidX Camera2Basi c продемонстрирует, что я имею в виду (это FileProvider для внутренней памяти приложения).

...