host-install v1.8.0: install the guarded-mkfs wrapper (Impl-1 Part B)
step_agent_install now fetches configs/felhom-mkfs-guarded.sh (bash -n validated) and installs it 0755 root to /usr/local/sbin/felhom-mkfs-guarded BEFORE the sudoers (which — from agent v0.54.0 — allowlists only the wrapper, not raw mkfs, plus read-only pvs/zpool). Live-validated on felhom-pve. bash -n + shellcheck clean. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -1,5 +1,20 @@
|
||||
# Felhom scripts — Changelog
|
||||
|
||||
## felhom-host-install.sh v1.8.0 — install the guarded-mkfs wrapper (Impl-1 Part B) (2026-07-01)
|
||||
|
||||
Companion to felhom-agent v0.54.0 (format-safety foundation). During agent install, fetch + install the
|
||||
guarded-mkfs wrapper so the agent's format path is safe on any box.
|
||||
|
||||
- **New step in `step_agent_install`:** fetch `configs/felhom-mkfs-guarded.sh` from Gitea, `bash -n`
|
||||
validate, `install -m0755 -o root -g root` → `/usr/local/sbin/felhom-mkfs-guarded`. Installed BEFORE
|
||||
the sudoers (which now allowlists ONLY the wrapper, not raw `mkfs.*`), so the ordering is gap-free.
|
||||
- The agent v0.54.0 sudoers (fetched by the same step) drops the raw `mkfs.ext4 -F /dev/* / mkfs.xfs -f
|
||||
/dev/*` allowlist and permits only `felhom-mkfs-guarded /dev/* *`, plus read-only `pvs`/`zpool` for
|
||||
the agent's unclaimed-disk guard. No other host-install change.
|
||||
- `bash -n` + `shellcheck` clean (0 new warnings). Live-validated on felhom-pve (agent v0.54.0 deploy):
|
||||
wrapper refuses the OS disk + an LVM-PV partition, raw mkfs is sudo-denied, an unclaimed throwaway
|
||||
disk formats; the agent guard's sudo reads (pvs/lsblk/zpool) all work as the felhom-agent user.
|
||||
|
||||
## felhom-host-install.sh v1.7.0 — 3b-fix: `Datastore.Audit` box-wide (restore drive visibility) (2026-07-01)
|
||||
|
||||
Fixes a regression the v1.6.0 pool-scoped ACL introduced: `Datastore.Audit` was placed in the
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
#!/bin/bash
|
||||
#===============================================================================
|
||||
# felhom-host-install.sh v1.7.0
|
||||
# felhom-host-install.sh v1.8.0
|
||||
# Day-0 host-bootstrap for a Felhom Proxmox host (operator-deploy model).
|
||||
#
|
||||
# Run by the operator on a FRESHLY-PVE-INSTALLED box (after a manual PVE install
|
||||
@@ -104,7 +104,7 @@
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
SCRIPT_VERSION="1.7.0"
|
||||
SCRIPT_VERSION="1.8.0"
|
||||
|
||||
#-------------------------------------------------------------------------------
|
||||
# Logging (mirrors felhom-controller/scripts/docker-setup.sh)
|
||||
@@ -1208,6 +1208,19 @@ step_agent_install() {
|
||||
fi
|
||||
fi
|
||||
|
||||
# Guarded-mkfs wrapper (Impl-1 Part B) — the ONLY mkfs path the sudoers permits. Install it BEFORE
|
||||
# the sudoers (which allowlists it), 0755 root:root under /usr/local/sbin. bash -n before install.
|
||||
if $DRY_RUN; then
|
||||
log_dry "fetch configs/felhom-mkfs-guarded.sh ; bash -n ; install 0755 -> /usr/local/sbin/felhom-mkfs-guarded"
|
||||
else
|
||||
local wtmp; wtmp=$(mktemp -t felhom-mkfs.XXXXXX)
|
||||
fetch_raw "configs/felhom-mkfs-guarded.sh" "$wtmp"
|
||||
bash -n "$wtmp" || { rm -f "$wtmp"; die "fetched felhom-mkfs-guarded.sh failed bash -n — refusing to install"; }
|
||||
install -m 0755 -o root -g root "$wtmp" /usr/local/sbin/felhom-mkfs-guarded
|
||||
rm -f "$wtmp"
|
||||
log_success " installed /usr/local/sbin/felhom-mkfs-guarded (0755, the guarded mkfs path)"
|
||||
fi
|
||||
|
||||
# Sudoers — fetch the canonical file, validate with visudo -cf BEFORE installing (0440 root:root).
|
||||
if $DRY_RUN; then
|
||||
log_dry "fetch configs/felhom-agent.sudoers ; visudo -cf ; install 0440 -> $AGENT_SUDOERS"
|
||||
|
||||
Reference in New Issue
Block a user