ProtectSystem=full + ReadWritePaths implicitly give the unit a private mount namespace (systemd needs to remount /usr read-only). The default namespace propagation is slave, so mounts the worker creates inside never reach the host. The gameserver units (started via systemctl, each with their own namespace) then inherit a host that lacks the overlay, and their CHDIR into /var/lib/left4me/runtime/<name>/merged fails. Set MountFlags=shared so mount events propagate from the worker's namespace back to the host, then onward to gameserver units at their unshare time. Verified on test box: nsenter -t <gunicorn-pid> -m mount showed the fuse-overlayfs mount inside the worker but plain mount on the host did not, while web unit had ProtectSystem=full + ReadWritePaths. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| etc/sudoers.d | ||
| usr/local | ||