Crate exacl

source ·
Expand description

§exacl

Manipulate file system access control lists (ACL) on macOS, Linux, and FreeBSD.

§Example

use exacl::{getfacl, setfacl, AclEntry, Perm};

// Get the ACL from "./tmp/foo".
let mut acl = getfacl("./tmp/foo", None)?;

// Print the contents of the ACL.
for entry in &acl {
    println!("{entry}");
}

// Add an ACL entry to the end.
acl.push(AclEntry::allow_user("some_user", Perm::READ, None));

// Set the ACL for "./tmp/foo".
setfacl(&["./tmp/foo"], &acl, None)?;

§API

This module provides two high level functions, getfacl and setfacl.

  • getfacl retrieves the ACL for a file or directory.
  • setfacl sets the ACL for files or directories.

On Linux and FreeBSD, the ACL contains entries for the default ACL, if present.

Both getfacl and setfacl work with a Vec<AclEntry>. The AclEntry structure contains five fields:

  • kind : AclEntryKind - the kind of entry (User, Group, Other, Mask, or Unknown).
  • name : String - name of the principal being given access. You can use a user/group name, decimal uid/gid, or UUID (on macOS).
  • perms : Perm - permission bits for the entry.
  • flags : Flag - flags indicating whether an entry is inherited, etc.
  • allow : bool - true if entry is allowed; false means deny. Linux only supports allow=true.

Structs§

  • ACL entry with allow/deny semantics.
  • Controls how ACL’s are accessed.
  • Represents ACL entry inheritance flags.
  • Represents file access permissions.

Enums§

  • Kind of ACL entry (User, Group, Mask, Other, or Unknown).

Functions§

  • Construct a minimal ACL from the traditional mode permission bits.
  • Read ACL entries from text.
  • Read ACL entries from text.
  • Get access control list (ACL) for a file or directory.
  • Set access control list (ACL) for specified files and directories.
  • Write ACL entries to text.
  • Write ACL entries to text.