スーパーブロック内のファイルシステムの「マジック」番号とは何ですか?


9

私は基本的にLinuxで実行されているミッドレンジNASシステムに取り組んでおり、今日いくつかの素晴らしいテストを行うことができました。この段階的な手順により、fsdbを使用してファイルシステムのマジックナンバーを破損し、それを破損/修正するスクリプトをテストすることになりました。

私はかなりグーグルで探しましたが、確固たる説明は見つかりませんでした。中間的な方法で光を当てることはできますか?

回答:


15

マジックナンバーは、通常、(多くの場合、先頭の)所定の位置に、特定の形式のすべてのファイルで使用されるバイトのシーケンスです。その特定の形式のすべてのファイルにはその特定の位置に特定のバイトシーケンスがあり、他の形式のほとんどのファイルにはないため、マジックナンバーはファイルの形式を認識する方法です。

ここで、この概念はファイルシステム形式に適用されます。たとえば、ext2 / ext3 / ext4ファイルシステムでは、常に0x53 0xEF1080〜1081の位置にバイトがあります。reiserfsファイルシステムは常にReIsErFs65588の位置から始まります(ReIsEr2Fsより新しいバージョンではなど)。他のファイルシステムにも同様のマジックナンバーがあります。ファイルシステムツールは、マジックナンバー(および場合によってはその他の手がかり)の存在をチェックし、処理できない形式で整理され、破損する可能性のあるデータで誤ってそれらを起動していないことを確認します。ファイルシステムのマジックナンバーを変更すると、通常のツールはそれに触れることを拒否するでしょう。修復ツールはより賢く、壊れた魔法の数を壊れる可能性のあるものの1つとして扱います。

このfileコマンドは、マジックナンバーに基づいてファイルを認識します。実行file -s /dev/sda1して、パーティション上にあるものを確認できます/dev/sda1。その決定は、通常、/etc/magicまたはにあるデータベースに基づいています/usr/share/misc/magic。特定のコマンドは、異なるマジックナンバーを使用して、対応可能なファイル形式を認識する場合があります。


Ubuntuでは、質問(および私)が探していた情報を正確に含んでいたものapt-get install source fileをプルfile-x.yy/magic/Magdir/filesystemsします。
ニックガーベイ

そうじゃないfile /dev/sda1
ボビー

@Bobbyいいえ、file /dev/sda1これはデバイスノードであることを伝えるだけで、コンテンツについては何も言いません。file </dev/sda1またはのいずれかが必要file -s /dev/sda1です。
ジル

ああfile < /dev/sda1、ファイルのヘルプテキストで失敗します(パラメーターがありませんか?)が、-sうまく機能します。ありがとう。
ボビー

1
@ボビーああ、なるほど、私は1人のキャラクターを忘れました。それはだfile - </dev/sda1あなたが指示する必要がありますので、file標準入力からの読み込みを明示的に。おかげで、私はそれを修正します。
ジル
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.