#illumos #privileges #security #solaris

illumos-priv

提供访问 illumos PRIVILEGES(5) 接口的封装库

2 个不稳定版本

0.2.0 2021年3月16日
0.1.0 2019年6月20日

#576 in Unix APIs

MPL-2.0 许可证

41KB
428 代码行

rust-illumos-priv

调整 illumos 权限集。

illumos 实现了一套权限,这些权限可以精细控制进程的行为。拥有特定权限允许进程执行一组受限制的操作。

有关权限及其描述的列表,请参阅 PRIVILEGES(5),或查看此crate的文档。

示例

从以root身份运行的进程删除fork和exec权限会导致无法执行ls。以下示例的源代码可在examples/fork-exec.rs找到。

root - rustdev ~/src/rust-illumos-priv (git:master) # cargo run --example fork-exec
    Finished dev [unoptimized + debuginfo] target(s) in 0.02s
     Running `target/debug/examples/fork-exec`
failed to fork/exec ls: PermissionDenied

lib.rs:

illumos 实现了一套权限,这些权限可以精细控制进程的行为。拥有特定权限允许进程执行一组受限制的操作。

此crate为此接口提供了一个安全的封装,允许您为进程或其子进程添加/删除/替换权限集。

示例

use illumos_priv::{PrivOp, PrivPtype, PrivSet, Privilege};

// Get a new basic PrivSet.
let mut set = PrivSet::new_basic().unwrap();

// Remove the ability to fork(2) from the set.
let _ = set
    .delset(Privilege::ProcFork)
    .expect("failed to delete from set");

// Replace the effective privilege set with the new one
illumos_priv::setppriv(PrivOp::Set, PrivPtype::Effective, &set).unwrap();

无运行时依赖