在linux下如何证明目录不能创建硬链接

26 篇文章 0 订阅

如何证明目录不能创建硬链接

Reference: http://www.apelearn.com/bbs/forum.php?mod=viewthread&tid=5565

创建硬链接的命令是 ln  file1  file2  


在Linux下目录是不能创建硬链接的, 当我们创建时会提示:不允许创建之类的提示。那为什么不能创建呢?这和inode有关系,首先硬链接其实只是复制了一份文件的inode。 


我们来举个例子:

目录结构是这样的:1目录下面有2和3目录,2目录下面有个4目录,并假设2目录的inode=1234 假设可以可以为2目录创建硬链接,并且2目录的硬链接创建在3目录下面,硬链接的名字为5,

如图:假设,1目录的inode=1235, 那么(3目录下 ..目录 inode)=(2目录下..目录inode)=(5目录下..目录inode)=(3目录下的.目录inode)=1235如图: 

最终得出结论: 3目录下的..目录和.目录inode相等, 这在Linux的文件系统中是坚决不允许的。 所以,目录不能创建硬链接。

A)首先创建测试目录,目录结构为mkdir ./test1mkdir ./test2mkdir ./test1/123mkdir ./test2/456

B)先查看test1,test2目录,可以看到当前目录共用3个inode

C)下面是这3个目录的inode,可以看出,test1,test1/.,test1/123/..的inode都是一样的,现在假如在test2目录下创建了一个test1的硬链接,名为test11,

证明:

1、首先test1和test2为同级目录,那么test1/..和test2/..的inode一定是一样的。

2、test2/test11/..的inode理论上是和test1的inode一样的,从下图中可以看出,test1/..的inode为520194,而且test2/test11/..实质上是表示的test2本身,由此而证明了目录不能创建硬链接。3、如果是跨分区创建硬链接,那么则会有相同的inode的可能。如果直接用目录来创建硬链接的时候,命令根本就不会生效,直接就报错了。也可以参考下图

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值