文件系统超级块中的“神奇”数字是多少?

文件系统超级块中的“神奇”数字是多少?

我正在开发一个基本上在 Linux 上运行的中端 NAS 系统,今天我做了一些很棒的测试。一步步指导我使用 fsdb 破坏文件系统上的魔法数字,以便破坏它/测试应该修复它的脚本。

我在 Google 上搜索了好一会儿,却没有找到可靠的解释。有人能以中庸的方式解释一下吗?

答案1

A神奇数字是特定格式的所有文件中使用的字节序列,通常位于给定位置(通常在开头)。由于该特定格式的所有文件都在该特定位置具有该特定字节序列,而其他格式的大多数文件则没有该序列,因此魔术数字是一种识别文件格式的方法。

这里,这个概念适用于文件系统格式。例如,ext2/ext3/ext4 文件系统始终0x53 0xEF在位置 1080–1081 处有字节。reiserfs 文件系统始终ReIsErFs从位置 65588(或ReIsEr2Fs等,在较新的版本中)开始。其他文件系统也有类似的魔数。文件系统工具会检查魔数(以及可能的其他线索)是否存在,以确保您没有意外地将它们启动到以它们无法处理且可能损坏的格式组织的数据上。如果您更改文件系统上的魔数,普通工具可能会拒绝触碰它;修复工具可能更聪明,将错误的魔数视为可能损坏的东西之一。

file命令根据文件的魔数识别文件。您可以运行它file -s /dev/sda1来查看它认为分区上有什么/dev/sda1。它的决定基于通常在/etc/magic或中找到的数据库/usr/share/misc/magic。特定命令可能使用不同的魔数来识别它们可以处理的文件格式。

相关内容