diff --git a/apps/tesm-license/pyproject.toml b/apps/tesm-license/pyproject.toml index 77f701a..c27fc4f 100644 --- a/apps/tesm-license/pyproject.toml +++ b/apps/tesm-license/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta" [project] name = "tesm-license" -version = "2.8.10" +version = "2.8.11" description = "TESM-Lizenzserver -- Kunden, Tickets, Lizenzen, Aktivierung" 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