From 48a52c5290b06a23d528b56ae60737cd70faa662 Mon Sep 17 00:00:00 2001 From: Florian Wilde Date: Sat, 10 Oct 2026 21:50:06 +0200 Subject: [PATCH] fix(deploy): systemd-Unit ohne eigenen Mount-Namespace MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ProtectSystem/PrivateTmp/ProtectControlGroups erzeugen einen Namespace als slave; Mounts blieben dort gefangen (auf der Test-VM nachgewiesen) und verschwanden bei jedem Neustart. MountFlags=shared hilft nicht. Nur noch Härtungen ohne Namespace. Co-Authored-By: Claude Opus 5.5 --- deploy/netmover.service | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/deploy/netmover.service b/deploy/netmover.service index 9c1bd2a..0329ef3 100644 --- a/deploy/netmover.service +++ b/deploy/netmover.service @@ -27,18 +27,17 @@ RuntimeDirectory=netmover RuntimeDirectoryMode=0700 # Härtung, soweit mit Mounten vereinbar. -# Die Optionen unten erzeugen einen eigenen Mount-Namespace für den Dienst. -# MountFlags=shared sorgt dafür, dass Mounts unter /mnt/netmover trotzdem im -# System sichtbar sind (prüfen mit: findmnt -R /mnt/netmover). -MountFlags=shared -# /usr, /boot und /etc schreibgeschützt; /mnt, /opt, /srv, /var bleiben schreibbar -# (lokale Ziele wie /opt/paperless/consume funktionieren also). -ProtectSystem=full -PrivateTmp=yes +# WICHTIG: Keine Optionen, die einen eigenen Mount-Namespace erzeugen +# (ProtectSystem=, ProtectHome=, PrivateTmp=, ProtectControlGroups=, +# ReadOnlyPaths=, BindPaths= …). Sonst landen die Mounts im Namespace des +# Dienstes: das System und andere Programme (Paperless!) sähen sie nicht, und +# jeder Neustart des Dienstes würde sie verwerfen. MountFlags=shared hilft dagegen +# nicht – systemd setzt den Namespace als „slave“ auf, Mounts fließen nur hinein. +# Auf dem Testsystem nachgewiesen; prüfen mit: findmnt -l | grep /mnt/netmover NoNewPrivileges=yes -ProtectControlGroups=yes LockPersonality=yes RestrictRealtime=yes +RestrictSUIDSGID=yes UMask=0022 [Install]