为什么符号link的md5校验和等于原始文件
Why is the md5 checksum of a symbolic link is equal to the original file
我找了一段时间,我不明白为什么符号 link 的 md5 校验和等于它指向的文件。据我了解a symbolic link is still a file. Given that it is empty I would expect a symlink to have an md5 of d41d8cd98f00b204e9800998ecf8427e. (see here)
然而在实践中测试:
echo Hello World > test
ln -s test test_symlink
然后运行:
md5deep test test_symlink
产量:
e59ff97941044f85df5297e1c302d260 /tmp/test
e59ff97941044f85df5297e1c302d260 /tmp/test_symlink
有人知道我在这里遗漏了什么吗?
符号link对几乎所有文件系统操作都是透明的;这就是重点。当你 open
一个 symlink 时,它实际上打开了目标文件,并且是目标文件的内容得到了 MD5。只有 readlink
和 lstat
(以及很少使用的 lchown
、lutimes
和 open(..., O_PATH|O_NOFOLLOW)
)能够 "see" 一个 symlink 而不是它后面的文件。
我找了一段时间,我不明白为什么符号 link 的 md5 校验和等于它指向的文件。据我了解a symbolic link is still a file. Given that it is empty I would expect a symlink to have an md5 of d41d8cd98f00b204e9800998ecf8427e. (see here)
然而在实践中测试:
echo Hello World > test
ln -s test test_symlink
然后运行:
md5deep test test_symlink
产量:
e59ff97941044f85df5297e1c302d260 /tmp/test
e59ff97941044f85df5297e1c302d260 /tmp/test_symlink
有人知道我在这里遗漏了什么吗?
符号link对几乎所有文件系统操作都是透明的;这就是重点。当你 open
一个 symlink 时,它实际上打开了目标文件,并且是目标文件的内容得到了 MD5。只有 readlink
和 lstat
(以及很少使用的 lchown
、lutimes
和 open(..., O_PATH|O_NOFOLLOW)
)能够 "see" 一个 symlink 而不是它后面的文件。