Що таке "чарівний" номер файлової системи у суперблоці?


9

Я працюю над системою NAS середнього діапазону, в основному працює на Linux, і сьогодні я маю зробити великі тестування. Крок за кроком спонукає мене до використання fsdb для пошкодження магічного числа у файловій системі з метою його пошкодження / тестування сценарію, який повинен його виправити.

Я дуже гуляв навколо і не знайшов міцного пояснення. Чи може пролити світло в проміжний спосіб?

Відповіді:


15

Магічне число являє собою сукупність електронних даних , який використовується у всіх файлах певного формату, як правило , в заданому положенні (часто на початку). Оскільки всі файли у цьому конкретному форматі мають певну послідовність байтів у цій конкретній позиції, а більшість файлів в інших форматах не мають її, магічне число - це спосіб визначити, у якому форматі знаходиться файл.

Тут ця концепція застосована до формату файлової системи. Наприклад, файлова система ext2 / ext3 / ext4 завжди має байти 0x53 0xEFу позиціях 1080–1081. Файлова система reiserfs завжди ReIsErFsпочинається з позиції 65588 (або ReIsEr2Fsтощо, в останніх версіях). Інші файлові системи мають подібні магічні числа. Інструменти файлової системи перевіряють наявність магічного числа (та, можливо, інших підказок), щоб переконатися, що ви випадково не запустили їх на дані, організовані у форматі, з яким вони не можуть працювати і можуть пошкодити. Якщо ви зміните магічне число у файловій системі, звичайні інструменти, ймовірно, відмовляться торкатися його; Інструменти для ремонту можуть бути розумнішими і ставитись до поганого магічного числа як до однієї з речей, яку можна зламати.

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
@Bobby Ах, бачу, я забув одного персонажа. Це file - </dev/sda1тому, що ви повинні fileчітко сказати, щоб читати з stdin. Спасибі, я це виправлю.
Жил "ТАК - перестань бути злим"
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.