28 lines
1.1 KiB
Bash
Executable File
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
|