Go to file
openharmony_ci 71551de0a7 !9 添加对enable_selinux选项的支持
Merge pull request !9 from xiebo/ebable_selinux
2021-11-05 03:33:12 +00:00
config 修复了代码检查中的一些问题 2021-11-02 17:39:09 +08:00
docs/images 添加从 third_party_selinux 中踢出的自研代码 2021-10-08 10:28:19 +08:00
interfaces 修复了安全函数无法链接的问题;修复了错误的 selinux 头文件路径 2021-11-04 14:36:20 +08:00
scripts add option enable_selinux 2021-11-05 02:46:05 +00:00
sepolicy change LICENSE.txt to LICENSE in BUILD.gn, and modify sepolicy/policy.31 2021-11-04 09:35:47 +08:00
test 修复了安全函数无法链接的问题;修复了错误的 selinux 头文件路径 2021-11-04 14:36:20 +08:00
.gitignore 修复了代码检查中的一些问题 2021-11-02 17:39:09 +08:00
BUILD.gn correct the gn format 2021-11-05 03:11:13 +00:00
LICENSE 修复了代码检查中的一些问题 2021-11-02 17:39:09 +08:00
OAT.xml 修复了代码检查中的一些问题 2021-11-02 17:39:09 +08:00
ohos.build add ohos.build and update BUILD.gn 2021-09-30 05:43:46 +00:00
README.md 更新文档 2021-11-04 12:13:25 +08:00

security_selinux

目标

SELinux (安全增强式 Linux Security-Enhanced Linux )是 Linux 历史上杰出的安全子系统。 SELinux SIG 的工作目标是将 SELinux 引入 OpenHarmony 。

  1. SELinux 是一组内核修改和用户空间工具,其提供了访问控制安全策略机制,包括了强制访问控制( Mandatory Access Control MAC )。
  2. SELinux 已经被添加到各种 Linux 发行版中。其软件架构力图将安全决策的执行与安全策略分离,并简化涉及执行安全策略的软件的数量。

仓库

涉及到的仓库有以下几个。

仓库 源码目录 说明
security_selinux base/security/selinux/ 策略和一些自研接口
third_party_selinux third_party/selinux/ SELinux 的主仓库
productdefine_common productdefine/common/ 添加 SELinux 组件定义
third_party_toybox third_party/toybox/ 完善了 ls 的 SELinux 支持
startup_init_lite base/startup/init_lite/ 系统启动加载策略并分化服务的标签
third_party_FreeBSD third_party/FreeBSD/ 提供 fts 库
third_party_pcre third_party/pcre/ 提供 pcre2 库
build build/ 编译控制

架构

整体架构

整体架构

third_party_selinux 中使用了下面四个 SELinux 的组件。

组件 来源 作用 形式
checkpolicy/ selinux/checkpolicy checkpolicy 可执行文件
libselinux/ selinux/libselinux libselinux.sogetenforcesetenforce 动态库
libsepol/ selinux/libsepol 提供内部使用的 API 动态库
seclic/ selinux/seclic seclic 可执行文件

本仓库主要位于图中的编译侧,在板侧有两个动态库供 init 调用三方库。

目录结构

.
├── config                  # 板侧    三方库配置文件
├── docs                    #         文档资源
│   └── images
├── interfaces
│   ├── policycoreutils     # 板侧    libload_policy.so、librestorecon.so
│   │   ├── include
│   │   └── src
│   └── tools               # 板侧    load_policy、restorecon
│       ├── load_policy
│       └── restorecon
├── scripts                 # 编译侧  策略编译脚本
├── sepolicy                # 编译侧  策略文件
└── test                    #         测试程序

验证

编译代码

根据文档《搭建Ubuntu环境(获取源码及编译,安装包方式)》编译主线代码。

进行编译

./build.sh --product-name Hi3516DV300 --gn-args "build_selinux=true"

运行验证

将镜像烧录到 Hi3516DV300 开发板上,开机,通过串口拿到 Shell ,在其中执行。

ls -lZ /         # 查看文件标签是否成功
ps -eZ           # 查看进程标签是否成功
setenforce 1     # 进行各种操作,观察是否被拦截,以及串口是否有 avc denied