From 61f65771617bb366604832e3011d8b218cfe3fd5 Mon Sep 17 00:00:00 2001
From: Jonathan Druart <jonathan.druart@bugs.koha-community.org>
Date: Thu, 14 May 2020 16:04:20 +0200
Subject: [PATCH] Bug 25481: Pass --user to start-stop-daemon when a pidfile is
used
Since D10, the behaviour of start-stop-daemon changed, see from its
manual:
"""
Warning: using this match option with a world-writable pidfile or using it alone with a daemon that writes the pidfile as an unprivileged (non-root) user will be refused with an error (since
version 1.19.3) as this is a security risk, because either any user can write to it, or if the daemon gets compromised, the contents of the pidfile cannot be trusted, and then a privileged
runner (such as an init script executed as root) would end up acting on any system process. Using /dev/null is exempt from these checks.
"""
Test plan:
koha-plack --restart kohadev
should success with this patch.
Without this patch you get:
start-stop-daemon: matching only on non-root pidfile /var/run/koha/kohadev/plack.pid is insecure
---
debian/scripts/koha-functions.sh | 2 ++
debian/scripts/koha-plack | 2 +-
2 files changed, 3 insertions(+), 1 deletion(-)
diff --git a/debian/scripts/koha-functions.sh b/debian/scripts/koha-functions.sh
index 8687845aa5..082d3628fa 100755
--- a/debian/scripts/koha-functions.sh
+++ b/debian/scripts/koha-functions.sh
@@ -269,6 +269,7 @@ is_plack_running()
local instancename=$1
if start-stop-daemon --pidfile "/var/run/koha/${instancename}/plack.pid" \
+ --user="$instancename-koha" \
--status ; then
return 0
else
@@ -292,6 +293,7 @@ is_z3950_running()
local instancename=$1
if start-stop-daemon --pidfile "/var/run/koha/${instancename}/z3950-responder.pid" \
+ --user="$instancename-koha" \
--status ; then
return 0
else
diff --git a/debian/scripts/koha-plack b/debian/scripts/koha-plack
index e541d44178..90da6cbd36 100755
--- a/debian/scripts/koha-plack
+++ b/debian/scripts/koha-plack
@@ -144,7 +144,7 @@ stop_plack()
log_daemon_msg "Stopping Plack daemon for ${instancename}"
- if start-stop-daemon --pidfile ${PIDFILE} --stop --retry=TERM/30/KILL/5; then
+ if start-stop-daemon --pidfile ${PIDFILE} --user="${instancename}-koha" --stop --retry=TERM/30/KILL/5; then
log_end_msg 0
else
log_end_msg 1
--
2.20.1