- 硬链接与软链接
- 当前minix文件系统目录结构
- 创建filelevel2.txt的硬链接文件
- 创建filelevel2.txt的软链接文件
- 当前minix文件系统目录结构
- hexdump文件系统
- 二进制分析硬链接文件
- 技术参考
在上一章中,我们创建了minix如下的目录结构,并且进行了二进制的分析,本篇将在上一篇文章的基础上,继续对文件系统的硬链接和软链接进行二进制分析。
创建filelevel2.txt的硬链接文件ln dirdemo/filelevel2.txt hardlink2filelevel2.txt创建filelevel2.txt的软链接文件
ln dirdemo/filelevel2.txt -s softlink2filelevel2.txt当前minix文件系统目录结构 hexdump文件系统
hexdump -C /dev/sdb > chapter3.hex
将创建软硬链接文件之前和之后的minix文件系统二进制数据进行比较,如下图所示,可以看到第一个inode节点(根目录)的数据区多了hardlink2filelevel2.txt和softlink2filelevel2.txt文件
二进制分析硬链接文件根节点的data区,关于硬链接文件hardlink2filelevel2.txt的二进制描述如下,从前两个字节我们可以知道,hardlink2filelevel2.txt文件指向了第4个inode节点。
0002c080 04 00 68 61 72 64 6c 69 6e 6b 32 66 69 6c 65 6c |..hardlink2filel| 0002c090 65 76 65 6c 32 2e 74 78 74 00 00 00 00 00 00 00 |evel2.txt.......|
如下图所示,我们从创建软硬链接之前和之后的二进制数据中看出:第14个字节i_nlinks由01变成了02,而第14字节的含义就是引用计数i_nlinks,在创建硬链接之前,该inode节点仅被filelevel2.txt文件所引用,所以第14字节i_nlinks为1。
如下图所示,hardlink2filelevel2.txt和filelevel2.txt文件均指向第4个inode节点,所以i_nlinks变为2。所以硬链接相当于给一个文件取了个别名,它们都指向同一个inode节点,inode中的i_nlinks属性即为硬链接计数,既然是指向了同一个inode节点,那么他们数据区也指向的是存储介质中同一个位置,如下图所示。
所以硬链接只能指向本文件系统里的文件,不能跨越文件系统创建硬链接。
技术参考- 技术视频参考:https://ke.qq.com/course/417774?flowToken=1040946
- 参考文献:https://ke.qq.com/course/417774?flowToken=1040946



