]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
systemctl: keep ignoring sessions on shutdown as root 34245/head
authorLuca Boccassi <bluca@debian.org>
Tue, 3 Sep 2024 23:02:46 +0000 (00:02 +0100)
committerLuca Boccassi <bluca@debian.org>
Fri, 13 Sep 2024 10:32:42 +0000 (12:32 +0200)
The change was supposed to be about respecting inhibitors, but
it was extended to also error out when there are active user
sessions, which was not intentional. Previously systemctl skipped
all checks if the caller was root or root-equivalent. Restore the
previous behaviour and again avoid blocking systemctl reboot by root
if there are active sessions, as long as there are no active
inhibitors.

Fixes https://github.com/systemd/systemd/issues/34086

Follow-up for 804874d26ac73e0af07c4c5d7165c95372f03f6d

src/systemctl/systemctl-logind.c

index e4ef7cf9154ca2ce730d5c11d871df3f245c9d94..fc64e60c64b9b2233ba49de9086d52db2bf2de25 100644 (file)
@@ -204,6 +204,10 @@ int logind_check_inhibitors(enum action a) {
         if (r < 0)
                 return bus_log_parse_error(r);
 
+        /* root respects inhibitors since v257 but keeps ignoring sessions by default */
+        if (arg_check_inhibitors < 0 && c == 0 && geteuid() == 0)
+                return 0;
+
         /* Check for current sessions */
         sd_get_sessions(&sessions);
         STRV_FOREACH(s, sessions) {