A host=no box with an incus group still hands out the bare socket #58
Labels
No labels
attention
blocked
blocker:ci-red
blocker:conflict
blocker:drill-pending
blocker:unrequested
bug
claimed
documentation
enhancement
epic
merge-next
needs-ruling
needs-triage
offsite
post-merge
ready
release
scope:bootstrap
scope:coolify
scope:db
scope:docs
scope:drill
scope:installer
scope:labels
scope:platform
scope:runner
scope:users
stale
state:addressing
state:bots-reviewing
state:building
state:needs-human
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference: heavy-duty/rig#58
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
A
host=nobox with anincusgroup still hands out the bare socketFound by
claude-bot-andresmgslreviewing #53, and reproduced there in amount-namespace run.
The gap
commands/users-apply.sh:212onmaingates theboxrole on the group'sexistence alone:
The
host=trait decides what an absentincusgroup means — die onhost=yes, skip-with-warning onhost=no. But when the group is presentthe trait is not consulted at all. So on a
host=no(or marker-less) boxwhere
incusnonetheless exists, box-role users get a bareusermod -aG incuswith no tier behind it.That is the half-grant state: the socket without the project. #49 calls it
worse than not granting at all, because incus-user will lazily create an
unhardened project for whoever opens that socket —
incusbr-<uid>, NATon v4 and v6, no ACL, no
dns.mode=none, no port isolation.How you get there
A marker/reality mismatch.
box setup-hostran on the machine — leaving thegroup — but the box's
/etc/rig/rolesayshost=no, e.g. becauserig bootstrapwas given--host no, or the machine was repurposed andre-bootstrapped with different traits.
Reproduced during #53's review: flipping the marker to
host=nohanded atest user the bare socket that the
host=yespath had correctly withheldwhen their grant failed.
The decision this needs
Two coherent answers, and the repo should pick one deliberately:
host=nomeans this box does not host VMs, so theboxrole is skipped regardless of what groups happen to exist. Simple,and consistent with the trait being the box's declared identity. Costs:
a genuine VM host mislabelled
host=nosilently stops provisioning.really does host VMs, so converge — but warn that the marker disagrees
and name
rig bootstrapas the fix. Costs: acting on a trait the boxdoes not claim.
Either beats today's behavior, which takes the trait seriously only when
the group is missing.
Context
Pre-existing on
main, unchanged by #53 — that PR deliberately scopeditself to the
host=yespath. Raised at review as non-blocking.