Remove prviliges drop when you never ran as root (#34837)

This commit is contained in:
Nacho Avecilla
2026-06-01 13:54:18 +10:00
committed by GitHub
parent 064875a540
commit 380ce4789b
5 changed files with 26 additions and 13 deletions
+6 -5
View File
@@ -16,10 +16,11 @@
# first arg is an executable → exec it directly (sleep, bash, sh, …)
# first arg is anything else → exec `hermes <args>` (subcommand passthrough)
#
# We drop to the hermes user via `s6-setuidgid` so the supervised
# workload runs unprivileged (UID 10000 by default).
# Drop to hermes via s6-setuidgid, but skip it when already non-root.
set -e
drop() { [ "$(id -u)" = 0 ] && set -- s6-setuidgid hermes "$@"; exec "$@"; }
# HOME comes through with-contenv as /root (the /init context). Override
# to the hermes user's home before dropping privileges so libraries that
# resolve paths via $HOME (e.g. discord lockfile under XDG_STATE_HOME)
@@ -31,13 +32,13 @@ cd /opt/data
. /opt/hermes/.venv/bin/activate
if [ $# -eq 0 ]; then
exec s6-setuidgid hermes hermes
drop hermes
fi
if command -v "$1" >/dev/null 2>&1; then
# Bare executable — pass through directly.
exec s6-setuidgid hermes "$@"
drop "$@"
fi
# Hermes subcommand pass-through.
exec s6-setuidgid hermes hermes "$@"
drop hermes "$@"