Beste Möglichkeit, den Shutdown-Befehl zu entfernen, aber den Neustart beizubehalten

Beste Möglichkeit, den Shutdown-Befehl zu entfernen, aber den Neustart beizubehalten

Ich habe ein Raspi-Gerät in einem Rechenzentrum und habe vor kurzem aus Versehen einen Shutdown-Befehl in das falsche Terminal auf meinem Bildschirm eingefügt. Gibt es eine Möglichkeit, Optionen beizubehalten, shutdown -raber zu entfernen #poweroff #shutdown -P -H?

Ich möchte shutdown -r die Kontrolle behalten. Ich stelle gerne einen Timer ein, falls es mir gelingt, das System einzufrieren oder mich mit IP-Tabellenregeln auszusperren. Beispielshutdown -r +10

Antwort1

Sie sollten eine systemd-basierte Linux-Distribution verwenden. In diesem Fall sollten Sie in der Lage sein,Maskedas Poweroff-Ziel, sodass systemd die Ausführung (und das Ausschalten) ablehnt. Beispiel:

systemctl mask poweroff.target

Dadurch ist es völlig unmöglich, das System herunterzufahren, außer durch einen Neustart. Achten Sie darauf, dass nichts passiert:

Animierte Debian9-Demo

In diesem Fall funktioniert der virtuelle Netzschalter dieser VM nicht einmal mehr, um das System herunterzufahren. Der Neustart funktioniert jedoch trotzdem einwandfrei.

Um die Änderung rückgängig zu machen, müssen Sie lediglich das Ziel demaskieren. Anschließend können Sie das System herunterfahren.

systemctl unmask poweroff.target

Antwort2

Es gibt mehrere Möglichkeiten, dies zu erreichen. Eine davon wäre, mit einem normalen, nicht privilegierten Konto zu arbeiten, was die Ausführung des Befehls mit sudo und die Eingabe eines Passworts erfordert. Anschließend 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 die Zwischenspeicherung von Sudo-Anmeldeinformationen zu deaktivieren, fügen Sie außerdem Folgendes hinzu:

Defaults timestamp_timeout=0

Dadurch wird die Zwischenspeicherung von Anmeldeinformationen verhindert, falls Sie zuvor einen Befehl mit sudo aufgerufen haben.

Beispiel:

[root@ops ~]# su - jdoe
[jdoe@ops ~]$ sudo shutdown -c
[sudo] password for jdoe:
[jdoe@ops ~]$ sudo shutdown -r +10
Shutdown scheduled for Mon 2018-09-03 18:51:13 IDT, use 'shutdown -c' to cancel.
[jdoe@ops ~]$ sudo shutdown -H
[sudo] password for jdoe:
^[[A[jdoe@ops ~]$ sudo shutdown -c
[sudo] password for jdoe:

Beachten Sie, dass ich im obigen Beispiel beim Ausführen mein Passwort nicht eingeben musste sudo shutdown -r +10, für den Rest jedoch schon. Wenn Sie nicht vor dem Befehl () sudo eingeben müssen sudo shutdown -r +10, fügen Sie Folgendes zu Ihrer .bash_profile- oder .bashrc-Datei hinzu:

alias shutdown="sudo shutdown"

Beispiel:

[jdoe@ops ~]$ source ~/.bash_profile
[jdoe@ops ~]$ shutdown -r +10
Shutdown scheduled for Mon 2018-09-03 19:03:14 IDT, use 'shutdown -c' to cancel.
[jdoe@ops ~]$ shutdown -c
[sudo] password for jdoe:

Beachten Sie, dass es sich am besten empfiehlt, mit einem nicht privilegierten Konto zu arbeiten und bei Bedarf mit sudo zu eskalieren.

Antwort3

Es gibt ein Tool namensMolly-WächterDazu müssen Sie den Hostnamen der Maschine angeben, die Sie herunterfahren oder neu starten möchten.

Falls Sie Debian nicht verwenden, sollte es angesichts der Tatsache, dass das Programm eher primitiv ist, ein Kinderspiel sein, dies aus dem Quellcode zu kompilieren.

Antwort4

Benennen Sie die ausführbare Datei zum Herunterfahren in einen Namen um, der nicht versehentlich aufgerufen werden kann.

Dann Alias shutdown​​zu sein(whatever) -r

verwandte Informationen