diff --git a/pkg/imager/filemap/filemap.go b/pkg/imager/filemap/filemap.go index c70284ce6b..ff045dd573 100644 --- a/pkg/imager/filemap/filemap.go +++ b/pkg/imager/filemap/filemap.go @@ -20,6 +20,7 @@ import ( type File struct { ImagePath string SourcePath string + ImageMode int64 } // Walk the filesystem generating a filemap. @@ -75,6 +76,7 @@ func build(filemap []File) io.ReadCloser { if err = w.WriteHeader(&tar.Header{ Name: entry.ImagePath, Size: st.Size(), + Mode: entry.ImageMode, }); err != nil { return err } diff --git a/pkg/imager/out.go b/pkg/imager/out.go index 7af7a11ea0..4ca8da07f4 100644 --- a/pkg/imager/out.go +++ b/pkg/imager/out.go @@ -427,24 +427,22 @@ func (i *Imager) outInstaller(ctx context.Context, path string, report *reporter for _, extraArtifact := range []struct { sourcePath string imagePath string + mode os.FileMode }{ { sourcePath: filepath.Join(i.tempDir, constants.ImagerOverlayArtifactsPath), - imagePath: constants.ImagerOverlayArtifactsPath, + imagePath: strings.TrimLeft(constants.ImagerOverlayArtifactsPath, "/"), }, { sourcePath: filepath.Join(i.tempDir, constants.ImagerOverlayInstallersPath, i.prof.Overlay.Name), - imagePath: constants.ImagerOverlayInstallerDefaultPath, + imagePath: strings.TrimLeft(constants.ImagerOverlayInstallerDefaultPath, "/"), + mode: 0o755, }, { sourcePath: filepath.Join(i.tempDir, constants.ImagerOverlayExtraOptionsPath), - imagePath: constants.ImagerOverlayExtraOptionsPath, + imagePath: strings.TrimLeft(constants.ImagerOverlayExtraOptionsPath, "/"), }, } { - if extraArtifact.sourcePath == "" { - continue - } - var extraFiles []filemap.File extraFiles, err = filemap.Walk(extraArtifact.sourcePath, extraArtifact.imagePath) @@ -452,6 +450,10 @@ func (i *Imager) outInstaller(ctx context.Context, path string, report *reporter return fmt.Errorf("failed to walk extra artifact %s: %w", extraArtifact.sourcePath, err) } + for i := range extraFiles { + extraFiles[i].ImageMode = int64(extraArtifact.mode) + } + overlayArtifacts = append(overlayArtifacts, extraFiles...) }