1# OpenHarmony SELinux新增进程策略配置方法
2
3## 新增Native进程
4
5**适用场景**
6
7由init、chipset_init通过cfg文件孵化的Native进程,例如ueventd、installs。
8
9**配置指导**
10
111. 在本进程的cfg文件中,新增secon字段,建立进程与标签的映射关系。如果未配置secon字段,进程在SELinux使能状态会被拦截启动。
12    ```json
13    {
14        "services" : [{
15                "name" : "demo",
16                "path" : ["/system/bin/demo"],
17                "uid" : "demo",
18                "gid" : ["demo"],
19                "secon" : "u:r:demo:s0"
20            }
21        ]
22    }
23    ```
242. 在type.te中定义SELinux标签u:r:demo:s0中的SELinux类型demo,使u:r:demo:s0是合法的。
25
26    如果demo是由init孵化,则定义:
27    ```text
28    type demo, native_system_domain, domain;
29    ```
30    如果demo是由chipset_init孵化,则定义:
31    ```text
32    type demo, native_chipset_domain, domain;
33    ```
34
35## 新增SA服务进程
36
37**适用场景**
38
39由init通过cfg文件孵化的SA服务进程,例如accountmgr、foundation。
40
41**配置指导**
42
431. 在本进程的cfg文件中,新增secon字段,建立进程与标签的映射关系。如果未配置secon字段,进程在SELinux使能状态会被拦截启动。
44    ```json
45    {
46        "services" : [{
47                "name" : "demo",
48                "path" : ["/system/bin/sa_main", "/system/profile/demo.json"],
49                "uid" : "demo",
50                "gid" : ["demo"],
51                "secon" : "u:r:demo:s0"
52            }
53        ]
54    }
55    ```
562. 在type.te中定义SELinux标签u:r:demo:s0中的SELinux类型demo,使u:r:demo:s0是合法的。
57    ```text
58    type demo, sadomain, domain;
59    ```
60
61## 新增HDF服务进程
62
63**适用场景**
64
65由init、chipset_init通过cfg文件孵化的HDF服务进程,例如wifi_host、camera_host。
66
67**配置指导**
68
691. 在本进程的cfg文件中,新增secon字段,建立进程与标签的映射关系。如果未配置secon字段,进程在SELinux使能状态会被拦截启动。
70    ```json
71    {
72        "services" : [{
73                "name" : "demo",
74                "path" : ["/vendor/bin/hdf_devhost", "0", "demo"],
75                "uid" : "demo",
76                "gid" : ["demo"],
77                "secon" : "u:r:demo:s0"
78            }
79        ]
80    }
81    ```
82
832. 在type.te中定义SELinux标签u:r:demo:s0中的SELinux类型demo,使u:r:demo:s0是合法的。
84    ```text
85    type demo, hdfdomain, domain;
86    ```
87
88## 新增应用进程
89
90**适用场景**
91
92由appspawn孵化的系统应用进程,期望以独立标签运行,例如`com.ohos.permissionmanager`。
93
94**配置指导**
95
961. 在sehap_contexts文件中,建立应用APL等级、包名与应用进程标签、数据目录标签的映射关系。这里表示,当安装的应用APL为normal且包名为`com.ohos.permissionmanager`时,安装的应用数据目录标签会被配置为`u:object_r:permissionmanager_hap_data_file:s0`,应用运行时的进程标签会被配置为`u:r:permissionmanager_hap:s0`。
97    ```text
98    apl=normal name=com.ohos.permissionmanager domain=permissionmanager_hap type=permissionmanager_hap_data_file
99    ```
100    APL说明参考[权限等级说明](../../application-dev/security/AccessToken/app-permission-mgmt-overview.md#权限apl等级)。
1012. 在type.te中定义`permissionmanager_hap`和`permissionmanager_hap_data_file`,使`u:r:permissionmanager_hap:s0`和`u:object_r:permissionmanager_hap_data_file:s0`是合法的。
102    ```text
103    type permissionmanager_hap, normal_hap_attr, hap_domain, domain;
104    type permissionmanager_hap_data_file, normal_hap_data_file_attr, hap_file_attr, data_file_attr, file_attr;
105    ```
106    这里使用APL等级为normal的应用作为示例,其他APL等级的应用参考下表配置:
107
108    **表1** APL等级与应用attribute归属对应关系
109    | APL等级 | 应用进程attribute归属 | 应用数据目录attribute归属 |
110    | -------- | -------- | -------- |
111    | normal | normal_hap_attr | normal_hap_data_file_attr |
112    | system_basic | system_basic_hap_attr | system_basic_hap_data_file_attr |
113    | system_core | system_core_hap_attr | system_core_hap_data_file_attr |
114