web-dev-qa-db-ja.com

信頼できないディレクトリをrm -rfしても安全ですか?

多くのリンクツール(シンボリックリンク、ハードリンク、マウントなど)が利用可能です。不満を抱いている従業員が、ルートディレクトリまたはミッションクリティカルなディレクトリへのリンクを非表示にすることを考えているとしましょう。

ジョーがリンクで問題を引き起こす可能性のある方法は何ですか?怠惰なシステム管理者を保護するための構成設定はありますか?妄想的なシステム管理者は、疑わしいリンクを含む可能性のあるディレクトリを安全に削除するにはどうすればよいですか?

4
Michael Burge

ディレクトリへのハードリンクがコメントで取り上げられました。名目上、それらは起こり得ません。 Unixライクなシステムでは、ループを作成できるため、長い間許可されていませんでした。そのようなファイルシステムのスペース割り当ては 参照カウント に基づいているため、ファイルの最後のリンクが消えたときにファイルが実際に割り当て解除され、ディレクトリループによって、再利用されないアクセスできないファイルが大量に発生する可能性があります。

ただし、禁止されているからといってそれができないということではありません。不満を抱いているとされる従業員がディスク構造をいじる必要があるということだけがルートまたは物理的アクセス(リモートで実行するためのルートアクセス)を必要とします。ディスク)。ファイルシステム構造では、サブディレクトリは親ディレクトリから参照され、同じディレクトリが2つの異なる親ディレクトリから参照されている場合は、一般的に、ディレクトリツリー全体を完全に把握する必要があります。カーネルはそうではないそのようなビジョンを維持しようとしますが、利用可能なよりも多くのRAMを使い果たす可能性があるためです。したがって、同じディレクトリへの複数のリンクを含むようにディレクトリ構造が変更された場合、ライブシステムはそれを認識しません。

fsckはループを検出しますが、実行時のみ、つまりブート時にのみ、その後、Nの一部の(構成可能な)値に対して、Nごとに1回だけ再起動します。それはmay同じディレクトリへの複数のリンクの他のいくつかのケースを検出します(サイクルを作成せずに)が、上記と同じ理由でそれを保証できません:複数のすべてのケースを確実に検出するリンクでは、完全なディレクトリツリーが検出プロセスのRAM=)に収まる必要があります。ループは、深さ優先のツリーウォークで簡単に検出されますが、非周期的な非ツリー構造はより多くのリソースを必要とします。

しかし、より一般的には、悪いジョーがrootまたはrootと同等のアクセス権を持ち、悪意を持ってそれを使用した可能性があると想定されている場合、マシン全体をプロングでのみ触れ、一部の工業用グレードにのみプッシュする必要があります。シュレッダー。


一方、シンボリックリンクはここでは害を引き起こしません。 rmはシンボリックリンクをたどりません。

Evil Joeは自分のホームディレクトリのサブディレクトリに別のパーティションをマウントできたかもしれませんが、ここでもルートアクセスが必要になるため、前の段落に戻ります。


一般に、従業員が退職する場合、プロセスにはワークステーションまたはラップトップのワイプ/再イメージングが含まれます。従業員がいたずらの可能性があると見なされ、アクティブな妨害行為に没頭していると想定される場合、削除はとにかく正しいことではありません。法医学を行い、証拠を保持したい場合です。

5
Thomas Pornin