首页 存档 技术 查看内容

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

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

摘要: check_acl()函数 对于check_acl()函数,其真正实现基于文件ACL的权限检查,成功时,返回0。该函数定义在fs/namei.c中,函数头如下所示: static int check_acl(struct inode *inode, int mask) 该函数含有两个参数 ...

check_acl()函数

对于check_acl()函数,其真正实现基于文件ACL的权限检查,成功时,返回0。该函数定义在fs/namei.c中,函数头如下所示:


static int check_acl(struct inode *inode, int mask)


该函数含有两个参数,各函数的含义和generic_permission()函数相同,这里不再赘述。


check_acl()函数调用流程图

图2-27 check_acl()函数调用流程图


check_acl()函数执行步骤

如图2-27所示,下面结合源码对该函数的执行步骤说明:

① 判断mask是否设置了MAY_NOT_BLOCK标志,该标志表示通过RCU模式进行调用,并且不能阻塞。

② 如果设置了该标志:

a. 调用get_cached_acl_rcu()函数获取被RCU机制保护的ACL。

b. 调用posix_acl_permission()函数依据文件的ACL判断当前进程是否具有对指定索引节点的指定权限,然后check_acl()函数返回posix_acl_permission()函数的执行结果。

③ 调用get_cached_acl()函数获取指定文件的用于访问控制的ACL属性,并将该ACL的引用计数加1。

④ 如果ACL没有缓冲到缓存中:

a. 判断inode-

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

路过

雷人

握手

鲜花

鸡蛋

相关分类

返回顶部