一种基于分布式文件系统的权限设置方法及系统与流程

文档序号:13642207阅读:370来源:国知局

本发明涉及分布式系统技术领域,特别是涉及一种基于分布式文件系统的权限设置方法及系统。



背景技术:

在很多行业,需要对不同的用户设置不同的权限去访问一些资料。例如,在文化传媒行业,需要对不同的员工设置不同的权限去访问影视传媒资料。由于人员流动性大,设置完之后需要经常变更重新设置,每次针对一个用户递归设置权限,由于文件资料存放目录层级深且文件数众多,需要耗费很长的时间。

在目录层级较深文件数量较多时,使用递归设置acl(访问控制列表)权限命令setxacl-r设置acl时,需要遍历完成目标目录下所有子目录及文件,设置其acl权限,所有子目录及文件设置完成后,再向客户返回处理结果,当需要获取acl权限时,直接从待访问的文件或目录本身的acl属性获取。递归设置过程执行慢,向用户返回设置结果耗时长。

因此,如何减少访问权限的设置时间,实现快速地设置用户访问权限,是本领域技术人员目前需要解决的技术问题。



技术实现要素:

本发明的目的是提供一种基于分布式文件系统的权限设置方法及系统,减少访问权限的设置时间,实现快速地设置用户访问权限。

为解决上述技术问题,本发明提供了如下技术方案:

一种基于分布式文件系统的权限设置方法,包括:

根据用户的身份对应递归设置目标文件系统的顶层目录访问控制列表;

将所述目标文件系统的顶层目录的递归标志位v置为1,并记录设置时间戳,以供用户在获取所述顶层目录的下级目录或文件的acl权限时,从根路径开始查询,依次找到上一级目录递归设置的acl权限,根据时间戳最新的acl作为权限查询结果。

优选地,所述根据用户的身份对应递归设置目标文件系统的顶层目录访问控制列表,包括:

根据用户的身份,生成对应的访问权限;

根据生成的访问权限,递归设置目标文件系统的顶层目录访问控制列表,将该访问权限保存在全局内存区m中。

优选地,所述将所述目标文件系统的顶层目录的递归标志位v置为1,并记录设置时间戳,以供用户在获取所述顶层目录的下级目录或文件的acl权限时,从根路径开始查询,依次找到上一级目录递归设置的acl权限,根据时间戳最新的acl作为权限查询结果,包括:

s31:将所述目标文件系统的顶层目录的递归标志位v置为1,并记录设置时间戳;

s32:当用户对访问目标进行访问时,判断当前访问目标的权限所保存的全局内存m的时间戳是否大于当前访问目标的创建时间,若是则执行步骤s33,若否则执行步骤s35;

s33:获取当前访问目标的acl属性;

s34:判断当前访问目标的时间戳是否大于m的时间戳,若是,则执行步骤s35,若否,则执行步骤s36;

s35:使用当前访问目标的权限进行校验;

s36:使用m中的权限进行校验;

s37:判断当前访问目标是否有递归标记v=1,若是,则执行步骤s38,若否,则结束;

s38:使用当前访问目标的权限和时间戳替换m中保存的权限和时间戳,并结束。

优选地,在根据用户的身份对应递归设置目标文件系统的顶层目录访问控制列表之前,还包括:

判断当前文件系统的目录层级是否大于预设阈值;

若否,则通过第一递归设置命令进行用户访问权限设置,其中,所述第一递归设置命令为遍历完成目标目录下所有子目录及文件,设置对应的acl权限的命令;

若是,则通过第二递归设置命令进行用户访问权限设置,其中,所述第二递归设置命令为根据用户的身份对应递归设置目标文件系统的顶层目录访问控制列表,并将所述目标文件系统的顶层目录的递归标志位v置为1,并记录设置时间戳的命令。

一种基于分布式文件系统的权限设置系统,包括:

权限设置模块,用于根据用户的身份对应递归设置目标文件系统的顶层目录访问控制列表;

标识设置模块,用于将所述目标文件系统的顶层目录的递归标志位v置为1,并记录设置时间戳,以供用户在获取所述顶层目录的下级目录或文件的acl权限时,从根路径开始查询,依次找到上一级目录递归设置的acl权限,根据时间戳最新的acl作为权限查询结果。

与现有技术相比,上述技术方案具有以下优点:

本发明所提供的一种基于分布式文件系统的权限设置方法,包括:根据用户的身份对应递归设置目标文件系统的顶层目录访问控制列表;将目标文件系统的顶层目录的递归标志位v置为1,并记录设置时间戳,以供用户在获取顶层目录的下级目录或文件的acl权限时,从根路径开始查询,依次找到上一级目录递归设置的acl权限,根据时间戳最新的acl作为权限查询结果。在设置访问权限时,仅设置最上层目录,将设置任务转移到acl获取的过程中,递归设置顶层目录acl,同时将其递归标志位v置于1,且记录设置时间戳。这样,在获取下级目录或文件的acl权限时从根路径开始查询,依次找到上一级目录递归设置的acl权限,根据时间戳最新的acl作为查询结果。从而将对所设置目录及其子目录和文件的acl耗时分解到单个文件或目录acl查询时的耗时,进而提高了递归设置速度,减少了访问权限的设置时间,实现了快速地设置用户访问权限。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明一种具体实施方式所提供的基于分布式文件系统的权限设置方法流程图;

图2为本发明另一种具体实施方式所提供的基于分布式文件系统的权限设置方法流程图。

具体实施方式

本发明的核心是提供一种基于分布式文件系统的权限设置方法及系统,减少访问权限的设置时间,实现快速地设置用户访问权限。

为了使本发明的上述目的、特征和优点能够更为明显易懂,下面结合附图对本发明的具体实施方式做详细的说明。

在以下描述中阐述了具体细节以便于充分理解本发明。但是本发明能够以多种不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本发明内涵的情况下做类似推广。因此本发明不受下面公开的具体实施的限制。

请参考图1,图1为本发明一种具体实施方式所提供的基于分布式文件系统的权限设置方法流程图。

本发明的一种具体实施方式提供了一种基于分布式文件系统的权限设置方法,包括:

s11:根据用户的身份对应递归设置目标文件系统的顶层目录访问控制列表权限;

s12:将目标文件系统的顶层目录的递归标志位v置为1,并记录设置时间戳,以供用户在获取顶层目录的下级目录或文件的acl权限时,从根路径开始查询,依次找到上一级目录递归设置的acl权限,根据时间戳最新的acl作为权限查询结果。

在设置访问权限时,仅设置最上层目录,将设置任务转移到acl获取的过程中,递归设置顶层目录acl,同时将其递归标志位v置于1,且记录设置时间戳。这样,在获取下级目录或文件的acl权限时从根路径开始查询,依次找到上一级目录递归设置的acl权限,根据时间戳最新的acl作为查询结果。从而将对所设置目录及其子目录和文件的acl耗时分解到单个文件或目录acl查询时的耗时,进而提高了递归设置速度,减少了访问权限的设置时间,实现了快速地设置用户访问权限。

进一步地,根据用户的身份对应递归设置目标文件系统的顶层目录访问控制列表,包括:根据用户的身份,生成对应的访问权限;根据生成的访问权限,递归设置目标文件系统的顶层目录访问控制列表,将该访问权限保存在全局内存区m中。

请参考图2,图2为本发明另一种具体实施方式所提供的基于分布式文件系统的权限设置方法流程图。

将目标文件系统的顶层目录的递归标志位v置为1,并记录设置时间戳,以供用户在获取顶层目录的下级目录或文件的acl权限时,从根路径开始查询,依次找到上一级目录递归设置的acl权限,根据时间戳最新的acl作为权限查询结果,包括:

s31:将目标文件系统的顶层目录的递归标志位v置为1,并记录设置时间戳;

s32:当用户对访问目标进行访问时,判断当前访问目标的权限所保存的全局内存m的时间戳是否大于当前访问目标的创建时间,若是则执行步骤s33,若否则执行步骤s35;

s33:获取当前访问目标的acl属性;

s34:判断当前访问目标的时间戳是否大于m的时间戳,若是,则执行步骤s35,若否,则执行步骤s36;

s35:使用当前访问目标的权限进行校验;

s36:使用m中的权限进行校验;

s37:判断当前访问目标是否有递归标记v=1,若是,则执行步骤s38,若否,则结束;

s38:使用当前访问目标的权限和时间戳替换m中保存的权限和时间戳,并结束。

更进一步地,在根据用户的身份对应递归设置目标文件系统的顶层目录访问控制列表之前,还包括:

判断当前文件系统的目录层级是否大于预设阈值;

若否,则通过第一递归设置命令进行用户访问权限设置,其中,第一递归设置命令为遍历完成目标目录下所有子目录及文件,设置对应的acl权限的命令;

若是,则通过第二递归设置命令进行用户访问权限设置,其中,第二递归设置命令为根据用户的身份对应递归设置目标文件系统的顶层目录访问控制列表,并将目标文件系统的顶层目录的递归标志位v置为1,并记录设置时间戳的命令。

在本实施方式中,以使用user1用户访问a/b/c/file为例进行说明。

首先getxattr获取a目录的user1用户的权限保存在全局内存区m中,对以后的各级目录执行以下流程:

(1)判断m的时间戳是否大于当前目录/文件的创建时间;若是,则执行下一步;否则,跳至步骤(3)执行;

(2)获取当前目录/文件的acl属性,判断user1用户的时间戳是否大于m的时间戳;若是,则执行下一步;否则,跳至步骤(4)执行;

(3)使用当前目录user1权限进行校验,跳至(5);

(4)使用m中的user1权限进行校验;

(5)判断当前目录是否有递归标记位v=1;如果有,则执行下一步;否则,跳至步骤(7)执行;

(6)使用当前目录的权限和时间戳替换m中保存的权限和时间戳;

(7)结束。

在本实施方式中,采用客户端读写缓存分离的模式,能够通过命令递归设置目录acl的权限,快速向用户返回设计结果。

其中,通过本实施方式中的方法来使用setfacl-r命令的递归设置acl权限时,无论目录层级深度和目录下文件数多少,保证在较短的时间内(如10秒)成功返回,且后续使用权限时保证正确。且在实际应用时,能够和现有方法进行兼容。保证nas协议的支持,包括cifs/nfs客户端。支持多客户端数据同步,例如在客户端a设置,在客户端b使用生效。保证原有acl功能的需求仍满足,例如支持最大500条acl的限制等设计合理客户端读写分离缓存模式,设计共享内存模块与二级缓存管理模块,优化缓存服务的实现策略,使得可以提供更加高效的客户端读写请求的处理结构,进而提升存储系统面对海量数据访问的可靠性、稳定性与数据一致性,为企业构建具有快速数据访问能力的存储系统。

在本实施方式中,第一递归设置命令即原有递归设置命令,其进行用户访问权限设置,其中,第一递归设置命令为遍历完成目标目录下所有子目录及文件,设置对应的acl权限的命令。

第二递归设置命令即通过本发明上述实施方式提供的方法而设置的新的递归设置命令,其进行用户访问权限设置时根据用户的身份对应递归设置目标文件系统的顶层目录访问控制列表,并将目标文件系统的顶层目录的递归标志位v置为1,并记录设置时间戳的命令。

因此,原有递归设置命令setxacl-r仍然保留,同时编写新的递归设置命令setfacl-r,当目录层级结构复杂时,使用setfacl–r命令设置,节省时间;使用setfacl-r命令设置时,仅设置顶层目录,成功后返回;使用setfacl-r命令设置时,使用新设计的数据结构。新数据结构在acl用户的acl_ea_entry中,增加递归标记v=1,同时增加设置成功时刻的时间戳(如从格林威治时间1970年01月01日00时00分00秒起至现在的总秒数)。访问顶层目录下的子目录或文件时,沿访问路径依次获取各级父目录的acl扩展属性,根据时间戳获取待校验用户最新的acl记录,使用该记录标记的权限进行校验。使用getxacl查询目录或文件的acl属性时,同上述步骤一样,沿访问路径依次获取各级父目录通过-r设置的用户权限,和原始的acl属性合并后返回。为了兼容上层协议fuse/nfs/cifs,在获取权限后,将每条acl记录转换为acl标准格式(acl_ea_entry,即去掉v和time字段),然后合并为xattr属性返回给上层。

相应地,本发明一种实施方式还提供了一种基于分布式文件系统的权限设置系统,包括:

权限设置模块,用于根据用户的身份对应递归设置目标文件系统的顶层目录访问控制列表;

标识设置模块,用于将目标文件系统的顶层目录的递归标志位v置为1,并记录设置时间戳,以供用户在获取顶层目录的下级目录或文件的acl权限时,从根路径开始查询,依次找到上一级目录递归设置的acl权限,根据时间戳最新的acl作为权限查询结果。

在设置访问权限时,仅设置最上层目录,将设置任务转移到acl获取的过程中,递归设置顶层目录acl,同时将其递归标志位v置于1,且记录设置时间戳。这样,在获取下级目录或文件的acl权限时从根路径开始查询,依次找到上一级目录递归设置的acl权限,根据时间戳最新的acl作为查询结果。从而将对所设置目录及其子目录和文件的acl耗时分解到单个文件或目录acl查询时的耗时,进而提高了递归设置速度,减少了访问权限的设置时间,实现了快速地设置用户访问权限。

以上对本发明所提供的一种基于分布式文件系统的权限设置方法及系统进行了详细介绍。本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以对本发明进行若干改进和修饰,这些改进和修饰也落入本发明权利要求的保护范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1