概述
功能简介
OHOS系统参数为各系统服务提供简单易用的键值对访问接口,使得各个系统服务可以通过各自的系统参数来进行业务功能的配置。
系统参数定义
每个子系统定义各自模块的系统参数,包括系统参数名称、默认值以及系统参数的权限访问信息。
系统参数定义文件
-
系统参数定义文件后缀名为".para" ,其格式示例如下:
const.product.name=OHOS-PRODUCT const.os.version.api=26 const.telephony.enable=false|true
系统参数名(key)定义
-
系统参数命名格式
系统参数名称采用点分格式,由多段组成,每一段可以由字母、数字、下划线组成,总长度不超过96字节;系统参数名称分为两类:
系统参数名称
类别 名称 示例 说明 参数名称 Parameter Name const.product.name 完整的系统参数名称,末尾不是"."。 参数目录 Parameter Directory const.**. 以"."结尾,标识相同前缀的所有系统参数集合。 -
系统参数类型
系统参数一共分为三大类:
系统参数分类
类别 前缀 说明 常量 const. 常量参数,一旦赋值后续不会再变更;值最大长度为4096字节(包括结束符)。 可写 其它 可写参数,重启后丢失,值最大长度96字节(包括结束符)。 可持久化 persist. 可写并可持久化保存参数,重启后不会丢失,值最大长度96字节(包括结束符)。 每个系统参数名称总体格式如下:
[ const | persist ].$sub_system.$desc java
$sub_system为子系统或模块的名称。
$desc为子系统或模块下参数的描述字符,可以为点分格式进行分级描述。
系统参数值(value)定义
- 系统参数的赋值分为三大类:
系统参数赋值方式
类别 | 示例 | 说明 |
---|---|---|
字符串 | const.product.name=OHOS-PRODUCT | 多行字符串需要通过引号扩起来。 |
数字 | const.os.version.api=26 | 数字不需要。 |
布尔 | const.telephony.enable=false | 布尔型的可以为0,1,false,true。 |
系统参数权限设置
系统参数支持DAC和MAC访问控制。
默认权限
系统参数没有定义任何DAC,MAC权限时,其默认权限为:
[DAC] User | [DAC] Group | [DAC] UGO | [MAC] SELinux Label |
---|---|---|---|
root | root | 775 | default_param |
Other进程对默认权限参数的访问行为列举如下:
操作 | 系统Native进程 | 系统应用进程 | 三方应用进程 |
---|---|---|---|
get | 允许 | 允许 | 允许 |
watch | 允许 | 允许 | 允许 |
set | 不允许 | 不允许 | 不允许 |
DAC访问控制权限设置
-
系统参数DAC访问控制定义文件
当前系统参数的访问权限控制通过自主访问控制(Discretionary Access Control)方式管理,访问权限定义文件后缀名为".para.dac" ,init下的文件路径为/base/startup/init/services/etc/param/ohos.para.dac,具体定义内容示例如下:
const.product. = root:root:0775 persist.init. = root:root:0775 startup.appspawn. = root:root:0750 startup.uevent. = ueventd:ueventd:0775
如上所示,可以为相同前缀的所有系统参数定义一类访问权限信息,DAC信息通过":"分三段来描述,分别为参数的user,group以及UGO规则信息。
UGO规则信息每一位的定义如下:
图1 UGO规则信息
MAC访问控制权限设置
-
添加selinux标签
为系统参数添加selinux标签,首先需要在文件/base/security/selinux_adapter/sepolicy/base/public/parameter.te中定义标签,例如:
type servicectrl_param, parameter_attr java
标签定义完成后,在文件/base/security/selinux_adapter/sepolicy/base/public/parameter_contexts中添加和标签关联的系统参数前缀,这里以前缀ohos.servicectrl.为例:
ohos.servicectrl. u:object_r:servicectrl_param:s0 java