已绑定手机
|
1.概览 Overview
本文档主要介绍 UNISOC SELinux 配置状态,以及客户在 unisoc 代码基础上如何定制化配置。
2.自定义 Customized
2.1 Unisoc SELinux 配置
对于要求通过 google CTS 认证的产品,unisoc SELinux 开关都是 enforce 状态 unisoc SELinux 配置分布在 vendor/sprd/generic/sepolicy 和 device/sprd/board/common/sepolicy 以 及 device/sprd/board/common/plat_sepolicy 三个目录下。对于 unisoc 支持的各个 feature,已经配置了正确的 selinux 权限,不需要额外配置。
2.2 客制化 SELinux 配置
客户如果要在 unisoc 代码基础上修改现有 feature 或是开发新 feature,需要对应修改selinux 配置,才能保证 feature 的正常工作。
2.3 客制化 SELinux 配置介绍及示例
客户 feature 开发完成后,需要根据 kernel 和 Android log 里的 avc 信息,配置 selinux权限。例如:12-14 04:42:19.629 427 427 W collect_apr: type=1400 audit(0.0:315): avc:
denied { read } for scontext=u:r:aprd:s0 tcontext=u:r:crash_dump:s0 tclass=file permissive=0
avc log 里的关键字:
scontext: 主体的安全上下文标签
tcontext: 客体的安全上下文标签
tclass: 客体类别
{ }里的内容表示缺少的 selinux 权限
安全上下文标签由四个字段组成:用户:角色:type:安全级别
根据 avc log 里的以上信息按照 selinux 语法规则添加 selinux 权限. selinux 语法规则:
allow scontext_type tcontext_type:tclass { perm_set};
例如上面该句 avc,需要在 aprd.te 里添加:
allow aprd crash_dump:file { read};
以上为常见 avc 的修改方法,但对于新增 service,或是文件节点等,需要为新增内容定义安全上下文标签,然后再根据 avc log 添加对应权限。
2.3.1 service 自定义安全上下文标签
在 rc 里增加 service 定义后,需要配置对应的 selinux,具体配置步骤:
(1) 在 file_contexts 里增加:
/vendor/bin/service_name u:object_r:service_name_exec:s0
service_name 需要替换成具体的 service 名称
(2) 增加 service_name.te,添加以下内容:
type service_name, domain, mlstrustedsubject; type service_name_exec, exec_type,file_type, vendor_file_type;
init_daemon_domain(service_name)
2.3.2 文件节点自定义安全上下文标签
代码里新增文件节点或是修改了访问路径,需要对路径节点自定义安全上下文,具体配置步骤如下: 例如,新增/sys/devices/virtual/sprd_sensorhub/sensor_hub/calibrator_cmd 路径节 点 (1) 在 file_contexts 里增加: /sys/devices/virtual/sprd_sensorhub/sensor_hub/calibrator_cmd
u:object_r:sysfs_sensor:s0 (2) 在 file.te 里增加新标签的 type 定义: type sysfs_sensor, fs_type,sysfs_type;
这里需要注意,file_contexts 里的路径需要使用实际路径,如果是软链接路径的话,会导致修改不生效.如果路径配置正确,且修改正常烧写到手机的话,可以在路径节点目录执行 ls -Z 命令,查看安全上下文标签是否是自定义内容.如果不是自定义内容的话,说明修改没生效.需要在确保路径节点已经创建完成的时机,在 rc 里添加 restorecon -R 路径,对路径来恢复安全上下文.这里需要注意,如果 adb shell setenforce 0 关闭 selinux 后,restorecon 命令可以执行成功,但 rc 脚本命令执行失败的话,需要抓下串口 log,为 restorecon 命令执行添加 selinux 权限。
2.3.3 属性自定义安全上下文标签
客户如果新增 android 属性,需要自定义安全上下文,具体配置步骤如下:
(1) 在 property_contexts 里按以下格式修改:
属性名称或属性名称前缀 u:object_r:自定义标签:s0
例如,为 persist.vendor.power. 前缀的属性定义安全上下文标签
persist.vendor.power. u:object_r:vendor_power_prop:s0
(2) 在 property.te 里增加属性标签的 type 定义: type 自定义标签, property_type;
2.3.4 修改验证
修改 selinux 相关配置后,需要编译 system.img 和 vendor.img,然后烧写到手机里.可以进一步在手机的 vendor/etc/selinux 和 system/etc/selinux 文件夹下搜索关键字,验证相关修改是否正确烧写到手机里。
展锐4G*5G技术或方案咨询,联系我 18928412535(微信同号,加微信备注:展锐5G)
更多详细内容请下载附件查看
|
|