Deaktivieren Sie den Befehl zum Herunterfahren für alle Benutzer, auch für Root-Konsequenzen.

11

Ich möchte den shutdownBefehl für alle Benutzer, auch für root, bei einer Ubuntu Server-Installation deaktivieren .

Der Grund, warum ich dies tun möchte, ist sicherzustellen, dass ich es mir nicht zur Gewohnheit mache, die Maschine auf diese Weise herunterzufahren, da ich gleichzeitig mit dieser SSH in viele Produktionsmaschinen SSH und ich nicht Sie möchten versehentlich einen der anderen Computer herunterfahren, indem Sie den Befehl in das falsche Fenster eingeben.

Der Server, auf dem ich das Herunterfahren deaktivieren möchte, wird nur in VirtualBox auf meinem Windows-Desktop ausgeführt und ich verwende ihn nur für lokale Tests. Daher ist dies kein Problem, wenn ich ihn nicht über die Befehlszeile herunterfahren kann.

Ich habe das Problem bereits ein wenig gemildert, indem ich sichergestellt habe, dass ich ein anderes Kennwort für das VirtualBox-Image habe, aber wenn ich mich sudoauf einer der Produktionsmaschinen im 'Fenster' befinde, könnte ich es trotzdem versehentlich herunterfahren.

Meine Fragen sind:

  1. Wie deaktiviere ich den Befehl zum Herunterfahren?
  2. Wenn ich den Befehl zum Herunterfahren deaktiviere, gibt es irgendwelche Konsequenzen, auf die ich aufmerksam gemacht werden sollte? Die meisten gesagt, wird es deaktivieren Sie die Unterstützung für ACPI Shutdown , die das Äquivalent von Drücken der Power - Taste auf einer physischen Maschine ist? Könnte es andere generische Anwendungen betreffen?

Zur Information verwende ich dieses VirtualBox-Image nur zum Ausprobieren von Shell-Skripten, zum Ausführen von Tomcat und Java und dergleichen.

Reich
quelle
2
Meiner Meinung nach ist es eine schlechte Idee, ein solches Kernverhalten des Systems zu ändern, um menschliches Versagen zu verhindern. Es wird wahrscheinlich langfristig mehr Probleme bringen, als es löst. Wenn Sie für jedes System ein anderes Benutzerkennwort verwenden, minimieren Sie das Risiko (da es sudo erfordert). Sie sollten gute Gewohnheiten entwickeln, die nicht von einer bestimmten Systemänderung abhängen. Mit rm / cp / chmod, die viel häufiger verwendet werden, werden häufig schwerwiegendere Katastrophen verursacht, und ich denke, Sie werden diese nicht deaktivieren.
João Pinto
Obwohl ich damit einverstanden bin und es definitiv der richtige Weg ist, Dinge zu tun, dient dies nur dazu, diese eine winzige Situation in einem inoffiziellen Ubuntu-Image zu vermeiden, das ich auf meinem Desktop habe, damit ich Dinge ohne Risiko ausprobieren kann von b0rking die Maschinen meines Arbeitgebers :)
Rich

Antworten:

3

Wenn Sie in der Regel den Befehl ausführen , wie sudo shutdown, und nicht sudo /sbin/shutdown, dann können Sie nur das Einrichten eines globalen Shell - Alias für „shutdown“ nur statt eine Nachricht an das Endgerät Echo. Die eigentliche ausführbare Datei bleibt für alle anderen Zwecke verfügbar.

Dave Jennings
quelle
Dies klingt nach dem besten Weg, wenn Sie nur versuchen, eine Gewohnheit zu unterbrechen.
ændrük
2
Beachten Sie jedoch, dass die offensichtliche Methode zum Einrichten eines Shell-Alias ​​( alias shutdown=sl) keine Auswirkungen auf die Argumente für sudo hat. In zsh können Sie Aliase definieren, die mit Argumenten übereinstimmen, aber ich denke nicht in bash. Sie könnten einen Alias sudofür ein Shell-Skript verwenden, das sich weigert, etwas zu tun, wenn das erste Argument lautet shutdown.
Poolie
2
Mit anderen Worten, das wird nicht wirklich funktionieren.
Poolie
14

Ein viel besserer Ansatz für dieses Problem besteht darin, das Molly-Guard- Programm auf den Boxen zu installieren, die Sie nicht herunterfahren möchten, anstatt sich darauf vorzubereiten, niemals herunterzufahren.

Molly-Guard versucht zu verhindern, dass Sie versehentlich Maschinen herunterfahren oder neu starten. Dazu werden vor den vorhandenen Befehlen einige Überprüfungen durchgeführt: Anhalten, Neustart, Herunterfahren und Ausschalten.

Die typische Konfiguration besteht darin, dass Sie aufgefordert werden, den Hostnamen des Computers einzugeben, um zu bestätigen, dass Sie wirklich auf dem richtigen sind.

Es ist möglich, neue Skripte hinzuzufügen /etc/molly-guard/run.d (wie auf der Manpage dokumentiert , müssen Skriptdateien den von erwarteten Namen folgen run-parts.

Wenn Sie wirklich deaktivieren möchten shutdown(und dies ist eine so bizarre Idee), tun Sie es einfach

chmod 0 /sbin/shutdown

Wenn Sie es dann verwenden müssen, ändern Sie es zurück auf 0755.

Poolie
quelle
Eine großartige Idee, aber leider nicht möglich, da ich nicht genug Kontrolle über die Systeme habe, um meine eigene Software installieren zu können. Leider habe ich genug Kontrolle, um sie abschalten zu können!
Rich
4
Sind Sie im Ernst? Das ist sehr seltsam. Wenn Sie nur über sudo-Zugriff verfügen, um das Herunterfahren auszuführen, können Sie die Benutzer möglicherweise davon überzeugen, sudo so zu ändern, dass eine große Eingabeaufforderung ausgegeben wird, oder immer ein Kennwort zu verlangen. Wenn die Gefahr besteht, dass Sie sie versehentlich herunterfahren, liegt es im Interesse des Administrators, Molly-Guard zu installieren.
Poolie
1

Um den Befehl zum Herunterfahren zu deaktivieren, machen Sie die Binärdatei einfach nicht ausführbar, d. H. sudo chmod a-x /sbin/shutdown ich glaube auch nicht, dass sie eine andere Methode zum Herunterfahren beeinflusst, da, wie der man-Eintrag zum Herunterfahren sagt

Beim Herunterfahren wird eine Anforderung an den Init-Daemon gesendet, um das System auf den entsprechenden Runlevel herunterzufahren

So kann jeder andere Befehl / jedes Skript dies auch nach dem Deaktivieren des Befehls zum Herunterfahren tun. Beispielsweise kann ich mein System weiterhin über das Herunterfahren über das GNOME-Menü herunterfahren. Sie können Ihren Computer auch weiterhin über die Befehlszeile mit dem Befehl reboot neu starten

binW
quelle
1

Der shutdownBefehl ist in /sbin/shutdown. Sie können es folgendermaßen deaktivieren:

sudo mv /sbin/shutdown /sbin/really-do-shutdown

Aber : Dies bedeutet, dass fast keine der üblichen Methoden zum Herunterfahren des Systems mehr funktioniert. Wenn Sie Gnome auf meinem Testcomputer für diese Antwort herunterfahren, werden Sie einfach abgemeldet und zurück zu GDM geworfen.

Wenn Sie Ihr System anschließend herunterfahren möchten, müssen Sie dies tun

sudo init 0

Das "Deaktivieren" des Herunterfahrens wirkt sich auf jede Anwendung aus, die den Befehl für irgendetwas verwendet. Da dies init 0nicht die empfohlene Methode zum Herunterfahren eines Systems ist, werden alle Programme, die das System herunterfahren müssen, dafür verwendet shutdown, was nicht mehr funktioniert.

  • Anwendungen können auch Ausnahmen auslösen, weil die Datei fehlt oder die Datei nicht ausführbar ist , was möglicherweise zum Absturz führt, obwohl ein Herunterfahren nicht erforderlich ist. Dies ist ein Randfall, den Sie umgehen können, indem Sie eine binäre, ideal ausführbare Datei (kein Shell-Skript - das funktioniert nicht) an ihre Stelle verschieben. Beispielsweise:

    sudo cp /bin/ps /sbin/shutdown
    

    Dies geschieht, nachdem Sie das Original sicher aus dem Weg geräumt haben.

Nun, das alles ist ziemlich hackig, und ich empfehle dagegen aus den in João Pintos Kommentar dargelegten Gründen dagegen. Aber ich werde dich nicht davon abhalten, es zu tun. :-)

Erstellen Sie nicht nur ein Backup von / sbin / shutdown, sondern erstellen Sie auch einen Wiederherstellungsplan, falls dies zu Problemen führen sollte. Tun Sie dies beispielsweise nicht auf einem Server, den Sie nicht erreichen können. Testen Sie Ihren Wiederherstellungsplan im Voraus, vorausgesetzt, das System startet überhaupt nicht (es wird natürlich gestartet - ich habe es getestet - aber bitte seien Sie auf der sicheren Seite).

Stefano Palazzo
quelle
0

Ich denke, es sollte eine andere Lösung sein, Server sollten eine SSH-Richtlinie haben, um das Herunterfahren zu deaktivieren und 0 über SSH zu initiieren, oder es muss ein spezieller Dialog auf der Konsole wie unter Windows angezeigt werden, um das "Warum" und das spezielle "Shutdown-Passwort" einzugeben. . Dazu sollte der Ein- / Ausschalter bei Verwendung des Servers kennwortgeschützt sein.

Im Moment verwenden wir einen "physischen Schlüsselschalter = 4 Euro" anstelle eines Druckknopfes.


quelle
0

Ich möchte Sie shutdownBefehl deaktivieren .

cp / sbin / shutdown / sbin / shutdown-backup

rm / sbin / shutdown

Dies liegt daran, dass jemand, der versucht, diesen Befehl zwangsweise verwenden zu wollen, dies auch nicht kann

Jetzt kann niemand den Befehl zum Herunterfahren verwenden.

Es wird ein Nachrichtenbefehl angezeigt, der nicht gefunden wurde. Installieren Sie ihn.

vim /etc/bash.bashrc

Fügen Sie eine Zeile im letzten von bash.bashrc hinzu

alias shutdown = "echo 'Sie dürfen diesen Befehl nicht verwenden'"

wenn Sie es zurück wollen (aktiviert). kopiere es einfach zurück

cp / sbin / shutdown-backup / sbin / shutdown

Dishank Jindal
quelle