deploy: bake Session-3 git-SSH fixes into bootstrap
Two surfaces were silently broken after the Session 3 FHS migration:
mnw-cli.service had ReadWritePaths=/opt/git but creator git pushes now
land in /var/lib/mnw/git (the rsynced target). Inside mnw-cli's systemd
namespace that path is read-only, so git-receive-pack failed with EROFS
("unable to create temporary object directory") for every push. Add
/var/lib/mnw to the unit's ReadWritePaths.
bootstrap-node.sh creates /etc/mnw mode 0750 root:SERVICE_USER. On a
host that also runs git SSH (i.e. prod), the git user is neither owner
nor in the service group, so mnw-admin git-auth could not load
DATABASE_URL from /etc/mnw/makenotwork.env and panicked on every SSH
invocation. Apply ACLs (u:git:x on the dir, u:git:r on the env file)
when a git user exists. Conditional + idempotent.
Both fixes were applied live to prod tonight as a drop-in and ad-hoc
setfacl calls; this commit codifies them for the next bootstrap.
Co-Authored-By
Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Author: Max Johnson <me@maxj.phd> · 2026-06-03 03:51 UTC