kubernetes/kops · error

error looking up group %q: %v

Error message

error looking up group %q: %v

What it means

EnsureFileOwner resolves the requested group name via LookupGroup before chowning a file. When the group lookup fails with an error (as opposed to returning nil), the function wraps and returns it. This typically means the group database (e.g. /etc/group, NSS) could not be consulted or the lookup implementation failed.

Source

Thrown at upup/pkg/fi/files_owner.go:56

	actualUserID := int(stat.Sys().(*syscall.Stat_t).Uid)
	userID := actualUserID
	if owner != "" {
		user, err := LookupUser(owner) // user.Lookup(owner)
		if err != nil {
			return changed, fmt.Errorf("error looking up user %q: %v", owner, err)
		}
		if user == nil {
			return changed, fmt.Errorf("user %q not found", owner)
		}
		userID = user.Uid
	}

	actualGroupID := int(stat.Sys().(*syscall.Stat_t).Gid)
	groupID := actualGroupID
	if groupName != "" {
		group, err := LookupGroup(groupName)
		if err != nil {
			return changed, fmt.Errorf("error looking up group %q: %v", groupName, err)
		}
		if group == nil {
			return changed, fmt.Errorf("group %q not found", groupName)
		}
		groupID = group.Gid
	}

	if actualUserID == userID && actualGroupID == groupID {
		return changed, nil
	}

	klog.Infof("Changing file owner/group for %q to %s:%s", destPath, owner, groupName)
	err = os.Lchown(destPath, userID, groupID)
	if err != nil {
		return changed, fmt.Errorf("error setting file owner/group for %q: %v", destPath, err)
	}
	changed = true

View on GitHub (pinned to 4c8573c808)

Solutions

  1. Check `getent group <name>` to reproduce the lookup failure
  2. Create the group (`sudo groupadd <name>`) or correct the group field in the spec
  3. Inspect /etc/group and NSS config (/etc/nsswitch.conf) for corruption or misconfiguration
  4. Set group to empty string to leave the group unchanged

Example fix

// before
sudo chown test /etc/group  # corrupted db
// after
sudo groupadd <missing-group>  # or fix /etc/group and nsswitch.conf
Defensive patterns

Strategy: validation

Validate before calling

if _, err := user.LookupGroup(group); err != nil { return fmt.Errorf("group %q cannot be resolved locally: %v", group, err) }

Try / catch

if err != nil { if strings.Contains(err.Error(), "looking up group") { log.Warnf("group lookup failed, skipping chown: %v", err); return nil } return err }

Prevention

When it happens

Trigger: RenderLocal on a file task whose group field names a group that cannot be resolved; LookupGroup(groupName) returns a non-nil error (parse failure, NSS backend failure, or OS group-database error).

Common situations: Corrupt or unreadable /etc/group on the admin machine; running in a container without the group entry; NSS misconfiguration; typo in group name in cluster spec.

Related errors


AI-assisted analysis of kubernetes/kops@4c8573c808 (2026-09-05). Data as JSON: /api/errors/76bb2cec4b03c728. Report an issue: GitHub.