systemctl: keep ignoring sessions on shutdown as root

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 804874d26a
This commit is contained in:
Luca Boccassi
2024-09-04 00:02:46 +01:00
parent 5360db2a90
commit f2f9c199d1

View 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) {