Linux知识回顾:inode与软链接、硬链接
前言
最近在看runc最新的CVE-2021-30465漏洞的时候经常看到符号链接(symbolic link)这个概念,脑海中对于这一概念似乎也有点印象,但是始终无法清晰浮现出来,与之相关的inode、硬链接、软连接(即符号链接)这些Linux系统的概念也记不清了。于是特意重新翻看了一下操作系统的书籍,查阅了一些资料,记录一下。
UNIX(Linux)文件系统
inode与data block
我们都知道,文件是存储在磁盘上的。在Linux系统中,磁盘被划分分区并格式化的时候,整个分区会被划分为两个部分,分别是inode区
和data block区
。其中inode区
存放的是文件的inode信息,data block区
存放的是真正的文件数据内容。
inode是一种UNIX系统中用于存储文件相关信息的数据结构,包括inode号、文件的uid
、gid
、各个组的rwx权限等。需要注意的是,inode并不含有文件名。所以我们可以这么理解,UNIX系统中的文件名是给用户使用的,实际上系统打开每个文件都是通过inode号去寻找对应的inode,然后进行判断当前用户的权限等操作,再打开该文件。
在使用ls
命令时可以加上-i
选项查看文件对应的inode号。
硬链接与软链接
这是一对容易记混的概念。首先来说硬链接(hard link)。一般来说,一个文件名会对应一个inode号码,但是Linux系统允许多个文件名对应同一个inode号码,即指向同一个inode对象,这些其他的文件名就叫做硬链接。inode中的链接数字段信息保存了该文件的链接数量,每个新创建的硬链接都会使其加1。
创建硬链接可以使用ln
命令来完成
|
|
软链接又叫符号链接(symbolic link),原理与硬链接完全不同。软链接可以看作是windows系统的快捷方式,每个软链接都是独立的文件,只不过文件中的内容是另一个文件的路径。与硬链接不同的是,软链接可以用于目录,也就是说,你可以对一个目录创建一个软链接,而硬链接是只能作用与文件的。
使用ln
命令也可以创建软链接
|
|