20211105李宜时信息安全系统设计与实现第五周自学笔记:EXT2文件系统和三级文件系统
EXT2文件系统
EXT2(Extended File System 2)是一种广泛用于Linux操作系统的文件系统。它是EXT文件系统家族的第二个版本,设计用于提供高性能和可靠性的存储解决方案。以下是一些关于EXT2文件系统的关键信息:
特点:
-
支持大容量存储:EXT2文件系统支持非常大的存储容量,允许大型文件和分区。
-
可靠性:它采用了一些技术来防止数据丢失,如日志文件系统。
-
不支持元数据日志:与后续的EXT3和EXT4不同,EXT2不支持元数据(文件系统的数据结构)的日志记录。
文件和目录结构:
-
Inode:每个文件和目录都有一个与之相关的Inode,它包含文件的元数据信息,如权限、文件大小和文件数据块的位置。
-
数据块:文件数据存储在数据块中,EXT2使用块组来组织这些数据块。
-
目录:目录是一种特殊的文件,用于存储其他文件和子目录的引用。
EXT2文件系统数据结构
EXT2文件系统包含多个关键数据结构,用于组织文件和元数据。以下是一些重要的数据结构:
Inode(索引节点)
-
Inode是文件和目录的元数据结构,包含文件的属性和数据块的指向。
-
每个Inode都有一个唯一的编号,它是文件在文件系统中的标识符。
数据块
-
文件数据存储在数据块中,EXT2使用块组来组织这些数据块。
-
块组是文件系统中的数据块的逻辑组织单元,它包含Inode表和数据块位图。
目录项
-
目录项是目录中的条目,每个条目包含文件或子目录的名称和对应的Inode编号。
-
目录项允许文件系统浏览和组织文件和目录结构。
三级文件系统
三级文件系统是一种文件系统组织结构,通常包括三个层次:
-
根目录:顶层目录,包含文件系统的所有内容,是文件系统的起点。
-
子目录:位于根目录下的目录,用于组织文件和其他子目录。
-
文件:存储数据的基本单位。
这种结构使文件系统能够以层次化方式组织和管理文件和目录,提供了用户友好的方式来查找和访问文件。
三级文件系统的优点:
-
结构清晰:三级文件系统的结构简单清晰,易于理解和使用。
-
层次化管理:文件和目录的层次化管理使文件系统更有序。
这些是跟gpt学习的代码
#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>
// 定义EXT2 Inode结构
struct ext2_inode {
uint16_t mode; // 文件的类型和权限
uint16_t uid; // 用户ID
uint32_t size; // 文件大小
// 其他Inode字段...
};
int main() {
// 假设你已经读取了EXT2文件系统中的某个Inode块
struct ext2_inode inode;
// 读取Inode的权限字段
printf("原始权限模式: %o\n", inode.mode);
// 修改权限模式
inode.mode = 0755; // 设置权限为rwxr-xr-x
// 写回Inode到文件系统
// 这需要适当的I/O操作,这里仅是示例
// 打印修改后的权限模式
printf("修改后的权限模式: %o\n", inode.mode);
return 0;
}
以下是我的苏格拉底挑战