Expand description
Host folders the operator lends every contained capsule on this host: the host_paths: list in
~/.murmur/config.yaml.
Each entry names one host directory and an access, read or read-write. On landlock+seccomp
it becomes one Landlock rule for every command, plan shell step and murmur:process program; on
mountns+pivot_root+landlock+seccomp it is also bound into the composed root at the directory’s
own absolute path. No rule ever carries Execute, so capabilities.shell.allow stays the
complete list of what a contained capsule can run. Below landlock+seccomp nothing is scoped,
and an entry is checked and reported but adds nothing.
Checking happens in three steps, each refusing with the entry’s index and its path as written:
declare_host_paths: the shape of what the operator wrote (path,access,~expansion,/, the same path twice). No filesystem access.resolve_host_paths: the entry on this host, at launch (exists, is a directory, not a system path, not read-write over murmur’s own home, not inside the work folder, not the same directory twice), and the credential locations it reaches.check_execute_roots: against what the session may run, on the applied tier, at staging and bymur run --explain-scope.
Platform-neutral: the Landlock rules and binds live in sandbox and sealed, behind the same
target_os = "linux" gates as every other rule.
Structs§
- Credential
Location - A home-relative place that holds a credential, and the credential backstop patterns
(
shell::CREDENTIAL_ENV_PATTERNS) for the same credential, where there is one. - Declared
Host Path - An entry whose shape is valid:
~expanded,.and..folded, not yet looked up on the host. - Execute
Root - A directory the session may run something out of: the directory of an executable file its Landlock grants name, or an executable directory grant.
- Host
Path - A host path a session grants: checked on this host, in config order.
- Host
Path Context - What
resolve_host_pathschecks each entry against. - Host
Path Entry - One
host_pathsentry exactly as the config file holds it. Both fields are optional here so a missing one is refused bydeclare_host_pathsnaming the entry, rather than failing the whole file’s parse. - Host
Path Refusal - Why an entry cannot be honoured. Every refusal names the entry’s index, its path as written, the directory it resolves to when it has one, and the reason.
- Host
Path Report - One element of
ScopeReport::host_paths:--explain-scope --jsonandsession_start.effective_grants.host_paths. Every key is always serialized.
Enums§
- Host
Path Access - What a host path lets a capsule do there. Required in every entry: there is no default.
- Host
Path Mechanism - What the applied tier does with a host path, as a stable wire name.
Constants§
- CREDENTIAL_
LOCATIONS - Every credential location a host path is warned about (
W-SEC-035). The one list.
Functions§
- check_
execute_ roots - Checks the
read-writeentries against what the session may run, undermechanism. - check_
policy_ execute_ roots check_execute_rootsforpolicy’s own host paths against the execute roots its grants resolve to on this host.stage_sessioncalls it on the applied tier, andmur run --explain-scopeon the tier its report names, so both refuse the same entry.- credential_
locations - Every
CREDENTIAL_LOCATIONSentry that exists underhomeand thatpathis, lies under, or contains, spelled~/<location>. - credential_
warning - The
W-SEC-035line for an entry reaching a credential location, orNonewhen it reaches none. Shared bymur runandmur doctorso the two cannot word it differently. - declare_
host_ paths - Checks the shape of every entry and expands
~againsthome, theHOMEmurruns with. - host_
path_ reports - The reports for
host_pathsundermechanism, in config order. - resolve_
host_ paths - Resolves every declared entry on this host and checks it, in config order.