posix-acl is a Rust library to interact with POSIX file system Access Control Lists (ACL). It wraps the operating system's C interface with a safe Rust API. The API is deliberately different from the POSIX C API to make it easier to use.
NB! Currently only tested on Linux.
Resources: * Library API documentation on Docs.rs * Background information about ACL behavior
```rust use posixacl::{PosixACL, Qualifier, ACLREAD, 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();
} ```
API change: Now using AsRef<Path>
in methods that accept paths (read_acl
etc.) (#33)
This means .as_ref()
is no longer needed or allowed when passing paths to these methods.
into_raw
, from_raw
for converting to/from raw acl_t
pointer (#21).
Thanks to @aidanhs!This release is fully API-compatible with 0.3.0.
* Documentation expanded substantially (#27)
* Added read_default_acl()
and write_default_acl()
to interact with default ACLs of directories
(#18, #30). Thanks to @aidanhs!
* PosixACL struct now implements the Debug
trait (#24)
* Improved test coverage and CI workflow