diff options
Diffstat (limited to 'internal/system/acl.go')
| -rw-r--r-- | internal/system/acl.go | 65 |
1 files changed, 0 insertions, 65 deletions
diff --git a/internal/system/acl.go b/internal/system/acl.go deleted file mode 100644 index 840c3971..00000000 --- a/internal/system/acl.go +++ /dev/null @@ -1,65 +0,0 @@ -package system - -import ( - "fmt" - "slices" - - "git.gensokyo.uk/security/fortify/acl" -) - -// UpdatePerm appends an ephemeral acl update Op. -func (sys *I) UpdatePerm(path string, perms ...acl.Perm) *I { - sys.UpdatePermType(Process, path, perms...) - - return sys -} - -// UpdatePermType appends an acl update Op. -func (sys *I) UpdatePermType(et Enablement, path string, perms ...acl.Perm) *I { - sys.lock.Lock() - defer sys.lock.Unlock() - - sys.ops = append(sys.ops, &ACL{et, path, perms}) - - return sys -} - -type ACL struct { - et Enablement - path string - perms acl.Perms -} - -func (a *ACL) Type() Enablement { return a.et } - -func (a *ACL) apply(sys *I) error { - sys.println("applying ACL", a) - return sys.wrapErrSuffix(acl.UpdatePerm(a.path, sys.uid, a.perms...), - fmt.Sprintf("cannot apply ACL entry to %q:", a.path)) -} - -func (a *ACL) revert(sys *I, ec *Criteria) error { - if ec.hasType(a) { - sys.println("stripping ACL", a) - return sys.wrapErrSuffix(acl.UpdatePerm(a.path, sys.uid), - fmt.Sprintf("cannot strip ACL entry from %q:", a.path)) - } else { - sys.println("skipping ACL", a) - return nil - } -} - -func (a *ACL) Is(o Op) bool { - a0, ok := o.(*ACL) - return ok && a0 != nil && - a.et == a0.et && - a.path == a0.path && - slices.Equal(a.perms, a0.perms) -} - -func (a *ACL) Path() string { return a.path } - -func (a *ACL) String() string { - return fmt.Sprintf("%s type: %s path: %q", - a.perms, TypeString(a.et), a.path) -} |
