From b381fa4b132e0c3fba42e50c04b0ef4ed511176e Mon Sep 17 00:00:00 2001 From: Levi Neely Date: Wed, 20 May 2026 11:08:48 +0200 Subject: [PATCH] ollie-9p-mount: pass through actual 9P permissions p9File.Getattr was hardcoding 0666 for all files, breaking permission visibility in per-session mounts. Use the actual mode from the 9P stat response instead. --- cmd/ollie-9p-mount/node.go | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/cmd/ollie-9p-mount/node.go b/cmd/ollie-9p-mount/node.go index 0aa2530..1ee9355 100644 --- a/cmd/ollie-9p-mount/node.go +++ b/cmd/ollie-9p-mount/node.go @@ -99,16 +99,18 @@ func (f *p9File) Getattr(ctx context.Context, fh fs.FileHandle, out *fuse.AttrOu if err != nil { return syscall.ENOENT } - // Report all files as rw so the kernel doesn't block writes; - // the 9P server enforces actual permissions. - out.Mode = 0666 + out.Mode = uint32(dir.Mode) & 0777 out.Size = dir.Length return 0 } func (f *p9File) Setattr(ctx context.Context, fh fs.FileHandle, in *fuse.SetAttrIn, out *fuse.AttrOut) syscall.Errno { // Accept truncate silently — 9P files are append/overwrite on write. - out.Mode = 0666 + dir, err := f.fsys.Stat(f.path) + if err != nil { + return syscall.ENOENT + } + out.Mode = uint32(dir.Mode) & 0777 return 0 }