潜在的に破壊的なコマンドラインオプションからLinuxコマンドラインアプリケーションを保護する最善の方法が何であるかを理解するのに役立つ人がいるかどうか疑問に思います。
非常に仮想的なシナリオを提供するには、緊急停電が発生する前にプロセッサの最大列設定を設定するコマンドラインプログラムを想像してください。また、2つの主なオプションがあるとしましょう。そのうちの1つは--max-Temperature(摂氏)で、30から50の間の整数に設定できます。システムに電気的/機械的エラーが発生するまで、プロセッサがどんなに熱くてもソフトウェアを介してプロセッサをシャットダウンしないようにするオーバーライドフラグ--meltもあります。
もちろん、--meltのようなオプションは危険であり、最悪の場合は物理的な損傷を引き起こす可能性があります。しかし今回もこの種の機能が必要だとしましょう(異常ではありますが)。アプリケーションはrootとして実行する必要があります。しかし、混乱しているユーザーや経験のないユーザーが --melt オプションを誤ってトリガーしないようにするにはどうすればよいですか?
もちろん、非常に一般的なアンチパターン(IMO)は、--helpまたはマニュアルページがその存在を明らかにしないようにオプションを隠すことですが、これは曖昧さによるセキュリティであり、それをトリガーするユーザーによって壊れる可能性があります。意図しない結果ですが、それが何を意味するのかを理解する方法はありません。
もう1つの可能性は、フラグをコマンドライン引数に変更して、ユーザーが実際に実行したい操作に対して--melt OVERRIDEまたは他のフラグを渡すように要求することです。
同じ目標を達成するための他のメカニズムはありますか?
答え1
私はあなたがユーティリティプログラマーの観点からこれを見ていると仮定します。ただ一つの正解がありえないほど範囲が広いですが、いくつかのことが思い浮かびます。
-f
ほとんどのユーティリティ会社には、ほとんどの安全検査を無視する「必須」マーク()しかないようです。一方、たとえば、dpkg
より細かいスイッチがあります。--force-things
もの複数の異なるキーワードにすることができます。
そして、apt-get
「必要な」パッケージを削除するなど、特定の状況で確認するための完全な文を書くことができます。下記をご覧ください。 (必須パッケージはパッケージをインストールするために必要なパッケージなので、これは単にコマンドラインオプションだとは思わないので、間違ったタスクを元に戻すことは非常に硬い。また、apt
パッケージの依存関係を計算する前に、タスク全体を事前に知ることができない場合があります。 )
その後、実際に作業を始める前にユーザーが数秒待つことをお勧めしますcdrecord
。これにより、数値が減少するにつれて設定が機能していることを確認できます。
これを試すと、次のような結果が得られますapt-get remove bash
。
WARNING: The following essential packages will be removed.
This should NOT be done unless you know exactly what you are doing!
bash
0 upgraded, 0 newly installed, 2 to remove and 2 not upgraded.
After this operation, 2,870 kB disk space will be freed.
You are about to do something potentially harmful.
To continue type in the phrase 'Yes, do as I say!'
?] ^C
どちらを選択するかは、プログラムの作成者によって異なります。仕事がどれほど危険なのか、自分の妄想レベルに基づいて決定を下す必要があります。 (ユーザーに対する懸念のせいか、混沌に対する非難を受けることに対する恐れのせいか。)
プロセッサが実際に(停止して)火をつけることができるのが、「危険」軸の最も高いところにある可能性があり、「はい、私が言ったようにしてください」などの処理タイプが必要な場合があります。
つまり、1つ知っておくべきことは、多くの実際のカーネルレベルのインターフェースがいいえ何らかの方法で保護してください。代わりに、以下のファイルは/sys
単に開いて内容を変更するために作成されるため、ファイルアクセス権以外に問題は発生しません。 (つまり、rootユーザーでなければなりません。)
これはハードドライブの内容(私たちが知っている必要があります)にも当てはまります。間違ったものを使用することは可能ですrm -rf
。
完全なものではなく。バラよりlwn.net 記事そしてシステム問題トラッカー。
したがって、どの保護を実装しても、特定のツールを使用して実行された操作のみが保護されます。