一个文件的硬链接数量有限制吗?有指定吗?Linux 的安全限制是多少?其他 POSIX 系统又如何?
答案1
Posix 要求操作系统理解硬链接的概念,但并不要求硬链接实际上可以在任何特定情况下使用。您可以通过调用来了解特定位置允许有多少个硬链接(这可能因文件系统类型而异)pathconf(filename, _PC_LINK_MAX)
。这最低限额( _POSIX_LINK_MAX
) 是 8,但这毫无意义,因为link()
无论如何,可以报告许多其他错误(权限被拒绝、磁盘已满……)。
这stat
结构将链接计数存储在类型字段中nlink_t
,因此该字段的类型给出了您系统的上限。但很有可能你永远无法达到那么远:nlink_t
在许多文件系统中通常有 32 位但只有 16 位(Linux 源代码中的快速 grep 显示 ext[234]、NTFS、UFS 和XFS 在内核数据结构中使用 16 位链接计数)。
答案2
答案3
查看 Linux 内核源代码 (*include/linux/ext3_fs.h*) 中的 ext3 inode 结构磁盘格式,其中列出了 16 位数字的链接计数
struct ext3_inode {
... snip ...
__le16 i_links_count; /* Links count */
}
我猜这意味着 ext3 文件系统最多可以有 65535 个链接。
我还没有检查其他文件系统的值。