From 4cc93c77476256f310ba0e57693273fa38d0b6e8 Mon Sep 17 00:00:00 2001 From: Daniel Arroyo Date: Tue, 7 Jul 2026 15:41:10 -0400 Subject: [PATCH] fix: self-healing permissions on /var/lib/syncserver - systemd: add ExecStartPre to chown -R the data dir before every start - postinst: add chown -R after creating dirs to fix ownership on upgrades This prevents the service from failing if dirs were created by root or drifted ownership after a manual run. --- lib/systemd/system/syncserver.service | 1 + packaging/debian/DEBIAN/postinst | 1 + packaging/debian/lib/systemd/system/syncserver.service | 1 + 3 files changed, 3 insertions(+) diff --git a/lib/systemd/system/syncserver.service b/lib/systemd/system/syncserver.service index 02c3a3b..8f49375 100644 --- a/lib/systemd/system/syncserver.service +++ b/lib/systemd/system/syncserver.service @@ -8,6 +8,7 @@ Wants=network-online.target Type=simple User=syncserver Group=syncserver +ExecStartPre=/bin/chown -R syncserver:syncserver /var/lib/syncserver ExecStart=/usr/bin/syncserver --config /etc/syncserver/config.yaml --data-dir /var/lib/syncserver Restart=on-failure RestartSec=5 diff --git a/packaging/debian/DEBIAN/postinst b/packaging/debian/DEBIAN/postinst index 753fef5..4a024dd 100755 --- a/packaging/debian/DEBIAN/postinst +++ b/packaging/debian/DEBIAN/postinst @@ -10,6 +10,7 @@ case "$1" in install -d -o syncserver -g syncserver -m 0750 /var/lib/syncserver/data || true install -d -o syncserver -g syncserver -m 0750 /var/lib/syncserver/ssh || true install -d -o syncserver -g syncserver -m 0750 /var/lib/syncserver/logs || true + chown -R syncserver:syncserver /var/lib/syncserver install -d -o root -g root -m 0755 /etc/syncserver || true if [ ! -f /etc/syncserver/config.yaml ]; then diff --git a/packaging/debian/lib/systemd/system/syncserver.service b/packaging/debian/lib/systemd/system/syncserver.service index 02c3a3b..8f49375 100644 --- a/packaging/debian/lib/systemd/system/syncserver.service +++ b/packaging/debian/lib/systemd/system/syncserver.service @@ -8,6 +8,7 @@ Wants=network-online.target Type=simple User=syncserver Group=syncserver +ExecStartPre=/bin/chown -R syncserver:syncserver /var/lib/syncserver ExecStart=/usr/bin/syncserver --config /etc/syncserver/config.yaml --data-dir /var/lib/syncserver Restart=on-failure RestartSec=5