Was ist die "magische" Nummer eines Dateisystems in einem Superblock?

9

Ich arbeite an einem Midrange-NAS-System, das hauptsächlich unter Linux läuft, und ich muss heute einige großartige Tests durchführen. Die Schritt-für-Schritt-Anleitung führte mich dazu, die magische Zahl in einem Dateisystem mit fsdb zu beschädigen, um sie zu beschädigen / das Skript zu testen, das sie reparieren sollte.

Ich habe ziemlich viel gegoogelt und keine solide Erklärung gefunden. Kann jemand auf mittlere Weise etwas Licht ins Dunkel bringen?

mbb
quelle

Antworten:

15

Eine magische Zahl ist eine Folge von Bytes, die in allen Dateien eines bestimmten Formats verwendet wird, normalerweise an einer bestimmten Position (häufig am Anfang). Da alle Dateien in diesem bestimmten Format diese bestimmte Bytesequenz an dieser bestimmten Position haben und die meisten Dateien in anderen Formaten diese nicht haben, ist die magische Zahl eine Möglichkeit, zu erkennen, in welchem ​​Format eine Datei vorliegt.

Hier wird dieses Konzept auf ein Dateisystemformat angewendet. Beispielsweise hat ein ext2 / ext3 / ext4-Dateisystem immer die Bytes 0x53 0xEFan den Positionen 1080–1081. Ein reiserfs-Dateisystem beginnt immer ReIsErFsan Position 65588 (oder ReIsEr2Fsusw. in neueren Versionen). Andere Dateisysteme haben ähnliche magische Zahlen. Dateisystem-Tools überprüfen das Vorhandensein der magischen Zahl (und möglicherweise anderer Hinweise), um sicherzustellen, dass Sie sie nicht versehentlich für Daten gestartet haben, die in einem Format organisiert sind, mit dem sie nicht umgehen können und das sie beschädigen könnten. Wenn Sie die magische Zahl in einem Dateisystem ändern, weigern sich normale Tools wahrscheinlich, sie zu berühren. Reparaturwerkzeuge könnten klüger sein und eine schlechte magische Zahl als eines der Dinge behandeln, die kaputt gehen könnten.

Der fileBefehl erkennt Dateien anhand ihrer magischen Zahlen. Sie können ausführen, um file -s /dev/sda1zu sehen, was sich auf der Partition befindet /dev/sda1. Seine Entscheidungen basieren auf einer Datenbank, die normalerweise in /etc/magicoder gefunden wird /usr/share/misc/magic. Bestimmte Befehle verwenden möglicherweise unterschiedliche magische Zahlen, um die Dateiformate zu erkennen, mit denen sie umgehen können.

Gilles 'SO - hör auf böse zu sein'
quelle
Unter Ubuntu apt-get install source filewird gezogen, file-x.yy/magic/Magdir/filesystemswelche genau die Informationen enthielten , nach denen die Frage (und ich) gesucht haben.
Nick Garvey
Sollte das nicht sein file /dev/sda1?
Bobby
@ Bobby Nein, file /dev/sda1wird Ihnen nur sagen, dass dies ein Geräteknoten ist, es sagt nichts über den Inhalt aus. Du brauchst entweder file </dev/sda1oder file -s /dev/sda1.
Gilles 'SO - hör auf böse zu sein'
Oh okay, für mich file < /dev/sda1scheitert der Hilfetext aus der Datei (fehlender Parameter?), Funktioniert aber -ssuper. Vielen Dank.
Bobby
1
@ Bobby Ah, ich verstehe, ich habe einen Charakter vergessen. Es ist file - </dev/sda1, weil Sie fileexplizit sagen müssen , um von stdin zu lesen. Danke, ich werde es reparieren.
Gilles 'SO - hör auf böse zu sein'