fix(runner): Re-Review-Finding 85 — run_user wechselt via env -C ins RUNNER_DIR (.runner landet sonst in /)
This commit is contained in:
@@ -58,7 +58,10 @@ valid_token_word "$RUNNER_LABELS" || { msg_err "RUNNER_LABELS enthält unzuläss
|
|||||||
[[ "$RUNNER_VERSION" =~ ^[0-9]+\.[0-9]+\.[0-9]+$ ]] || { msg_err "RUNNER_VERSION ungültig"; exit 1; }
|
[[ "$RUNNER_VERSION" =~ ^[0-9]+\.[0-9]+\.[0-9]+$ ]] || { msg_err "RUNNER_VERSION ungültig"; exit 1; }
|
||||||
[[ "$NODE_MAJOR" =~ ^[0-9]+$ ]] || { msg_err "NODE_MAJOR ungültig"; exit 1; }
|
[[ "$NODE_MAJOR" =~ ^[0-9]+$ ]] || { msg_err "NODE_MAJOR ungültig"; exit 1; }
|
||||||
|
|
||||||
run_user() { runuser -u "$APP_USER" -- env HOME="$APP_HOME" "$@"; }
|
# Finding 85 (Re-Review): act_runner schreibt .runner ins CWD — run_user wechselt
|
||||||
|
# deshalb hart ins RUNNER_DIR (env -C), sonst landet die Registrierung in / und
|
||||||
|
# der unprivilegierte User darf dort nicht schreiben.
|
||||||
|
run_user() { runuser -u "$APP_USER" -- env -C "$RUNNER_DIR" HOME="$APP_HOME" "$@"; }
|
||||||
|
|
||||||
# ── Pakete: git/rsync, Node (checkout-Action), Docker (Test-Container) ────────
|
# ── Pakete: git/rsync, Node (checkout-Action), Docker (Test-Container) ────────
|
||||||
setup_base_apt git rsync ca-certificates curl
|
setup_base_apt git rsync ca-certificates curl
|
||||||
@@ -108,6 +111,7 @@ if [[ ! -f "$RUNNER_DIR/.runner" ]]; then
|
|||||||
msg_info "Registering runner '$RUNNER_NAME' [$RUNNER_LABELS] with $GITEA_INSTANCE_URL (instance scope)..."
|
msg_info "Registering runner '$RUNNER_NAME' [$RUNNER_LABELS] with $GITEA_INSTANCE_URL (instance scope)..."
|
||||||
# Werte sind oben strikt validiert (keine Quotes/Whitespace möglich) —
|
# Werte sind oben strikt validiert (keine Quotes/Whitespace möglich) —
|
||||||
# Übergabe als argv an runuser, keine erneute Shell-Interpolation (vgl. Finding 76).
|
# Übergabe als argv an runuser, keine erneute Shell-Interpolation (vgl. Finding 76).
|
||||||
|
# CWD = RUNNER_DIR via run_user (Finding 85).
|
||||||
run_user /usr/local/bin/act_runner register \
|
run_user /usr/local/bin/act_runner register \
|
||||||
--no-interactive \
|
--no-interactive \
|
||||||
--config /dev/null \
|
--config /dev/null \
|
||||||
@@ -116,7 +120,7 @@ if [[ ! -f "$RUNNER_DIR/.runner" ]]; then
|
|||||||
--name "$RUNNER_NAME" \
|
--name "$RUNNER_NAME" \
|
||||||
--labels "$RUNNER_LABELS" \
|
--labels "$RUNNER_LABELS" \
|
||||||
2>&1 | sed "s#$RUNNER_TOKEN#<redacted>#g" || { msg_err "Registrierung fehlgeschlagen"; exit 1; }
|
2>&1 | sed "s#$RUNNER_TOKEN#<redacted>#g" || { msg_err "Registrierung fehlgeschlagen"; exit 1; }
|
||||||
# act_runner schreibt .runner ins CWD des Users — sicherstellen, dass es im RUNNER_DIR liegt
|
# Belt-and-suspenders: falls eine künftige act_runner-Version doch ins HOME schreibt
|
||||||
if [[ -f "$APP_HOME/.runner" && ! -f "$RUNNER_DIR/.runner" ]]; then
|
if [[ -f "$APP_HOME/.runner" && ! -f "$RUNNER_DIR/.runner" ]]; then
|
||||||
mv "$APP_HOME/.runner" "$RUNNER_DIR/.runner"
|
mv "$APP_HOME/.runner" "$RUNNER_DIR/.runner"
|
||||||
fi
|
fi
|
||||||
|
|||||||
Reference in New Issue
Block a user