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 }