fix: Dienst läuft als Repo-Eigentümer (behebt 200/CHDIR bei Klon unter /root)
Ein eigener Dienst-Benutzer kommt nicht an Code/venv unter /root (Modus 700). install.sh setzt User/Group der Unit jetzt auf den Eigentümer des Repos – bei Klon als root nach /root also root. Kein useradd mehr. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
+9
-8
@@ -19,7 +19,11 @@ REPO_DIR="$(cd "$SCRIPT_DIR/.." && pwd)"
|
|||||||
ETC_DIR="/etc/$APP_SLUG"
|
ETC_DIR="/etc/$APP_SLUG"
|
||||||
ENV_FILE="$ETC_DIR/env"
|
ENV_FILE="$ETC_DIR/env"
|
||||||
DATA_DIR="/var/lib/$APP_SLUG"
|
DATA_DIR="/var/lib/$APP_SLUG"
|
||||||
SERVICE_USER="$APP_SLUG"
|
# Der Dienst läuft als EIGENTÜMER des Repos. Wer als root nach /root klont, für den
|
||||||
|
# läuft der Dienst als root – nur so ist /root/... für den Dienst überhaupt
|
||||||
|
# zugänglich (ein eigener Dienst-Benutzer käme sonst nicht an Code/venv unter /root).
|
||||||
|
SERVICE_USER="$(stat -c '%U' "$REPO_DIR" 2>/dev/null || echo root)"
|
||||||
|
SERVICE_GROUP="$(stat -c '%G' "$REPO_DIR" 2>/dev/null || echo root)"
|
||||||
UNIT_FILE="/etc/systemd/system/$APP_SLUG.service"
|
UNIT_FILE="/etc/systemd/system/$APP_SLUG.service"
|
||||||
|
|
||||||
ASSUME_YES=0
|
ASSUME_YES=0
|
||||||
@@ -75,13 +79,10 @@ ensure_node() {
|
|||||||
}
|
}
|
||||||
ensure_node
|
ensure_node
|
||||||
|
|
||||||
# --- Dienst-Benutzer und Verzeichnisse --------------------------------------
|
# --- Verzeichnisse (Dienst läuft als Repo-Eigentümer, s. o.) ----------------
|
||||||
if ! id -u "$SERVICE_USER" >/dev/null 2>&1; then
|
info "Dienst läuft als Benutzer '$SERVICE_USER' (Eigentümer des Repos)."
|
||||||
info "Lege Dienst-Benutzer '$SERVICE_USER' an …"
|
|
||||||
useradd --system --user-group --home-dir "$DATA_DIR" --shell /usr/sbin/nologin "$SERVICE_USER"
|
|
||||||
fi
|
|
||||||
mkdir -p "$DATA_DIR" "$ETC_DIR"
|
mkdir -p "$DATA_DIR" "$ETC_DIR"
|
||||||
chown -R "$SERVICE_USER:$SERVICE_USER" "$DATA_DIR"
|
chown -R "$SERVICE_USER:$SERVICE_GROUP" "$DATA_DIR"
|
||||||
|
|
||||||
# --- Python-venv + Abhängigkeiten -------------------------------------------
|
# --- Python-venv + Abhängigkeiten -------------------------------------------
|
||||||
info "Richte Python-venv ein und installiere Abhängigkeiten …"
|
info "Richte Python-venv ein und installiere Abhängigkeiten …"
|
||||||
@@ -156,7 +157,7 @@ Wants=network-online.target
|
|||||||
[Service]
|
[Service]
|
||||||
Type=simple
|
Type=simple
|
||||||
User=$SERVICE_USER
|
User=$SERVICE_USER
|
||||||
Group=$SERVICE_USER
|
Group=$SERVICE_GROUP
|
||||||
WorkingDirectory=$REPO_DIR/backend
|
WorkingDirectory=$REPO_DIR/backend
|
||||||
EnvironmentFile=$ENV_FILE
|
EnvironmentFile=$ENV_FILE
|
||||||
ExecStart=$REPO_DIR/backend/.venv/bin/uvicorn app.main:app --host \${APP_BIND_HOST} --port \${APP_PORT}
|
ExecStart=$REPO_DIR/backend/.venv/bin/uvicorn app.main:app --host \${APP_BIND_HOST} --port \${APP_PORT}
|
||||||
|
|||||||
Reference in New Issue
Block a user