document the user namespace opt-in
This commit is contained in:
parent
bfdf603d12
commit
da098b1a50
2 changed files with 49 additions and 4 deletions
|
|
@ -119,8 +119,11 @@ both sockets are `0666`, which is all a dialer needs.
|
|||
hive-priv creates the dir when missing (`EnsureAgentSocketDir`, `0751
|
||||
root:root`, no symlink followed) and leaves an existing one alone. The
|
||||
container's own activation (`hive-agent-user-migrate`) then chowns it to
|
||||
the agent user and sets `0751`. The container has no user namespace, so
|
||||
that uid is the host inode's owner. Don't add a host-side chown or chmod:
|
||||
the agent user and sets `0751`. Without a user namespace
|
||||
that uid is the host inode's owner. (A namespaced agent, see "User namespace" in
|
||||
`docs/agent-lifecycle/persistence.md`, gets the dir from `EnsureAgentSocketDir`
|
||||
owned by its data owner instead, because the container can't chown through
|
||||
the id map.) Don't add another host-side chown or chmod:
|
||||
two owners of one path revert each other. Until the container activates,
|
||||
the dir is `0751 root`: nothing but root can plant a socket in it.
|
||||
|
||||
|
|
|
|||
|
|
@ -261,8 +261,8 @@ known operations; there is no arbitrary command pass-through:
|
|||
| `DestroyContainer` | `nixos-container destroy <name>` |
|
||||
| `ListContainers` | `nixos-container list` |
|
||||
| `ReloadGatewayNginx` | `systemctl reload/start/reset-failed nginx` (host unit; the unit name is hard-coded, not a parameter) |
|
||||
| `WriteNspawnFlags` | write `/etc/nixos-containers/<container>.conf` (bind-mount list, network isolation vars, and `--ephemeral` after the root's salvage). hive-priv first copies a stopped container's root to the agent's `work/`, then renames it aside (it deletes nothing), following no link the container could have planted |
|
||||
| `EnsureAgentSocketDir` | `mkdirat` `/run/hive-agent/<name>` `0751 root:root` under an `O_NOFOLLOW` parent fd; leaves an existing directory alone, refuses anything else |
|
||||
| `WriteNspawnFlags` | write `/etc/nixos-containers/<container>.conf` (bind-mount list, network isolation vars, and `--ephemeral` after the root's salvage). hive-priv first copies a stopped container's root to the agent's `work/`, then renames it aside (it deletes nothing), following no link the container could have planted; for an agent in `services.hyperhive.userns.agents` it also adds `--private-users=pick`, mounts every bind `owneridmap`, and once chowns the agent's `state`, `harness`, `work` and `claude` dirs (never `config`, following no link) to the data owner |
|
||||
| `EnsureAgentSocketDir` | `mkdirat` `/run/hive-agent/<name>` `0751 root:root` under an `O_NOFOLLOW` parent fd; leaves an existing directory alone, refuses anything else; for an agent in `services.hyperhive.userns.agents` it then chowns the dir to the data owner |
|
||||
| `WriteResourceLimits` | write `CPUQuota=`/`MemoryMax=`/`CPUWeight=`/`IOWeight=` systemd drop-in for agent container, with an `ExecStartPre=` that runs `hive-priv check-rootfs <container>` (no-follow check of the root paths the start script touches; see persistence.md), and a GC root on the build it names |
|
||||
| `RemoveServiceDropin` | remove `container@<name>.service.d/` drop-in on destroy, and the GC root of the hive-priv build it named |
|
||||
| `DaemonReload` | `systemctl daemon-reload` |
|
||||
|
|
|
|||
Loading…
Reference in a new issue