diff options
Diffstat (limited to 'system/acl.go')
| -rw-r--r-- | system/acl.go | 69 |
1 files changed, 0 insertions, 69 deletions
diff --git a/system/acl.go b/system/acl.go deleted file mode 100644 index c89a4780..00000000 --- a/system/acl.go +++ /dev/null @@ -1,69 +0,0 @@ -package system - -import ( - "errors" - "fmt" - "os" - "slices" - - "hakurei.app/container/check" - "hakurei.app/hst" - "hakurei.app/system/acl" -) - -// UpdatePerm calls UpdatePermType with the [Process] criteria. -func (sys *I) UpdatePerm(path *check.Absolute, perms ...acl.Perm) *I { - sys.UpdatePermType(Process, path, perms...) - return sys -} - -// UpdatePermType maintains [acl.Perms] on a file until its [Enablement] is no longer satisfied. -func (sys *I) UpdatePermType(et hst.Enablement, path *check.Absolute, perms ...acl.Perm) *I { - sys.ops = append(sys.ops, &aclUpdateOp{et, path.String(), perms}) - return sys -} - -// aclUpdateOp implements [I.UpdatePermType]. -type aclUpdateOp struct { - et hst.Enablement - path string - perms acl.Perms -} - -func (a *aclUpdateOp) Type() hst.Enablement { return a.et } - -func (a *aclUpdateOp) apply(sys *I) error { - sys.msg.Verbose("applying ACL", a) - return newOpError("acl", sys.aclUpdate(a.path, sys.uid, a.perms...), false) -} - -func (a *aclUpdateOp) revert(sys *I, ec *Criteria) error { - if ec.hasType(a.Type()) { - sys.msg.Verbose("stripping ACL", a) - err := sys.aclUpdate(a.path, sys.uid) - if errors.Is(err, os.ErrNotExist) { - // the ACL is effectively stripped if the file no longer exists - sys.msg.Verbosef("target of ACL %s no longer exists", a) - err = nil - } - return newOpError("acl", err, true) - } else { - sys.msg.Verbose("skipping ACL", a) - return nil - } -} - -func (a *aclUpdateOp) Is(o Op) bool { - target, ok := o.(*aclUpdateOp) - return ok && a != nil && target != nil && - a.et == target.et && - a.path == target.path && - slices.Equal(a.perms, target.perms) -} - -func (a *aclUpdateOp) Path() string { return a.path } - -func (a *aclUpdateOp) String() string { - return fmt.Sprintf("%s type: %s path: %q", - a.perms, TypeString(a.et), a.path) -} |
