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 <noreply@anthropic.com>
45 lines
1.7 KiB
Desktop File
45 lines
1.7 KiB
Desktop File
# NetMover als systemd-Dienst direkt auf dem Host (empfohlen).
|
||
# Installation: siehe README, Abschnitt „Installation“.
|
||
[Unit]
|
||
Description=NetMover – NFS/SMB-Mounts und zeitgesteuertes Verschieben
|
||
Documentation=https://git.wilde-server.de/florian.wilde/netmover
|
||
Wants=network-online.target
|
||
After=network-online.target remote-fs-pre.target
|
||
|
||
[Service]
|
||
Type=exec
|
||
# root ist nötig: mount/umount brauchen CAP_SYS_ADMIN, und Dateien auf beliebigen
|
||
# Freigaben sollen mit den richtigen Eigentümern geschrieben werden (siehe README).
|
||
User=root
|
||
EnvironmentFile=-/etc/netmover/netmover.env
|
||
ExecStart=/opt/netmover/venv/bin/netmover serve
|
||
Restart=on-failure
|
||
RestartSec=5
|
||
# Beim Stoppen werden Mounts bewusst NICHT ausgehängt.
|
||
KillMode=mixed
|
||
TimeoutStopSec=20
|
||
|
||
# /var/lib/netmover (Datenbank, Schlüssel) und /run/netmover (kurzlebige
|
||
# Credentials-Dateien für mount.cifs) – beide nur für root lesbar.
|
||
StateDirectory=netmover
|
||
StateDirectoryMode=0700
|
||
RuntimeDirectory=netmover
|
||
RuntimeDirectoryMode=0700
|
||
|
||
# Härtung, soweit mit Mounten vereinbar.
|
||
# 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
|
||
LockPersonality=yes
|
||
RestrictRealtime=yes
|
||
RestrictSUIDSGID=yes
|
||
UMask=0022
|
||
|
||
[Install]
|
||
WantedBy=multi-user.target
|