Herunterfahren und Neustart unter Ubuntu 22.04 deaktivieren

Auf einem virtuellen Arbeitsplatz möchte man nicht, dass Mitarbeiter versehentlich die virtuelle Maschine herunterfahren oder neu starten, da sie sich ja über eine Remote-Verbindung auf das Gerät einwählen.

Wird das Gerät neu gestartet, werden alle anderen Personen ausgeloggt und ist das Gerät ausgeschaltet, ist keine Verbindung mehr möglich. Bei einem Server, der 24/7 läuft, ist ein Herunterfahren aus Benutzersicht sowieso Unsinn.

Leider gibt es bei Ubuntu 22.04.4 LTS über die Oberfläche keine Einstellungsmöglichkeit, um das wirkungsvoll zu verhindern. Mit zwei Kommandozeilen-Befehlen ist das aber ganz schnell nachgerüstet.

Hinweis
Diese Anleitung wurde mit Ubuntu 22.04.4 LTS getestet und funktioniert vmtl. auch mit der allerneuesten Ubuntu-Version Ubuntu 24.04 LTS. Für die älteren Versionen von Ubuntu (Ubuntu 20.04, Ubuntu 18.04 usw.) gibt es ein paar Anleitungen im Internet, die ich am Ende bei den weiterführenden Links aufgeführt habe.

* * *

Die beiden Schritte

  1. Anlegen einer zusätzlichen Polkit-Konfigurationsdatei:
    vi /etc/polkit-1/localauthority/50-local.d/restrict-powermgmt-for-users.pkla

Inhalt der Datei:

# Source: https://askubuntu.com/questions/453479/how-to-disable-shutdown-reboot-from-lightdm-in-14-04
[Disable lightdm PowerMgmt]
Identity=unix-user:*
Action=org.freedesktop.login1.reboot;org.freedesktop.login1.reboot-multiple-sessions;org.freedesktop.login1.power-off;org.freedesktop.login1.power-off-multiple-sessions;org.freedesktop.login1.suspend;org.freedesktop.login1.suspend-multiple-sessions;org.freedesktop.login1.hibernate;org.freedesktop.login1.hibernate-multiple-sessions
ResultAny=no
ResultInactive=no
ResultActive=no
  1. Neustarten des Polkit-Dienstes:
    systemctl restart polkit.service

Die Änderung ist daraufhin direkt gültig und bei allen Desktop-Sessions, die unter unix-user:* fallen sieht das Menü so aus:

Das abgespeckte Menü

Es ist also nicht mehr notwendig, benutzerdefinierte Erweiterungen wie z.B. diese hier zu verwenden.

Das Ausführen der entsprechenden Befehle auf der Kommandozeile funktioniert nach unserer Änderung ebenfalls nicht mehr: systemctl reboot -i

Rückmeldung (nachdem zweimal ein Fenster mit sudo-Passwortabfrage erschienen ist):

Failed to set wall message, ignoring: Access denied
Failed to reboot system via logind: Access denied
Failed to start reboot.target: Access denied
See system logs and 'systemctl status reboot.target' for details.
* * *

Anpassungen

Falls du nur bestimmte Funktionen sperren möchtest, so kannst du dir mit folgendem Befehl erstmal die gesamte Liste aller Möglichkeiten ausgeben lassen: pkaction

Um sie zu filtern, kannst du grep verwenden: pkaction | grep login1

Die Filterung nach login1 gibt beispielsweise Folgendes zurück:

org.freedesktop.login1.attach-device
org.freedesktop.login1.chvt
org.freedesktop.login1.flush-devices
org.freedesktop.login1.halt
org.freedesktop.login1.halt-ignore-inhibit
org.freedesktop.login1.halt-multiple-sessions
org.freedesktop.login1.hibernate
org.freedesktop.login1.hibernate-ignore-inhibit
org.freedesktop.login1.hibernate-multiple-sessions
org.freedesktop.login1.inhibit-block-idle
org.freedesktop.login1.inhibit-block-shutdown
org.freedesktop.login1.inhibit-block-sleep
org.freedesktop.login1.inhibit-delay-shutdown
org.freedesktop.login1.inhibit-delay-sleep
org.freedesktop.login1.inhibit-handle-hibernate-key
org.freedesktop.login1.inhibit-handle-lid-switch
org.freedesktop.login1.inhibit-handle-power-key
org.freedesktop.login1.inhibit-handle-reboot-key
org.freedesktop.login1.inhibit-handle-suspend-key
org.freedesktop.login1.lock-sessions
org.freedesktop.login1.manage
org.freedesktop.login1.power-off
org.freedesktop.login1.power-off-ignore-inhibit
org.freedesktop.login1.power-off-multiple-sessions
org.freedesktop.login1.reboot
org.freedesktop.login1.reboot-ignore-inhibit
org.freedesktop.login1.reboot-multiple-sessions
org.freedesktop.login1.set-reboot-parameter
org.freedesktop.login1.set-reboot-to-boot-loader-entry
org.freedesktop.login1.set-reboot-to-boot-loader-menu
org.freedesktop.login1.set-reboot-to-firmware-setup
org.freedesktop.login1.set-self-linger
org.freedesktop.login1.set-user-linger
org.freedesktop.login1.set-wall-message
org.freedesktop.login1.suspend
org.freedesktop.login1.suspend-ignore-inhibit
org.freedesktop.login1.suspend-multiple-sessions

Relevant für die Funktionen rund um das Power-Management sind dabei:

org.freedesktop.login1.halt
org.freedesktop.login1.halt-multiple-sessions

org.freedesktop.login1.hibernate
org.freedesktop.login1.hibernate-multiple-sessions

org.freedesktop.login1.power-off
org.freedesktop.login1.power-off-multiple-sessions

org.freedesktop.login1.reboot
org.freedesktop.login1.reboot-multiple-sessions

org.freedesktop.login1.suspend
org.freedesktop.login1.suspend-multiple-sessions
* * *

Prüfung

Logge dich als Benutzer ein, dessen Berechtigung geprüft werden soll. Wähle dann eine der Optionen aus, die du beschränkt hast (hier z.B. org.freedesktop.login1.power-off) und passe den Befehl entsprechend an:

pkcheck -u -p $$ -a org.freedesktop.login1.power-off; echo $?

Wenn die Funktion gesperrt ist, lautet die Ausgabe wie folgt (Rückgabewert 1):

Not authorized.
1

Wenn die Funktion nicht gesperrt ist, lautet die Ausgabe wie folgt (Rückgabewert 2):

polkit\56retains_authorization_after_challenge=1
Authorization requires authentication but no agent is available.
2

In älteren Beiträge im Internet wird immer wieder der folgende Befehl genannt, um die Wirksamkeit der Polkit-Ängerungen zu prüfen:

pkaction --action-id org.freedesktop.login1.power-off --verbose

Allerdings gibt dieser auch nach dem Konfigurieren der oben genannten Option immer noch implicit active: yes aus, obwohl die Funktion technisch bereits deaktiviert ist.

* * *
* * *
Christian Süßenguth Christian Süßenguth @sweetgood

Hi, ich bin Christian und Inhaber der Firma SWEETGOOD. Mit dem andersGOOD Blog möchte ich auch dich für datensichere IT-Lösungen begeistern. So bringst du dein Unternehmen voran, ohne großen Konzernen deine wertvollen Daten zu liefern. Probiers mal anders!


Kommentarbereich

Die Kommentare sind für dich noch deaktiviert, da du dem Setzen von Cookies bisher nicht zugestimmt hast.
Klicke oben rechts auf "Ja, klar!" und lade die Seite neu, um die Kommentare anzuzeigen.

Seite neu laden

👾 Magst du Kekse?

Ich würde gerne Cookies setzen

Ist das OK für dich?