22个版本
0.4.5 | 2024年7月28日 |
---|---|
0.4.4 | 2024年3月27日 |
0.4.3 | 2024年1月7日 |
0.4.2 | 2023年8月9日 |
0.1.2 | 2021年7月29日 |
#38 在 Unix API
12,458 每月下载次数
在 7 crates 中使用
205KB
4.5K SLoC
🛡️ 对 libselinux
的安全Rust绑定
SELinux是Linux的灵活强制访问控制。
此crate支持从版本 2.8
到 3.7
的 libselinux
。较新版本可能仍然兼容。此crate不暴露任何已弃用或未记录的SELinux API函数和类型。
⚠️ 此crate特定于Linux。在非Linux平台上构建它或为Linux内核构建它会导致crate为空。
此文档过于简略,无法涵盖SELinux。请参阅官方SELinux文档,libselinux
原生库的手册页和selinux-sys
crate,以获取如何使用此crate的更完整信息。
如果您无法通过名称找到您正在寻找的功能,但您知道与哪些 libselinux
API相关,那么请尝试通过该API名称搜索文档。
⚓ 向后兼容性
此crate需要至少 libselinux
版本 2.8
。然而,此crate提供了一些基于较新版本中实现的 libselinux
函数的函数。当需要此类较新函数时,此crate会在运行时尝试动态加载它们。如果由 libselinux
实现了所需的函数,则调用的crate函数按预期运行。如果所需的函数未由 libselinux
实现,则返回一个错误,指示调用的crate函数不受支持。
🔢 版本控制
本项目遵循 语义化版本控制。CHANGELOG.md
文件详细记录了随时间的变化。
🛠️ 开发
本节仅适用于向此软件包贡献的开发者,而不适用于此软件包的用户。
💡 如果你正在开发此软件包并觉得本节缺少重要信息,请创建一个问题或拉取请求来修复这个问题。
构建系统
此软件包仅使用 cargo
作为构建系统。使用常规命令执行大多数操作,例如 build
、test
、fmt
。
代码被读取的次数远多于被编写的次数,因此此软件包的代码始终使用
cargo fmt
进行格式化。
需要特殊处理的操作被构建为 cargo xtask 目标。可以通过运行以下命令确定这些特殊操作的完整列表
$ cargo xtask
可以通过运行以下命令执行每个特殊操作
$ cargo xtask <operation> [parameters...]
例如,要生成覆盖率信息,请运行
$ cargo xtask coverage
测试
此软件包只能在支持并启用 SELinux 的多个级别的 Linux 发行版上进行测试
- Linux 内核必须支持 SELinux,并且必须启用。
- 文件系统必须正确配置。
- 用户空间必须能够访问 SELinux,通常通过
libselinux
。
类似于 Red Hat Enterprise Linux 的发行版(例如,Fedora、CentOS、RockyLinux)适合测试此软件包,无论是在硬件上还是在虚拟机内部,但不能在容器中。
鉴于覆盖率信息需要运行测试,因此只能在启用 SELinux 的系统上成功获取这些信息。
行为
此软件包使用手册页中记录的 libselinux
API。它尽可能地避免对实现细节的假设,即使这样的知识可能会提高性能。
此软件包定义的结构和枚举假定其用户可能在某个时刻决定调用 raw libselinux
API(可能使用 selinux-sys
软件包),以提供此软件包尚未提供的功能,或者出于其他原因。这就是为什么这些结构实现了如 as_ptr()
这样的方法,暴露了 libselinux
API 识别的原始值。
变更日志
变更日志 https://github.com/koutheir/selinux/blob/master/CHANGELOG.md 可以让您了解最近软件包发生了什么。
依赖关系
~0.4–3.5MB
~64K SLoC