OpenHarmony南向开发实战:模块使用-selinux

 简介

SELinux (安全增强式 Linux , Security-Enhanced Linux )是 Linux 历史上杰出的安全组件, 包含一组内核修改和用户空间工具,并提供了基于安全策略的强制访问控制机制( Mandatory Access Control , MAC )。SELinux 已经被添加到各种 Linux 发行版中。其软件架构力图将软件执行与安全策略设计分离。本部件负责对文件,属性,服务等系统资源提供强制访问控制保护。提供neverallow规则限制系统中的高危操作,减少系统安全风险。

访问控制基本流程如下图所示: 

整体架构

目录

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

约束

目前Selinux只支持RK3568

使用说明

编译镜像

运行以下命令编译打包支持 SELinux 的镜像:

本模块单独编译命令
./build.sh --product-name=rk3568 -T selinux_adapter --ccache

运行验证

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

<think> 首先,用户提供了错误信息:软件包安装失败,涉及docker-ce-rootless-extras、containerd.io和docker-ce,它们需要特定版本的依赖项如slirp4netns、container-selinux和fuse-overlayfs。系统上已安装的container-selinux版本(2.68-1.el7)低于所需版本(2.74),且没有更高版本可用。此外,docker-ce-rootless-extras需要slirp4netns >= 0.4和fuse-overlayfs >= 0.7。 我的回答需要: 1. 使用中文回答问题。 2. 在回答末尾提出3-5个相关问题,第一行必须是完整的"§§相关问题§§",并且禁止换行分散。 3. 回答应该基于错误信息提供解决方案。 关键问题: - container-selinux版本太低(需要>=2.74,已安装2.68)。 - slirp4netns和fuse-overlayfs依赖缺失或版本低。 常见解决方案: 1. **更新container-selinux**:但错误显示可用版本中没有2.74或更高。用户可能需要添加额外仓库或手动安装。 2. **添加Docker的官方仓库**:确保仓库配置正确。 3. **手动安装依赖**:下载并安装所需版本的container-selinux、slirp4netns和fuse-overlayfs。 4. **使用--skip-broken选项**:如错误提示,但可能不完整。 5. **升级系统或使用兼容版本**:如果系统是CentOS 7,可能需要考虑升级到CentOS 8或使用较旧的Docker版本。 针对CentOS 7: - Docker官方文档建议确保仓库正确设置,但container-selinux版本可能需从其他源获取。 - 一个常见方法是手动安装container-selinux RPM包。例如,从CentOS extras或其他仓库下载。 - 对于slirp4netns和fuse-overlayfs,可能需要从EPEL仓库安装。 步骤建议: 1. 添加EPEL仓库:`sudo yum install epel-release` 2. 尝试安装所需依赖:`sudo yum install slirp4netns fuse-overlayfs` 3. 对于container-selinux,可能需要从CentOS SCLo或类似源下载。例如,下载URL如:`https://mirrors.centos.org/centos/7/extras/x86_64/Packages/container-selinux-2.119.2-1.911c772.el7_8.noarch.rpm`(但需检查最新版本)。实际需要2.74+,可能需要更高版本仓库。 4. 如果不行,考虑降级Docker版本到兼容的系统版本。 错误中提到的可用版本是2.42, 2.55, 2.66,但需要2.74。所以必须添加新仓库。 Docker CE for CentOS 7可能需要较新版本的container-selinux,这可能在CentOS的extras仓库中更新,但用户仓库可能未更新。运行`sudo yum update`可能帮助。 另一个选项是使用Docker的测试仓库或手动安装。 在回答中,我需要提供清晰的步骤。 结构化回答: - 解释错误:依赖版本不满足。 - 提供解决方案: a. 更新系统并添加必要仓库。 b. 手动安装所需依赖。 c. 如果失败,尝试较旧Docker版本或升级系统。 - 结尾处添加相关问题。 相关问题必须基于用户的问题和我的回答。用户的问题是解决包安装错误。所以相关问题可能包括: 1. 如何添加EPEL仓库? 2. 如何手动安装container-selinux? 3. 如何降级Docker版本? 4. 如何检查系统版本和兼容性? 5. 使用--skip-broken选项的风险? 确保3-5个相关问题。 最终回答格式: - 回答内容(中文) - 然后 "§§相关问题§§" - 紧接着相关问题列表(1. ... 2. ... 3. ...),禁止换行分散,所以写在一行或连续的。 在"§§相关问题§§"之后,直接列出问题,用数字点号,如"1. ... 2. ..."。 现在,撰写回答。 </think>该错误表示在 CentOS 7 系统上安装 Docker 软件包(如 docker-ce、containerd.io 和 docker-ce-rootless-extras)时,依赖项版本不满足要求: - `container-selinux` 需要版本 `>=2:2.74`,但系统已安装版本为 `2:2.68-1.el7`,且可用仓库中无更高版本。 - `slirp4netns` 需要版本 `>=0.4`(未安装)。 - `fuse-overlayfs` 需要版本 `>=0.7`(未安装)。 ### 解决方案步骤: 1. **更新仓库并添加 EPEL 仓库**: 许多依赖项(如 `slirp4netns` 和 `fuse-overlayfs`)在 EPEL 仓库中提供。运行: ```bash sudo yum install epel-release -y # 添加 EPEL 仓库 sudo yum update -y # 更新系统仓库 ``` 2. **手动安装或更新依赖项**: - 对于 `container-selinux`,从官方源下载并安装更高版本(如 `2.119.2`,适用于 CentOS 7): ```bash sudo yum install -y https://vault.centos.org/centos/7/extras/x86_64/Packages/container-selinux-2.119.2-1.911c772.el7_8.noarch.rpm ``` - 安装其他依赖: ```bash sudo yum install -y slirp4netns fuse-overlayfs ``` 3. **重试 Docker 安装**: 确保 Docker 仓库已正确配置(参考 [Docker 官方文档](https://docs.docker.com/engine/install/centos/)),然后: ```bash sudo yum install docker-ce docker-ce-rootless-extras containerd.io -y ``` 4. **备选方案**: - 如果步骤 2 失败,尝试安装较旧兼容的 Docker 版本(如 `20.10.x`): ```bash sudo yum install docker-ce-20.10.24 docker-ce-rootless-extras-20.10.24 containerd.io -y ``` -使用 `--skip-broken` 选项(不推荐,可能破坏功能): ```bash sudo yum install docker-ce docker-ce-rootless-extras containerd.io --skip-broken ``` - 终极方案:升级系统到 CentOS 8 或更高版本以兼容新 Docker。 如果问题持续,检查仓库配置(`/etc/yum.repos.d/` 文件)并确保网络正常。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值