Files
2026-09-07 11:55:21 +02:00

28 lines
1.1 KiB
Bash
Executable File

#!/bin/bash
# Startet als root, uebernimmt den gemeinsamen, EXTERN erzeugten Signing-Key
# aus dem read-only gemounteten /run/secrets/gpg (auf dem Host: ./gpg neben
# der docker-compose.yml) in ein containerlokales GNUPGHOME, das dem
# unprivilegierten "mirror"-User gehoert - und wechselt dann per setpriv
# dauerhaft zu diesem User (ersetzt den Prozess direkt, kein Wrapper-
# Kindprozess, damit Signale/PID 1 sauber bleiben).
#
# Bewusst eine Kopie statt direkt auf dem Mount zu arbeiten: gpg schreibt in
# seinem Homedir (trustdb, random_seed, Lockfiles), und derselbe Ordner ist
# gleichzeitig im flatpak-mirror-Container gemountet. Die Kopie haelt das
# Original unveraendert und vermeidet, dass sich beide Container beim
# Signieren gegenseitig ins Gehege kommen.
set -euo pipefail
GPG_SOURCE=/run/secrets/gpg
export GNUPGHOME="${GNUPGHOME:-/etc/mirror-gpg}"
# shellcheck source=/dev/null
. /usr/local/lib/gpg-import.sh
import_shared_gpg
mkdir -p /srv/dnf /var/cache/mirror
chown -R mirror:mirror "$GNUPGHOME" /srv/dnf /var/cache/mirror
exec setpriv --reuid=mirror --regid=mirror --init-groups /usr/local/bin/run-as-mirror.sh