Narrow confined path authority at runtime handoff
This commit is contained in:
parent
1cac1e04c2
commit
cf914bdf51
1 changed files with 12 additions and 7 deletions
|
|
@ -229,11 +229,14 @@ Path resolution produces a `ConfinedPathPlan`, not an ambient absolute path.
|
||||||
Each plan retains a validated ancestor directory descriptor and a normalized
|
Each plan retains a validated ancestor directory descriptor and a normalized
|
||||||
relative suffix, records the ancestor's device, inode, and mount identity, and
|
relative suffix, records the ancestor's device, inode, and mount identity, and
|
||||||
keeps canonical raw pathname bytes only as a diagnostic label or digest input.
|
keeps canonical raw pathname bytes only as a diagnostic label or digest input.
|
||||||
Every consumer uses descriptor-relative opens with beneath, no-magic-link,
|
Lazaret-owned filesystem access and mutation use descriptor-relative opens with
|
||||||
no-symlink, and no-mount-crossing resolution and revalidates the expected type.
|
beneath, no-magic-link, no-symlink, and no-mount-crossing resolution and
|
||||||
The consumer refuses a replaced ancestor, mount transition, symlink, special
|
revalidate the expected identity and type. A trusted external component whose
|
||||||
file, type mismatch, or any source that cannot be revalidated; it does not
|
interface requires a pathname may receive the canonical label only after
|
||||||
recover by opening the canonical label as an absolute pathname.
|
Lazaret reopens it through the plan and revalidates it at the handoff boundary.
|
||||||
|
A failed revalidation refuses the operation; it does not fall back to opening
|
||||||
|
the label as authority. Replacement by a trusted host process after a successful
|
||||||
|
handoff is ordinary host concurrency rather than Agent Sandbox authority.
|
||||||
|
|
||||||
Lazaret creates a missing Storage, Runtime, profile, or Domain root one path
|
Lazaret creates a missing Storage, Runtime, profile, or Domain root one path
|
||||||
component at a time beneath its retained existing ancestor. Every created
|
component at a time beneath its retained existing ancestor. Every created
|
||||||
|
|
@ -250,8 +253,10 @@ final for that load and never authorizes a partially resolved root.
|
||||||
The profile directory is the `profiles/<profile-name>` child of the Storage
|
The profile directory is the `profiles/<profile-name>` child of the Storage
|
||||||
Root. Persistent and runtime Domain roots use the lowercase hexadecimal Domain
|
Root. Persistent and runtime Domain roots use the lowercase hexadecimal Domain
|
||||||
ID beneath separate `domains` children of the Storage and Runtime Roots. Those
|
ID beneath separate `domains` children of the Storage and Runtime Roots. Those
|
||||||
fixed layouts are constructed only from validated root handles; a path string
|
fixed layouts are created and mutated only through validated root handles.
|
||||||
or matching digest alone is not authority over a root.
|
Canonical labels may identify them at a trusted external pathname handoff only
|
||||||
|
after the exact root has been revalidated through its retained plan; a path
|
||||||
|
string or matching digest alone is not Lazaret filesystem authority over a root.
|
||||||
|
|
||||||
Configuration confinement compares canonical component ancestry and retained
|
Configuration confinement compares canonical component ancestry and retained
|
||||||
filesystem identities after every source has been opened. The configuration
|
filesystem identities after every source has been opened. The configuration
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue