Linux: Fahren Sie das Herunterfahren aus Sicherheitsgründen nicht ausführbar

9

Heute habe ich versehentlich eine Produktionsmaschine heruntergefahren, weil ich dachte, ich wäre auf meiner lokalen Maschine. Ich weiß, Anfängerfehler :-(

Als Lösung dafür, dass es nicht wieder vorkommt, habe ich mir überlegt, die Ausführungsberechtigung für den Befehl zum Herunterfahren zu entfernen, da dieser Computer immer eingeschaltet sein sollte.

Ist das eine gute Idee? Können Sie dabei unerwünschte Nebenwirkungen erkennen?

Prost, Dan

Daniele
quelle
1
Die meisten Systemadministratoren machen so etwas irgendwann (welches Fenster war es wieder? Hoppla ...)
Bart Silverstrim
3
Sei froh, dass es nur eine Abschaltung war. Andere Leute haben diese Lektion mit dem dd-Tool (AKA: Disk Destroyer)
gelernt
1
Die meisten Sysadmin-Aufgaben und -Tools können tödlich und tödlich sein. Große Macht geht mit großer Verantwortung einher. Sie können Ihren Befehl zum Herunterfahren ändern, aber beim nächsten Mal können Sie rm, dd, fsck, mv oder ein anderes potenziell gefährliches Tool durcheinander bringen. Jeder von uns wird früher oder später Fehler machen. Das Beste, was Sie tun können, ist sich auf das Schlimmste vorzubereiten und sicherzustellen, dass Sie Backups usw. haben :-)
Janne Pikkarainen

Antworten:

21

Ein weiterer Ansatz, um gewarnt zu werden, dass Sie an einer Produktionsmaschine arbeiten, ist das Markieren des Terminals. Zum Beispiel könnte der user@machine:~#Text auf Produktionsmaschinen rot, bei der Entwicklung grün usw. sein. Hier ist ein nettes Tutorial, wie das geht: Color Bash Prompt

mkudlacek
quelle
+1, ich farbcodiere alle meine Maschinen: Weißer Text auf farbigem Hintergrund, Orange = Infrastruktur; Blau = Produktion; Lila = Test / Dev. Normale Workstations behalten den normalen schwarzen Hintergrund bei.
Chris S
Eine weitere Anleitung für fast jede Shell: understudy.net/custom.html
Chris S
+1 für einen brillanten Tipp, daran hätte ich selbst nie gedacht.
Kenny Rasschaert
7

Der beste Rat, den ich Ihnen geben kann, ist, sich nicht als Root anzumelden, es sei denn, Sie benötigen Root-Zugriff und stellen sicher, dass Sie auf jedem Computer ein anderes Root- / Sudo-Passwort haben.

Das Herunterfahren des Herunterfahrens ist eine Option, aber keine gute. Entweder Alias shutdownzu shutdown -aund touch /etc/shutdown.allowoderchmod a-x /sbin/shutdown

Und wo endet es? Werden Sie auch das Anhalten, Neustarten und Initialisieren nicht zulassen?

James L.
quelle
4
Es hört nie auf. Es gibt immer etwas mehr, immer wieder, immer mehr, es hört einfach nie auf <schlägt immer wieder mit dem Kopf an die Wand ...>
Bart Silverstrim
Vergiss nicht "töten". Immerhin ist "kill -9 1" eine ziemlich effektive Methode (oder früher, früher), eine Unix-Box herunterzufahren.
Vatine
Einige Abschaltungen haben nicht -a. Sich auf einen solchen Alias ​​zu verlassen, ist dasselbe wie sich darauf zu verlassen alias rm='rm -i'- eines Tages wird es nicht mehr da sein, wenn Sie es wirklich brauchen. Außerdem shutdown -ahat es ohnehin nur begrenzten Nutzen.
Bis auf weiteres angehalten.
3

Einige Punkte zu beachten:

  1. Was haben Sie während der Produktionszeit als Root auf einem Produktionssystem gemacht? Konfigurieren Sie Ihre Systeme so, dass Sie für die tägliche Arbeit nicht als Root angemeldet sein müssen. Sie sollten niemals ohne guten Grund auf einem Produktionssystem verwurzelt sein.
  2. Lerne die wichtige Lektion. Wenn Sie root sind, müssen Sie zweimal überprüfen, bevor Sie die Eingabetaste drücken. SUDO ist kein Schutz, wenn Sie einfach Ihr Passwort schreiben, um fortzufahren, ohne nachzudenken. Das von mkudlacek erwähnte schnelle Färben ist ein sehr nützliches Werkzeug, um sicherzustellen, dass Sie sich nicht auf dem falschen System befinden.
  3. Leg dich nicht mit den eingebauten Werkzeugen an. Es ist wahrscheinlich, dass Updates unterbrochen werden und neue Mitarbeiter verrückt werden. Wenn Sie etwas ändern möchten, verwenden Sie Ihre eigene Aliasdatei.
pehrs
quelle
2
Ich stimme diesem Beitrag nicht unbedingt zu. Während meiner Arbeit als Systemadministrator ist es sehr häufig, dass für Zugriffe auf meine Produktionsmaschine root erforderlich ist. Sie sperren Benutzer, keine Administratoren. Beachten Sie, dass Sie nicht abstimmen müssen, da dies ein legitimer Standpunkt ist, auch wenn er sich von meinem unterscheidet.
PP.
1
In diesem Fall haben Sie keine sehr hohen Anforderungen an das Servicelevel der Maschinen. Software-Installation, Patches, ACL-Umgehung im Notfall und Änderungen an der Netzwerkkonfiguration sind die einzigen Dinge, für die Sie root benötigen. Keine dieser Aktivitäten sollte häufig auf einer Maschine in der Produktion ausgeführt werden ... Und alles andere sollte über ein Superuser-Konto möglich sein. Wenn Sie root anstelle von Superusern auf Ihren Produktionssystemen verwenden, haben Sie normalerweise ein Problem ...
Pehrs
3

Ich denke nicht, dass das Durcheinander mit den Berechtigungen shutdownder Weg ist, um mit der Situation umzugehen. Grundsätzlich haben Sie gerade eine Lektion gelernt. Chin up.

Ich habe die gleichen Dinge getan - lange Ketten von SSH-Sitzungen zu bekommen, dann mit den Routen auf einer der Maschinen herumzuspielen, die ich durchlaufen habe, und mich selbst abzuschneiden. Ich habe eine Rsync-Anfrage verpfuscht, die zu einer systematischen Zerstörung eines Systems auf der anderen Seite der Welt führte. Ich habe rm -rf / pathauf einem Produktionsserver ausgeführt. (Dieses Mal musste ich lernen, wie die Wiederherstellungen funktionierten.)

Also, viel älter und hoffentlich ein bisschen weiser, habe ich jetzt strenge Regeln, die ich mir selbst auferlege.

  • Alle Root-Eingabeaufforderungen enden mit einem #, unabhängig davon, welche anderen Informationen darin enthalten sind.
  • Jedes Mal, wenn ich an einer # Eingabeaufforderung bin, setze ich mich buchstäblich auf meine Hände, bevor ich die Eingabetaste drücke.
  • Wenn es Zweifel darüber gibt, was ich tun werde oder wo ich wirklich bin oder wie ich dorthin gekommen bin, storniere ich es und baue es von einem bekannten Startzustand aus wieder auf.
  • Wenn ich einen Fehler mache (und ich mache sie immer noch, obwohl sie mit der Zeit sowohl seltener als auch dunkler werden), finde sofort heraus, was ich getan habe, wen ich beeinflusst habe, und gestehe ihnen meine Sünden . Lassen Sie dann alles andere fallen und lösen Sie die Beschädigung so schnell und so gut Sie können.

Die Art meines Jobs erfordert, dass ich viel Zeit mit vielen verschiedenen Eingabeaufforderungen verbringe, aber dank meiner Fehler in der Vergangenheit habe ich ein weitaus besseres Situationsbewusstsein als zu Beginn.

David Mackintosh
quelle
1

Kommt wirklich darauf an. Sie könnten versuchen, den Befehl einfach zu verpacken, aber wenn Sie Updates oder Upgrades durchführen, die sich auf diese ausführbare Datei auswirken, können Sie dies vergessen und ein Update vermasseln. Das Spielen mit Befehlen zum Herunterfahren des Systems kann eine PITA sein, insbesondere wenn Sie neue Mitarbeiter oder einen Ersatz haben, der nicht weiß, dass Sie mit System-Binärdateien gespielt haben.

Persönlich würde ich versuchen, den Befehl in ein Skript zu packen, das das System anhand seines Namens identifiziert und Sie bestätigen lässt, dass Sie dies wirklich tun möchten, bevor Sie die eigentliche Binärdatei ausführen, oder dass Sie eine bestimmte Folge von Buchstaben eingeben müssen, um das Herunterfahren zu bestätigen bevor es die Binärdatei ausführt. Das sollte eine Pause geben.

Bart Silverstrim
quelle
1

Sie können die Eingabeaufforderung so einstellen, dass sie zumindest auf Servern den Computernamen enthält. Dies kann möglicherweise dazu beitragen, zu verhindern, dass in Zukunft andere Befehle auf dem falschen Computer ausgeführt werden. Es ist effektiver, wenn die Computernamen farbig sind, um sie hervorzuheben, und Sie können sogar einen Farbcode verwenden, um Serverrollen zu identifizieren.

John Gardeniers
quelle
0

Eine Möglichkeit besteht darin, nicht sudirekt zu verwenden und / oder sich anzumelden root. Besser auf das Konto in direkt einloggen und anderes Passwort hat für rootauf dem lokalen Rechner und SSH - Schlüssel.

Natürlich wird zusätzlich zur roten Eingabeaufforderung '#' gesucht.

Maciej Piechotka
quelle
0

Ja, das Entfernen des Ausführungsbits im Befehl shutdown ist die einfachste und sicherste Methode, um versehentliches Herunterfahren zu verhindern, insbesondere wenn Sie eine Desktop-Umgebung wie KDE auf dem Computer haben und versehentliches Herunterfahren beim Abmelden verhindern möchten.

Wenn neue Leute verwirrt sind, denke ich, dass sie als Erstes ls -l /sbin/shutdownherausfinden müssen, warum es nicht funktioniert (insbesondere, wenn sie die gute Angewohnheit haben, ausführbare Namen mit Tabulatoren zu vervollständigen). Natürlich sollten Sie ihnen alle Änderungen mitteilen, die Sie vorgenommen haben.

Für zusätzliche Sicherheit können Sie eine Zeile hinzufügen /etc/rc.local, um das Ausführungsbit aus dem Befehl zum Herunterfahren zu entfernen, damit Sie nicht vergessen, es nach einem Neustart zurückzusetzen.

timmy
quelle
0

Sie können / sbin / einfach aus dem Pfad von root entfernen. Auf diese Weise müssen Sie den vollständigen Pfad eingeben, um ihn auszuführen. In der Regel werden Unfälle behoben.

Sirex
quelle