一种基于分布式NFS-Ganesha V4 ACL的权限控制方法及装置转让专利

申请号 : CN201911415256.8

文献号 : CN111191265B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 李景要

申请人 : 苏州浪潮智能科技有限公司

摘要 :

本发明提出了一种基于分布式NFS‑GaneshaV4ACL的权限控制方法,其特征是,包括:步骤S1,NFS‑Ganesha v4客户端、NFS‑Ganesha v4服务端分别对文件的ACL权限设置用户映射;步骤S2,NFS‑Ganesha v4客户端获取ACL权限用户映射,完成ACL调用,本发明还提出了一种基于分布式NFS‑Ganesha V4ACL的权限控制装置,使得现有NFS‑Ganesha v4版本ACL权限控制能够兼容“user@domain”字符串形式的用户管理,可以实现对文件和目录的用户访问进行更精细的控制,提高了NFS访问共享数据的安全性。

权利要求 :

1.一种基于分布式NFS‑Ganesha V4 ACL的权限控制方法,其特征是,包括:步骤S1,NFS‑Ganesha v4客户端、NFS‑Ganesha v4服务端分别对文件的ACL权限设置用户映射;所述步骤S1包括:步骤S11,NFS‑Ganesha V4客户端对NFSv4 ACL三元组设置文件访问控制权限,其中,NFSv4 ACL三元组包括用户实体;

步骤S12,NFS‑Ganesha V4客户端将用户实体解析为数字ID,然后将POSIX ACL三元组发送给内核,其中,POSIX ACL三元组包括数字ID,内核接收到POSIX ACL三元组后,将数字ID映射为用户实体;

步骤S13,NFS‑Ganesha v4客户端将POSIX ACL映射为NFSv4 ACL;

步骤S14,NFS‑Ganesha v4服务端对NFSv4 ACL中权限进行设置;

步骤S15,NFS‑Ganesha v4服务端将用户实体映射为数字ID;

步骤S16,NFS‑Ganesha v4服务端将NFSv4 ACL映射为POSIX ACL;

步骤S17,NFS‑Ganesha v4服务端根据用户实体与数字ID的映射关系以及NFSv4 ACL与POSIX ACL的映射关系设置POSIX ACL;

步骤S2,NFS‑Ganesha v4客户端获取ACL权限用户映射,完成ACL调用;所述步骤S2包括:步骤S21,NFS‑Ganesha v4客户端获取POSIX ACL;

步骤S22,NFS‑Ganesha v4服务端获取NFS‑Ganesha v4客户端上文件的POSIX ACL;

步骤S23,NFS‑Ganesha v4服务端对每个ACE中的数字ID映射为用户实体,其中,ACE位于POSIX ACL中;

步骤S24,NFS‑Ganesha v4服务端将POSIX ACL映射为NFSv4 ACL;

步骤S25,NFS‑Ganesha v4客户端将用户实体映射为数字ID;

步骤S26,NFS‑Ganesha客户端将NFSv4 ACL被映射成POSIX ACL;

步骤S27,在NFS‑Ganesha客户端将每个数字ID解析为用户实体,返回给用户,完成ACL调用。

2.根据权利要求1所述的基于分布式NFS‑Ganesha V4 ACL的权限控制方法,其特征是,所述NFSv4 ACL三元组包括用户实体、权限、文件,所述POSIX ACL三元组包括数字ID、权限、文件。

3.根据权利要求2所述的基于分布式NFS‑Ganesha V4 ACL的权限控制方法,其特征是,所述用户实体为用户名与域名组合的字符串。

4.一种基于分布式NFS‑Ganesha V4 ACL的权限控制装置,其特征是,包括:第一设置模块,NFS‑Ganesha v4客户端、NFS‑Ganesha v4服务端分别对文件的ACL权限设置用户映射;所述第一设置模块包括:第二设置子模块,NFS‑Ganesha V4客户端对NFSv4 ACL三元组设置文件访问控制权限,其中,NFSv4 ACL三元组包括用户实体;

第一解析子模块,NFS‑Ganesha V4客户端将用户实体解析为数字ID,然后将POSIX ACL三元组发送给内核,其中,POSIX ACL三元组包括数字ID,内核接收到POSIX ACL三元组后,将数字ID映射为用户实体;

第一映射子模块,NFS‑Ganesha v4客户端将POSIX ACL映射为NFSv4 ACL;

第三设置子模块,NFS‑Ganesha v4服务端对NFSv4 ACL中权限进行设置;

第二映射子模块,NFS‑Ganesha v4服务端将用户实体映射为数字ID;

第三映射子模块,NFS‑Ganesha v4服务端将NFSv4 ACL映射为POSIX ACL;

第四设置子模块,NFS‑Ganesha v4服务端根据用户实体与数字ID的映射关系以及NFSv4 ACL与POSIX ACL的映射关系设置POSIX ACL;

第一获取模块,NFS‑Ganesha v4客户端获取ACL权限用户映射,完成ACL调用;所述第一获取模块包括:第二获取子模块,NFS‑Ganesha v4客户端获取POSIX ACL;

第三获取子模块,NFS‑Ganesha v4服务端获取NFS‑Ganesha v4客户端上文件的POSIX ACL;

第四映射子模块,NFS‑Ganesha v4服务端对每个ACE中的数字ID映射为用户实体,其中,ACE位于POSIX ACL中;

第五映射子模块,NFS‑Ganesha v4服务端将POSIX ACL映射为NFSv4 ACL;

第六映射子模块,NFS‑Ganesha v4客户端将用户实体映射为数字ID;

第七映射子模块,NFS‑Ganesha客户端将NFSv4 ACL被映射成POSIX ACL;

第二解析子模块,在NFS‑Ganesha客户端将每个数字ID解析为用户实体,返回给用户,完成ACL调用。

5.根据权利要求4所述的基于分布式NFS‑Ganesha V4 ACL的权限控制装置,其特征是,所述NFSv4 ACL三元组包括用户实体、权限、文件,所述POSIX ACL三元组包括数字ID、权限、文件。

6.根据权利要求5所述的基于分布式NFS‑Ganesha V4 ACL的权限控制装置,其特征是,所述用户实体为用户名与域名组合的字符串。

说明书 :

一种基于分布式NFS‑Ganesha V4 ACL的权限控制方法及装置

技术领域

[0001] 本发明涉及用户权限控制领域,尤其是涉及一种基于分布式NFS‑Ganesha V4 ACL的权限控制方法及装置。

背景技术

[0002] NFSv2和NFSv3协议仅限于使用以32位无符号uid和gid数字用户或用户组为中心的用户身份识别机制。为了使NFS(network file system,网络文件系统)克服大型工作组的限制,NFS v4协议要求分别采用user@nfsv4_domain或group@nfsv4_domain的格式将文件的属主属性和属组属性作为字符串在NFSv4版本客户机与NFSv4版本服务器之间进行用户身份识别。
[0003] NFS‑Ganesha V4属于用户态网络文件系统,相比于内核态NFS,NFS‑Ganesha(network file system user‑space,即用户态网络文件系统)具有灵活的内存管理机制,在分布式文件系统中使用较为普遍。NFS‑Ganesha V4 ACL(NFS‑Ganesha v4 Access Control List,即NFSv4版本权限控制列表)相比于POSIX ACL(POSIX Access Control List即标准访问控制列表)具有优势如下:可以对文件和目录的用户访问进行更精细的控制,提高了NFS访问共享数据的安全性。
[0004] 但是现有NFS‑Ganesha v4版本ACL权限控制并不能够兼容“user@domain”字符串形式的用户管理,不利于充分发挥NFS‑Ganesha V4 ACL的优势。

发明内容

[0005] 本发明为了解决现有技术中存在的问题,创新提出了一种基于分布式NFS‑Ganesha V4 ACL的权限控制方法及装置,使得现有NFS‑Ganesha v4版本ACL权限控制能够兼容“user@domain”字符串形式的用户管理,可以实现对文件和目录的用户访问进行更精细的控制,提高了NFS访问共享数据的安全性。
[0006] 本发明第一方面提供了一种基于分布式NFS‑Ganesha V4 ACL的权限控制方法,包括:
[0007] 步骤S1,NFS‑Ganesha v4客户端、NFS‑Ganesha v4服务端分别对文件的ACL权限设置用户映射;
[0008] 步骤S2,NFS‑Ganesha v4客户端获取ACL权限用户映射,完成ACL调用。
[0009] 结合第一方面,在第一方面第一种可能的实现方式中,所述步骤S1包括:
[0010] 步骤S11,NFS‑Ganesha V4客户端对NFSv4 ACL三元组设置文件访问控制权限,其中,NFSv4 ACL三元组包括用户实体;
[0011] 步骤S12,NFS‑Ganesha V4客户端将用户实体解析为数字ID,然后将POSIX ACL三元组发送给内核,其中,POSIX ACL三元组包括数字ID,内核接收到POSIX ACL三元组后,将数字ID映射为用户实体;
[0012] 步骤S13,NFS‑Ganesha v4客户端将POSIX ACL映射为NFSv4 ACL;
[0013] 步骤S14,NFS‑Ganesha v4服务端对NFSv4 ACL中权限进行设置;
[0014] 步骤S15,NFS‑Ganesha v4服务端将用户实体映射为数字ID;
[0015] 步骤S16,NFS‑Ganesha v4服务端将NFSv4 ACL映射为POSIX ACL;
[0016] 步骤S17,NFS‑Ganesha v4服务端根据用户实体与数字ID的映射关系以及NFSv4 ACL与POSIX ACL的映射关系设置POSIXACL。
[0017] 进一步地,所述步骤S2包括:
[0018] 步骤S21,NFS‑Ganesha v4客户端获取POSIX ACL;
[0019] 步骤S22,NFS‑Ganesha v4服务端获取NFS‑Ganesha v4客户端上文件的POSIX ACL;
[0020] 步骤S23,NFS‑Ganesha v4服务端对每个ACE中的数字ID映射为用户实体,其中,ACE位于POSIX ACL中;
[0021] 步骤S24,NFS‑Ganesha v4服务端将POSIX ACL映射为NFSv4 ACL;
[0022] 步骤S25,NFS‑Ganesha v4客户端将用户实体映射为数字ID;
[0023] 步骤S26,NFS‑Ganesha客户端将NFSv4 ACL被映射成POSIX ACL;
[0024] 步骤S27,在NFS‑Ganesha客户端将每个数字ID解析为用户实体,返回给用户,完成ACL调用。
[0025] 结合第一方面,在第一方面第二种可能的实现方式中,所述NFSv4 ACL三元组包括用户实体、权限、文件,所述POSIX ACL三元组包括数字ID、权限、文件。
[0026] 进一步地,所述用户实体为用户名与域名组合的字符串。
[0027] 本发明第二方面提供了一种基于分布式NFS‑Ganesha V4 ACL的权限控制装置,包括:
[0028] 第一设置模块,NFS‑Ganesha v4客户端、NFS‑Ganesha v4服务端分别对文件的ACL权限设置用户映射;
[0029] 第一获取模块,NFS‑Ganesha v4客户端获取ACL权限用户映射,完成ACL调用。
[0030] 结合第二方面,在第二方面第一种可能的实现方式中,所述第一设置模块包括:
[0031] 第二设置子模块,NFS‑Ganesha V4客户端对NFSv4 ACL三元组设置文件访问控制权限,其中,NFSv4 ACL三元组包括用户实体;
[0032] 第一解析子模块,NFS‑Ganesha V4客户端将用户实体解析为数字ID,然后将POSIX ACL三元组发送给内核,其中,POSIX ACL三元组包括数字ID,内核接收到POSIX ACL三元组后,将数字ID映射为用户实体;
[0033] 第一映射子模块,NFS‑Ganesha v4客户端将POSIX ACL映射为NFSv4 ACL;
[0034] 第三设置子模块,NFS‑Ganesha v4服务端对NFSv4 ACL中权限进行设置;
[0035] 第二映射子模块,NFS‑Ganesha v4服务端将用户实体映射为数字ID;
[0036] 第三映射子模块,NFS‑Ganesha v4服务端将NFSv4 ACL映射为POSIX ACL;
[0037] 第四设置子模块,NFS‑Ganesha v4服务端根据用户实体与数字ID的映射关系以及NFSv4 ACL与POSIX ACL的映射关系设置POSIX ACL。
[0038] 进一步地,所述第一获取模块包括:
[0039] 第二获取子模块,NFS‑Ganesha v4客户端获取POSIX ACL;
[0040] 第三获取子模块,NFS‑Ganesha v4服务端获取NFS‑Ganesha v4客户端上文件的POSIX ACL;
[0041] 第四映射子模块,NFS‑Ganesha v4服务端对每个ACE中的数字ID映射为用户实体,其中,ACE位于POSIX ACL中;
[0042] 第五映射子模块,NFS‑Ganesha v4服务端将POSIX ACL映射为NFSv4 ACL;
[0043] 第六映射子模块,NFS‑Ganesha v4客户端将用户实体映射为数字ID;
[0044] 第七映射子模块,NFS‑Ganesha客户端将NFSv4 ACL被映射成POSIX ACL;
[0045] 第二解析子模块,在NFS‑Ganesha客户端将每个数字ID解析为用户实体,返回给用户,完成ACL调用。
[0046] 结合第二方面,在第二方面第二种可能的实现方式中,所述NFSv4 ACL三元组包括用户实体、权限、文件,所述POSIX ACL三元组包括数字ID、权限、文件。
[0047] 进一步地,所述用户实体为用户名与域名组合的字符串。
[0048] 本发明采用的技术方案包括以下技术效果:
[0049] 本发明使得现有NFS‑Ganesha v4版本ACL权限控制能够兼容“user@domain”字符串形式的用户管理,可以实现对文件和目录的用户访问进行更精细的控制,提高了NFS访问共享数据的安全性。
[0050] 本发明通过通过以“user@domain”字符串形式的用户标识与以数字uid/gid形式的用户标识之间的映射关系,来标识NFS‑Ganesha v4版本用户,方便用户管理,提高了管理效率。
[0051] 应当理解的是以上的一般描述以及后文的细节描述仅是示例性和解释性的,并不能限制本发明。

附图说明

[0052] 为了更清楚说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单介绍,显而易见的,对于本领域普通技术人员而言,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0053] 图1为本发明方案中实施例一方法的流程示意图;
[0054] 图2为本发明方案中实施例一方法中步骤S1的流程示意图;
[0055] 图3为本发明方案中实施例一方法中步骤S2的流程示意图;
[0056] 图4为本发明方案中实施例二装置的结构示意图;
[0057] 图5为本发明方案中实施例二装置中第一设置模块的结构示意图;
[0058] 图6为本发明方案中实施例二装置中第一获取模块的结构示意图。

具体实施方式

[0059] 为能清楚说明本方案的技术特点,下面通过具体实施方式,并结合其附图,对本发明进行详细阐述。下文的公开提供了许多不同的实施例或例子用来实现本发明的不同结构。为了简化本发明的公开,下文中对特定例子的部件和设置进行描述。此外,本发明可以在不同例子中重复参考数字和/或字母。这种重复是为了简化和清楚的目的,其本身不指示所讨论各种实施例和/或设置之间的关系。应当注意,在附图中所图示的部件不一定按比例绘制。本发明省略了对公知组件和处理技术及工艺的描述以避免不必要地限制本发明。
[0060] 实施例一
[0061] 如图1所示,本发明提供了一种基于分布式NFS‑Ganesha V4 ACL的权限控制方法,包括:
[0062] 步骤S1,NFS‑Ganesha v4客户端、NFS‑Ganesha v4服务端分别对文件的ACL权限设置用户映射;
[0063] 步骤S2,NFS‑Ganesha v4客户端获取ACL权限用户映射,完成ACL调用。
[0064] 其中,如图2所示,在步骤S1中,具体包括:
[0065] 步骤S11,NFS‑Ganesha V4客户端对NFSv4 ACL三元组设置文件访问控制权限,其中,NFSv4 ACL三元组包括用户实体;
[0066] 步骤S12,NFS‑Ganesha V4客户端将用户实体解析为数字ID,然后将POSIX ACL三元组发送给内核,其中,POSIX ACL三元组包括数字ID,内核接收到POSIX ACL三元组后,将数字ID映射为用户实体;
[0067] 步骤S13,NFS‑Ganesha v4客户端将POSIX ACL映射为NFSv4 ACL;
[0068] 步骤S14,NFS‑Ganesha v4服务端对NFSv4 ACL中权限进行设置;
[0069] 步骤S15,NFS‑Ganesha v4服务端将用户实体映射为数字ID;
[0070] 步骤S16,NFS‑Ganesha v4服务端将NFSv4 ACL映射为POSIX ACL;
[0071] 步骤S17,NFS‑Ganesha v4服务端根据用户实体与数字ID的映射关系以及NFSv4 ACL与POSIX ACL的映射关系设置POSIX ACL。
[0072] 在步骤S11中,NFSv4 ACL三元组包括用户实体、权限、文件。用户实体是指“user@domain”,即使用用户名与域名组合的字符串,置文件访问控制权限具体可以是通过setfacl()命令实现。
[0073] 在步骤S12中,将用户实体“user@domain”解析为数字ID,数字ID具体包括UID或GID,以便由文件系统进行处理,具体是可以通过getpwnam()命令实现,POSIX ACL三元组包括数字ID、权限、文件,内核将数字ID映射为user@domain具体可以是通过调用rpc.idmapd进程实现,rpc.idmapd进程是指NFSv4协议中对用户ID与用户实体user@domain相互之间映射的守护进程。
[0074] 在步骤S14中,NFS‑Ganesha v4服务端通过SETATTR命令获取NFSv4 ACL,NFSv4 ACL中携带NFSv4 ACL三元组信息。
[0075] 在步骤S15中,NFS‑Ganesha v4服务端将用户实体映射为数字ID具体可以通过调用rpc.idmapd进程实现。
[0076] 如图3所示,步骤S2具体包括:
[0077] 步骤S21,NFS‑Ganesha v4客户端获取POSIX ACL;
[0078] 步骤S22,NFS‑Ganesha v4服务端获取NFS‑Ganesha v4客户端上文件的POSIX ACL;
[0079] 步骤S23,NFS‑Ganesha v4服务端对每个ACE中的数字ID映射为用户实体,其中,ACE位于POSIX ACL中;
[0080] 步骤S24,NFS‑Ganesha v4服务端将POSIX ACL映射为NFSv4 ACL;
[0081] 步骤S25,NFS‑Ganesha v4客户端将用户实体映射为数字ID;
[0082] 步骤S26,NFS‑Ganesha客户端将NFSv4 ACL被映射成POSIX ACL;
[0083] 步骤S27,在NFS‑Ganesha客户端将每个数字ID解析为用户实体,返回给用户,完成ACL调用。
[0084] 在步骤S21中,NFS‑Ganesha v4客户端获取POSIX ACL具体可以通过getfacl()命令实现。
[0085] 在步骤S22中,NFS‑Ganesha v4服务端获取NFS‑Ganesha v4客户端上文件的POSIX ACL具体可以通过GETATTR命令实现。
[0086] 在步骤S23中,NFS‑Ganesha v4服务端对每个ACE(access control entry,即权限控制项)中的数字ID映射为用户实体具体可以通过rpc.idmapd进程实现。
[0087] 在步骤S25中,NFS‑Ganesha v4客户端将用户实体映射为数字ID具体可以通过rpc.idmapd进程实现。
[0088] 在步骤S27中,NFS‑Ganesha客户端,可以通过getfacl()命令获取到POSIX ACL的三元组列表(ID,权限,文件),对于每个数字ID,可以通过调用getpwnam()命令将数字ID解析为用户实体user@domain,并返回给用户,完成ACL调用。
[0089] 本发明使得现有NFS‑Ganesha v4版本ACL权限控制能够兼容“user@domain”字符串形式的用户管理,可以实现对文件和目录的用户访问进行更精细的控制,提高了NFS访问共享数据的安全性。
[0090] 本发明通过通过以“user@domain”字符串形式的用户标识与以数字uid/gid形式的用户标识之间的映射关系,来标识NFS‑Ganesha v4版本用户,方便用户管理,提高了管理效率。
[0091] 实施例二
[0092] 如图4所示,本发明技术方案还提供了一种基于分布式NFS‑Ganesha V4 ACL的权限控制装置,包括:
[0093] 第一设置模块11,NFS‑Ganesha v4客户端、NFS‑Ganesha v4服务端分别对文件的ACL权限设置用户映射;
[0094] 第一获取模块12,NFS‑Ganesha v4客户端获取ACL权限用户映射,完成ACL调用。
[0095] 其中,如图5所示,第一设置模块11包括:
[0096] 第二设置子模块111,NFS‑Ganesha V4客户端对NFSv4 ACL三元组设置文件访问控制权限,其中,NFSv4 ACL三元组包括用户实体;
[0097] 第一解析子模块112,NFS‑Ganesha V4客户端将用户实体解析为数字ID,然后将POSIX ACL三元组发送给内核,其中,POSIX ACL三元组包括数字ID,内核接收到POSIX ACL三元组后,将数字ID映射为用户实体;
[0098] 第一映射子模块113,NFS‑Ganesha v4客户端将POSIX ACL映射为NFSv4 ACL;
[0099] 第三设置子模块114,NFS‑Ganesha v4服务端对NFSv4 ACL中权限进行设置;
[0100] 第二映射子模块115,NFS‑Ganesha v4服务端将用户实体映射为数字ID;
[0101] 第三映射子模块116,NFS‑Ganesha v4服务端将NFSv4 ACL映射为POSIX ACL;
[0102] 第四设置子模块117,NFS‑Ganesha v4服务端根据用户实体与数字ID的映射关系以及NFSv4 ACL与POSIX ACL的映射关系设置POSIX ACL。
[0103] 如图6所示,第一获取模块12包括:
[0104] 第二获取子模块121,NFS‑Ganesha v4客户端获取POSIX ACL;
[0105] 第三获取子模块122,NFS‑Ganesha v4服务端获取NFS‑Ganesha v4客户端上文件的POSIX ACL;
[0106] 第四映射子模块123,NFS‑Ganesha v4服务端对每个ACE中的数字ID映射为用户实体,其中,ACE位于POSIX ACL中;
[0107] 第五映射子模块124,NFS‑Ganesha v4服务端将POSIX ACL映射为NFSv4 ACL;
[0108] 第六映射子模块125,NFS‑Ganesha v4客户端将用户实体映射为数字ID;
[0109] 第七映射子模块126,NFS‑Ganesha客户端将NFSv4 ACL被映射成POSIX ACL;
[0110] 第二解析子模块127,在NFS‑Ganesha客户端将每个数字ID解析为用户实体,返回给用户,完成ACL调用。
[0111] NFSv4 ACL三元组包括用户实体、权限、文件,POSIX ACL三元组包括数字ID、权限、文件。用户实体为用户名与域名组合的字符串。
[0112] 本发明使得现有NFS‑Ganesha v4版本ACL权限控制能够兼容“user@domain”字符串形式的用户管理,可以实现对文件和目录的用户访问进行更精细的控制,提高了NFS访问共享数据的安全性。
[0113] 本发明通过通过以“user@domain”字符串形式的用户标识与以数字uid/gid形式的用户标识之间的映射关系,来标识NFS‑Ganesha v4版本用户,方便用户管理,提高了管理效率。
[0114] 上述虽然结合附图对本发明的具体实施方式进行了描述,但并非对本发明保护范围的限制,所属领域技术人员应该明白,在本发明的技术方案的基础上,本领域技术人员不需要付出创造性劳动即可做出的各种修改或变形仍在本发明的保护范围以内。