From cd5eb2366535f2bbf997f06f84bb5d45c20dcd38 Mon Sep 17 00:00:00 2001 From: Simon Rettberg Date: Tue, 26 Nov 2019 15:00:37 +0100 Subject: [rootfs-stage32] Merge any passwd/group/shadow from addons --- .../data/opt/openslx/scripts/systemd-setup_slx_addons | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/core/rootfs/rootfs-stage32/data/opt/openslx/scripts/systemd-setup_slx_addons b/core/rootfs/rootfs-stage32/data/opt/openslx/scripts/systemd-setup_slx_addons index d99a1ec2..26b82341 100755 --- a/core/rootfs/rootfs-stage32/data/opt/openslx/scripts/systemd-setup_slx_addons +++ b/core/rootfs/rootfs-stage32/data/opt/openslx/scripts/systemd-setup_slx_addons @@ -61,6 +61,16 @@ mkdir -p "$ADDON_MOUNT_POINT" mount -t squashfs -o ro "$ADDON_PATH" "$ADDON_MOUNT_POINT" || \ { slxlog --echo "addon-setup-mount" "Failed to mount $ADDON_PATH."; exit 1; } +# Merge any passwd/group/... files +merguez() { + local tmp=$(mktemp) + cat "$@" | awk -F: '!n[$1]++' > "$tmp" + mv -f -- "$tmp" "$1" +} +for i in group shadow passwd; do + [ -s "${ADDON_MOUNT_POINT}/etc/$i" ] && merguez "/etc/$i" "${ADDON_MOUNT_POINT}/etc/$i" +done + # now append it to / echo "Appending ${ADDON_MOUNT_POINT} to /" if ! mount -o "remount,ins:1:${ADDON_MOUNT_POINT}=rr" / ; then # ins:1 makes sure the addon is before stage32, after rw layer -- cgit v1.2.3-55-g7522