超级块中文件系统的“魔术”数字是什么?


9

我正在研究基本上在Linux上运行的中型NAS系统,今天我必须进行一些出色的测试。分步指导我使用fsdb破坏文件系统上的幻数,以破坏它/测试应该修复它的脚本。

我在谷歌上搜索了很多,没有找到可靠的解释。任何人都能以一种中间的方式阐明一些观点吗?

Answers:


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确切包含问题(和我)正在寻找的信息的信息。
Nick Garvey 2013年

那不是file /dev/sda1吗?
鲍比

@Bobby不,file /dev/sda1只会告诉您这是一个设备节点,它没有说明任何内容。您需要file </dev/sda1file -s /dev/sda1
吉尔(Gilles)'所以

哦,好的,对我来说file < /dev/sda1,文件帮助文本失败(缺少参数?),但-s效果很好。谢谢。
鲍比

1
@Bobby啊,我明白了,我忘记了一个字符。是file - </dev/sda1,因为您必须file明确告知要从stdin读取。谢谢,我会解决的。
吉尔(Gilles)'所以
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.