Ubuntu Serverインストールで、rootを含むすべてのユーザーに対してshutdown
コマンドを無効にしたいと思います。
私がこれをやりたい理由は、この方法でマシンをシャットダウンする習慣にならないようにするためです。これと同時に多くの本番マシンにSSH接続しますが、間違ったウィンドウにコマンドを入力して、他のマシンの1つを誤ってシャットダウンしたい。
シャットダウンを無効にするサーバーは、WindowsデスクトップのVirtualBox内でのみ実行され、ローカルテストにのみ使用するため、コマンドラインからシャットダウンできない場合は問題ありません。
VirtualBoxイメージに別のパスワードを設定することで問題を少し緩和しましたが、実稼働マシンのSudo
'window'内にいる場合、明らかに誤ってシャットダウンする可能性があります。
私の質問は:
詳しくは、このVirtualBoxイメージを使用して、シェルスクリプトを試したり、TomcatとJavaを実行したりするだけです。
通常、コマンドをSudo shutdown
ではなくSudo /sbin/shutdown
として実行する場合は、「シャットダウン」のグローバルシェルエイリアスを設定するだけで、代わりに端末にメッセージをエコーできます。実際の実行可能ファイルは、他のすべての目的のために引き続き存在します。
この問題へのより良いアプローチは、ボックスに molly-guard programをインストールすることですシャットダウンしないように自分を訓練しようとするのではなく、シャットダウンしたくない.
molly-guardは、誤ってマシンをシャットダウンまたは再起動することを防ぎます。これは、既存のコマンド(停止、再起動、シャットダウン、および電源オフ)の前にいくつかのチェックを挿入することによって行われます。
典型的な設定では、マシンのホスト名を入力して、正しいホスト名であることを確認するように求められます。
新しいスクリプトを/etc/molly-guard/run.d
に追加することができます( manpage に記載されているように、スクリプトファイルは run-parts
で期待される命名に従う必要があります)。
本当にshutdown
を無効にしたい場合(これはとても奇妙なアイデアです)、ただ
chmod 0 /sbin/shutdown
それを使用する必要がある場合は、chmodで0755に戻します。
シャットダウンコマンドを無効にするには、バイナリを実行不可能にするだけです。つまり、Sudo chmod a-x /sbin/shutdown
また、shutdownのmanエントリにあるように、他のシャットダウン方法に影響を与えるとは思いません。
shutdownはinitデーモンに要求を送信して、システムを適切なランレベルにダウンさせます
したがって、シャットダウンコマンドを無効にした後でも、他のコマンド/スクリプトでこれを実行できます。たとえば、GNOMEメニューからシャットダウンを使用してシステムをシャットダウンできます。また、再起動コマンドを使用してコマンドラインからコンピューターを再起動することもできます
shutdown
コマンドは/sbin/shutdown
にあります。これを無効にすることができます:
Sudo mv /sbin/shutdown /sbin/really-do-shutdown
But:これは、システムをシャットダウンする通常の方法がほとんど機能しないことを意味します。この答えのために私のテストマシンでgnomeをシャットダウンすると、ログアウトしてGDMに戻ります。
後でシステムをシャットダウンする場合は、次の操作を行う必要があります
Sudo init 0
「無効化」シャットダウンは、コマンドを使用するあらゆるアプリケーションに影響します。 init 0
はシステムをシャットダウンするための推奨される方法ではないため、システムをシャットダウンする必要のあるすべてのプログラムはshutdown
を使用しますが、これは機能しなくなります。
また、アプリケーションはmissing file、またはnot executableのために例外をスローする可能性があり、シャットダウンが不要な場合でもクラッシュする可能性があります。これはエッジケースであり、バイナリ、理想的には実行可能なファイル(シェルスクリプトではなく-動作しない)をその場所に移動することで回避できます。例えば:
Sudo cp /bin/ps /sbin/shutdown
これはafterで、元のファイルを安全に移動しました。
ジョアンピントのコメントに概説されている理由により、これはすべて非常にハッキーですおよびこれに反対することをお勧めします。しかし、私はあなたがそれをするのを止めません。 :-)
/ sbin/shutdownのバックアップを作成するだけでなく、トラブルが発生した場合に備えて、復旧計画を用意してください。たとえば、アクセスできないサーバーではこれを行わないでください。そして、システムがまったく起動しないと仮定して、事前に回復計画をテストします(もちろん起動します-私はそれをテストしました-しかしplease安全な側にあります)。
shutdown
コマンドを無効にします。
cp/sbin/shutdown/sbin/shutdown-backup
rm/sbin/shutdown
これは、誰かがこのコマンドを強制的に使用したい場合、彼もできないからです。
誰もシャットダウンコマンドを使用できなくなります。
インストールが見つからないというメッセージコマンドが表示されます。
vim /etc/bash.bashrc
Bash.bashrcの最後に行を追加します
alias shutdown = "echo 'このコマンドの使用は許可されていません" "
戻したい場合(有効)。コピーして戻す
cp/sbin/shutdown-backup/sbin/shutdown
私はそれが他の解決策を取る必要があると思う、サーバーはsshポリシーをシャットダウンしてssh経由でinit 0を無効にするか、Windowsのようにコンソールに「理由」と特別な「シャットダウンパスワード」を入力する特別なダイアログが表示される必要があります。これには、サーバーの使用時に電源ボタンをパスワードで保護する必要があります。
現時点では、プッシュボタンの代わりに「物理キースイッチ= 4ユーロ」を使用しています。