Wie deaktiviere ich das Herunterfahren / Neustarten / Anhalten / Ruhezustand?

12

Ich habe einen Ubuntu 10.04 LTS Desktop PC mit GNOME.

Wie kann ich die Funktionen Neustart / Herunterfahren / Suspendieren / Ruhezustand in GNOME oder sogar mit root vollständig deaktivieren? Damit der Root den Befehl "reboot" oder "pm-suspend" ausgibt, führt er nichts aus und der Computer fährt fort. Wie kann ich diese grundlegenden "Funktionen" vollständig deaktivieren?

LanceBaynes
quelle
Ich weiß nicht? Als Kiosk? Sie entfernen gerade shutdownund pm-suspendvon /sbin/und/bin/
Amith KK
Diese Dateien könnten sich im Cache befinden, oder? Wenn Sie sie entfernen, wird die Funktion Neustart / Herunterfahren / Suspendieren / Ruhezustand auch in GNOME dauerhaft deaktiviert.
LanceBaynes
Ja, das würde es wahrscheinlich tun @Lance Baynes
Amith KK

Antworten:

15

Der Benutzerzugriff auf diese Aktionen wird von polkit gesteuert. Insbesondere entsprechen sie den folgenden Aktionen:

  • org.freedesktop.consolekit.system.stop
  • org.freedesktop.consolekit.system.restart
  • org.freedesktop.upower.suspend
  • org.freedesktop.upower.hibernate

Alle diese Aktionen sind standardmäßig für aktive lokale Benutzer consolekitzulässig ( schränkt jedoch die ersten beiden Berechtigungen weiter ein, sodass sie nur funktionieren, wenn ein einzelner Benutzer am System angemeldet ist).

Wenn Sie diese Aktionen deaktivieren möchten, erstellen Sie eine Datei, /etc/polkit-1/50-local.d/disable-shutdown.pkladie Folgendes enthält:

[Disable shutdown/whatever]
Identity=unix-user:*
Action=org.freedesktop.consolekit.system.stop;org.freedesktop.consolekit.system.restart;org.freedesktop.upower.suspend;org.freedesktop.upower.hibernate
ResultAny=no
ResultInactive=no
ResultActive=no

Dies sollte verhindern, dass diese Aktionen abgeschlossen werden. Weitere Informationen zu diesen Richtliniendateien erhalten Sie durch Ausführen von man pklocalauthority.

Wenn Sie jedoch einschränken rootmöchten, ist dies nur eine geringfügige Unannehmlichkeit. Per Definition roothandelt es sich um ein uneingeschränktes Konto gemäß dem herkömmlichen UNIX-System für die diskretionäre Zugriffskontrolle. Wenn Sie den Benutzern nicht vertrauen können, auf die Sie vollen rootZugriff haben, haben Sie größere Probleme, als wenn sie nur das System herunterfahren.

Beachten Sie, dass in späteren Ubuntu-Versionen jemand entschieden hat, die Kompatibilität zu brechen. Wie in Deaktivieren des Herunterfahrens / Neustarts von LightDM in 14.04 beantwortet ? Die Aktion scheint sich in "org.freedesktop. login1 .reboot" (und dergleichen) geändert zu haben .

Beispiel: In 14.04 werden die folgenden Zeilen wie folgt hinzugefügt /etc/polkit-1/localauthority/50-local.d/restrict-login-powermgmt.pkla:

[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

Beachten Sie außerdem, dass diese Methode nur Neustart / etc-Befehle blockiert, die von der GUI ausgegeben werden. Um Neustart- / etc-Befehle von der Befehlszeile aus zu blockieren, kann man molly-guard verwenden - wie unter Deaktivieren des Befehls zum Herunterfahren für alle Benutzer, auch für Root-Benutzer - erläutert .

James Henstridge
quelle
3
Hat aufgehört hier mit Ubuntu 13.10 zu arbeiten !!!
GabrieleV
@GabrieleV Funktioniert die Version mit login1 vielleicht in 13.10? Ich habe es in 14.04 getestet - und hoffentlich bricht niemand bei Canonical aus Spaß die Abwärtskompatibilität in polkit in jeder Version.
Verringerung der Aktivität
Als weiteren Datenpunkt habe ich dies gerade erfolgreich auf dem neuen Ubuntu 18.04.1 LTS verwendet, um das Herunterfahren und Neustarten zu verhindern (aber Ruhezustand und Suspendierung zuzulassen). Beachten Sie, dass ich diese 'login1'-Namen verwenden musste. dass ich auch 'halt' und 'halt-multiple-sessions' deaktiviert habe; dass ich das getan habe, weil ich diese Aktionen in /usr/share/polkit-1/actions/org.freedesktop.login1.policy gefunden habe; und schließlich, dass in Ubuntu 18.04s GDM3-Benutzeroberfläche die Schaltflächen im Bestätigungsdialog nicht ausgeblendet sind, sondern einfach keine Wirkung haben.
MarnixKlooster ReinstateMonica
5

Erwägen Sie die Installation von Molly-Guard .

sudo apt-get install molly-guard

Dieses Paket verhindert ein unbeabsichtigtes Herunterfahren / Neustarten / Anhalten / Ruhezustand, indem Sie interaktiv aufgefordert werden, den Hostnamen des Systems einzugeben.

Es ist jedoch trivial, molly-guard so zu konfigurieren, dass das Herunterfahren / Neustarten / Suspendieren / Ruhezustand vollständig deaktiviert wird. Erstellen Sie einfach eine ausführbare Datei unter /etc/molly-guard/run.d/99-prevent-all, in der Folgendes enthalten ist:

#!/bin/sh
exit 1

Beachten Sie, dass es nur vor Befehlen schützt, die über die Befehlszeile ausgegeben werden. Herunterfahren / Neustarten / Anhalten / Ruhezustand über die GUI umgeht dies. Um auch die GUI durch einen Neustart zu blockieren, können Polkit-Regeln verwendet werden .

Dustin Kirkland
quelle
Dies ist eine gute Lösung für einen Mehrbenutzer-Computer, auf dem der Administrator arbeiten und verhindern muss, dass alle anderen Benutzer für eine Weile heruntergefahren werden.
Alexis Wilke
1
Funktioniert von der Konsole aus, aber auch wenn Molly-Guard installiert ist (und auf "Immer fragen" gesetzt ist), wird das Herunterfahren fortgesetzt, ohne beim Starten von GNOME (3.4) gefragt zu werden.
Jan
Ja, das funktioniert nicht mehr ... Seit 13.10, vielleicht 13.04.
Alexis Wilke
3

WARNUNG! Die hier aufgeführten Befehle sind gefährlich zu verwenden. Verwenden Sie diese nur auf eigenes Risiko!

chmod -x /usr/sbin/pm-suspend
chmod -x /sbin/reboot
chmod -x /sbin/shutdown
LanceBaynes
quelle
4
Können Sie Ihre Antwort begründen? Ich glaube nicht, dass er die Möglichkeit eines Neustarts und Herunterfahrens ausschließen wollte.
Viyyer
Wie kann man den Ruhezustand auf diese Weise wieder aktivieren?
Gabriel Fair
benutze "chmod + x" nicht "chmod -x"
LanceBaynes
5
Warnung! Tun Sie das nicht Diese Befehle sind mit symbolisch verknüpft /bin/systemctlund entfernen das ausführbare Bit von ihr. Dies ist eine wichtige ausführbare Datei, die auch steuert service SERVICE_NAME [stop|start|restart]. Ihr System bootet wahrscheinlich nicht mehr (wenn Sie es überhaupt zum Herunterfahren bringen können).
Daniel F
Ich habe diese Befehle auf einem Ubuntu-VPS ausgeführt. Herunterfahren des VPS vom Host, Herunterfahren fehlgeschlagen. Es hat den SSH-Daemon getötet. Kraft gestoppt und gestartet, kann SSH in Ordnung. Nach dem Neustart /bin/systemctlist nur Lesen-Schreiben eingestellt-rw-r--r-- 1 root root
Kryo
0

Sie können auf der Antwort von OP aufbauen

for file in $(/sbin/shutdown /sbin/reboot /usr/sbin/pm-suspend); do
    mv $file $file.bak && touch $file
done

Dadurch werden die Symlinks umbenannt und durch leere Dateien ersetzt. Dadurch wird das Herunterfahren der Befehlszeile verhindert. Ich weiß nicht, ob die GUI-Befehle dies aufrufen oder ihre eigenen Aktionen ausführen, sodass Sie möglicherweise auch die akzeptierte Antwort ausführen müssen.

Speedstyle
quelle