Files
netwatch/internal/reportbuf/datadir_other.go
T
sneak 3f235d0af2
check / check (push) Waiting to run
prepare-data-dir leaves files with a second name to their owner (closes #143)
A hard link in /data shares its owner with a file that can be anywhere
on the same filesystem, so chowning it gave that file to the netwatch
user. A file with more than one name now keeps its owner and its path
is logged.

Owners are now set on the opened directory, file or link after
checking it, as chmodDir sets modes, so a hard link swapped in
afterwards is caught. Every other file is opened without following it;
a symbolic link is given to the netwatch user itself, and devices,
named pipes and sockets keep their owner. This needs Linux, the
image's system; elsewhere it returns an error. A failed owner change
names the file.

Model: opus-5-5
2026-10-18 22:18:23 +00:00

21 lines
655 B
Go

//go:build !linux
package reportbuf
import (
"errors"
"io/fs"
"os"
)
// chownFile returns an error on every system but Linux. Opening a file
// that is not a directory without reading it or following it, and
// giving it to a user on the open file, never by name, needs O_PATH
// and AT_EMPTY_PATH, which only Linux has (see datadir_linux.go), and
// prepare-data-dir runs only in the Linux image. This file lets the
// package build elsewhere, such as on macOS, where a developer runs
// make build and make run.
func chownFile(_ *os.Root, name string, _, _ int) error {
return &fs.PathError{Op: "chown", Path: name, Err: errors.ErrUnsupported}
}