文件系统中的符号链接与硬链接如何表示?

use*_*270 3 filesystems symlink

我想确保我对此的理解是正确的:

  • 创建一个硬链接会创建另一个指向同一个 inode 的 dentry
  • 制作符号链接是创建一个全新的文件对象/inode,它指向另一个 inode 的 dentry。文件系统以一种特殊的方式处理这个文件(将某些操作重定向到另一个 inode 的 dentry)

Gil*_*il' 7

更正硬链接,​​但不适用于符号链接。符号链接的内容只是一个字符串。例如,这允许符号链接指向当前未安装的文件系统。符号链接只是文本;当内核遇到一个时,它本质上是将符号链接插入到它正在查找的路径中,将其分解为斜线分隔的部分并查找...作为适当的。符号链接不提供额外的权限:由来自符号链接的路径元素引起的遍历遵循相同的权限约束,就好像应用程序指定了这些路径元素一样。符号链接有它自己的 inode(或者至少它是这样出现的——在幕后,一些文件系统不允许符号链接有多个硬链接并将符号链接直接存储在包含它们的目录中,但它仍然报告一个 inodelstat函数的编号)。

在系统级别,符号链接的处理方式取决于操作的类型。作用于目录条目的操作(例如重命名、删除)像对待任何其他文件一样对待符号链接。作用于文件内容的操作(例如openchdir)跟随符号链接并作用于目标(如果符号链接链以断开的链接结束,则报告错误)。对于作用于文件元数据(即 inode)的操作,它取决于:对于某些操作,有一对函数(例如stat/ lstat),对于其他操作,遵循符号链接(例如chmodutimes在 Linux 上没有符号链接变体)。