#posix #acl #filesystem #access-control #unix #security #file-access

posix-acl

用于与POSIX文件系统访问控制列表(ACL)交互的简单库

8个版本 (3个稳定版)

1.2.0 2023年12月11日
1.1.0 2022年5月25日
1.0.0 2020年3月29日
0.5.0 2020年3月17日
0.1.0 2020年2月6日

Unix API中排名119

Download history 14/week @ 2024-03-11 30/week @ 2024-03-18 18/week @ 2024-03-25 48/week @ 2024-04-01 22/week @ 2024-04-08 7/week @ 2024-04-15 16/week @ 2024-04-22 34/week @ 2024-04-29 8/week @ 2024-05-06 3/week @ 2024-05-13 49/week @ 2024-05-20 104/week @ 2024-05-27 46/week @ 2024-06-03 31/week @ 2024-06-10 25/week @ 2024-06-17 17/week @ 2024-06-24

每月下载量137
2 crates中使用

MIT和LGPL-2.1许可

32KB
436 行代码(不含注释)

posix-acl

Crates.io version Documentation Tests status

posix-acl是一个用于与POSIX文件系统访问控制列表(ACL)交互的Rust库。它使用安全的Rust API包装了操作系统的C接口,API故意与POSIX C API不同,以便更容易使用。

仅支持Linux。FreeBSD支持似乎也是可行的,如有兴趣,请告知。macOS不支持POSIX ACL,不足以支持此库。

资源

使用示例

use posix_acl::{PosixACL, Qualifier, ACL_READ, ACL_WRITE};

fn main() {
    // Read ACL from file (if there is no ACL yet, the OS will synthesize one)
    let mut acl = PosixACL::read_acl("/tmp/posix-acl-testfile").unwrap();

    // Get permissions of owning user of the file
    let perm = acl.get(Qualifier::UserObj).unwrap();
    assert_eq!(perm, ACL_READ | ACL_WRITE);

    // Get permissions for user UID 1234
    let perm = acl.get(Qualifier::User(1234));
    assert!(perm.is_none());

    // Grant read access to group GID 1234 (adds new entry or overwrites an existing entry)
    acl.set(Qualifier::Group(1234), ACL_READ);

    // Remove ACL entry of group GID 1234
    acl.remove(Qualifier::Group(1234));

    // Write ACL back to the file
    acl.write_acl("/tmp/posix-acl-testfile").unwrap();
}

发布历史

1.2.0 (2023-12-11)
  • 新增: QualifierACLEntry 现在实现了 CopyClone (#69, #70)
    eax-ebx 贡献
  • 新增: QualifierACLEntry 现在实现了 Eq(除了 PartialEq)(#61)
  • 更改: 许多方法现在有 #[must_use] 注解 (#76)
  • 文档: 在许多函数中添加了单独的错误/panic部分 (#71)
  • 文档: 添加了一个打印ACL的示例CLI应用程序 (#45)
  • 构建: 声明最小支持的Rust版本(MSRV)为1.60 (#72, #74)
  • 构建: 启用并修复了所有 Clippy 严格性 lint(#75#63
1.1.0 (2022-05-25)
  • 添加了 ACLError::as_io_error() 方法以访问底层的 std::io::Error 实例(#57)
  • 小修改:文档调整(#46)
  • 小修改:修复 Clippy 警告(#47,#49)
  • 小修改:CI/测试改进(#44,#58)
1.0.0 (2020-03-30)
  • API 变更: 现在使用 ACLError 结构化错误类型而不是 SimpleError(#39)

    I/O 调用的错误信息不再包含文件名。

  • PosixACL::new() 构造函数不再添加 Mask 条目(#37)

    Mask 仅在 "非最小" ACL 中需要,并在必要时自动添加。

  • 代码的重大重组(#35)

  • 文档改进

0.5.0 (2020-03-17)
  • API 变更: 在接受路径的方法中(如 read_acl 等)现在使用 AsRef<Path>(#33)

    这意味着在将这些方法传递给路径时不再需要或允许使用 .as_ref()

  • 添加了将转换到/从原始 acl_t 指针的方法 into_rawfrom_raw(#21)。感谢 @aidanhs!

  • 文档调整和代码清理

0.4.0 (2020-03-10)

此版本与 0.3.0 完全 API 兼容。

  • 文档大幅扩展(#27)
  • 添加了 read_default_acl()write_default_acl() 以与目录的默认 ACL 交互(#18,#30)。感谢 @aidanhs!
  • PosixACL 结构现在实现了 Debug 特性(#24)
  • 改进了测试覆盖率和 CI 工作流程
0.3.0 (2020-02-20)
  • 更新 'acl-sys' 和 'libc' 依赖(#14)
0.2.0 (2020-02-08)
  • 为 PosixACL 添加等价特性(#7)
  • 使用 GitHub Actions 和 Docker 进行 CI(#6)
  • 添加 ACL remove() 方法
  • 将 ACLEntry 字段公开,如预期
0.1.0 (2020-02-06)
  • 初始发布

依赖项

~54KB