Магическое число - это последовательность байтов, которая используется во всех файлах определенного формата, обычно в заданной позиции (часто в начале). Поскольку все файлы в этом конкретном формате имеют конкретную последовательность байтов в этой конкретной позиции, а большинство файлов в других форматах не имеют ее, магическое число - это способ узнать, в каком формате находится файл.
Здесь эта концепция применяется к формату файловой системы. Например, файловая система ext2/ext3/ext4 всегда имеет байты 0x53 0xEF
в позициях 1080–1081. Файловая система reiserfs всегда имеет ReIsErFs
начиная с позиции 65588 (или ReIsEr2Fs
и т.д. В более поздних версиях). Другие файловые системы имеют похожие магические числа. Инструменты файловой системы проверяют наличие магического числа (и, возможно, других подсказок), чтобы убедиться, что вы случайно не запустили их для данных, которые организованы в формате, с которым они не могут иметь дело и могут повредить. Если вы измените магическое число в файловой системе, обычные инструменты, скорее всего, откажутся его трогать; инструменты ремонта могут быть более умными и рассматривать плохое магическое число как одну из вещей, которые могут быть сломаны.
Команда file
распознает файлы по их магическим номерам. Вы можете запустить file -s /dev/sda1
чтобы увидеть, что он думает о разделе /dev/sda1
. Его решения основаны на базе данных, которая обычно находится в /etc/magic
или /usr/share/misc/magic
. Определенные команды могут использовать разные магические числа для распознавания форматов файлов, с которыми они могут справиться.