首页 > 新闻中心 > 酒店行业动态

凯发k8(中国)天生赢家|Linux自主访问控制机制模块详细分析之posix_acl.c文件介绍

发布时间:2025-10-15 18:00:44    次浏览

2.4.4文件四posix_acl.c2.4.4.1文件描述posix_acl.c的完整文件名称为fs/posix_acl.c,该文件实现了POSIX1003.1e草案中定义的ACL相关操作的的通用实现。2.4.4.2 主要变量及宏定义该文件中频繁调用的宏为FOREACH_ACL_ENTRY(),该宏实际上是一个for循环,用于对ACL中的列表项进行遍历。至于该文件涉及的变量参见2.3小节,这里不再赘述。2.4.4.3 结构体定义该文件使用的结构体如posix_acl、posix_acl_entry等参见2.3小节,这里不再赘述。2.4.4.4 外部函数该文件涉及的外部函数,详见2.3小节,这里不再赘述。2.4.4.5 内部函数对于该文件定义的相关函数,下面进行详细解释:1. posix_acl_init()函数原型:void(struct *, int );函数参数:acl指向待初始化的ACL;count表示ACL中所含的表项的数量。函数功能:初始化新建的访问控制列表。返回值:无。2. posix_acl_alloc()函数原型:struct *(int , );函数参数:count表示访问控制列表中包含的表项的数量;flags表示内存分配的标志。函数功能:根据参数为ACL分配相应的存储空间,并进行初始化。返回值:返回新建的访问控制列表。3. posix_acl_clone()函数原型:static struct *(const struct *, );函数参数:acl指向待复制的访问控制列表;flags表示内存分配的标志。函数功能:复制一个ACL。返回值:返回指向acl的副本的指针。4. posix_acl_valid()函数原型:int (const struct *);函数参数:acl表示待检查的访问控制列表。函数功能:检查一个访问控制列表是否有效。返回值:若有效则返回0;反之返回相应的错误码。5. posix_acl_equiv_mode()函数原型:int(const struct *, *);函数参数:acl表示文件的访问控制列表;mode_p表示传统文件的权限。函数功能:判断ACL是否可以被传统的文件模式权限位所替代。 返回值:若可以则返回0;反之返回1;错误时返回相应的错误码。6. posix_acl_from_mode函数原型:struct *(, );函数参数:mode表示传统的文件权限;flags表示内存分配的标志。函数功能:创建一个代表文件权限模式位的ACL。返回值:返回相应的访问控制列表。7. posix_acl_permission()函数原型:int(struct *, const struct *, int );函数参数:inode表示待访问的文件;acl表示相应的访问控制列表;want表示待检查的权限掩码。函数功能:根据ACL判断当前进程对inode节点是否具有want指定的权限。返回值:如果ACL授予了相应的权限则返回0;反之返回相应的错误码。8. posix_acl_create_masq()函数原型:static int (struct *, *);函数参数:acl指向文件的访问控制列表;mode_p表示新创建的文件权限。函数功能:根据创建文件时指定的文件权限去修改相应的ACL表项。返回值:如果访问控制列表中存在除owner、group及others之外其他用户的权限,则返回1;反之返回0。9. posix_acl_chmod_masq()函数原型:static int (struct *, );函数参数:acl指向目标文件的访问控制列表;mode存放了目标文件修改之后的权限。函数功能:在调用chmod()时修改ACL。返回值:成功时返回0;失败时返回相应的错误码。10. posix_acl_create()函数原型:int(struct **, , *);函数参数:acl指向目标文件的访问控制列表;gfp存放用于内存分配的标志;mode_p表示新建文件的权限。函数功能:根据指定文件的权限和ACL属性来创建一个新的ACL,并释放原来的ACL。返回值:成功时返回posix_acl_create_masq()函数的调用结果;失败时返回相应的错误码。11. posix_acl_chmod()函数原型:int(struct **, , );函数参数:acl指向目标文件的访问控制列表;gfp存放用于内存分配的标志;mode表示修改后的文件权限。函数功能:在调用chmod()时,为文件创建一个新的ACL。返回值:成功时返回0;失败时返回相应的错误码。