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