一、权限位说明
Linux 文件或目录的权限位是由9个权限位来控制,每三位为一组,它们分别是文件属主(Owner)的读、写、执行,用户组(Group)的读、写、执行以及(Other)其它用户的读、写、执行:
文件属主(Owner):读 read、写 write、执行 x
文件用户组(Group):读 r、写 w 、执行 x
其它用户(Other):读 r、 写 w、 执行 x
如果权限位不可读、不可写、不可执行,则用|来表示。
后面还会有特殊的权限位:t T s S X +
Linux 系统硬链接和软链接
1.【链接的概念】
在 Linux 系统中,链接可分为两种:一种为硬链接(Hard Link),另一种为软链接或符号链接(Symbolic Link)。ln命令就是创建链接文件的,在默认不带参数的情况下,执行ln命令创建的链接是硬链接。
如果使用ln -s 创建链接则为软链接。
1.1【硬链接】
硬链接是指通过索引节点(Inode)来进行链接。在Linux(ext2,ext3)文件系统中,保存在磁盘分区中的文件不管是什么类型都会给它分配一个编号,这个编号被称为索引节点编号(Inode Index)简称 Inode,即在系统中文件的编号。
在linux文件系统中,多个文件名指向同一个索引节点(Inode)是正常且允许的。这种情况的文件就称为硬链接。硬链接的作用之一是允许一个文件拥有多个有效路径名(多个入口),这样用户就可以建立硬链接到重要的文件,以防止“误删”源数据(很多硬件存储,如netapp)存储中的快照功能就应用了这个原理,增加一个快照就多了一个硬链接)。为什么一个文件建立了硬链接就会防止数据误删呢?
因为文件系统(ext2)的原理是,只要文件的索引节点(Inode Index)还有一个或一个以上的硬链接。只删除其中一个链接(即仅仅删除了该文件的链接指向)并不影响索引节点本身和其它的链接(即数据文件实体并未被删除),只有当文件的最后一个链接被删除后,此时如果有新数据要存储到硬盘上时或者系统通过类似fsck做磁盘检查的时候。被删除文件的数据块及目录的链接才会被释放,空间被新数据占用并覆盖。此时,数据就再也无法找回了。也就是说,在linux系统中,删除静态文件(目录也是文件)的条件是与之相关的所有硬链接文件均被删除。提示:硬链接就相当于文件的另外一个入口。
硬链接原理图:
硬链接示意图:
硬链接删除原理图:
1.2【软链接】
软链接也称为符号链接(Symbolic Link)。linx 里的软链接文件就类似于 Windows 系统中的快捷方式。它实际上是一个特殊的文件。在软链接的文件。在软链接中,软链接文件实际上就是一个文本文件,这个文件包含有软链接指向另一源文件的位置信息内容,因此,通过访问这个“快捷方式”就可以迅速定位到软链接所指向的源文件实体。
软链接原理图:
查看软链接的 value:
readlink Print value of a symbolic link or canonical file name
[[email protected] application]# readlink apache
/application/apache2.2.17/
[[email protected] application]# ll
总用量 8
lrwxrwxrwx. 1 root root 26 3月 13 07:43 apache -> /application/apache2.2.17/
drwxr-xr-x. 2 root root 4096 3月 13 20:17 apache2.2.17
drwxr-xr-x. 2 root root 4096 3月 13 21:45 apache2.2.18
软链接的创建:
执行命令“ln -s 源文件 软链接文件”,即可完成创建软链接。
小结:
1)软链接类似 windows 里的快捷方式,软链接里面存放的源文件的路径,并且执行源文件。
2)删除源文件,软链接文件依然存在,但是无法访问指向的路径内容了。
3)执行命令“ln -s 源文件 软链接文件”,即可完成创建软链接。
4)软链接和源文件是不同类型的文件,也是不同的文件。inode 号不同。
5)rm -f 软链接文件的删除
2.1 文件示例:
硬链接文件的连接数增加了。
2.2 目录示例
小结:ln 命令不能对目录创建硬链接,但可以对目录创建软链接,对于目录的软链接也是生产场景运维中常用的功能。
说明:oldboydir 下的两个点表示上级目录,因此,和 oldboydir 的上级目录 oldboy 具有相同的节点号。
2.3【删除示例】
[[email protected] oldboy]# echo "I am oldboy" >oldboyfile
[[email protected] oldboy]# cat oldboyfile
I am oldboy
[[email protected] oldboy]# cat oldboy_file_hard_link
I am oldboy
[[email protected] oldboy]# cat oldboy_file_soft_link
I am oldboy
结论:往源文件 oldboyfile 里面写入内容后,它的软硬链接文件都有相同的内容。
提示:内容还在,其实就是因为 oldboyfile_hard_link 硬链接存在,因此即使删除了源文件 oldboyfile,但是仍有硬链接指向着文件的 INODE 节点,所以,此时文件才不会被释放删除,当删除文件 oldboyfile 时,仅仅删除了 oldboyfile 到该文件 INODE 节点的链接而已,此时还有 oldboyfile_hard_link 硬链接在指向同一个 INODE 节点。
[[email protected] oldboy]# cat oldboyfile_hard_link
cat: oldboyfile_hard_link: 没有那个文件或目录
#由于软链接仅仅为源文件 oldboyfile 的快捷方式,所以,此时在访问软链接文件,发现无法访问了,文件不存在的错误。
小结:通过上面的测试可以看出:当删除原始文件 oldboyfile 后,其硬链接文件 oldboyfile_hard_link 不受影响,对应的数据依然存在,但是其对应的软链接文件 oldboyfile_soft_link 失效了,找不到源文件了,此时,可以删除软件连接文件重新创建,或者创建一个 oldboyfile_hard_link 的硬链接文件 oldboyfile。
3、【链接总结】
3.1【有关文件的链接小结】
一、删除软链接 oldboyfile_soft_link,对 oldboyfile,oldboyfile_hard_link 无影响;
全局结论:删除软链接文件对源文件及硬链接文件无任何影响。
二、删除硬链接 oldboyfile_hard_link,对 oldboyfile,oldboyfile_soft_link 都无影响;
全局结论:删除硬链接文件对源文件及软链接文件无任何影响。
三、删除原文件 oldboyfile,对硬链接 oldboyfile_hard_link 没有影响,但是会导致软链接 oldboyfile_soft_link 失效;
全局结论:删除原文件,对硬链接文件没有影响,但是会导致软链接文件失效,白字红底闪烁。
四、同时删除原文件 oldboyfile,硬链接 oldboyfile_hard_link,整个文件会真正的被删除。
五、很多硬件设备中的快照功能,就是利用了硬链接的原理。
六、源文件和硬链接文件具有相同的索引节点号,可以认为是同一个文件或一个文件的多个入口。
七、源文件和软链接文件索引节点号不同,是不同的文件,软链接相当于源文件的快捷方式,含有源文件的目录的位置指向。