2021SC@SDUSC
首先来分析一下ext4文件系统的acl.h文件(位于fs/ext4文件夹下)的源代码。
先简单说一下什么是acl技术吧。acl(Access Control Lists,访问控制列表),是一种基于包过滤的访问控制技术,它可以根据设定的条件对接口上的数据包进行过滤,允许其通过或丢弃。
举个例子,比如说有三个用户在一个group里,分别是甲,乙,丙。甲跟乙的关系比较好,跟丙的关系不好,所以甲的文件想让乙查看,但不想让丙查看。可以让甲和乙再建一个group,但这就增加了不必要的开销。这时候acl的作用就体现出来了,可以给用户单独的权限来解决这个问题。
acl.h文件如下:
/*
File: fs/ext4/acl.h
(C) 2001 Andreas Gruenbacher, <[email protected]>
*/
#include <linux/posix_acl_xattr.h>
#define EXT4_ACL_VERSION 0x0001
/*
ext4文件系统的acl结构体,遵循posix标准
*/
typedef struct {
__le16 e_tag;
__le16 e_perm;
__le32 e_id;
} ext4_acl_entry;
/*
ext4文件系统的简短结构体,与posix标准相比,没有e_id字段
*/
typedef struct {