分类: 其他平台
2024-04-03 10:42:03
openharmony中selinux使用详解
目录
1.selinux简介
2.selinux概念
3.selinux模式
4.oh中selinux使用详解
5.oh中selinux报错分析
5.1 日志错误问题分析
5.2 新增节点权限问题
5.3 新增服务权限问题
1.selinux简介
selinux是security enhanced linux 的缩写,也就是安全强化的 linux,旨在增强传统linux操作系统的安全性,解决传统linux系统中自主访问控制(dac)系统中的各种权限问题(如root权限过高等)。这里举一个例子便于理解,假设系统中某个服务进程出现了一个漏洞,使得某个远程用户可以访问系统的敏感文件(如/etc/dev)。如果我们的linux系统启用了selinux,而查询selinux策略得知,这个服务进程并不具备访问敏感文件(/etc/dev)的权限,所以这个远程用户通过这个进程访问敏感文件(/etc/dev)就会被selinux所阻挡,起到保护linux系统的作用。
我们可以通过ps -z 命令来查看当前进程的域信息,也就是进程的selinux信息:
**# ps -z
label pid tty time cmd
u:r:sh:s0 10466 pts/1 00:00:00 sh
u:r:sh:s0 10468 pts/1 00:00:00 ps
通过ls -z 命令,我们可以查看文件上下文信息,也就是文件的selinux信息:
**# ls -z
u:object_r:system_bin_file:s0 bin
u:object_r:rootfs:s0 chip_prod
u:object_r:vendor_file:s0 chipset
u:object_r:configfs:s0 config
u:object_r:data_file:s0 data
u:object_r:dev_file:s0 dev
u:object_r:system_etc_file:s0 etc
u:object_r:init_exec:s0 init
u:object_r:system_lib_file:s0 lib
3.selinux的工作模式
下面通过这个图来说明,selinux工作流程
可以从图中看出,需要关注的关键信息如下:
1)主体(subject):指主动对其它实体施加动作的实体,例如进程、服务等。
2)策略(policy):权限策略,通过在te文件中配置对应的权限语句实现,权限策略以type或attribute作为执行对象。
3)安全上下文(security context):实际上就是一个附加在主体或客体上的标签。
4)目标(object):是被动接受其他实体访问的实体,例如文件、系统属性等。
selinxu工作的核心就是安全上下文。安全上下文是一组和进程或对象有关的安全属性,每一个进程或对象都会记录一条安全上下文,将其作为selinux判断进程是否能读取对象的依据。安全上下文分为“进程安全上下文”和“文件安全上下文”。一个“进程安全上下文”一般对应多个“文件安全上下文”。
只有两者的安全上下文对应上了,进程才能访问文件。它们的对应关系由策略中的规则决定。
文件安全上下文由文件创建的位置和创建文件的进程所决定。而且系统有一套默认值,用户也可以对默认值进行设定。需要注意的是,单纯的移动文件操作并不会改变文件的安全上下文。
selinux有3种工作模式:
【enforcing】强制模式。违反 selinux 规则的行为将被阻止并记录到日志中。
【permissive】宽容模式。违反 selinux 规则的行为只会记录到日志中。一般为调试用。
【disabled】关闭 selinux。
模式之间的临时切换,如需(【disabled】关闭)永久有效,还需要修改配置文件。
**# getenforce // 查看selinux状态
enforcing
**# setenforce 0 // 设置selinux状态为宽容模式
**# getenforce
permissive
**# setenforce 1 // 设置selinux状态为强制模式
**# getenforce
enforcing
4.oh中selinux使用详解
selinux在oh中应用整体来说,功能和以上介绍的使用方法并无太大差别,只是在原生selinux内核中做了部分驱动和文件系统的适配。目前码云社区上master分支以rk3568为例子做了适配并开启了selinux,其他型号的设备需要自己做适配。
openharmony selinux的主代码仓:
selinux结构图: