门户网站做等级保护测评,写字楼装修风格,wordpress文章插广告,网站正在建设中 html代码文章目录 前言一、 简单理解文件系统二、文件操作具体步骤1.新建文件2.删除文件3.查找文件 三、目录的重新理解1.目录下没有w权限#xff0c;无法对其下的文件进行创建与删除2.目录下没有r权限#xff0c;无法对其下的文件进行查看3.目录下没有x权限#xff0c;无法进入这个… 文章目录 前言一、 简单理解文件系统二、文件操作具体步骤1.新建文件2.删除文件3.查找文件 三、目录的重新理解1.目录下没有w权限无法对其下的文件进行创建与删除2.目录下没有r权限无法对其下的文件进行查看3.目录下没有x权限无法进入这个目录 四、软链接五、硬链接1.Linux不允许目录建立硬链接会造成闭环问题 前言
一、 简单理解文件系统
我们接下来以磁盘举例 文件文件内容文件属性 Linux中文件内容与属性是分开存储的。 文件内容在数据块中存着 文件属性在inode中存着 Block Groupext2文件系统会根据分区的大小划分为数个Block Group。而每个Block Group都有着相同的结构组成。政府管理各区的例子 超级块Super Block存放文件系统本身的结构信息。记录的信息主要有bolck 和 inode的总量未使用的block和inode的数量一个block和inode的大小最近一次挂载的时间最近一次写入数据的时间最近一次检验磁盘的时间等其他文件系统的相关信息。 Super Block的信息被破坏可以说整个文件系统结构就被破坏了 GDTGroup Descriptor Table块组描述符描述块组属性信息 块位图Block BitmapBlock Bitmap中记录着Data Block中哪个数据块已经被占用哪个数据块没有被占用 inode位图inode Bitmap每个bit表示一个inode是否空闲可用。 i节点表:存放文件属性 如文件大小所有者最近修改时间等 数据区存放文件内容 Linux系统中一个文件一个inode每一个inode都有自己的inode编号是唯一的inode的设置是以分区为单位的也就是1号分区inode编号从1到5002号分区也是1到500分区之间编号互不影响inode为一个结构体里面存着文件的所有属性文件名并不属于inode属性
格式化 每一个分区在被使用之前都必须提前先将部分文件系统的属性信息提前设置进对应的分区当中也就是划分好Block Group GDTinode位图等方便我们后续使用这个分区或者分组
二、文件操作具体步骤 1.新建文件
首先会分配到一个空余的分组中在分组中通过GDT来判断是否有剩余的位置放入在inodeBitmap中查找最近的没有使用的下标将其从0置为1之后用这个inode编号去inodeTable中这到这个位置将自己的信息大小修改时间之类的写入到struct inode结构体中文件就完成了创建
如果要写入数据首先判断要写入数据大小需要几个数据块大小之后根据BlockBitmap在位图中找到未使用的数据块之后将其置为1把块号填到inode中block数组对应的位置之后到DataBlock中写入数据
删除允许被覆盖可以提高系统效率
2.删除文件
我们根据我们当前文件所处的目录确定我们属于哪个分区的根据文件inode大小确定我们是哪个分组的通过inode编号找到我们对应inode的属性根据属性中blocks数组的内容去BlockBitmap中将对应位置的置为0之后再将inode编号的位置在inodeBitmap中置为0
3.查找文件
我们根据我们当前文件所处的目录确定我们属于哪个分区的根据文件inode大小确定我们是哪个分组的通过inode编号在inodeTable中找到我们对应inode的属性根据inode结构体里面block数组去对应的位置DataBlock找数据将对应块载入内存虽然我们载入了整个块大小的数据但我会根据我当前文件大小来在块中读取对应字节的数据
三、目录的重新理解
文件那些操作的前提都是基于我们有文件的inode编号但我怎么获得我们inode编号呢我们平时都是直接用文件名进行操作的。 首先目录也是文件Linux系统下一切且文件所以我目录也有自己的属性内容也需要数据块来存储数据。 问目录里存放的是什么 答存放的是文件名与文件名其inode编号的映射关系。
问既然这样那我又是怎么获得目录的inode编号呢我们得先知道目录的inode编号读取其数据内容才能获得文件名与inode编号啊 答我们会一路向上递归到根目录根目录的位置是确定的inode编号也是确定的我们根据根目录中存的数据找到目录和inode的对应关系
1.目录下没有w权限无法对其下的文件进行创建与删除
因为即便我们把文件创建出来文件名与inode的映射关系我们没有w权限我们就无法将这个关系存入目录的数据当中。
2.目录下没有r权限无法对其下的文件进行查看
我们要先获得文件的inode编号才能去对应数据块中找文件的数据但现在目录都不让我读啊我都没办法获取到文件的inode编号拿什么去读文件
3.目录下没有x权限无法进入这个目录
进入目录就是cd进去 将系统的环境变量做更新给当前路径做更新并给目录信息做更新但没有x权限我们就无法执行这一操作。
四、软链接
软链接是一个独立的文件有一个独立的inode也有独立的数据块他的数据块中保存的是指向文件的路径相当于windows中的快捷方式
命令ln -s 要链接的文件名 创建的软链接文件名 因为软链接中存着链接文件的路径所以我们可以选择将我们的软链接文件放入可执行文件的目录/usr/bin 这样我们就可以以直接执行我们自己写的可执行程序了
五、硬链接
硬链接不是一个独立的文件因为其没有独立的inode编号所谓建立硬链接本质其实是在特定目录的数据块中新增文件名和指向文件名inode编号的映射关系相当于取别名
命令ln 要链接的文件名 创建的硬链接文件名
每个inode内部都有一个引用计数器记录有多少个文件指向我
1.Linux不允许目录建立硬链接会造成闭环问题 我们假设可以创建目录硬链接