解決策 1:
systemd ベースの Linux ディストリビューションを使用する必要があります。この場合、systemd がターゲットの実行を拒否する (そして電源をオフにする) ように、poweroff ターゲットをマスクできる必要があります。例:
systemctl mask poweroff.target
これにより、再起動以外にシステムをシャットダウンすることは完全に不可能になります。何も起こらないことを確認してください:
この場合、この VM の仮想電源スイッチはシステムをシャットダウンすることさえできなくなります。しかし、それでも完全に再起動します。
もちろん、変更を元に戻すには、ターゲットのマスクを解除するだけです。その後、システムをシャットダウンできます。
systemctl unmask poweroff.target
解決策 2:
これを実現するには、いくつかの方法があります。 sudo を使用してコマンドを実行し、パスワードを入力する必要がある通常の非特権アカウントで作業する場合があります。次に、以下を /etc/sudoers に追加できます (visudo を実行して):
## user is allowed to execute reboot -r only
jdoe ALL=NOPASSWD: /sbin/shutdown -r *
また、sudo 資格情報のキャッシュを無効にするには、以下も追加します:
Defaults timestamp_timeout=0
これにより、以前に sudo を使用してコマンドを呼び出した場合に資格情報のキャッシュが防止されます。
例:
[[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:
上記の例で、sudo shutdown -r +10
を実行するときにパスワードを入力する必要がなかったことに注目してください。 、しかし、残りは私でした。コマンドの前に sudo を入力する必要をなくしたい場合 (sudo shutdown -r +10
)、以下を .bash_profile または .bashrc に追加します:
alias shutdown="sudo shutdown"
例:
[[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:
特権のないアカウントで作業し、必要に応じて sudo でエスカレートすることをお勧めします。
解決策 3:
シャットダウンまたは再起動するマシンのホスト名を指定する必要がある molly-guard というツールがあります。
Debian を使用していない場合、プログラムが原始的であることを考えると、これをソースからコンパイルするのは簡単です。
解決策 4:
事故を防ぐために、RHEL ベースのディストリビューションではすでに rm
のエイリアスが設定されています 、 cp
と mv
これは、root ユーザーが実行すると、やや破壊的なものになる可能性があります。
たとえば、独自のものを追加できます:
#/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."'
解決策 5:
シャットダウン実行可能ファイルの名前を、誤って起動できない名前に変更してください。
次にエイリアス shutdown
(whatever) -r
になる