container: Symlink /etc/{passwd,group} to /host

When `tmpl` runs `systemd-sysusers` after generating the `sysusers.d`
file for NUT, the `/etc/passwd` and `/etc/group` files on the host are
created anew and replaced, which "breaks" the bind mount.  Since new
files are put in their place, the container and the host no longer see
the same files.  We can work around this by using a symbolic link for
each file, pointing to the respective file in the `/host` directory
(which is the host's `/` directory bind mounted into the container's
namespace).  Since the symlinks follow the file by name rather than
inode, the container's view is always in sync with the host's.
master
Dustin 2024-01-14 19:05:12 -06:00
parent 79de375b30
commit e2f9cc7a3a
1 changed files with 2 additions and 0 deletions

View File

@ -29,6 +29,8 @@ RUN --mount=type=cache,target=/var/cache \
age \
gcc \
git \
&& ln -snf /host/etc/passwd /etc/passwd \
&& ln -snf /host/etc/group /etc/group \
&& cp -a /build/usr/local/bin/. /usr/local/bin \
&& for cmd in \
systemctl \