web-dev-qa-db-ja.com

シャットダウンコマンドを削除するが、再起動を続ける最良の方法

私はデータセンターにraspiタイプのデバイスを使用していますが、最近、誤って指で画面上の間違った端末にシャットダウンコマンドを貼り付けました。を維持する方法はありますかshutdown -rを削除します#poweroff#shutdown -P -Hオプション?

残したいshutdown -rコマンド。システムをフリーズしたり、IPテーブルルールでロックアウトしたりする場合は、タイマーを設定します。例shutdown -r +10

27
foxtrot22

SystemdベースのLinuxディストリビューションを使用する必要があります。この場合、 マスク poweroffターゲットを実行できる必要があります。これにより、systemdはターゲットの実行(および電源オフ)を拒否します。例えば。:

systemctl mask poweroff.target

これにより、再起動以外の方法でシステムをシャットダウンすることは完全に不可能になります。何も起こらないことを確認してください:

Debian9 animated demo

この場合、このVMの仮想電源スイッチは、システムをシャットダウンするために機能しなくなります。しかし、それでも完全に再起動します。

もちろん、変更を元に戻すには、ターゲットのマスクを解除するだけです。その後、システムをシャットダウンできます。

systemctl unmask poweroff.target
40
Michael Hampton

これを実現するにはいくつかの方法があります。 1つはSudoでコマンドを実行し、パスワードを入力する必要がある通常の非特権アカウントで作業することになります。次に、(visudoを実行することによって)以下を/ etc/sudoersに追加できます。

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

また、Sudo資格情報のキャッシュを無効にするには、以下も追加します。

Defaults timestamp_timeout=0

これにより、以前にSudoでコマンドを呼び出した場合の資格情報のキャッシュが防止されます。

例:

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

上記の例では、Sudo shutdown -r +10を実行するときにパスワードを入力する必要がなかったことに注意してください。コマンド(Sudo shutdown -r +10)の前にSudoを入力する必要をなくしたい場合は、.bash_profileまたは.bashrcに以下を追加します。

alias shutdown="Sudo shutdown"

例:

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

特権のないアカウントで作業し、必要に応じてSudoでエスカレートすることがベストプラクティスであることに注意してください。

16
John Doe

molly-guard というツールがあり、シャットダウンまたは再起動するマシンのホスト名を指定する必要があります。

Debianを使用していない場合、プログラムがかなり原始的であることを考えると、ソースからこれをコンパイルすることは簡単です。

10
Simon Richter

事故を防ぐために、RHELベースのディストリビューションはrmcpおよび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."'
9
HBruijn

シャットダウン実行可能ファイルの名前を、誤って呼び出すことが不可能な名前に変更します。

次に、shutdown(whatever) -rにエイリアスします

3
Wes Groleau