docs: explain mid-run Permission denied warning for boot-written NOS files

Document the aaamgr_local_user.json case: SR Linux's aaamgr daemon rewrites
the file during boot as the image's srlinux user (uid 1002) after the
start-time permission pass, leaving it unreadable until the stop-time pass.
Trace the warning to the file-browser API chain (Show in file manager ->
list_node_files -> magic.from_file) and note the impact is limited to the
file_type field.
This commit is contained in:
YueGuobin 2026-08-12 23:15:55 +08:00
parent 3455da7da3
commit 6f852c83fd
No known key found for this signature in database

View File

@ -289,6 +289,19 @@ host ──Docker bind mount──▶ /gns3volumes/etc/opt/srlinux (always m
`_fix_permissions` pass runs at start (fixes the seeded files) and at stop;
files created by the container *during* runtime become readable after the
next stop.
- Concrete example: SR Linux's `aaamgr` daemon rewrites
`etc/opt/srlinux/aaamgr_local_user.json` during boot, **after** the
start-time pass, as the image's `srlinux` user (uid 1002, mode 700) — so
the host-side file stays `1002:1002` until the stop-time pass chowns it.
- The log line comes from the file-browser API chain: Web UI *Show in file
manager* → `GET /v3/projects/{pid}/nodes/{nid}/files`
(`controller/nodes.py:538`) → `project.list_node_files`
(`compute/project.py:510`), where `magic.from_file()` cannot read the
file and the `file_type` field is left empty for that entry. The MCP
`list_node_files` tool uses the same code path. Size/modified-at fields
and everything else keep working; only the type sniff and one warning
line are affected — same behaviour as any regular Docker node writing
root-owned files at runtime.
**9. Persistent volume empty on the host after `save` + stop**
- Ensure `GNS3_SKIP_INIT=1` is set (so the host-side bridge path is taken) and