diff --git a/CHANGELOG.md b/CHANGELOG.md index 6ec545e8..1d9e71f5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -44,6 +44,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Set correct overlay permissions for a NetworkManager configuration file. #591 +### Fixed + +- Directories within overlays no longer lose group/other write permissions #584 + ## [4.4.0rc2] 2022-12-09 ### Added diff --git a/internal/pkg/overlay/overlay.go b/internal/pkg/overlay/overlay.go index 06ddc1fa..66443f93 100644 --- a/internal/pkg/overlay/overlay.go +++ b/internal/pkg/overlay/overlay.go @@ -11,6 +11,7 @@ import ( "path/filepath" "regexp" "strings" + "syscall" "text/template" "github.com/hpcng/warewulf/internal/pkg/node" @@ -197,6 +198,9 @@ func BuildOverlayIndir(nodeInfo node.NodeInfo, overlayNames []string, outputDir return errors.Errorf("overlay names contains illegal characters: %v", overlayNames) } + // Temporarily set umask to 0000, so directories in the overlay retain permissions + defer syscall.Umask(syscall.Umask(0)) + wwlog.Verbose("Processing node/overlay: %s/%s", nodeInfo.Id.Get(), strings.Join(overlayNames, "-")) for _, overlayName := range overlayNames { wwlog.Verbose("Building overlay %s for node %s in %s", overlayName, nodeInfo.Id.Get(), outputDir)