它不是关于UNIX / Linux,而是关于文件系统的实现-但是,是的,Unix /
Linux在内核级别使用inode,而文件系统的实现则具有inode(至少是虚拟的inode)。
通常,符号链接只是文件(顺便说一句,目录也是文件),它们具有:
- 告诉系统此文件的“ inode”中的 标志
file-type
是“符号链接” - file-content:目标的路径-换句话说:符号链接只是一个文件,其中包含在inode中带有标志的文件名。
虚拟文件系统也可以具有符号链接,因此,请检查FUSE或其他文件系统实现源。(ext2 / ext3 / ufs..etc)
所以,
答案是UNIX / Linux中的inode吗?
取决于文件系统的实现,但是可以,通常inode包含“文件类型”(以及所有者,访问权限,时间戳,大小,数据块的指针)。有些文件系统没有
inode(在物理实现中),但是只有“虚拟inode”用于维护与内核的兼容性。
如果是,那么目标和链接的索引节点号是否相同?
没有 。通常,符号链接是一个具有自己的索引节点的文件(具有文件类型,自身的数据块等)。
如果是,链接inode可以具有与目标inode不同的权限(如果存在)吗?
这是关于 如何 处理符号链接文件的。通常,内核不允许更改符号链接权限-
符号链接始终具有默认权限。您可以编写自己的文件系统,以允许对符号链接使用不同的权限,但是您会遇到麻烦,因为像
chmod这样的通用程序不会自行更改符号链接的权限,因此制作这样的文件系统将毫无意义。
要了解硬链接和符号链接之间的区别,您应该首先了解目录。
目录是告诉内核,“处理这个文件作为地图文件(通过在inode的标志区分)
file-name来
inode_number”。硬链接只是映射到same的文件名
inode。因此,如果目录文件包含:
file_a: 1000file_b: 1001file_c: 1000
上面的意思是在这个目录中有3个文件:
- 由inode 1000描述的file_a
- 由inode 1001和
- FILE_C由inode的1000(所以这是一个硬链接再次描述 与 FILE_A,不是硬连接 到 -因为它是不可能告诉这名来到第一个-它们是相同的FILE_A)。
This is the main difference to symlinks, where the inode of
file_b(inode
1001) could have content “file_a” and a flag meaning “this is a symlink”.
In this case,
file_bwould be a symlink pointing to
file_a.
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)