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日

#38Unix API

Download history 6232/week @ 2024-04-29 3715/week @ 2024-05-06 3562/week @ 2024-05-13 3735/week @ 2024-05-20 2158/week @ 2024-05-27 2697/week @ 2024-06-03 1787/week @ 2024-06-10 2827/week @ 2024-06-17 4165/week @ 2024-06-24 4736/week @ 2024-07-01 2764/week @ 2024-07-08 3219/week @ 2024-07-15 4389/week @ 2024-07-22 2967/week @ 2024-07-29 2424/week @ 2024-08-05 2575/week @ 2024-08-12

12,458 每月下载次数
7 crates 中使用

MIT 许可证

205KB
4.5K SLoC

crates.io docs.rs license

🛡️ 对 libselinux 的安全Rust绑定

SELinux是Linux的灵活强制访问控制。

此crate支持从版本 2.83.7libselinux。较新版本可能仍然兼容。此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 作为构建系统。使用常规命令执行大多数操作,例如 buildtestfmt

代码被读取的次数远多于被编写的次数,因此此软件包的代码始终使用 cargo fmt 进行格式化。

需要特殊处理的操作被构建为 cargo xtask 目标。可以通过运行以下命令确定这些特殊操作的完整列表

$ cargo xtask

可以通过运行以下命令执行每个特殊操作

$ cargo xtask <operation> [parameters...]

例如,要生成覆盖率信息,请运行

$ cargo xtask coverage

测试

此软件包只能在支持并启用 SELinux 的多个级别的 Linux 发行版上进行测试

  • Linux 内核必须支持 SELinux,并且必须启用。
  • 文件系统必须正确配置。
  • 用户空间必须能够访问 SELinux,通常通过 libselinux

类似于 Red Hat Enterprise Linux 的发行版(例如,FedoraCentOSRockyLinux)适合测试此软件包,无论是在硬件上还是在虚拟机内部,但不能在容器中。

鉴于覆盖率信息需要运行测试,因此只能在启用 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