Ich möchte den shutdown
Befehl 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 sudo
auf einer der Produktionsmaschinen im 'Fenster' befinde, könnte ich es trotzdem versehentlich herunterfahren.
Meine Fragen sind:
- Wie deaktiviere ich den Befehl zum Herunterfahren?
- 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.
Antworten:
Wenn Sie in der Regel den Befehl ausführen , wie
sudo shutdown
, und nichtsudo /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.quelle
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 Aliassudo
für ein Shell-Skript verwenden, das sich weigert, etwas zu tun, wenn das erste Argument lautetshutdown
.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.
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 folgenrun-parts
.Wenn Sie wirklich deaktivieren möchten
shutdown
(und dies ist eine so bizarre Idee), tun Sie es einfachWenn Sie es dann verwenden müssen, ändern Sie es zurück auf 0755.
quelle
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 sagtSo 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
quelle
Der
shutdown
Befehl ist in/sbin/shutdown
. Sie können es folgendermaßen deaktivieren: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
Das "Deaktivieren" des Herunterfahrens wirkt sich auf jede Anwendung aus, die den Befehl für irgendetwas verwendet. Da dies
init 0
nicht die empfohlene Methode zum Herunterfahren eines Systems ist, werden alle Programme, die das System herunterfahren müssen, dafür verwendetshutdown
, 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:
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).
quelle
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
Ich möchte Sie
shutdown
Befehl deaktivieren .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.
Fügen Sie eine Zeile im letzten von bash.bashrc hinzu
wenn Sie es zurück wollen (aktiviert). kopiere es einfach zurück
quelle