Skip to content

Harden the remaining account mutations against stale store data #13

Closed

Description

@jonasehrlich

This issue originally tracked hardening the deletion path against stale store data. Deletion itself is gone: #25 replaced it with expiry and a retention purge, and everything else tracked here landed through #9, #19 and #22. The item-by-item audit is in the re-check comment.

The circuit breaker granularity item is dropped by decision: the 100% threshold stays, and since #25 the worst case behind it is a reversible mass lockout rather than data destruction.

SyncSupplementaryGroups trusts the store's UID

The handler (src/user_manager/backends/linux.rs) resolves via from_uid and replaces that account's supplementary groups. Since octosync owns the supplementary groups of synced users, a stale UID strips e.g. sudo from an unrelated account that happens to hold it.

Activity

  1. self-assigned this
    on Aug 13, 2026
  2. jonasehrlich commented on Aug 14, 2026

    @jonasehrlich
    OwnerAuthor

    Re-checked every item against the #24 implementation (je/expire-over-delete), as tracked there.

    Landed or superseded:

    Still open, not covered by #24:

    • SyncSupplementaryGroups resolves by UID alone and replaces that account's groups, so a stale UID still strips groups from an unrelated account. The shared-resolver refactor (one resolver returning missing/matches/conflict for UpdateUser, the purge and this handler) remains to be done.
    • Circuit breaker granularity: would_expire_all_users still trips only at 100%. The severity dropped with Replace account deletion with expiry and purge expired accounts after six months #24 — the worst case is now a reversible mass lockout instead of mass deletion — but the item stands.
  3. changed the title [-]Harden user deletion and creation against stale store data[/-] [+]Harden the remaining account mutations against stale store data[/+] on Aug 14, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

No labels
No labels

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions