Ř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