GNU/Linux >> Znalost Linux >  >> Linux

Nejlepší způsob, jak odstranit příkaz k vypnutí, ale ponechat restart

Řešení 1:

Měli byste používat distribuci Linuxu založenou na systemd. V tomto případě byste měli být schopni maskovat cíl vypnutí, takže systemd jej odmítne provést (a vypne se). např.:

systemctl mask poweroff.target

To zcela znemožňuje vypnutí systému jinak než restartem. Hlídejte, aby se nic nestalo:

V tomto případě virtuální vypínač tohoto virtuálního počítače již nefunguje ani k vypnutí systému. Ale stále se restartuje naprosto v pořádku.

Chcete-li změnu vrátit zpět, samozřejmě pouze demaskujte cíl. Poté můžete systém vypnout.

systemctl unmask poweroff.target

Řešení 2:

Existuje několik způsobů, jak toho dosáhnout. Jeden by pracoval s běžným neprivilegovaným účtem, který bude vyžadovat spuštění příkazu pomocí sudo a zadání hesla. Poté můžete do /etc/sudoers připojit následující (spuštěním visudo):

## user is allowed to execute reboot -r only
jdoe ALL=NOPASSWD: /sbin/shutdown -r *

Chcete-li zakázat ukládání přihlašovacích údajů sudo do mezipaměti, přidejte také následující:

Defaults timestamp_timeout=0

Tím zabráníte ukládání přihlašovacích údajů do mezipaměti v případě, že jste předtím vyvolali příkaz pomocí sudo.

Příklad:

[[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:

Všimněte si, že ve výše uvedeném příkladu jsem při spuštění sudo shutdown -r +10 nemusel zadávat své heslo , ale pro zbytek jsem byl . Pokud chcete odstranit potřebu psát sudo před příkazem (sudo shutdown -r +10 ), přidejte do svého .bash_profile nebo .bashrc následující:

alias shutdown="sudo shutdown"

Příklad:

[[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:

Všimněte si, že je osvědčeným postupem pracovat s neprivilegovaným účtem a v případě potřeby eskalovat pomocí sudo.

Řešení 3:

Existuje nástroj zvaný molly-guard, který vyžaduje, abyste uvedli název hostitele počítače, který chcete vypnout nebo restartovat.

V případě, že nepoužíváte Debian, mělo by být triviální zkompilovat to ze zdroje, protože program je poměrně primitivní.

Řešení 4:

Aby se předešlo nehodám, distribuce založené na RHEL již mají nastaveny aliasy pro rm , cp a mv což může být poněkud destruktivnější, když je provede uživatel root.

Můžete přidat vlastní, například:

#/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."'

Řešení 5:

Přejmenujte spustitelný soubor vypnutí na něco, co nelze vyvolat náhodně.

Poté alias shutdown být (whatever) -r


Linux
  1. Jaký způsob, jak zabránit přidání příkazu do vaší historie?

  2. Příkaz pro restart systému Linux

  3. Jak používat Linux Shutdown and Reboot Command s příklady

  1. najít a odstranit soubory s mezerou pomocí příkazu find v Linuxu

  2. Odstraňte úložiště Git, ale ponechte všechny soubory

  3. restartovat nebo vypnout -r nyní:jaký příkaz restartu je bezpečnější?

  1. Jak vypnout nebo restartovat Linux pomocí příkazového řádku

  2. Jak vyloučit příkaz ze seznamu historie, ale ponechat jej v „živé“ historii?

  3. linuxový příkaz nalezen, ale nebyl nalezen při použití sudo