Andy@Arch Bin wieder bei "ich verstehe es nicht"
Funktioniert das Tool denn bei euch? Muss dafür noch irgendwas konfiguriert werden oder sollte es per default-config funktionieren?
Bei meinem kurzen Test ist es ähnlich wie bei dir.
Es ist - wie so vieles in Poetterings Universum - ggf. technisch gut gedacht, aber nicht konsequent.
Zuviele (D)Busse+PAMs+KITs machen IMHO alles undurchsichtig und kompliziert.
Mein Vorschlag: Versuche nicht soziale Probleme (Reboot trotzt angekündigter Wartung) mittels unzulänglicher Werkzeuge zu lösen. Wenn den Betreffenden das Problem nicht klar ist, dann stelle die Wartung ein oder hinterlasse mal (testweise) ein nichtbenutzbares System ("Das habt ihr nun von eurem Reboot/Ausschalten").
Ansonsten bliebe @tuxnix Vorschlag, die user-session zu locken/pausieren, daß hilft aber nicht gegen erzwungenen Poweroff/Reboot.
Beim Test kam ich dann weiter:
Wenn root den dbus.service stoppt. Dann ist bei mir kein (Software)-Reboot mittels DisplayManager/Windowmanager-Reboot-Option mehr möglich. Das Arbeiten für den User ist dann ggf. nur rudimentär möglich (der user-dbus ist ja auch funktionsuntüchtig). Es ist dann auch ein Aus/Wiedereinloggen des Users nötig nach einem Neustart des system-dbus.
Alles suboptimal...
//Edit:
Ich hatte (alles zusätzlich zu systemd-inhibit) auch nochmal den Ansatz versucht, diverse shutdown/reboot Services+Targets während der "Wartung" zu maskieren, um Reboot-Versuche zu unterbinden. Bin aber auch nicht wesentlich weiter gekommen (auch aus Mangel an Interesse).
Es müßte (und das müßte dann wohl im Kernel-Ring angesiedelt sein) etwas adäquates zu z.B: pam_nologin geben, also im wesentlichen: Existiert eine Datei z.B. /etc/noreboot dann funktioniert nur noch der physikalische Weg. Im Zuge dieses noreboot dürften dann logischerweise auch keine vorhergehenden Units (umount etc) versucht werden.
Mein Ansatz wäre wohl:
Ich erstelle für wichtige Dinge ein eigenes Wartungs.target und boote für die Wartung in dieses target/runlevel. Dort kann dann zum sshd ein X/Wayland oder wie auch immer gestartet sein mit deutlichem Hinweis(-Bild, feh z.B.) das Wartung läuft, nicht ausschalten usw.
Kein User == Kein Problem <g>