我正在寻找以下内容的解释:
- 当我们创建软链接和硬链接时,Linux 中会发生什么
- 他们如何访问
- 为什么符号链接总是显示777权限
答案1
在 Unix 中,文件(或任何文件系统对象)由 inode(间接节点)表示。有关文件的所有信息(大小、时间戳、权限)都存储在 inode 中,目录本质上只是将名称映射到 inode 的文件。一个 inode 可以在同一目录中以不同名称或在不同目录中多次提及。每个文件都是完全相同的文件,这里没有主文件和辅助文件。 inode 中的数据之一是链接数,删除文件只是删除目录中的名称并减少链接数。当计数达到 0 时,该文件将无法再找到,也可能会被销毁。该文件的每个提及都称为硬链接。
符号链接本质上是一个包含文件名称的特殊文件。每当跟踪符号链接时,都会读取包含的文件名,然后正常查找该文件。请注意,符号链接的目标可能已被删除,无法知道此类链接可能存在于何处以更正它们。结果是链接断开。
符号链接上的权限完全不相关,相关的是目标路径上的权限。按照惯例,符号链接的权限为 0777(八进制)。
请注意,有一些限制:硬链接只能添加到同一文件系统内的文件(索引节点仅在本地已知),并且不能引用目录(除了.
和..
条目)。最后是避免循环,这将需要昂贵的垃圾收集来确定是否可以删除某些内容。
符号链接可以跨文件系统,并且可以指向目录。但它们受到所指向路径的权限的限制,并且可能会被破坏。