From 37c508297fa7132593e2cb474354e8569c2d9ad3 Mon Sep 17 00:00:00 2001 From: Tim Eertmoed Date: Wed, 16 Sep 2026 21:32:20 +0200 Subject: [PATCH] Version 2.8.35: der reparierte venv bleibt fuer den Dienstbenutzer lesbar --- apps/tesm/pyproject.toml | 2 +- deploy/tesm-venv | 17 +++++++++++++++++ 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/apps/tesm/pyproject.toml b/apps/tesm/pyproject.toml index f286ab6..5114fe6 100644 --- a/apps/tesm/pyproject.toml +++ b/apps/tesm/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta" [project] name = "tesm" -version = "2.8.34" +version = "2.8.35" description = "TESM -- Verwaltung und Ueberwachung von PoE-Endgeraeten und Aruba-Switchen" requires-python = ">=3.11" dependencies = [ diff --git a/deploy/tesm-venv b/deploy/tesm-venv index ecb7df6..f7c513d 100644 --- a/deploy/tesm-venv +++ b/deploy/tesm-venv @@ -28,6 +28,18 @@ # ============================================================================= set -euo pipefail +# **Der venv muss fuer den Dienstbenutzer lesbar sein.** +# +# Dieses Programm laeuft als ExecStartPre der Dienst-Unit -- und erbt damit +# deren UMask=0027. Alles, was es anlegt, gehoerte root und waere 0750: der +# Dienst selbst laeuft unprivilegiert und koennte sein eigenes site-packages +# nicht einmal betreten. Gemessen: nach der Reparatur ging "import gunicorn" +# als root, als Benutzer tesm nicht -- die Reparatur baute etwas, das genau +# der Prozess nicht benutzen konnte, fuer den sie gedacht war. +# +# Im venv liegt nichts Geheimes; Schluessel und Datenbank stehen woanders. +umask 022 + ROOT="${1:-}" APP="${2:-}" MODUS="reparieren" @@ -130,6 +142,11 @@ if ! bestuecken; then exit 1 fi +# Und noch einmal ausdruecklich, fuer den Fall, dass ein frueherer Lauf mit +# strengerer Maske gebaut hat: was hier liegt, muss lesbar sein. Idempotent +# und in einer Sekunde durch. +chmod -R a+rX "$VENV" 2>/dev/null || true + [[ "$MODUS" == "immer" ]] || melden "INFO" "Python-Umgebung von $NAME ist wieder vollstaendig." rm -f "$MERKER" 2>/dev/null || true exit 0