File 9000-core-allow-to-use-PIDFile-in-user-session-services.patch of Package systemd
From 1c08e5e5ac9828a600bb692f051c4deac5d9d13d Mon Sep 17 00:00:00 2001
From: Yu Watanabe <watanabe.yu+github@gmail.com>
Date: Tue, 8 Jul 2025 17:37:33 +0900
Subject: [PATCH] core: allow to use PIDFile= in user session services
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Fixes #38108.
Co-authored-by: 铝箔 <38349409+Sodium-Aluminate@users.noreply.github.com>
(cherry picked from commit 7e269126778875e7e8927d795132109fb9a9b3a1)
---
src/core/service.c | 8 +++++---
1 file changed, 5 insertions(+), 3 deletions(-)
diff --git a/src/core/service.c b/src/core/service.c
index 0134d0e775..92d2f3d77c 100644
--- a/src/core/service.c
+++ b/src/core/service.c
@@ -1215,11 +1215,13 @@ static int service_load_pid_file(Service *s, bool may_warn) {
if (fstat(fileno(f), &st) < 0)
return log_unit_error_errno(UNIT(s), errno, "Failed to fstat() PID file '%s': %m", s->pid_file);
- if (st.st_uid != 0)
+ if (st.st_uid != getuid())
return log_unit_error_errno(UNIT(s), SYNTHETIC_ERRNO(EPERM),
- "New main PID "PID_FMT" from PID file does not belong to service, and PID file is not owned by root. Refusing.", pidref.pid);
+ "New main PID "PID_FMT" from PID file does not belong to service, and PID file is owned by "UID_FMT" (must be owned by "UID_FMT"). Refusing.",
+ pidref.pid, st.st_uid, getuid());
- log_unit_debug(UNIT(s), "New main PID "PID_FMT" does not belong to service, accepting anyway since PID file is owned by root.", pidref.pid);
+ log_unit_debug(UNIT(s), "New main PID "PID_FMT" does not belong to service, accepting anyway since PID file is owned by "UID_FMT".",
+ pidref.pid, st.st_uid);
}
if (s->main_pid_known) {
--
2.52.0