本卡屬 FR-193(母卡 FR-193 母案(同清單上一張)),卡 A3,階段 P1,批 3。只改 evidence-agent。依賴:A1。
安裝程式與維運指令裡每一處叫 docker 的地方,改成以 guidant 帳號、指向它的 socket 執行。做法不是逐行改身分,是補一支共用函式 dk(),把 77 處 bare docker 收攏進去(dc() 本來就是 compose 的共用入口,改它內部走 dk)。做完以 root 跑 install.sh 起來的容器,主機上看不到任何 root 的 dockerd。
extend:dc() 已是共用入口,補一支 dk() 包 bare docker 並以 guidant socket 執行;不逐行改身分
repo:/Users/chouraymond/Projects/Billows/Audit-Manager/evidence-agent
改既有:deploy/install.sh
改既有:scripts/install/lib/upgrade_order.sh
改既有:scripts/install/lib/upgrade_runner.sh
改既有:scripts/install/lib/upgrade_guard.sh
改既有:scripts/install/lib/local_admin.sh
改既有:scripts/install/lib/image_verify.sh
改既有:scripts/install/lib/enroll.sh
deploy/install.sh 在 dc() 旁加:RUN_UID="$(id -u "$GUIDANT_RUN_USER")";dk() { sudo -u "$GUIDANT_RUN_USER" XDG_RUNTIME_DIR="/run/user/$RUN_UID" DOCKER_HOST="unix:///run/user/$RUN_UID/docker.sock" docker "$@"; };dc() 改成 dk compose --env-file ... -f ...。GUIDANT_RUN_USER 從 install.conf/.env 讀(A1 寫入),沒有就 guidant。docker ... 全改 dk ...:deploy/install.sh、lib/upgrade_order.sh(_uo_tags、docker tag、docker load)、lib/upgrade_runner.sh(docker images)、lib/upgrade_guard.sh、lib/local_admin.sh(docker run --rm -i ... -u 0,容器內 chown 1000 不動)、lib/image_verify.sh、lib/enroll.sh、image_read_file(docker create+cp)。grep:grep -nE '(^|[^a-zA-Z_./-])docker ' deploy/install.sh scripts/install/lib/*.sh | grep -v '^\S*:\s*#'。check_environment() 的 Docker 段:rootless 下系統層 docker 是停的,docker version 要改走 dk;A1 已把 rootless 準備放在它之前,這裡只驗 dk info 通。scripts/install/test/check_no_bare_docker.sh:上面那條 grep 命中 0 才過(允許清單:dk() 本身那一行、註解)。接進既有的 Agent 守衛腳本群(看 scripts/ 下其他 check_*.sh 怎麼被 CI/pre-commit 叫)。sudo ./install.sh 到底;ps -eo user,comm | grep -E 'dockerd|containerd' 無 root;sudo ./guidant-agent-compose status|logs|start|stop|restart 五個子命令正常;docker top guidant-ai-agent 無 uid 0。grep 整個 install 樹找不到未經 dk()/dc() 的 docker 呼叫(守衛腳本);以 root 跑 install.sh 起來的容器 docker top 無 root、owner 是 guidant;status/logs/start/stop/restart 五個子命令正常
docs/features/FR-193-2611-docker-rootless/design-v1.2.md(現行定稿)§1 決策 D1~D8、§2.2 接入點盤點、§3 詳細設計本卡那節、§4 主機六項、§6 拆卡表本卡那列;design.md/design-v1.1.md 已凍結只當沿革scripts/build/fetch_tpm2_debs.sh(離線套件抓法)、Agent scripts/install/lib/tpm.sh(離線裝法與 gate)、lib/upgrade_order.sh 檔頭(升級單不可信五條)、BE scripts/build/audit_nonroot_stack.sh --agent(總驗工具)