FSKY Foundry is now Gitfield. All users, organizations, repos, and other things remain. Update your remote URLs, container image tags, and logins from foundry.fsky.io to gitfield.org.
When changed content replaces an existing deploy file and owner/group are omitted, the new temp file keeps the process's ownership instead of the destination's previous UID/GID. A root-run renewal can therefore turn a service-owned key into a root-owned file and make the service unable to read it. Configuring only owner or only group also fails to preserve the unspecified half.
Relevant code: internal/deploy/deploy.go:247-292 replaces the destination with a new temp file; chownTo returns without using existing ownership when both attributes are unset (319-346).
Preserve existing ownership for unspecified attributes on replacement, then apply explicitly configured owner/group values. Keep first-time file behavior unchanged.
Acceptance: tests replace existing files with changed content and verify omitted UID/GID are preserved, including when only one of owner/group is configured; existing explicit ownership behavior remains intact.
When changed content replaces an existing deploy file and `owner`/`group` are omitted, the new temp file keeps the process's ownership instead of the destination's previous UID/GID. A root-run renewal can therefore turn a service-owned key into a root-owned file and make the service unable to read it. Configuring only owner or only group also fails to preserve the unspecified half.
Relevant code: `internal/deploy/deploy.go:247-292` replaces the destination with a new temp file; `chownTo` returns without using existing ownership when both attributes are unset (`319-346`).
Preserve existing ownership for unspecified attributes on replacement, then apply explicitly configured owner/group values. Keep first-time file behavior unchanged.
Acceptance: tests replace existing files with changed content and verify omitted UID/GID are preserved, including when only one of owner/group is configured; existing explicit ownership behavior remains intact.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
When changed content replaces an existing deploy file and
owner/groupare omitted, the new temp file keeps the process's ownership instead of the destination's previous UID/GID. A root-run renewal can therefore turn a service-owned key into a root-owned file and make the service unable to read it. Configuring only owner or only group also fails to preserve the unspecified half.Relevant code:
internal/deploy/deploy.go:247-292replaces the destination with a new temp file;chownToreturns without using existing ownership when both attributes are unset (319-346).Preserve existing ownership for unspecified attributes on replacement, then apply explicitly configured owner/group values. Keep first-time file behavior unchanged.
Acceptance: tests replace existing files with changed content and verify omitted UID/GID are preserved, including when only one of owner/group is configured; existing explicit ownership behavior remains intact.