diff --git a/backend/posix/posix_darwin.go b/backend/posix/posix_darwin.go index c8afcb01..e67f93b8 100644 --- a/backend/posix/posix_darwin.go +++ b/backend/posix/posix_darwin.go @@ -32,6 +32,10 @@ type tmpfile struct { func openTmpFile(dir, bucket, obj string, size int64) (*tmpfile, error) { // Create a temp file for upload while in progress (see link comments below). + err := os.MkdirAll(dir, 0700) + if err != nil { + return nil, fmt.Errorf("make temp dir: %w", err) + } f, err := os.CreateTemp(dir, fmt.Sprintf("%x.", sha256.Sum256([]byte(obj)))) if err != nil { diff --git a/backend/posix/posix_linux.go b/backend/posix/posix_linux.go index de83884e..9ce49d3b 100644 --- a/backend/posix/posix_linux.go +++ b/backend/posix/posix_linux.go @@ -47,6 +47,10 @@ func openTmpFile(dir, bucket, obj string, size int64) (*tmpfile, error) { fd, err := unix.Open(dir, unix.O_RDWR|unix.O_TMPFILE|unix.O_CLOEXEC, 0666) if err != nil { // O_TMPFILE not supported, try fallback + err := os.MkdirAll(dir, 0700) + if err != nil { + return nil, fmt.Errorf("make temp dir: %w", err) + } f, err := os.CreateTemp(dir, fmt.Sprintf("%x.", sha256.Sum256([]byte(obj)))) if err != nil {