aboutsummaryrefslogtreecommitdiffhomepage
path: root/sandbox/mount.go
diff options
context:
space:
mode:
authorOphestra <cat@gensokyo.uk>2025-03-24 12:45:19 +0900
committerOphestra <cat@gensokyo.uk>2025-03-24 12:51:39 +0900
commit40f00d570e10ba03910d16b734cc75817b83d00e (patch)
tree71d3a0d449111ea2e73325eb4118f181e438ae61 /sandbox/mount.go
parent0eb1bc6301591a9d8ebcd348238c2e98ee2a7bc0 (diff)
sandbox: set mkdir perm
Signed-off-by: Ophestra <cat@gensokyo.uk>
Diffstat (limited to 'sandbox/mount.go')
-rw-r--r--sandbox/mount.go13
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)
+}