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