我看到文件系统类型和文件类型是在AOSP中的/external/sepolicy/file.te中声明的。但每种类型都表示或映射到注释中提到的特定目录。
链接:https://android.googlesource.com/platform/external/sepolicy/+/参考文献/标题/棒棒糖发布/文件.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/+/参考文献/标题/棒棒糖发布/属性
提到类型
system_file
用于路径/system
,app_data_file
用于/data/data
子目录。但是,这些类型和路径在哪里被明确映射或关联?如果它们没有映射到任何地方,那么操作系统将如何知道system_file
用于/system
如果我必须创建一个新类型
my_app_type
并将其映射到目录/data/com.my_app/photos/
,我该如何实现?
这些文件被标记,例如device/manufacturer/device-name/sepolicy/file_contexts
和其他file_contexts
文件(在构建AOSP时可以看到(。有关更详细的解释,请参阅标记新服务和地址拒绝。
另请参阅RHEL文档(它来自哪里(,因为问题的第二部分很难回答;我想知道这是否是必要的,为什么?如果我正确理解该目录的用途,在Android上,这可能是FileProvider
的工作,将这些文件公开给其他应用程序。降低安全标准通常不是一个好主意,但还有另一种方法,即从已经允许的安全上下文进行访问。我的意思是,即使可以用ls -laZ
列出标签(类似于文件系统列表(,安全上下文始终是进行访问的角度。AndroidX Camera2Basic示例将演示我的意思(它是应用程序内部存储的FileProvider
(。