Linux:安全のためシャットダウンを実行不可にする


9

今日、自分のローカルマシンにいると思っていたので、誤って本番マシンをシャットダウンしました。私は知っています、初心者の間違い:-(

それが二度と起こらないようにするための解決策として、私はそのマシンが常にオンでなければならないので、シャットダウンコマンドの実行権限を削除することを考えていました。

それは良い考えですか?そうすることで、不要な副作用を確認できますか?

乾杯、ダン


1
ほとんどのシステム管理者は、いつの時点でこのようなことをしますか(どちらのウィンドウでしたか。おっと...)
Bart Silverstrim

3
シャットダウンのみでよかったです。他の人々はddツール(AKA:disk destroyer)でそのレッスンを学びました;)
pehrs

1
ほとんどのsysadminの作業とツールは、致命的で致命的になる可能性があります。大きな力には大きな責任が伴います。シャットダウンコマンドをchmod 000することはできますが、次回はrm、dd、fsck、mv、またはその他の潜在的に危険なツールで混乱する可能性があります。私たち全員が遅かれ早かれ間違いを犯します。あなたができる最善のことは、最悪の事態に備え、バックアップなどがあることを確認することです:-)
Janne Pikkarainen

回答:


21

実稼働マシンで作業していることを警告する完全に別のアプローチは、端末にマークを付けることです。たとえば、user@machine:~#テキストはプロダクションマシンでは赤、開発時には緑などになる可能性があり ます。これを行う方法のチュートリアルは次のとおりです。Color Bashプロンプト


+1、自分のすべてのマシンを色分け:色付きの背景に白いテキスト、オレンジ=インフラストラクチャ。青=生産; 紫=テスト/開発。通常のワークステーションは、標準の黒い背景を保持します。
Chris S

ほとんどすべてのシェルのもう1つのハウツー:understudy.net/custom.html
Chris S

素晴らしいヒントを+1するため、自分でそのことを考えたことはありませんでした。
ケニー・ラッシャート2010

7

私があなたに与えることができる最高のアドバイスは、rootアクセスが必要でない限り、rootとしてログインしないことであり、各マシンに異なるroot / sudoパスワードがあることを確認してください。

シャットダウンにアクセスできないようにすることは1つのオプションですが、それは良い方法ではありません。およびまたはshutdownへのエイリアスshutdown -atouch /etc/shutdown.allowchmod a-x /sbin/shutdown

また、それはどこで終わりますか?また、停止、再起動、および初期化を禁止しますか?


4
それは決して終わらない。何かが何度も何度も、もっと常にある、より多くの、それだけで決して<前髪が...繰り返し、壁に頭を>停止しません
バートSilverstrim

「殺す」ことを忘れないでください。結局のところ、「kill -9 1」は、unixボックスをシャットダウンするためのかなり効果的な方法(または、昔は昔)です。
Vatine

一部のシャットダウンにはありません-a。さらに、そのようなエイリアスに依存することは、依存することと同じalias rm='rm -i'です。いつか本当に必要なときに、そのエイリアスがなくなることがあります。その上、shutdown -aとにかく限られた有用性しかありません。
追って通知があるまで一時停止。

3

考慮すべきいくつかのポイント:

  1. プロダクション時にプロダクションシステムでrootとして何をしていましたか?システムを構成して、日常業務のためにシステムのrootになる必要がないようにします。非常に正当な理由がない限り、本稼働システムに根を下ろしてはいけません。
  2. 重要なレッスンを学びます。rootになったら、Enterキーを押す前に2回チェックする必要があります。考えずにパスワードを書いて続行すると、SUDOは保護されません。mkudlacekによって言及されているプロンプトのカラーリングは、間違ったシステムを使用していないことを確認するのに役立つ非常に便利なツールです。
  3. 組み込みのツールをいじらないでください。それは更新を壊す可能性が高く、狂気の新入社員を駆動します。何かを変更したい場合は、独自のエイリアスファイルを使用してください。

2
私は必ずしもこの投稿に同意しません。システム管理者として作業しているとき、実稼働マシンへのアクセスにrootが必要になることは非常に一般的です。管理者ではなく、ユーザーをロックダウンします。たとえそれが私のものと異なっていても、それは正当な観点であるので、反対票はないことに注意してください。
PP。

1
その場合、マシンに非常に厳しいサービスレベル要件はありません。ソフトウェアのインストール、パッチの適用、ACLの緊急バイパス、およびネットワーク構成の変更だけが、rootに必要なものです。これらのアクティビティはどれも、稼働中のマシンで頻繁に実行するべきではありません...そして、他のすべてはスーパーユーザーアカウントから実行できるはずです。本番システムでスーパーユーザーの代わりにrootを使用すると、通常、問題が発生します...
pehrs

3

私は許可をいじるshutdownことが状況を処理する方法だとは思いません。基本的にあなたはレッスンを学びました。あごを上げます。

私は同じようなことをしました-sshセッションの長いチェーンを取得してから、sshで通過したマシンの1つでルートをいじって、自分自身を切断しました。私はrsyncリクエストを失敗させて、世界の反対側のシステムを体系的に破壊しました。私は運用rm -rf / pathサーバーで実行しました。(そのとき、復元がどのように機能するかを知る必要がありました。)

ですから、はるかに古く、うまくいけば少し賢くなった今、私は自分に課す厳しい規則を持っています。

  • 他のどのような情報が含まれていても、すべてのルートプロンプトは#で終わります。
  • #プロンプトが表示されているときはいつでも、Enterキーを押す前に文字通り手に座っています。
  • 何をしようとしているのか、どこにいるか、どうやって到達したのかについて疑問がある場合は、キャンセルして、既知の開始条件から再構築します。
  • 私が間違いを犯した場合(そして、時間を追うごとに頻度が減り、あいまいさが増しますが、それでも間違いを犯します)、すぐに私がやったこと、影響を与えた人を理解し、自分の罪を彼らに告白します。次に、他のすべてのものをドロップし、できる限り迅速かつ最良に損傷を元に戻します。

私の仕事の性質上、さまざまなルートプロンプトに多くの時間を費やす必要がありますが、過去のエラーのおかげで、私は始めたときよりもはるかに優れた状況認識を維持しています。



1

本当に依存します。コマンドをラップするだけでもかまいませんが、その実行可能ファイルに影響する更新またはアップグレードを行うと、そのことを忘れて更新を失敗させる可能性があります。システムシャットダウンコマンドでのプレイはPITAになる可能性があります。特に、システムバイナリでプレイしていることに気付かずに新入社員や交代者がいる場合は特にそうです。

個人的には、システムを名前で識別し、実際のバイナリを実行する前に実際に実行したいこと、またはシャットダウンを確認するために特定の文字列を入力する必要があることを確認するスクリプトでコマンドをラップすることを検討しますバイナリを実行する前。少し休止するはずです。


1

少なくともサーバーでは、コマンドプロンプトを設定してマシン名を含めることを検討してください。将来、間違ったマシンで他のコマンドが実行されるのを防ぐのに役立つかもしれません。マシン名に色を付けて目立たせるとより効果的で、コードを色分けしてサーバーの役割を識別することもできます。


0

1つの方法は、を使用suしたり、直接ログインしたりしないことrootです。アカウントに直接ログインしroot、ローカルマシンとsshキーで異なるパスワードを使用することをお勧めします。

もちろん、赤い「#」プロンプトを監視することに加えてです。


0

はい、shutdownコマンドの実行ビットを削除することは、特にマシンにKDEのようなデスクトップ環境があり、ログアウト時の偶発的なシャットダウンを防ぎたい場合に、偶発的なシャットダウンを防ぐ最も簡単で安全な方法です。

混乱している新しい人々については、彼らが最初に行うls -l /sbin/shutdownことは、なぜそれが機能しないのかを見つけることだと思います(特に、タブ補完の実行可能ファイル名の習慣が良い場合)。もちろん、あなたが加えた変更について彼らに伝える必要があります。

安全性を高める/etc/rc.localために、シャットダウンコマンドから実行ビットを削除する行を追加して、再起動後にリセットすることを忘れないようにすることができます。


0

ルートのパスから/ sbin /を削除するだけです。そうすれば、実行するためにフルパスを入力する必要があり、通常は事故を修正します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.