diff --git a/CHANGELOG.md b/CHANGELOG.md index 3f5693a6..c354c02f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -53,6 +53,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). - Dynamically calculate version and release from Git. #1162 - Update quickstarts to configure firewalld for dhcp. #1133 - Omit building the API on EL7. #1171 +- Syncuser only walks the file system if it is going to write. #1207 ### Fixed diff --git a/internal/pkg/container/syncuids.go b/internal/pkg/container/syncuids.go index 89a0d7ed..89291c79 100644 --- a/internal/pkg/container/syncuids.go +++ b/internal/pkg/container/syncuids.go @@ -48,9 +48,6 @@ func SyncUids(containerName string, showOnly bool) error { if err := passwdSync.checkConflicts(); err != nil { return err } - if err := passwdSync.findUserFiles(containerPath); err != nil { - return err - } groupSync := make(syncDB) if err := groupSync.readFromHost(groupPath); err != nil { @@ -62,9 +59,6 @@ func SyncUids(containerName string, showOnly bool) error { if err := groupSync.checkConflicts(); err != nil { return err } - if err := groupSync.findGroupFiles(containerPath); err != nil { - return err - } passwdSync.log("passwd") groupSync.log("group") @@ -76,13 +70,18 @@ func SyncUids(containerName string, showOnly bool) error { wwlog.Info("uid/gid already synced") } } else { + if err := passwdSync.findUserFiles(containerPath); err != nil { + return err + } + if err := groupSync.findGroupFiles(containerPath); err != nil { + return err + } if err := passwdSync.chownUserFiles(); err != nil { return err } if err := groupSync.chownGroupFiles(); err != nil { return err } - if err := passwdSync.update(containerPasswdPath, passwdPath); err != nil { return err } @@ -329,9 +328,6 @@ func (db syncDB) needsSync() bool { wwlog.Debug("sync required: %s is %v in host and %v in container", name, ids.HostID, ids.ContainerID) return true } - if len(ids.ContainerFiles) > 0 { - wwlog.Debug("sync required: %v files to update for %s", len(ids.ContainerFiles), name) - } } return false } @@ -391,6 +387,7 @@ func (info *syncInfo) findFiles(containerPath string, byGid bool) error { var containerFiles []string if info.inHost() && !info.match() { if err := filepath.Walk(containerPath, func(filePath string, fileInfo fs.FileInfo, err error) error { + wwlog.Debug("findFiles: %s", filePath) if stat, ok := fileInfo.Sys().(*syscall.Stat_t); ok { var id int if byGid {