aboutsummaryrefslogtreecommitdiffstats
path: root/docs/access.md
diff options
context:
space:
mode:
authortv <tv@krebsco.de>2026-11-08 19:01:55 +0000
committertv <tv@krebsco.de>2026-11-08 20:02:29 +0100
commita2056647b6351797880741ea7d845657877587ed (patch)
tree7f4da0bed5d752cef87ddd9e20d8578ac5914e21 /docs/access.md
parentfe19de5220071cd33294b700a9d4b6a10b634137 (diff)
store: a write inside a list checked where the rules judge it
Review 2, N9: the API checked a write's capability on the path asked (servers/list/3/name), the rules on the list it is in (servers/list): a user whose capability lay inside a list had every such write pass the API and refused by the node's own judgement (403, after rolling the document back). inspect::placed places a write's path in the document by the rule the inspector places operations by (Place::child: cut after the first list or text on the way), and the store's writes check capabilities there. One rule for both; a test checks placed against the paths the inspector finds in the change such a write makes.
Diffstat (limited to 'docs/access.md')
-rw-r--r--docs/access.md4
1 files changed, 3 insertions, 1 deletions
diff --git a/docs/access.md b/docs/access.md
index d1f69e1..b853b5a 100644
--- a/docs/access.md
+++ b/docs/access.md
@@ -59,7 +59,9 @@ Every request is checked against the registry, as the node serving it holds it:
change to it counts on a node as soon as it has reached it.
* **The store** (`/store`, `/stream`): writing a path (`PUT`, `POST`, `DELETE`) takes
- `write` on it; `?prune=true` deletes maps left empty only up to the highest one the
+ `write` on it, or, inside a list or text, on the list, as every node judges the
+ change (a list's items have no paths of their own, Changes judged on every node,
+ below); `?prune=true` deletes maps left empty only up to the highest one the
user may write. Reading takes `read`: of a place the user may read only partly, it
sees the keys on the way to what it may read, as a directory one may pass through
but not list (a capability on `servers/eu` shows `servers` with `eu` alone in it),