Lösung 1:
Sie sollten eine systemd-basierte Linux-Distribution verwenden. In diesem Fall sollten Sie in der Lage sein, das Poweroff-Ziel zu maskieren, sodass Systemd sich weigert, es auszuführen (und auszuschalten). zB:
systemctl mask poweroff.target
Dies macht es völlig unmöglich, das System außer durch einen Neustart herunterzufahren. Passen Sie auf, dass nichts passiert:
In diesem Fall funktioniert der virtuelle Netzschalter dieser VM nicht einmal mehr, um das System herunterzufahren. Aber es startet immer noch einwandfrei neu.
Um die Änderung rückgängig zu machen, demaskieren Sie natürlich einfach das Ziel. Dann können Sie das System herunterfahren.
systemctl unmask poweroff.target
Lösung 2:
Es gibt einige Möglichkeiten, dies zu erreichen. Man würde mit einem normalen nicht privilegierten Konto arbeiten, für das der Befehl mit sudo ausgeführt und ein Passwort eingegeben werden müsste. Dann können Sie Folgendes an /etc/sudoers anhängen (indem Sie visudo ausführen):
## user is allowed to execute reboot -r only
jdoe ALL=NOPASSWD: /sbin/shutdown -r *
Um das Caching von sudo-Anmeldeinformationen zu deaktivieren, fügen Sie außerdem Folgendes hinzu:
Defaults timestamp_timeout=0
Dies verhindert das Zwischenspeichern von Anmeldeinformationen, falls Sie zuvor einen Befehl mit sudo aufgerufen haben.
Beispiel:
[[email protected] ~]# su - jdoe
[[email protected] ~]$ sudo shutdown -c
[sudo] password for jdoe:
[[email protected] ~]$ sudo shutdown -r +10
Shutdown scheduled for Mon 2018-09-03 18:51:13 IDT, use 'shutdown -c' to cancel.
[[email protected] ~]$ sudo shutdown -H
[sudo] password for jdoe:
^[[A[[email protected] ~]$ sudo shutdown -c
[sudo] password for jdoe:
Beachten Sie, dass ich im obigen Beispiel beim Ausführen von sudo shutdown -r +10
kein Passwort eingeben musste , aber für den Rest war ich . Wenn Sie die Eingabe von sudo vor dem Befehl (sudo shutdown -r +10
), fügen Sie Folgendes zu Ihrem .bash_profile oder .bashrc hinzu:
alias shutdown="sudo shutdown"
Beispiel:
[[email protected] ~]$ source ~/.bash_profile
[[email protected] ~]$ shutdown -r +10
Shutdown scheduled for Mon 2018-09-03 19:03:14 IDT, use 'shutdown -c' to cancel.
[[email protected] ~]$ shutdown -c
[sudo] password for jdoe:
Beachten Sie, dass es sich bewährt hat, mit einem nicht privilegierten Konto zu arbeiten und bei Bedarf mit sudo zu eskalieren.
Lösung 3:
Es gibt ein Tool namens Molly-Guard, bei dem Sie den Hostnamen des Computers angeben müssen, den Sie herunterfahren oder neu starten möchten.
Falls Sie nicht Debian verwenden, sollte es trivial sein, dies aus dem Quellcode zu kompilieren, da das Programm ziemlich primitiv ist.
Lösung 4:
Um Missgeschicke zu vermeiden, haben RHEL-basierte Distributionen bereits Aliase für rm
eingerichtet , cp
und mv
was etwas zerstörerischer sein kann, wenn es vom Root-Benutzer ausgeführt wird.
Sie könnten beispielsweise Ihre eigenen hinzufügen:
#/root/.bashrc
alias poweroff='echo "poweroff: Command disabled - THINK before you type.
Use /usr/sbin/poweroff if you really want to drive to the DC to restore power."'
Lösung 5:
Benennen Sie die ausführbare Datei zum Herunterfahren in etwas um, das nicht versehentlich aufgerufen werden kann.
Dann alias shutdown
(whatever) -r
sein