diff options
| author | Ophestra <cat@gensokyo.uk> | 2025-03-24 12:45:19 +0900 |
|---|---|---|
| committer | Ophestra <cat@gensokyo.uk> | 2025-03-24 12:51:39 +0900 |
| commit | 40f00d570e10ba03910d16b734cc75817b83d00e (patch) | |
| tree | 71d3a0d449111ea2e73325eb4118f181e438ae61 /sandbox/mount.go | |
| parent | 0eb1bc6301591a9d8ebcd348238c2e98ee2a7bc0 (diff) | |
sandbox: set mkdir perm
Signed-off-by: Ophestra <cat@gensokyo.uk>
Diffstat (limited to 'sandbox/mount.go')
| -rw-r--r-- | sandbox/mount.go | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/sandbox/mount.go b/sandbox/mount.go index 6683aaec..abad54c1 100644 --- a/sandbox/mount.go +++ b/sandbox/mount.go @@ -101,7 +101,7 @@ func remountWithFlags(n *vfs.MountInfoNode, mf uintptr) error { func mountTmpfs(fsname, name string, size int, perm os.FileMode) error { target := toSysroot(name) - if err := os.MkdirAll(target, perm); err != nil { + if err := os.MkdirAll(target, parentPerm(perm)); err != nil { return msg.WrapErr(err, err.Error()) } opt := fmt.Sprintf("mode=%#o", perm) @@ -112,3 +112,14 @@ func mountTmpfs(fsname, name string, size int, perm os.FileMode) error { syscall.MS_NOSUID|syscall.MS_NODEV, opt), fmt.Sprintf("cannot mount tmpfs on %q:", name)) } + +func parentPerm(perm os.FileMode) os.FileMode { + pperm := 0755 + if perm&0070 == 0 { + pperm &= ^0050 + } + if perm&0007 == 0 { + pperm &= ^0005 + } + return os.FileMode(pperm) +} |
