UNIX / Linux系统如何在内部管理符号链接。众所周知,即使没有实际的目标文件也可能存在符号链接(悬挂链接)。那么在内部代表符号链接的是什么。
在Windows中,答案是reparse point
。
问题:
答案inode
在UNIX / Linux中吗?
如果是,那么目标和链接的索引节点号是否相同?
如果是,链接inode可以具有与目标inode不同的权限(如果存在)吗?
它不是关于UNIX / Linux,而是关于文件系统的实现-但是,是的,Unix /
Linux在内核级别使用inode,而文件系统的实现则具有inode(至少是虚拟的inode)。
通常,符号链接只是文件(顺便说一句,目录也是文件),它们具有:
file-type
是“符号链接”虚拟文件系统也可以具有符号链接,因此,请检查FUSE或其他文件系统实现源。(ext2 / ext3 / ufs..etc)
所以,
答案是UNIX / Linux中的inode吗?
取决于文件系统的实现,但是可以,通常inode包含“文件类型”(以及所有者,访问权限,时间戳,大小,数据块的指针)。有些文件系统没有inode
(在物理实现中),但是只有“虚拟inode”用于维护与内核的兼容性。
如果是,那么目标和链接的索引节点号是否相同?
没有 。通常,符号链接是一个具有自己的索引节点的文件(具有文件类型,自身的数据块等)。
如果是,链接inode可以具有与目标inode不同的权限(如果存在)吗?
这是关于 如何 处理符号链接文件的。通常,内核不允许更改符号链接权限-
符号链接始终具有默认权限。您可以编写自己的文件系统,以允许对符号链接使用不同的权限,但是您会遇到麻烦,因为像chmod
这样的通用程序不会自行更改符号链接的权限,因此制作这样的文件系统将毫无意义。
要了解硬链接和符号链接之间的区别,您应该首先了解目录。
目录是告诉内核,“处理这个文件作为地图文件(通过在inode的标志区分)file- name
来inode_number
”。硬链接只是映射到same的文件名inode
。因此,如果目录文件包含:
file_a: 1000
file_b: 1001
file_c: 1000
上面的意思是在这个目录中有3个文件:
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_b
would be a symlink pointing to file_a
.
问题内容: 我已经检查了一些站点,它们的网址中带有井号(#)。它有什么作用? 问题答案: 这是“片段”或“命名锚点”。您可以用来链接到文档的 一部分 。通常,当您链接到页面时,浏览器会在页面顶部将其打开。但是,您链接到一半的部分,则可以使用该片段链接到该标题(或其他内容)。 如果页面内没有标签,则浏览器将仅链接到页面顶部。如果该片段为空,那么它也将仅链接到页面顶部。 仅 对于片段,这只是到 当前
问题内容: 大家好,我需要在linux中执行此操作: 给出:文件名“ foo.txt” 查找:所有符号链接到“ foo.txt”的文件 怎么做?谢谢! 问题答案: 这取决于是否要查找指向特定文件的链接,那么这是唯一的好方法: 另一方面,如果您只是想查找指向恰好名为的 任何 文件的链接,则类似 要么
问题内容: 在我们的服务器中,指向的符号链接已被删除。现在,系统中的所有二进制文件都不起作用。为了解决这个问题,我尝试: 正如预期的那样,这给了我: 我也尝试过: 结果相同。进一步失败的尝试包括cp,mv,cat。 我通过ssh连接,并且我相信关闭该会话后将无法打开另一会话。有没有办法修复此系统(也许使用bash内置)? [ 编辑 ]我所做的: 复制文件并尝试使用: 并得到: 问题答案: 您可以简
问题内容: 在DirectoryWalker类中,我想确定File实例是否实际上是指向目录的符号链接(假设Walker在UNIX系统上行走)。给定,我已经知道实例是一个目录,以下是否是确定符号链接的可靠条件? 问题答案: 这是Apache代码(根据其许可证使用),为了紧凑而进行了修改。
我在这行有一个错误:最终用户=新用户(地址、确认密码、用户电子邮件、密码、电话号码、用户名、链接); 错误为“无法解决符号链接” 我已经删除了一些代码,如果你需要更多细节,请在下面留下评论。有人能帮忙吗?非常感谢你的帮助