Repository navigation
Enable confined local service-user installs and recovery - #184
Merged
Merged
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Enable declarative installs, uninstalls and receipt-linked recovery for named local service accounts. Target I/O uses an isolated Python helper with Linux openat2 directory confinement; artifact bytes cross the boundary through bounded hash-checked staging, while backups and rollback remain service-side.
Reject programmatic adapters, semantic plugins, arbitrary commands and runtime reloads before writes. The only native command operation validates a caller-owned immutable OpenClaw config snapshot restricted by named-UID POSIX ACLs with a trusted immutable installation; includes and unsupported config syntax fail closed. Preserve existing local receipt digests.
Validation: typecheck, build and release metadata PASS; full suite 1043 passed/2 skipped; focused parser regressions 7 passed. Independent security review READY and private-context scan PASS across all 23 changed files. Disposable-container smoke PASS, including intended service read and unrelated-user known-path read/list denial for config snapshots. Final CI pending. CI adds a disposable nologin-account smoke covering the default sudo/Node/Python path, private sources, validation, manifest partitioning, ownership/modes and a no-op replan.
Requirements: Linux 5.6+ on supported 64-bit architectures, Python 3, explicit noninteractive sudo, and immutable code ancestors. Ownership adoption apply and Fleet normalization remain for the migration change.