一种文件权限的控制方法、装置、设备及介质与流程

文档序号:29971479发布日期:2022-05-11 11:32阅读:113来源:国知局
一种文件权限的控制方法、装置、设备及介质与流程

1.本发明涉及计算机技术领域,特别涉及一种文件权限的控制方法、装置、设备及介质。


背景技术:

2.通过共享文件系统在多个用户和群组之间共享文件时,权限的控制和管理成为了不可缺少的功能,针对不同的目录或文件,管理员需要给不同的用户和群组设置相应的操作权限,从而实现不同用户或群组的访问隔离。
3.为了使nfs(network file system,网络文件系统)克服大型工作组的限制,nfsv4协议改善了用户认证识别机制,增加了nfsv4域名的字段nfsv4domain,采用user@nfsv4domain或者group@nfsv4domain的格式将文件或目录的属主属性和属组属性作为字符串在nfsv4服务端和nfsv4客户端之间进行用户身份识别,方便了用户使用和管理nfsv4 acl(acess control list,访问控制列表)。
4.但是,现有nfs-ganesha(一个用户态的支持nfs协议的文件服务器)v4acl并不能兼容带有域名字符串格式的acl,并且,修改后的nfsv4domain也不能及时生效,需要对nfs-ganesha进行重启之后才能使得修改后的域名生效,这样就不利于充分发挥nfs-ganesha v4acl的优势。目前,针对这一技术问题,还没有较为有效的解决办法。


技术实现要素:

5.有鉴于此,本发明的目的在于提供一种文件权限的控制方法、装置、设备及介质,以在使得nfs-ganesha能够兼容带有域名字符串格式的acl的同时,也能够使得修改后的nfsv4域名即时生效。其具体方案如下:
6.一种文件权限的控制方法,应用于nfs-ganesha,包括:
7.当接收到客户端所设定的目标v4acl时,则对所述目标v4acl进行解析;
8.若所述目标v4acl中的用户均存在于所述nfs-ganesha,则将所述目标v4acl转换为posixacl,并对所述posixacl和所述客户端的身份信息进行存储;
9.当接收到访问所述目标v4acl的请求时,则将所述posixacl转换为v4acl的操作格式,得到转换acl,并将所述转换acl转换为带有域名的字符串反馈至所述客户端;
10.当接收到对所述目标v4acl中目标nfsv4域名进行修改的命令请求时,则与dbus建立通信连接,对所述目标nfsv4域名进行更新,并将更新后的所述目标nfsv4域名通过所述dbus向所述命令请求返回相应的反馈信息。
11.优选的,所述对所述目标v4acl进行解析的过程之后,还包括:
12.若所述目标v4acl中的用户不均存在于所述nfs-ganesha,则向所述客户端反馈错误信息。
13.优选的,所述对所述目标v4acl进行解析的过程,包括:
14.利用nfsidmap接口对所述目标v4acl进行解析。
15.优选的,还包括:
16.将所述转换acl中的所有信息封装为xdr格式的数据包发送至所述客户端。
17.优选的,所述与dbus建立通信连接的过程,包括:
18.当在所述dbus中注册成功时,则向所述dbus发送目标消息;
19.当接收到所述dbus的反馈消息时,则判定与所述dbus建立通信连接。
20.优选的,所述对所述目标nfsv4域名进行更新的过程,包括:
21.调用nfs4_cleanup_name_mapping接口释放与所述目标nfsv4域名相关联的目标配置文件,并调用nfs4_init_name_mapping接口重新打开所述目标配置文件;
22.调用get_default_domain接口获取所述目标配置文件的域名,以对所述目标nfsv4域名进行更新。
23.相应的,本发明还公开了一种文件权限的控制装置,应用于nfs-ganesha,包括:
24.列表解析模块,用于当接收到客户端所设定的目标v4acl时,则对所述目标v4acl进行解析;
25.信息存储模块,用于若所述目标v4acl中的用户均存在于所述nfs-ganesha,则将所述目标v4acl转为posixacl,并对所述posixacl和所述客户端的身份信息进行存储;
26.列表转换模块,用于当接收到访问所述目标v4acl的请求时,则将所述posixacl转为v4acl的操作格式,得到转换acl,并将所述转换acl转换为带有域名的字符串反馈至所述客户端;
27.域名更新模块,用于当接收到对所述目标v4acl中目标nfsv4域名进行修改的命令请求时,则与dbus建立通信连接,对所述目标nfsv4域名进行更新,并将更新后的所述目标nfsv4域名通过所述dbus向所述命令请求返回相应的反馈信息。
28.相应的,本发明还公开了一种文件权限的控制设备,包括:
29.存储器,用于存储计算机程序;
30.处理器,用于执行所述计算机程序时实现如前述所公开的一种文件权限的控制方法的步骤。
31.相应的,本发明还公开了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如前述所公开的一种文件权限的控制方法的步骤。
32.可见,在本发明中,当nfs-ganesha接收到客户端所设定的目标v4acl时,首先是对目标v4acl进行解析,如果nfs-ganesha解析出目标v4acl中的所有用户均存在于nfs-ganesha中时,则nfs-ganesha就会将目标v4acl转换为posixacl,并对posixacl和客户端的身份信息进行存储,这样就实现了将客户端所设定的目标v4acl存储到了nfs-ganesha中;当nfs-ganesha接收到访问目标vacl的请求时,nfs-ganesha就会将posixacl转换为v4acl的操作格式,得到转换acl,并将转换acl转换为带有域名的字符串反馈至客户端,这样就使得nfs-ganesha能够兼容带有域名字符串格式的acl。并且,当nfs-ganesha接收到对目标v4acl中目标nfsv4域名进行修改的命令请求时,nfs-ganesha就会与dbus建立通信连接,对目标nfsv4域名进行更新,并将更新后的目标nfsv4域名通过dbus向命令请求返回相应的反馈信息,这样就可以使得修改后的nfsv4域名能够即时生效,无需对nfs-ganesha进行重启。显然,通过本发明所提供的方法,不仅可以使得nfs-ganesha能够兼容带有域名字符串格式
ganesha就会将客户端的名称存储到缓存中,以方便nfs-ganesha的下次查找。之后,nfs-ganesha会将客户端所设定的目标v4acl转换为posixacl,并将posixacl和客户端的身份信息存储到磁盘中。与此同时,nfs-ganesha还会将对目标v4acl设定成功的结果反馈至客户端,这样就相当于是将客户端所设定的目标v4acl存储到了nfs-ganesha中。
46.当nfs-ganesha接收到访问目标v4acl的请求时,nfs-ganesha会将posixacl转换为v4acl的操作格式,得到转换acl,并利用nfsidmap接口将转换acl转换为方便用户查看的带有域名的字符串,并将带有域名的字符串反馈至客户端。显然,通过这样的设置方式,就可以使得nfs-ganesha能够兼容带有域名字符串格式的acl。
47.当nfs-ganesha接收到对目标v4acl中目标nfsv4域名进行修改的命令请求时,nfs-ganesha会与dbus建立通信连接,并对目标nfsv4域名进行更新,之后,nfs-ganesha会将更新后的目标nfsv4域名通过dbus向命令请求返回相应的反馈信息。
48.可以理解的是,如果想要对目标v4acl中的目标nfsv4域名进行修改,并使其能够即时生效,就需要使用一种即时通知机制能够使得用户随时对nfsv4域名进行更新,而dbus(a message bus system,消息总线系统)是一种高级的进程间通信机制,所以,当将用户所发送的命令请求和nfs-ganesha分别与dbus建立通信连接之后,用户通过向dbus发送命令请求,就可以通知nfs-ganesha对目标nfsv4域名进行更新,并使得修改后的nfsv4域名能够即时生效。具体的,当用户向dbus输入ganesha_mgr update_nfsidmap命令时,就可以利用dbus通知nfs-ganesha调用相关接口对修改后的目标nfsv4域名进行及时更新。
49.可见,在本实施例中,当nfs-ganesha接收到客户端所设定的目标v4acl时,首先是对目标v4acl进行解析,如果nfs-ganesha解析出目标v4acl中的所有用户均存在于nfs-ganesha中时,则nfs-ganesha就会将目标v4acl转换为posixacl,并对posixacl和客户端的身份信息进行存储,这样实现了将客户端所设定的目标v4acl存储到了nfs-ganesha中;当nfs-ganesha接收到访问目标vacl的请求时,nfs-ganesha就会将posixacl转换为v4acl的操作格式,得到转换acl,并将转换acl转换为带有域名的字符串反馈至客户端,这样就使得nfs-ganesha能够兼容带有域名字符串格式的acl。并且,当nfs-ganesha接收到对目标v4acl中目标nfsv4域名进行修改的命令请求时,nfs-ganesha就会与dbus建立通信连接,对目标nfsv4域名进行更新,并将更新后的目标nfsv4域名通过dbus向命令请求返回相应的反馈信息,这样就可以使得修改后的nfsv4域名能够即时生效,无需对nfs-ganesha进行重启。显然,通过本实施例所提供的方法,不仅可以使得nfs-ganesha能够兼容带有域名字符串格式的acl,而且,也可以使得修改后的nfsv4域名能够即时生效,由此就可以充分发挥nfs-ganesha v4acl的优势。
50.基于上述实施例,本实施例对技术方案作进一步的说明与优化,作为一种优选的实施方式,上述步骤:对目标v4acl进行解析的过程之后,还包括:
51.若目标v4acl中的用户不均存在于nfs-ganesha,则向客户端反馈错误信息。
52.在本实施例中,如果nfs-ganesha解析出目标v4acl中的用户不是均存在于nfs-ganesha当中,则说明客户端所设定的目标v4acl中存在错误的数据信息,在此情况下,为了使得客户端能够及时知悉到该情况,nfs-ganesha就会向客户端反馈错误信息,以使得客户端能够采取相应的补救措施。
53.基于上述实施例,本实施例对技术方案作进一步的说明与优化,作为一种优选的
实施方式,上述步骤:对目标v4acl进行解析的过程,包括:
54.利用nfsidmap接口对目标v4acl进行解析。
55.在实际应用中,可以利用nfsidmap接口对目标v4acl进行解析,因为nfsidmap可以实现各个资源id(identity document,身份标识号)和用户名/组名之间的映射,所以,利用nfsidmap接口就可以解析出客户端所设定目标v4acl中的用户是否均存在于nfs-ganesha中。
56.并且,由于nfsidmap接口是nfs-ganesha所自带的一个模块接口,因此,相较于其它解析方式而言,利用该方法就可以相对提高nfs-ganesha对目标v4acl的解析速度。
57.基于上述实施例,本实施例对技术方案作进一步的说明与优化,作为一种优选的实施方式,上述控制方法还包括:
58.将转换acl中的所有信息封装为xdr格式的数据包发送至客户端。
59.在本实施例中,当nfs-ganesha将posixacl转换为v4acl的操作格式,得到转换acl之后,不仅会利用nfsidmap接口将转换acl转换为带有域名的字符串,而且,还会将转换acl中的所有信息封装为xdr(external date representation,一个描述和编码数据的标准)格式的数据包发送至客户端。
60.可以理解的是,因为xdr语言在描述复杂的数据格式时,描述方式更加简洁,所以,客户端在接收到xdr格式的数据包之后,通过对该数据包进行解析就可以将转换acl中的nfsv4acl信息清晰、便捷地展示出来,由此就可以进一步提高用户的使用体验。
61.基于上述实施例,本实施例对技术方案作进一步的说明与优化,作为一种优选的实施方式,上述步骤:与dbus建立通信连接的过程,包括:
62.当在dbus中注册成功时,则向dbus发送目标消息;
63.当接收到dbus的反馈消息时,则判定与dbus建立通信连接。
64.在本实施例中,是对nfs-ganesha与dbus建立通信连接的过程进行了详细说明。具体的,当nfs-ganesha想要与dbus建立通信连接时,首先是调用dbus_bus_get函数连接到dbus,以建立nfs-ganesha与dbus之间的连接。建立连接之后,需要为这个连接注册名称,以方便后续对这个连接进行相关操作。具体可以调用dbus_bus_request_name函数对这个连接进行名称注册,并调用dbus_connection_register_object_path接口向dbus连接特定对象所对应的处理函数表。需要说明的是,建立连接和注册名称是在程序开始时执行的,程序结束时,可以调用dbus_connection_close函数关闭这个连接。
65.当nfs-ganesha在dbus中注册成功时,nfs-ganesha会向dbus发送目标消息,具体可以调用dbus_message_new_signal接口创建信号,并调用dbus_message_iter_init_append接口将目标参数加入到该信号中,然后,再调用dbus_connection_send接口发送目标消息到指定的dbus连接上,并调用dbus_connection_flush接口刷新dbus连接,此时目标消息就会发送到dbus上,目标消息返回后就可以调用dbus_message_unref接口释放目标消息。
66.nfs-ganesha在接收dbus的反馈消息时,会调用dbus_pending_call_block接口阻塞等待返回值,并调用dbus_pending_call_steal_reply接口获取dbus的反馈消息,最后会调用dbus_message_iter_init接口来解析反馈消息中的内容参数。
67.基于上述实施例,本实施例对技术方案作进一步的说明与优化,作为一种优选的
实施方式,上述步骤:对目标nfsv4域名进行更新的过程,包括:
68.调用nfs4_cleanup_name_mapping接口释放与目标nfsv4域名相关联的目标配置文件,并调用nfs4_init_name_mapping接口重新打开目标配置文件;
69.调用get_default_domain接口获取目标配置文件的域名,以对目标nfsv4域名进行更新。
70.在本实施例中,nfs-ganesha在对目标nfsv4域名进行更新时,首先是会调用nfs4_cleanup_name_mapping接口释放与目标nfsv4域名相关联的目标配置文件,并释放内存,以清理用户数据缓存;之后,nfs-ganesha会调用nfs4_init_name_mapping接口重新打开与目标nfsv4域名相关联的目标配置文件,完成初始化;最后,再调用get_default_domain接口获取目标配置文件的域名来对目标nfsv4域名进行更新。
71.具体的,如果目标配置文件没有配置域名,则使用默认域名“localdomain”,如果目标配置文件配置有域名,则将目标配置文件的nfsv4域名发送给dbus,最后,再通过dbus将目标配置文件的nfsv4域名反馈给命令请求,从而实现对目标nfsv4域名的即时更新。
72.显然,通过本实施例所提供的技术方案,由于不需要对nfs-ganesha进行重启就可以使得修改后的nfsv4域名即时生效,这样就可以进一步提高用户在使用nfs-ganesha时的用户体验。
73.请参见图2,图2为本发明实施例所提供的一种文件权限的控制装置的结构图,该装置包括:
74.列表解析模块21,用于当接收到客户端所设定的目标v4acl时,则对目标v4acl进行解析;
75.信息存储模块22,用于若目标v4acl中的用户均存在于nfs-ganesha,则将目标v4acl转为posixacl,并对posixacl和客户端的身份信息进行存储;
76.列表转换模块23,用于当接收到访问目标v4acl的请求时,则将posixacl转为v4acl的操作格式,得到转换acl,并将转换acl转换为带有域名的字符串反馈至客户端;
77.域名更新模块24,用于当接收到对目标v4acl中目标nfsv4域名进行修改的命令请求时,则与dbus建立通信连接,对目标nfsv4域名进行更新,并将更新后的目标nfsv4域名通过dbus向命令请求返回相应的反馈信息。
78.本发明实施例所提供的一种文件权限的控制装置,具有前述所公开的一种文件权限的控制方法所具有的有益效果。
79.请参见图3,图3为本发明实施例所提供的一种文件权限的控制设备的结构图,该设备包括:
80.存储器31,用于存储计算机程序;
81.处理器32,用于执行计算机程序时实现如前述所公开的一种文件权限的控制方法的步骤。
82.本发明实施例所提供的一种文件权限的控制设备,具有前述所公开的一种文件权限的控制方法所具有的有益效果。
83.相应的,本发明实施例还公开了一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现如前述所公开的一种文件权限的控制方法的步骤。
84.本发明实施例所提供的一种计算机可读存储介质,具有前述所公开的一种文件权限的控制方法所具有的有益效果。
85.本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
86.最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
87.以上对本发明所提供的一种文件权限的控制方法、装置、设备及介质进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1