CN107277016A - 一种权限校验的方法及装置 - Google Patents
一种权限校验的方法及装置 Download PDFInfo
- Publication number
- CN107277016A CN107277016A CN201710480717.4A CN201710480717A CN107277016A CN 107277016 A CN107277016 A CN 107277016A CN 201710480717 A CN201710480717 A CN 201710480717A CN 107277016 A CN107277016 A CN 107277016A
- Authority
- CN
- China
- Prior art keywords
- node
- acl
- authorities
- verified
- acltree
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/10—Network architectures or network communication protocols for network security for controlling access to devices or network resources
- H04L63/101—Access control lists [ACL]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/10—Network architectures or network communication protocols for network security for controlling access to devices or network resources
- H04L63/108—Network architectures or network communication protocols for network security for controlling access to devices or network resources when the policy decisions are valid for a limited amount of time
Landscapes
- Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Storage Device Security (AREA)
Abstract
本发明公开了一种权限校验的方法,包括:为目标节点设置ACL权限,并返回设置结果;通过待校验节点的ACLTree查找待校验节点的祖先节点的ACL权限;对祖先节点的ACL权限与待校验节点的ACL权限进行选择,得到最终ACL权限;将最终ACL权限作为待校验节点的ACL权限进行校验。由此可见,本发明提供的一种权限设置的方法,只需要对待设置ACL权限的目标节点进行权限设置,而不需要对其下层的所有子目录或文件进行遍历、设置ACL权限,因此设置ACL权限的时间有了明显缩短,用户体验也有了明显的改善。本发明还提供一种权限校验的装置,同样可以实现上述技术效果。
Description
技术领域
本发明涉及权限控制领域,更具体地说,涉及一种权限校验的方法及装置。
背景技术
在存储系统中,一种用户可以对存储系统中的某一目录或某一文件进行什么操作,对存储系统的安全十分重要,因此,权限控制是一个非常重要的环节。
权限控制可以通过ACL(访问控制列表)实现,对单个文件或目录以及单个用户指定权限。通过设置ACL权限的方式设置某一目录时,需要将此目录设置,并遍历、设置其下所有子目录及文件。如果想对一目录或文件进行权限的校验,就要等待所有子目录及文件全部遍历并且设置权限后才能进行校验,然而存储系统中较多为海量存储的场景,即有数量庞大的目录及文件,通常是万级甚至百万级的目录、文件,因此当待设置权限的目录下子目录与文件过多时,需要等待大量时间才能完成权限的设置,然后再对某一目录或文件进行权限校验,造成了时间的浪费,用户体验极差。
因此,如何缩短权限设置时间,是本领域技术人员需要解决的问题。
发明内容
本发明的目的在于提供一种权限校验的方法及装置,以缩短权限设置的时间。
为实现上述目的,本发明实施例提供了如下技术方案:
一种权限校验的方法,包括:
为目标节点设置ACL权限,并返回设置结果;
通过待校验节点的ACLTree查找所述待校验节点的祖先节点的ACL权限;
对所述祖先节点的ACL权限与所述待校验节点的ACL权限进行选择,得到最终ACL权限;
将所述最终ACL权限作为所述待校验节点的ACL权限进行校验。
其中,所述通过待校验节点的ACLTree查找所述待校验节点的祖先节点的ACL权限,包括:
通过所述待校验节点的inode节点得到所述待校验节点的ACLTree节点;
通过所述待校验节点的ACLTree节点得到所述祖先节点的ACLTree;
通过所述祖先节点的ACLTree得到所述祖先节点的inode节点;
从所述祖先节点的inode节点中获取所述祖先节点的ACL权限。
其中,所述通过所述待校验节点的ACLTree节点得到所述祖先节点的ACLTree,包括:
判断所述待校验节点是否存在ACLTree;
若否,则为所述待校验节点创建ACLTree;
若是,则通过所述待校验节点的ACLTree节点得到所述祖先节点的
ACLTree。
其中,对所述祖先节点的ACL权限与所述待校验节点的ACL权限进行选择,得到最终ACL权限,包括:
判断所述祖先节点的ACL权限与所述待校验节点的ACL权限是否一致;
若否,获取所述祖先节点的ACL权限的时间戳1与所述待校验节点的ACL权限的时间戳2;
判断所述时间戳1是否早于所述时间戳2;
若是,则将所述待校验节点的ACL权限作为最终ACL权限;
若否,则使用所述祖先节点的ACL权限作为最终ACL权限。
其中,所述使用所述祖先节点的ACL权限对所述目标节点进行校验之后,还包括:
将所述待校验节点的ACL权限更新为所述祖先节点的ACL权限。
一种权限校验的装置,包括:
ACL权限设置模块,用于为目标节点设置ACL权限,并返回设置结果;
祖先节点ACL权限查找模块,用于通过待校验节点的ACLTree查找所述待校验节点的祖先节点的ACL权限;
最终权限确定模块,用于对所述祖先节点的ACL权限与所述待校验节点的ACL权限进行选择,得到最终ACL权限;
校验模块,用于将所述最终ACL权限作为所述待校验节点的ACL权限进行校验。
其中,所述祖先节点ACL权限查找模块,包括:
待校验节点ACLTree节点获取单元,用于通过所述待校验节点的inode节点得到所述待校验节点的ACLTree节点;
祖先节点的ACLTree获取单元,用于通过所述待校验节点的ACLTree节点得到所述祖先节点的ACLTree;
祖先节点inode节点获取单元,用于通过所述祖先节点的ACLTree得到所述祖先节点的inode节点;
祖先节点ACL权限获取单元,用于从所述祖先节点的inode节点中获所述祖先节点的ACL权限。
其中,所述祖先节点的ACLTree获取单元,包括:
判断子单元,用于判断所述待校验节点是否存在ACLTree,若否,则调用ACLTree创建子单元,若是,则调用祖先节点ACLTree获取子单元;
所述ACLTree创建子单元,用于为所述待校验节点创建ACLTree;
所述祖先节点ACLTree获取子单元,用于通过所述待校验节点的
ACLTree节点得到所述祖先节点的ACLTree。
其中,所述校验模块,包括:
第一判断单元,用于判断所述祖先节点的ACL权限与所述待校验节点的ACL权限是否一致,若否,调用时间戳获取单元;
所述时间戳获取单元,用于获取所述祖先节点的ACL权限的时间戳1与所述待校验节点的ACL权限的时间戳2;
第二判断单元,用于判断时间戳1是否早于时间戳2,若是,则将所述待校验节点的ACL权限作为最终ACL权限;若否,则使用所述祖先节点的
ACL权限作为最终ACL权限。
其中,校验模块还包括:
ACL权限更新单元,用于将所述待校验节点的ACL权限更新为所述祖先节点的ACL权限。
本发明提供的一种权限校验的方法,为目标节点设置ACL权限,并返回设置结果;通过待校验节点的ACLTree查找所述待校验节点的祖先节点的ACL权限;对所述祖先节点的ACL权限与所述待校验节点的ACL权限进行选择,得到最终ACL权限;将所述最终ACL权限作为所述待校验节点的
ACL权限进行校验。
由此可见,本发明提供的一种权限校验的方法,只需要对待设置ACL权限的目标节点进行权限设置,通过ACLTree找到这些子目录的祖先节点的权限作为子目录的权限进行校验,而不需要对其下层的所有子目录或文件进行遍历、设置ACL权限,因此设置ACL权限的时间有了明显缩短,用户体验也有了明显的改善。同时本发明通过使用选择祖先节点ACL权限或待校验节点的ACL权限对待校验节点进行权限校验,不会影响目标目录的子目录或文件的正常权限校验的结果。本发明还提供一种权限校验的装置,同样可以实现上述技术效果。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例公开的一种权限设置的方法流程图;
图2为本发明实施例公开的一种具体的权限设置的方法流程图;
图3为本发明实施例公开的一种具体的权限设置的方法流程图;
图4为本发明实施例公开的一种权限设置的装置结构示意图;
图5为本发明实施例公开的一种具体的权限设置的装置结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例公开了一种权限设置的方法,以缩短权限设置的时间。
参照图1,本发明实施例提供的一种权限设置的方法,包括:
S101,为目标节点设置ACL权限,并返回设置结果。
具体地,用户通过客户端发起为目标节点设置ACL权限的操作,目标节点的ACL权限设置完成后立即向客户端返回设置结果,不再进行对其子节点的权限的设置。需要说明的是,本方案中将需要设置ACL权限的节点作为目标节点,例如该节点可以为根节点或者根节点下的任意一个子节点。
S102,通过待校验节点的ACLTree查找所述待校验节点的祖先节点的ACL权限。
在本方案中设置某一节点的ACL权限后,不再遍历及设置其子目录或文件的ACL权限,而其子目录或文件的实际ACL权限应随着这个节点ACL权限的更新而更新。例如在目录A下有目录B和文件F,当使用本方案对A目录进行ACL权限设置时,只需要对A本身进行权限的设置,不需要对目录B和文件F进行遍历设置ACL权限,但此时B、F拥有的ACL权限为A的ACL权限。因此,当需要校验此节点的子目录的或文件的权限时,需要将此节点的ACL权限作为子节点或文件的权限进行校验。其中这个节点相对于其子节点或文件来说是祖先节点。
需要说明的是,待校验节点中有ACLTree结构,校验一个节点的权限时,可以通过其ACLTree查找到其祖先节点,并获取得到祖先节点的ACL权限。
S103,对所述祖先节点的ACL权限与所述待校验节点的ACL权限进行选择,得到最终ACL权限。
需要说明的是,待校验节点和其祖先节点可能都作为目标节点进行过ACL权限的设置,比如节点A/B/C/File,第一次为A进行权限的设置,设置权限为Q1,则此时A下所有节点均有Q1权限,但为了降低用户对File的使用权限,将File的权限进一步进行设置为Q2,使其权限更小,此时,对File进行权限校验时,则不能通过其祖先节点的权限进行校验,而是通过自己的ACL权限进行校验。相反,如果File先设置了权限Q2,之后将A节点进行更新,使其拥有较大权限的Q1,此时A节点下所有节点均更新为Q1权限,File也被更新为了Q1权限,此时就不能直接用FILE的权限进行校验,而是需要获得到它的祖先目录的ACL权限进行校验。
因此,需要在待校验节点的ACL权限与其祖先节点的ACL权限中选择出一个ACL权限作为最终ACL权限。
S104,将所述最终ACL权限作为所述待校验节点的ACL权限进行校验。
具体地,将通过上一步骤选择后确定的最终ACL权限作为待校验节点的ACL权限进行校验。由此可见,本发明提供的一种权限设置的方法,只需要对待设置ACL权限的目标节点进行权限设置,而不需要对其下层的所有子目录或文件进行遍历、设置ACL权限,因此设置ACL权限的时间有了明显缩短,用户体验也有了明显的改善。同时本发明通过使用选择祖先节点ACL权限或待校验节点的ACL权限对待校验节点进行权限校验,不会影响目标目录的子目录或文件的正常权限校验的结果。
本发明实施例提供一种具体的权限设置的方法,区别于上一实施例,本发明实施例对上一实施例的S102做了具体地限定,参照图2,S102具体包括:
S102a,通过所述待校验节点的inode节点得到所述待校验节点的ACLTree节点。
需要说明的是,每一个节点中有一个inode节点,inode节点中保存着这个节点的信息,其中包括权限信息和与这个inode节点对应的ACLTree节点,因此通过对待校验节点进行操作,得到待校验节点的inode节点,就可以从inode节点中获得到待校验节点的ACLTree节点。
S102b,通过所述待校验节点的ACLTree节点得到所述祖先节点的ACLTree。
需要说明的是,ACLTree结构中保存着距离此待校验节点最近的设置过ACL权限的ACLTree的指针,因此在本方案中可以通过待校验节点的ACLTree节点找到其设置过ACL权限的祖先节点的ACLTree。
S102c,通过所述祖先节点的ACLTree得到所述祖先节点的inode节点。
需要说明的是,每个节点的ACLTree结构与这个节点的inode节点对应,因此通过祖先节点的ACLTree可以得到祖先节点的inode节点。
S103d,从所述祖先节点的inode节点中获取所述祖先节点的ACL权限。
具体地,由于一个节点inode节点中保存着这个节点的ACL权限信息,因此可以从祖先节点的inode节点中获取祖先节点的ACL权限。
因此,本发明提供的一种权限校验的方法,只需要对待设置ACL权限的目标节点进行权限设置,而不需要对其下层的所有子目录或文件进行遍历、设置ACL权限,因此设置ACL权限的时间有了明显缩短,用户体验也有了明显的改善。同时,校验设置ACL权限后的目标目录的子目录权限时,通过目录的ACLTree的指针找到祖先目录的ACLTree,最终通过祖先目录的ACLTree得到祖先目录的inode节点,将inode节点中祖先目录的权限作为祖先目录下的子目录的权限进行校验,因此,本方法缩短权限设置时间的同时,不影响权限的校验结果。
本发明实施例提供一种具体的权限校验的方法,区别于上述实施例,本发明实施例对S102b做了具体地限定,其他内容与上一实施例大致相同,具体内容可以参照上一实施例,此处不再赘述。具体地,S102b包括:
判断所述待校验节点是否存在ACLTree;
若否,则为所述待校验节点创建ACLTree;
若是,则通过所述待校验节点的ACLTree节点得到所述祖先节点的ACLTree。
通过本方案校验节点的权限时,需要为每个节点创建一个ACLTree结构,以便通过这个节点的ACLTree查找到其设置过ACL权限的祖先节点,如果这个节点已经有ACLTree结构,则可以直接使用,不需要再次创建。
具体地,首先判断待校验节点是否已有ACLTree,如果没有需要先为其创建ACLTree。需要说明的是,在实际设置过程中,在设置了ACL权限的节点中添加标志V=1,未设置的节点中标志V=0。
当校验节点的权限时,沿着节点的路径对各个节点依次压栈,每一次压栈都会弹出此次压栈的节点的inode节点,inode节点中有此待校验节点的权限信息以及标志位信息。例如节点为A/B/C/FILE,沿着其路径FILE->C->B->A的顺序进行压栈,并且在每次压栈时弹出对应节点的inode节点,判断这个节点标志位V是否为1,例如A的标志未若为1,则说明A为设置过ACL权限的节点,将其作为祖先节点,判断其是否已有ACLTree结构,如果没有,则在对上为A创建一个ACLTree对象。继续压栈到FILE,并为FILE创建ACLTree对象。需要说明的是,每个ACLTree中保存着指向距离其最近的设置过ACL属性的上层节点的ACLTree的指针,比如,FILE的ACLTree中保存着指向A的ACLTree的指针。
如果待校验节点已有ACLtree则直接通过所述待校验节点的ACLTree节点得到所述祖先节点的ACLTree。
由于权限的校验是从上至下校验,指针指向的设置过ACL权限的节点为此待校验节点的上层节点,即祖先节点。下次获取这个节点的权限时,可以直接通过指针获取祖先节点的权限。
需要说明的是,当待校验节点的上层节点的ACL权限发生变化时,需要对上层节点对应的ACLTree节点析构,并将此上层节点作为其下层节点的祖先的指向,重新赋值为空,再一次校验此上层节点的下层节点时,重新按照本实施例的方法重新压栈找到最新的有效的ACL权限。
本发明实施例提供的方法通过为节点分配ACLTree并在节点中保存一个指向设置过ACL权限的最近的祖先节点的ACLTree,因此再设置ACL权限时,只需设置某一目录的ACL权限,若校验其子目录的ACL权限,便可以通过指针找到已设置ACL权限的祖先目录,使用祖先目录的权限进行校验,这样既节省了权限设置的时间,即只需要设置目标目录的权限而不需要对其子目录设置,同时也不影响子目录权限的使用以及校验。
本发明实施例提供了一种具体的权限设置的方法,区别于上述实施例,本发明实施例对上述实施例的S103做了进一步的限定,其他步骤内容与上述实施例大致相同,具体内容可以参照上述实施例,此处不再赘述。参照图3,具体地S103包括:
S103a,判断所述祖先节点的ACL权限与所述待校验节点的ACL权限是否一致。
具体地,待校验节点可能已有ACL权限,当待校验节点设有ACL权限时,首先判断待校验节点的现有的ACL权限与其祖先目录的ACL权限是否一致,如果一致,则可以将现有ACL权限进行校验。
S103b,若否,获取所述祖先节点的ACL权限的时间戳1与所述待校验节点的ACL权限的时间戳2;
具体地,如果待校验节点的现有的ACL权限与其祖先目录的ACL权限不一致,需要将最新的权限作为待校验节点的权限进行校验,则需要获取两个节点设置ACL权限的时间戳,根据两个ACL权限设置的时间,判断出哪一个节点的ACL权限为最新的。
S103c,判断所述时间戳1是否早于所述时间戳2;
S103d,若是,则将所述待校验节点的ACL权限作为最终ACL权限;
具体地,如果时间戳1早于时间戳2,则说明设置祖先节点的ACL权限的时间早于设置待校验节点的现有的ACL权限的时间,因此说明待校验节点的ACL权限为最新设置的,所以将其作为最终ACL权限进行校验。
S103e,若否,则使用所述祖先节点的ACL权限作为最终ACL权限。
具体地,如果时间戳1不早于时间戳2,则说明待校验节点的现有的ACL权限的时间早于设置祖先节点的ACL权限的时间,因此说明祖先节点的ACL权限为最新设置的,所以将其作为最终ACL权限进行校验。
本发明实施例为了减少校验的时间,提供了一种具体的权限设置的方法,基于上述实施例,本实施例在使用所述祖先节点的ACL权限对所述目标节点进行校验之后,还包括:
将所述待校验节点的ACL权限更新为所述祖先节点的ACL权限。
具体地,使用上述实施例的方法确定出最终ACL权限后,如果待校验节点此时有ACL权限且与祖先节点的ACL权限不一致,则需要将此权限与其祖先节点的ACL权限进行时间的判断,确定最终的ACL权限,为了避免再次校验此待校验节点时,还需重新进行判断,可以直接将待校验节点权限设置为祖先目录的权限,此时,两个节点权限一样,如果没有再次对这两个节点的权限更新,则不需要再次判断两个权限设置的时间。
下面对本发明实施例提供的一种权限设置的装置进行介绍,下文描述的一种权限设置的装置与上文描述的一种权限设置的方法可以相互参照。
参见图4,本发明实施例提供的一种权限设置的装置,具体包括:
ACL权限设置模块201,用于为目标节点设置ACL权限,并返回设置结果。
具体地,ACL权限设置模块201为目标节点设置ACL权限,目标节点的ACL权限设置完成后立即向客户端返回设置结果,不再进行对其子节点的权限的设置。需要说明的是,本方案中将需要设置ACL权限的节点作为目标节点,例如该节点可以为根节点或者根节点下的任意一个子节点。
祖先节点ACL权限查找模块202,用于通过待校验节点的ACLTree查找所述待校验节点的祖先节点的ACL权限;
在本方案中设置某一节点的ACL权限后,不再遍历及设置其子目录或文件的ACL权限,而其子目录或文件的实际ACL权限应随着这个节点ACL权限的更新而更新。例如在目录A下有目录B和文件F,当使用本方案对A目录进行ACL权限设置时,只需要对A本身进行权限的设置,不需要对目录B和文件F进行遍历设置ACL权限,但此时B、F拥有的ACL权限为A的ACL权限。因此,当需要校验此节点的子目录的或文件的权限时,需要将此节点的ACL权限作为子节点或文件的权限进行校验。其中这个节点相对于其子节点或文件来说是祖先节点。
需要说明的是,待校验节点中有ACLTree结构,校验一个节点的权限时,可以通过其ACLTree查找到其祖先节点,并获取得到祖先节点的ACL权限。
最终权限确定模块203,用于对所述祖先节点的ACL权限与所述待校验节点的ACL权限进行选择,得到最终ACL权限。
需要说明的是,待校验节点和其祖先节点可能都作为目标节点进行过ACL权限的设置,比如节点A/B/C/File,第一次为A进行权限的设置,设置权限为Q1,则此时A下所有节点均有Q1权限,但为了降低用户对File的使用权限,将File的权限进一步进行设置为Q2,使其权限更小,此时,对File进行权限校验时,则不能通过其祖先节点的权限进行校验,而是通过自己的ACL权限进行校验。相反,如果File先设置了权限Q2,之后将A节点进行更新,使其拥有较大权限的Q1,此时A节点下所有节点均更新为Q1权限,File也被更新为了Q1权限,此时就不能直接用FILE的权限进行校验,而是需要获得到它的祖先目录的ACL权限进行校验。
因此需要最终权限确定模块203在待校验节点的ACL权限与其祖先节点的ACL权限中选择出一个ACL权限作为最终ACL权限。
校验模块204,用于将所述最终ACL权限作为所述待校验节点的ACL权限进行校验。
具体地,校验模块204将将通过上一步骤选择后确定的最终ACL权限作为待校验节点的ACL权限进行校验。
由此可见,本发明提供的一种权限设置的装置,只需要由ACL权限设置模块201对待设置ACL权限的目标节点进行权限设置,而不需要对其下层的所有子目录或文件进行遍历、设置ACL权限,因此设置ACL权限的时间有了明显缩短,用户体验也有了明显的改善。同时本发明通过使用祖先节点ACL权限查找模块202选择祖先节点ACL权限或待校验节点的ACL权限对待校验节点进行权限校验,不会影响目标目录的子目录或文件的正常权限校验的结果。
本发明实施例提供了一种具体的权限校验的装置,区别于上一实施例,本发明实施例对祖先节点ACL权限查找模块202做了具体限定,其他内容与上一实施例内容大致相同,具体内容可以参照上述实施例相应部分,此处不再赘述。具体地,参照图5,祖先节点ACL权限查找模块202包括:
待校验节点ACLTree节点获取单元202a,用于通过所述待校验节点的inode节点得到所述待校验节点的ACLTree节点。
需要说明的是,每一个节点中有一个inode节点,inode节点中保存着这个节点的信息,其中包括权限信息和与这个inode节点对应的ACLTree节点,因此待校验节点ACLTree节点获取单元202a通过对待校验节点进行操作,得到待校验节点的inode节点,就可以从inode节点中获得到待校验节点的ACLTree节点。
祖先节点的ACLTree获取单元202b,用于通过所述待校验节点的ACLTree节点得到所述祖先节点的ACLTree。
具体地,祖先节点的ACLTree获取单元202b通过待校验节点的ACLTree节点找到祖先节点的ACLTree。需要说明的是,ACLTree结构中保存着距离此待校验节点最近的设置过ACL权限的ACLTree的指针,因此可以通过待校验节点的ACLTree节点找到其设置过ACL权限的祖先节点的ACLTree。
祖先节点inode节点获取单元202c,用于通过所述祖先节点的ACLTree得到所述祖先节点的inode节点。
需要说明的是,ACLTree结构与inode节点对应,因此祖先节点inode节点获取单元202c通过祖先节点的ACLTree可以得到祖先节点的inode节点。
祖先节点ACL权限获取单元202d,用于从所述祖先节点的inode节点中获所述祖先节点的ACL权限。
具体地,inode节点中保存着节点的ACL权限,因此祖先节点ACL权限获取单元202d从祖先节点的inode节点中获取所述祖先节点的ACL权限。
因此,本发明提供的一种权限校验的方法,,只需要对待设置ACL权限的目标节点进行权限设置,而不需要对其下层的所有子目录或文件进行遍历、设置ACL权限,因此设置ACL权限的时间有了明显缩短,用户体验也有了明显的改善。同时,校验设置ACL权限后的目标目录的子目录权限时,通过目录的ACLTree的指针找到祖先目录的ACLTree,最终祖先节点ACL权限获取单元202d通过祖先目录的ACLTree得到祖先目录的inode节点,将inode节点中祖先目录的权限作为祖先目录下的子目录的权限进行校验,因此,本方法缩短权限设置时间的同时,不影响权限的校验结果。。
本发明实施例提供一种具体的权限校验的装置,区别与上一实施例,本发明实施例对祖先节点的ACLTree获取单元202b做了具体地限定,其他内容与上一实例大致相同,此处不再赘述。具体地,祖先节点的ACLTree获取单元202b包括:
判断子单元,用于判断所述待校验节点是否存在ACLTree,若否,则调用ACLTree创建子单元,若是,则调用祖先节点ACLTree获取子单元;
所述ACLTree创建子单元,用于为所述待校验节点创建ACLTree;
所述祖先节点ACLTree获取子单元,用于通过所述待校验节点的ACLTree节点得到所述祖先节点的ACLTree。
通过本方案校验节点的权限时,需要为每个节点创建一个ACLTree结构,以便通过这个节点的ACLTree查找到其设置过ACL权限的祖先节点,如果这个节点已经有ACLTree结构,则可以直接使用,不需要再次创建。
具体地,首先通过判断子单元判断待校验节点是否已有ACLTree,如果没有则需要为其创建一个ACLTree对象。需要说明的是,在实际设置过程中,在设置了ACL权限的节点中添加标志V=1,未设置的节点中标志V=0。
当校验节点的权限时,沿着节点的路径对各个节点依次压栈,每一次压栈都会弹出此次压栈的节点的inode节点,inode节点中有此待校验节点的权限信息以及标志位信息。例如节点为A/B/C/FILE,沿着其路径FILE->C->B->A的顺序进行压栈,并且在每次压栈时弹出对应节点的inode节点,判断这个节点标志位V是否为1,例如A的标志未若为1,则说明A为设置过ACL权限的节点,将其作为祖先节点,判断其是否已有ACLTree结构,如果没有,则通过ACLTree创建子单元在对上为A创建一个ACLTree对象。继续压栈到FILE,并通过ACLTree创建子单元为FILE创建ACLTree对象。需要说明的是,每个ACLTree中保存着指向距离其最近的设置过ACL属性的上层节点的ACLTree的指针,比如,FILE的ACLTree中保存着指向A的ACLTree的指针。
如果待校验节点已有ACLtree则直接通过所述待校验节点的ACLTree节点得到所述祖先节点的ACLTree。
这个ACLTree与待校验节点的inode节点对应,并且保存着指向最近的设置过ACL权限的上层节点的指针;如果待校验节点已有ACLTree,则直接从ACLTree中找到其祖先节点,并将祖先节点的ACL权限作为待校验节点的ACL权限进行校验。
需要说明的是,当待校验节点的上层节点的ACL权限发生变化时,需要对上层节点对应的ACLTree节点析构,并将此上层节点作为其下层节点的祖先的指向,重新赋值为空,再一次校验此上层节点的下层节点时,重新找到最新的有效的ACL权限。
本发明实施例提供的方法通过ACLTree创建子单元为节点分配ACLTree并在节点中保存一个指向设置过ACL权限的最近的祖先节点的ACLTree,因此再设置ACL权限时,只需设置某一目录的ACL权限,若校验其子目录的ACL权限,便可以通过指针找到已设置ACL权限的祖先目录,使用祖先目录的权限进行校验,这样既节省了权限设置的时间,即只需要设置目标目录的权限而不需要对其子目录设置,同时也不影响子目录权限的使用以及校验。
本发明实施例提供了一种具体的权限设置的装置,区别于上述实施例,本发明实施例对上述实施例的最终权限确定模块203做了具体地限定,其他内容与上述实施例的内容大致相同,对应部分可以参照上述实施例,此处不再赘述,具体地,最终权限确定模块203包括:
第一判断单元203a,用于判断所述祖先节点的ACL权限与所述待校验节点的ACL权限是否一致,若否,调用时间戳获取单元。
具体地,待校验节点可能已有ACL权限,当待校验节点设有ACL权限时,第一判断单元203a首先判断待校验节点的现有的ACL权限与其祖先目录的ACL权限是否一致,如果一致,则可以将现有ACL权限进行校验。
所述时间戳获取单元203b,用于获取所述祖先节点的ACL权限的时间戳1与所述待校验节点的ACL权限的时间戳2。
具体地,如果待校验节点的现有的ACL权限与其祖先目录的ACL权限不一致,需要将最新的权限作为待校验节点的权限进行校验,则需要获取两个节点设置ACL权限的时间戳,根据两个ACL权限设置的时间,判断出哪一个节点的ACL权限为最新的。
第二判断单元203c,用于判断时间戳1是否早于时间戳2,若是,则将所述待校验节点的ACL权限作为最终ACL权限;若否,则使用所述祖先节点的ACL权限作为最终ACL权限。
具体地,第二判断单元203c判断时间戳1是否早于时间戳2,也就是说,判断哪一个节点的ACL权限是最新设置的。
如果时间戳1早于时间戳2,则说明设置祖先节点的ACL权限的时间早于设置待校验节点的现有的ACL权限的时间,因此说明待校验节点的ACL权限为最新设置的,所以将其作为最终ACL权限进行校验。如果时间戳1不早于时间戳2,则说明待校验节点的现有的ACL权限的时间早于设置祖先节点的ACL权限的时间,因此说明祖先节点的ACL权限为最新设置的,所以将其作为最终ACL权限进行校验。
本发明实施例为了减少校验的时间,提供了一种具体的权限设置的装置,基于上述实施例,本实施基于校验模块204,还包括:
ACL权限更新单元,用于将所述待校验节点的ACL权限更新为所述祖先节点的ACL权限。
具体地,使用上述实施例的装置确定出最终ACL权限后,如果待校验节点此时有ACL权限且与祖先节点的ACL权限不一致,则需要将此权限与其祖先节点的ACL权限进行时间的判断,确定最终的ACL权限,为了避免再次校验此待校验节点时,还需重新进行判断,可以直接将待校验节点权限设置为祖先目录的权限,此时,两个节点权限一样,如果没有再次对这两个节点的权限更新,则不需要再次判断两个权限设置的时间。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
Claims (10)
1.一种权限校验的方法,其特征在于,包括:
为目标节点设置ACL权限,并返回设置结果;
通过待校验节点的ACLTree查找所述待校验节点的祖先节点的ACL权限;
对所述祖先节点的ACL权限与所述待校验节点的ACL权限进行选择,得到最终ACL权限;
将所述最终ACL权限作为所述待校验节点的ACL权限进行校验。
2.根据权利要求1所述的方法,其特征在于,所述通过待校验节点的ACLTree查找所述待校验节点的祖先节点的ACL权限,包括:
通过所述待校验节点的inode节点得到所述待校验节点的ACLTree节点;
通过所述待校验节点的ACLTree节点得到所述祖先节点的ACLTree;
通过所述祖先节点的ACLTree得到所述祖先节点的inode节点;
从所述祖先节点的inode节点中获取所述祖先节点的ACL权限。
3.根据权利要求2所述的方法,其特征在于,所述通过所述待校验节点的ACLTree节点得到所述祖先节点的ACLTree,包括:
判断所述待校验节点是否存在ACLTree;
若否,则为所述待校验节点创建ACLTree;
若是,则通过所述待校验节点的ACLTree节点得到所述祖先节点的ACLTree。
4.根据权利要求1-3中任意一项所述的方法,其特征在于,对所述祖先节点的ACL权限与所述待校验节点的ACL权限进行选择,得到最终ACL权限,包括:
判断所述祖先节点的ACL权限与所述待校验节点的ACL权限是否一致;
若否,获取所述祖先节点的ACL权限的时间戳1与所述待校验节点的ACL权限的时间戳2;
判断所述时间戳1是否早于所述时间戳2;
若是,则将所述待校验节点的ACL权限作为最终ACL权限;
若否,则使用所述祖先节点的ACL权限作为最终ACL权限。
5.根据权利要求4所述的方法,其特征在于,所述使用所述祖先节点的ACL权限对所述目标节点进行校验之后,还包括:
将所述待校验节点的ACL权限更新为所述祖先节点的ACL权限。
6.一种权限校验的装置,其特征在于,包括:
ACL权限设置模块,用于为目标节点设置ACL权限,并返回设置结果;
祖先节点ACL权限查找模块,用于通过待校验节点的ACLTree查找所述待校验节点的祖先节点的ACL权限;
最终权限确定模块,用于对所述祖先节点的ACL权限与所述待校验节点的ACL权限进行选择,得到最终ACL权限;
校验模块,用于将所述最终ACL权限作为所述待校验节点的ACL权限进行校验。
7.根据权利要求6所述的装置,其特征在于,所述祖先节点ACL权限查找模块,包括:
待校验节点ACLTree节点获取单元,用于通过所述待校验节点的inode节点得到所述待校验节点的ACLTree节点;
祖先节点的ACLTree获取单元,用于通过所述待校验节点的ACLTree节点得到所述祖先节点的ACLTree;
祖先节点inode节点获取单元,用于通过所述祖先节点的ACLTree得到所述祖先节点的inode节点;
祖先节点ACL权限获取单元,用于从所述祖先节点的inode节点中获所述祖先节点的ACL权限。
8.根据权利要求7所述的装置,其特征在于,所述祖先节点的ACLTree获取单元,包括:
判断子单元,用于判断所述待校验节点是否存在ACLTree,若否,则调用ACLTree创建子单元,若是,则调用祖先节点ACLTree获取子单元;
所述ACLTree创建子单元,用于为所述待校验节点创建ACLTree;
所述祖先节点ACLTree获取子单元,用于通过所述待校验节点的ACLTree节点得到所述祖先节点的ACLTree。
9.根据权利要求6-8中任意一项所述的装置,其特征在于,所述校验模块,包括:
第一判断单元,用于判断所述祖先节点的ACL权限与所述待校验节点的ACL权限是否一致,若否,调用时间戳获取单元;
所述时间戳获取单元,用于获取所述祖先节点的ACL权限的时间戳1与所述待校验节点的ACL权限的时间戳2;
第二判断单元,用于判断时间戳1是否早于时间戳2,若是,则将所述待校验节点的ACL权限作为最终ACL权限;若否,则使用所述祖先节点的ACL权限作为最终ACL权限。
10.根据权利要求9所述的装置,其特征在于,校验模块还包括:
ACL权限更新单元,用于将所述待校验节点的ACL权限更新为所述祖先节点的ACL权限。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710480717.4A CN107277016B (zh) | 2017-06-22 | 2017-06-22 | 一种权限校验的方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710480717.4A CN107277016B (zh) | 2017-06-22 | 2017-06-22 | 一种权限校验的方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107277016A true CN107277016A (zh) | 2017-10-20 |
CN107277016B CN107277016B (zh) | 2020-05-29 |
Family
ID=60068096
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710480717.4A Active CN107277016B (zh) | 2017-06-22 | 2017-06-22 | 一种权限校验的方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107277016B (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107679420A (zh) * | 2017-10-23 | 2018-02-09 | 郑州云海信息技术有限公司 | 一种基于分布式文件系统的权限设置方法及系统 |
CN108989300A (zh) * | 2018-07-03 | 2018-12-11 | 郑州云海信息技术有限公司 | 一种存储环境ip权限控制方法与系统 |
CN109002727A (zh) * | 2018-06-28 | 2018-12-14 | 郑州云海信息技术有限公司 | 一种分布式存储acl快速响应权限校验的方法 |
CN109190406A (zh) * | 2018-09-03 | 2019-01-11 | 郑州云海信息技术有限公司 | 一种分布式存储权限校验方法、权限查询方法及装置 |
CN111310145A (zh) * | 2020-03-06 | 2020-06-19 | 北京字节跳动网络技术有限公司 | 用户权限验证方法、装置以及电子设备 |
CN116720172A (zh) * | 2023-08-07 | 2023-09-08 | 四川神州行网约车服务有限公司 | 系统权限的验证方法、装置、计算机设备及可读存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101651701A (zh) * | 2008-08-11 | 2010-02-17 | 中国移动通信集团公司 | 一种实现服务器管理终端设备的方法、系统及设备 |
CN101674334A (zh) * | 2009-09-30 | 2010-03-17 | 华中科技大学 | 一种网络存储设备的访问控制方法 |
CN103248506A (zh) * | 2012-02-08 | 2013-08-14 | 华为终端有限公司 | 设备管理的权限控制方法和终端 |
US9215148B2 (en) * | 2008-10-14 | 2015-12-15 | Huawei Technologies Co., Ltd. | Method and device for terminal device management based on right control |
CN105488431A (zh) * | 2015-11-30 | 2016-04-13 | 布比(北京)网络技术有限公司 | 区块链系统权限管理方法和装置 |
-
2017
- 2017-06-22 CN CN201710480717.4A patent/CN107277016B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101651701A (zh) * | 2008-08-11 | 2010-02-17 | 中国移动通信集团公司 | 一种实现服务器管理终端设备的方法、系统及设备 |
US9215148B2 (en) * | 2008-10-14 | 2015-12-15 | Huawei Technologies Co., Ltd. | Method and device for terminal device management based on right control |
CN101674334A (zh) * | 2009-09-30 | 2010-03-17 | 华中科技大学 | 一种网络存储设备的访问控制方法 |
CN103248506A (zh) * | 2012-02-08 | 2013-08-14 | 华为终端有限公司 | 设备管理的权限控制方法和终端 |
CN105488431A (zh) * | 2015-11-30 | 2016-04-13 | 布比(北京)网络技术有限公司 | 区块链系统权限管理方法和装置 |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107679420A (zh) * | 2017-10-23 | 2018-02-09 | 郑州云海信息技术有限公司 | 一种基于分布式文件系统的权限设置方法及系统 |
CN109002727A (zh) * | 2018-06-28 | 2018-12-14 | 郑州云海信息技术有限公司 | 一种分布式存储acl快速响应权限校验的方法 |
CN108989300A (zh) * | 2018-07-03 | 2018-12-11 | 郑州云海信息技术有限公司 | 一种存储环境ip权限控制方法与系统 |
CN108989300B (zh) * | 2018-07-03 | 2021-03-09 | 苏州浪潮智能科技有限公司 | 一种存储环境ip权限控制方法与系统 |
CN109190406A (zh) * | 2018-09-03 | 2019-01-11 | 郑州云海信息技术有限公司 | 一种分布式存储权限校验方法、权限查询方法及装置 |
CN111310145A (zh) * | 2020-03-06 | 2020-06-19 | 北京字节跳动网络技术有限公司 | 用户权限验证方法、装置以及电子设备 |
CN116720172A (zh) * | 2023-08-07 | 2023-09-08 | 四川神州行网约车服务有限公司 | 系统权限的验证方法、装置、计算机设备及可读存储介质 |
CN116720172B (zh) * | 2023-08-07 | 2024-01-30 | 四川神州行网约车服务有限公司 | 系统权限的验证方法、装置、计算机设备及可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN107277016B (zh) | 2020-05-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107277016A (zh) | 一种权限校验的方法及装置 | |
CN107957957A (zh) | 测试用例的获取方法和装置 | |
CN106610854B (zh) | 一种模型更新方法及装置 | |
US20080005107A1 (en) | Keyword management apparatus | |
CN104123126B (zh) | 一种用于生成合并冲突记录列表的方法和装置 | |
CN109766114B (zh) | 一种补丁文件的处理方法和装置 | |
Paixao et al. | CROP: Linking code reviews to source code changes | |
CN105453050A (zh) | 开发辅助系统 | |
CN107688891B (zh) | 行政区域划分验证方法、装置、服务器和存储介质 | |
CN106897226A (zh) | 一种持续集成测试的方法以及装置 | |
CN109189859B (zh) | 区块链网络中的节点初始化方法和装置 | |
CN105335246B (zh) | 一种基于问答网站分析的程序崩溃缺陷自动修复方法 | |
CN107733985A (zh) | 一种云计算系统功能组件部署方法及装置 | |
CN106294352A (zh) | 一种文件处理方法、装置和文件系统 | |
CN106682186A (zh) | 文件访问控制列表管理方法和相关装置和系统 | |
CN106371881A (zh) | 一种用于服务器内程序版本更新的方法和系统 | |
CN106461405A (zh) | 更新导航数据库的单个区域 | |
CN106682003A (zh) | 分布式存储命名空间的路径分割映射方法和装置 | |
CN109542664A (zh) | 基于人工智能的文件校验方法、装置及计算机设备 | |
CN105653657A (zh) | 一种商品的推荐方法及装置 | |
CN109189384A (zh) | 一种代码的复用方法及装置 | |
CN106843899A (zh) | 一种基于Node.js平台的网页开发方法及装置 | |
CN108268209A (zh) | 一种cdn系统中的数据存储方法及cdn系统 | |
CN109977366A (zh) | 一种目录生成方法及装置 | |
CN102945155B (zh) | 一种用于检测Linux操作系统软件包及其依赖关系缺失的方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |