本发明涉及网络文件系统用户权限控制技术领域,特别是一种基于网络文件系统的acl用户映射方法与系统。
背景技术:
nfsv2和nfsv3协议仅限于使用以32位无符号uid和gid数字用户或用户组为中心的用户身份识别机制,为了使nfs克服大型工作组的限制,nfsv4协议要求分别使用user@nfsv4_domain或group@nfsv4_domain的格式将文件的属主属性和属组属性作为字符串在nfs版本v4客户机与服务器之间进行用户身份识别。
nfs-ganeshav4属于用户态网络文件系统,相比于内核态nfs,nfs-ganesha具有灵活的内存管理机制,在分布式文件系统中使用较为普遍。nfs-ganeshav4acl相比于posixacl,对文件和目录的用户访问进行更精细的控制、提高了nfs访问共享数据的安全性。
技术实现要素:
本发明的目的是提供一种基于网络文件系统的acl用户映射方法与系统,旨在解决现有技术中nfs-ganeshav4版本acl权限控制不能兼容“user@domain”字符串形式的用户管理,实现两者映射关系的建立,提高兼容性。
为达到上述技术目的,本发明提供了一种基于网络文件系统的acl用户映射方法,所述方法包括以下操作:
nfs-ganeshav4客户端设置nfs-ganeshav4版本acl权限控制列表用户映射关系:
通过setfacl命令对nfsv4acl三元组设置文件访问控制权限,setfacl命令调用getpwnam将用户实体解析为id,将转换后的posixacl三元组发送至内核;
内核调用rpc.idmapd服务将id映射为用户实体,将posixacl映射为nfsv4acl;
使用setattr操作请求对nfs-ganeshav4服务端发起请求对文件进行acl权限设置,调用rpc.idmapd服务将用户实体映射为id,nfs-ganeshav4服务端将nfsv4acl映射为posixacl,完成设置。
优选地,所述方法还包括:
nfs-ganeshav4客户端获取nfs-ganeshav4版本acl权限控制列表用户映射关系:
通过getfacl命令对文件获取acl权限控制列表;
nfs-ganeshav4客户端通过getattr操作,获取nfs-ganeshav4服务端上文件的acl权限控制列表;
nfs-ganeshav4服务端调用rpc.idmapd服务将id映射为用户实体,将posixacl转换为nfsv4acl;
在nfs-ganesha客户端,调用rpc.idmapd服务将用户实体映射为id,nfsv4acl被转换成posixacl并传递给getfacl,getfacl调用getpwnam将id解析为用户实体返回给用户,完成获取acl调用。
优选地,所述nfsv4acl三元组包括用户实体、权限以及文件;所述posixacl三元组包括id、权限以及文件。
本发明还提供了一种基于网络文件系统的acl用户映射系统,所述系统包括:
映射关系设置模块,用于nfs-ganeshav4客户端设置nfs-ganeshav4版本acl权限控制列表用户映射关系:
通过setfacl命令对nfsv4acl三元组设置文件访问控制权限,setfacl命令调用getpwnam将用户实体解析为id,将转换后的posixacl三元组发送至内核;
内核调用rpc.idmapd服务将id映射为用户实体,将posixacl映射为nfsv4acl;
使用setattr操作请求对nfs-ganeshav4服务端发起请求对文件进行acl权限设置,调用rpc.idmapd服务将用户实体映射为id,nfs-ganeshav4服务端将nfsv4acl映射为posixacl,完成设置。
优选地,所述系统还包括:
映射关系获取模块,用于nfs-ganeshav4客户端获取nfs-ganeshav4版本acl权限控制列表用户映射关系:
通过getfacl命令对文件获取acl权限控制列表;
nfs-ganeshav4客户端通过getattr操作,获取nfs-ganeshav4服务端上文件的acl权限控制列表;
nfs-ganeshav4服务端调用rpc.idmapd服务将id映射为用户实体,将posixacl转换为nfsv4acl;
在nfs-ganesha客户端,调用rpc.idmapd服务将用户实体映射为id,nfsv4acl被转换成posixacl并传递给getfacl,getfacl调用getpwnam将id解析为用户实体返回给用户,完成获取acl调用。
优选地,所述nfsv4acl三元组包括用户实体、权限以及文件;所述posixacl三元组包括id、权限以及文件。
本发明还提供了一种基于网络文件系统的acl用户映射设备,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序,以实现所述的基于网络文件系统的acl用户映射方法。
本发明还提供了一种可读存储介质,用于保存计算机程序,其中,所述计算机程序被处理器执行时实现所述的基于网络文件系统的acl用户映射方法。
发明内容中提供的效果仅仅是实施例的效果,而不是发明所有的全部效果,上述技术方案中的一个技术方案具有如下优点或有益效果:
与现有技术相比,本发明通过调用getpwnam将用户实体解析为id、setattr操作以及利用rpc.idmapd服务对于用户实体和id之间的映射转换,完成设置nfs-ganeshav4版本acl权限控制列表用户映射关系,并通过getattr操作、利用rpc.idmapd服务对于用户实体和id之间的映射转换,完成获取nfs-ganeshav4版本acl权限控制列表用户映射关系,实现以“user@domain”字符串形式的用户标识与以数字uid/gid数字形式的用户标识之间的映射,从而使得nfs-ganeshav4版本acl权限控制能够兼容“user@domain”字符串形式的用户管理,提高兼容性。
附图说明
图1为本发明实施例中所提供的一种设置nfs-ganeshav4版本acl权限控制列表用户映射关系示意图;
图2为本发明实施例中所提供的一种获取nfs-ganeshav4版本acl权限控制列表用户映射关系示意图。
具体实施方式
为了能清楚说明本方案的技术特点,下面通过具体实施方式,并结合其附图,对本发明进行详细阐述。下文的公开提供了许多不同的实施例或例子用来实现本发明的不同结构。为了简化本发明的公开,下文中对特定例子的部件和设置进行描述。此外,本发明可以在不同例子中重复参考数字和/或字母。这种重复是为了简化和清楚的目的,其本身不指示所讨论各种实施例和/或设置之间的关系。应当注意,在附图中所图示的部件不一定按比例绘制。本发明省略了对公知组件和处理技术及工艺的描述以避免不必要地限制本发明。
下面结合附图对本发明实施例所提供的一种基于网络文件系统的acl用户映射方法与系统进行详细说明。
如图1所示,本发明公开了一种基于网络文件系统的acl用户映射方法,所述方法包括以下操作:
nfs-ganeshav4客户端设置nfs-ganeshav4版本acl权限控制列表用户映射关系:
通过setfacl命令对nfsv4acl三元组设置文件访问控制权限,setfacl命令调用getpwnam将用户实体解析为id,将转换后的posixacl三元组发送至内核;
内核调用rpc.idmapd服务将id映射为用户实体,将posixacl映射为nfsv4acl;
使用setattr操作请求对nfs-ganeshav4服务端发起请求对文件进行acl权限设置,调用rpc.idmapd服务将用户实体映射为id,nfs-ganeshav4服务端将nfsv4acl映射为posixacl,完成设置。
本发明实施例通过以“user@domain”字符串形式的用户标识与以数字uid/gid数字形式的用户标识之间的映射来标识v4acl权限用户。
在网络文件系统posixacl标准的权限控制列表应用中,用户可以使用命令setfacl()和getfacl()进行系统调用,分别对文件进行设置和获取acl权限控制列表。linuxposixacl的存储形式是(id,unix权限)的列表,其中id是uid或gid,unix权限是r读、w写、x执行权限。由于posixacl使用的是id而不是主体,本发明实施例在nfs-ganeshav4acl对文件进行设置和获取acl权限控制列表应用中,通过调用getpwnam()将“user@domain”解析为数字id。
nfs-ganeshav4客户端设置nfs-ganeshav4版本acl权限控制列表用户映射关系的具体流程如下:
nfs-ganeshav4客户端,通过setfacl()命令对nfsv4acl三元组(用户实体,权限,文件)设置acl文件访问控制权限。setfacl()命令调用getpwnam()将用户实体“user@domain”解析为uid或gid,以便由文件系统进行处理,然后将posixacl三元组(id,权限,文件)发送给内核。
内核调用rpc.idmapd服务将id映射为“user@domain”,所述rpc.idmapd服务是指nfsv4协议中对用户id与user@domain相互之间映射的守护进程。
在nfs-ganeshav4客户端将posixacl映射为nfsv4acl。
使用setattr操作请求对nfs-ganeshav4服务端发起请求对文件进行acl权限设置,携带acl权限三元组信息为(用户实体,权限,文件)。
调用rpc.idmapd服务将“user@domain”映射为id。
在nfs-ganeshav4服务端将nfsv4acl映射为posixacl。
在nfs-ganeshav4服务端设置acl,三元组为(id,权限,文件),从而完成acl设置。
如图2所示,所述方法还包括:
nfs-ganeshav4客户端获取nfs-ganeshav4版本acl权限控制列表用户映射关系:
通过getfacl命令对文件获取acl权限控制列表;
nfs-ganeshav4客户端通过getattr操作,获取nfs-ganeshav4服务端上文件的acl权限控制列表;
nfs-ganeshav4服务端调用rpc.idmapd服务将id映射为用户实体,将posixacl转换为nfsv4acl;
在nfs-ganesha客户端,调用rpc.idmapd服务将用户实体映射为id,nfsv4acl被转换成posixacl并传递给getfacl,getfacl调用getpwnam将id解析为用户实体返回给用户,完成获取acl调用。
具体流程如下:
通过getfacl()命令对文件获取acl权限控制列表;
nfs-ganeshav4客户端通过getattr操作,获取nfs-ganeshav4服务端上文件的acl权限控制列表,nfs-ganeshav4服务端按照如下操作处理getattr的请求:
调用rpc.idmapd服务将id映射为用户实体“user@domain”;
在nfs-ganeshav4服务端将posixacl转换为nfsv4acl;
调用rpc.idmapd服务将“user@domain”映射为id;
在nfs-ganesha客户端,nfsv4acl被转换成posixacl并传递给getfacl();
在nfs-ganesha客户端,getfacl()接收到(id,权限,文件)三元组列表,对于每个id,getfacl()调用getpwnam()将id解析为用户实体“user@domain”返回给用户,完成获取acl调用。
本发明实施例通过调用getpwnam将用户实体解析为id、setattr操作以及利用rpc.idmapd服务对于用户实体和id之间的映射转换,完成设置nfs-ganeshav4版本acl权限控制列表用户映射关系,并通过getattr操作、利用rpc.idmapd服务对于用户实体和id之间的映射转换,完成获取nfs-ganeshav4版本acl权限控制列表用户映射关系,实现以“user@domain”字符串形式的用户标识与以数字uid/gid数字形式的用户标识之间的映射,从而使得nfs-ganeshav4版本acl权限控制能够兼容“user@domain”字符串形式的用户管理,提高兼容性。
本发明实施例还公开了一种基于网络文件系统的acl用户映射系统,所述系统包括:
映射关系设置模块,用于nfs-ganeshav4客户端设置nfs-ganeshav4版本acl权限控制列表用户映射关系:
通过setfacl命令对nfsv4acl三元组设置文件访问控制权限,setfacl命令调用getpwnam将用户实体解析为id,将转换后的posixacl三元组发送至内核;
内核调用rpc.idmapd服务将id映射为用户实体,将posixacl映射为nfsv4acl;
使用setattr操作请求对nfs-ganeshav4服务端发起请求对文件进行acl权限设置,调用rpc.idmapd服务将用户实体映射为id,nfs-ganeshav4服务端将nfsv4acl映射为posixacl,完成设置。
nfs-ganeshav4客户端,通过setfacl()命令对nfsv4acl三元组(用户实体,权限,文件)设置acl文件访问控制权限。setfacl()命令调用getpwnam()将用户实体“user@domain”解析为uid或gid,以便由文件系统进行处理,然后将posixacl三元组(id,权限,文件)发送给内核。
内核调用rpc.idmapd服务将id映射为“user@domain”,所述rpc.idmapd服务是指nfsv4协议中对用户id与user@domain相互之间映射的守护进程。
在nfs-ganeshav4客户端将posixacl映射为nfsv4acl。
使用setattr操作请求对nfs-ganeshav4服务端发起请求对文件进行acl权限设置,携带acl权限三元组信息为(用户实体,权限,文件)。
调用rpc.idmapd服务将“user@domain”映射为id。
在nfs-ganeshav4服务端将nfsv4acl映射为posixacl。
在nfs-ganeshav4服务端设置acl,三元组为(id,权限,文件),从而完成acl设置。
所述方法还包括:
映射关系获取模块,用于nfs-ganeshav4客户端获取nfs-ganeshav4版本acl权限控制列表用户映射关系:
通过getfacl命令对文件获取acl权限控制列表;
nfs-ganeshav4客户端通过getattr操作,获取nfs-ganeshav4服务端上文件的acl权限控制列表;
nfs-ganeshav4服务端调用rpc.idmapd服务将id映射为用户实体,将posixacl转换为nfsv4acl;
在nfs-ganesha客户端,调用rpc.idmapd服务将用户实体映射为id,nfsv4acl被转换成posixacl并传递给getfacl,getfacl调用getpwnam将id解析为用户实体返回给用户,完成获取acl调用。
所述映射关系获取模块具体实现以下内容:
通过getfacl()命令对文件获取acl权限控制列表;
nfs-ganeshav4客户端通过getattr操作,获取nfs-ganeshav4服务端上文件的acl权限控制列表,nfs-ganeshav4服务端按照如下操作处理getattr的请求:
调用rpc.idmapd服务将id映射为用户实体“user@domain”;
在nfs-ganeshav4服务端将posixacl转换为nfsv4acl;
调用rpc.idmapd服务将“user@domain”映射为id;
在nfs-ganesha客户端,nfsv4acl被转换成posixacl并传递给getfacl();
在nfs-ganesha客户端,getfacl()接收到(id,权限,文件)三元组列表,对于每个id,getfacl()调用getpwnam()将id解析为用户实体“user@domain”返回给用户,完成获取acl调用。
本发明实施例还公开了一种基于网络文件系统的acl用户映射设备,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序,以实现所述的基于网络文件系统的acl用户映射方法。
本发明实施例还公开了一种可读存储介质,用于保存计算机程序,其中,所述计算机程序被处理器执行时实现所述的基于网络文件系统的acl用户映射方法。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
1.一种基于网络文件系统的acl用户映射方法,其特征在于,所述方法包括以下操作:
nfs-ganeshav4客户端设置nfs-ganeshav4版本acl权限控制列表用户映射关系:
通过setfacl命令对nfsv4acl三元组设置文件访问控制权限,setfacl命令调用getpwnam将用户实体解析为id,将转换后的posixacl三元组发送至内核;
内核调用rpc.idmapd服务将id映射为用户实体,将posixacl映射为nfsv4acl;
使用setattr操作请求对nfs-ganeshav4服务端发起请求对文件进行acl权限设置,调用rpc.idmapd服务将用户实体映射为id,nfs-ganeshav4服务端将nfsv4acl映射为posixacl,完成设置。
2.根据权利要求1所述的一种基于网络文件系统的acl用户映射方法,其特征在于,所述方法还包括:
nfs-ganeshav4客户端获取nfs-ganeshav4版本acl权限控制列表用户映射关系:
通过getfacl命令对文件获取acl权限控制列表;
nfs-ganeshav4客户端通过getattr操作,获取nfs-ganeshav4服务端上文件的acl权限控制列表;
nfs-ganeshav4服务端调用rpc.idmapd服务将id映射为用户实体,将posixacl转换为nfsv4acl;
在nfs-ganesha客户端,调用rpc.idmapd服务将用户实体映射为id,nfsv4acl被转换成posixacl并传递给getfacl,getfacl调用getpwnam将id解析为用户实体返回给用户,完成获取acl调用。
3.根据权利要求1所述的一种基于网络文件系统的acl用户映射方法,其特征在于,所述nfsv4acl三元组包括用户实体、权限以及文件;所述posixacl三元组包括id、权限以及文件。
4.一种基于网络文件系统的acl用户映射系统,其特征在于,所述系统包括:
映射关系设置模块,用于nfs-ganeshav4客户端设置nfs-ganeshav4版本acl权限控制列表用户映射关系:
通过setfacl命令对nfsv4acl三元组设置文件访问控制权限,setfacl命令调用getpwnam将用户实体解析为id,将转换后的posixacl三元组发送至内核;
内核调用rpc.idmapd服务将id映射为用户实体,将posixacl映射为nfsv4acl;
使用setattr操作请求对nfs-ganeshav4服务端发起请求对文件进行acl权限设置,调用rpc.idmapd服务将用户实体映射为id,nfs-ganeshav4服务端将nfsv4acl映射为posixacl,完成设置。
5.根据权利要求4所述的一种基于网络文件系统的acl用户映射系统,其特征在于,所述系统还包括:
映射关系获取模块,用于nfs-ganeshav4客户端获取nfs-ganeshav4版本acl权限控制列表用户映射关系:
通过getfacl命令对文件获取acl权限控制列表;
nfs-ganeshav4客户端通过getattr操作,获取nfs-ganeshav4服务端上文件的acl权限控制列表;
nfs-ganeshav4服务端调用rpc.idmapd服务将id映射为用户实体,将posixacl转换为nfsv4acl;
在nfs-ganesha客户端,调用rpc.idmapd服务将用户实体映射为id,nfsv4acl被转换成posixacl并传递给getfacl,getfacl调用getpwnam将id解析为用户实体返回给用户,完成获取acl调用。
6.根据权利要求4所述的一种基于网络文件系统的acl用户映射系统,其特征在于,所述nfsv4acl三元组包括用户实体、权限以及文件;所述posixacl三元组包括id、权限以及文件。
7.一种基于网络文件系统的acl用户映射设备,其特征在于,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序,以实现根据权利要求1至3任一项所述的基于网络文件系统的acl用户映射方法。
8.一种可读存储介质,其特征在于,用于保存计算机程序,其中,所述计算机程序被处理器执行时实现根据权利要求1至3任一项所述的基于网络文件系统的acl用户映射方法。
技术总结