Herunterfahren und Neustart unter Ubuntu 22.04 deaktivieren
- Christian Süßenguth
- Kurz notiert
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
- 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
- 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:
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.
Quellen und Weiterführende Links
- How to disable shutdown/reboot from lightdm in 14.04?
- Gnome3: How to disable "Shutdown" button
- polkit rules to prevent shutdown / reboot does not work
- pklocalauthority — PolicyKit Local Authority
- How does gnome reboot without root privileges?
- How to disable shutdown/reboot/suspend/hibernate?
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