首页 存档 技术 查看内容

Linux自主访问控制机制模块之详细描述-函数实现机制(7)

2018-3-30 13:00 |来自: 互联网 471 0

摘要: ACL在ext4中的操作 对于ext4文件系统,其中有关ACL的相关操作如下表2-7所示,这些操作定义在fs/ext4/acl.h和fs/ext4/acl.c中。 表2-7 ext4文件系统中ACL相关操作 函数所属文件 函数名称 函数功能 fs/ext4/acl.h ...

ACL在ext4中的操作

对于ext4文件系统,其中有关ACL的相关操作如下表2-7所示,这些操作定义在fs/ext4/acl.h和fs/ext4/acl.c中。


表2-7 ext4文件系统中ACL相关操作

函数所属文件

函数名称

函数功能

fs/ext4/acl.h

ext4_acl_size()

计算ACL所占用的内存空间

ext4_acl_count()

计算ACL中包含的ACL表项的数目

fs/ext4/acl.c

ext4_acl_from_disk()

ACL从磁盘表示形式转化为内存表示形式

ext4_acl_to_disk()

ACL从内存表示形式转化为磁盘表示形式

ext4_get_acl()

根据ACL类型获取指定索引节点的ACL属性。其中类型有两种:ACL_TYPE_ACCESS类型的ACL用于控制文件的访问权限;ACL_TYPE_DEFAULT类型表示目录的默认ACL属性

ext4_set_acl()

根据指定访问控制列表的类型设置文件的ACL

ext4_init_acl()

初始化一个新的文件的ACL

ext4_acl_chmod()

当调用chmod命令修改文件的权限是,将会根据设置的文件权限修改指定文件的用于访问控制的ACL属性

ext4_xattr_list_acl_access()

将用于访问控制的ACL对应的扩展属性的名字拷贝到list中,并返回拷贝的字节数

ext4_xattr_list_acl_default()

将目录的默认ACL对应的扩展属性的名字拷贝到list中,并返回拷贝的字节数

ext4_xattr_get_acl()

ACL从内存表示形式转换为磁盘表示形式,并将其存放到扩展属性中,最后返回扩展属性所占用的空间的长度

ext4_xattr_set_acl()

从扩展属性中获取指定文件的内存表示形式的ACL,并用其设置目标文件的指定类型的ACL属性。


下面只对其中相对重要的部分函数进行分析:

  1. ext4_acl_from_disk()

ext4_acl_from_disk()函数用于将ACL的磁盘表示格式转化为内存表示格式,成功执行时返回指向ACL内存表示形式的指针,函数头如下所示:


static struct posix_acl*ext4_acl_from_disk(constvoid *value, size_t size)


如上所示,该函数有两个参数:value表示磁盘格式的ACL在缓存中的地址;size表示ACL的长度。



图2-17 ext4_acl_from_disk()函数调用流程图

如图2-17所示,下面对该函数主要执行步骤进行说明:

① 通过对value及size进行相关的检查来判断参数的有效性。

② 调用ext4_acl_count()函数来获得访问控制列表中访问控制列表项的数量。

③ 调用posix_acl_alloc()函数来根据访问控制列表项的项数分配相应的存储空间。

④ 通过循环将ACL中的表项从磁盘表示形式转换为内存表示形式,并用其来设置相应内存形式的ACL表项。

⑤ 结束并返回acl。

对于ext4_acl_to_disk(),其实现和ext4_acl_from_disk()函数相似,所以这里不对其详细讨论。



声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系 [邮箱地址] 删除

路过

雷人

握手

鲜花

鸡蛋

相关分类

返回顶部