一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种文件访问控制系统、方法及计算设备与流程

2022-04-30 09:26:14 来源:中国专利 TAG:

一种文件访问控制系统、方法及计算设备
1.本技术是2021年8月31日提交的发明专利申请2021110082686的分案申请。
技术领域
2.本发明涉及计算机技术领域,尤其涉及一种文件访问控制系统、文件访问控制方法及计算设备。


背景技术:

3.目前,随着信息技术的不断发展,5g、物联网、ai、云计算和大数据等众多技术正在以惊人的速度改变着世界,同时也带来各种各样的安全问题。数据作为信息时代最重要的资产,如何实现数据安全存储,亟待解决。
4.文件访问权限的控制是数据安全存储的重要组成部分,其负责管理应用软件对文件的访问授权,拦截未授权应用对重要文件的非法操作,从而保护数据安全。
5.现有技术中的unix文件权限管理方案,支持对三类用户进行独立的权限设置,三类用户分别为指定用户、指定组中的所有用户、其他用户。其中,分别为每一类用户配置读取、写入、执行三种权限,三类用户和三种权限一共需要九个标志位进行表示和存储,九个标志位随文件和目录存储在文件系统中。内核在执行具体文件操作前,会检查是否满足操作权限,如果不满足权限,则返回错误。由于九个标志位是随文件和目录存储在文件系统中的,因此,unix文件权限管理需要文件系统进行支持。ext系列文件系统作为linux操作系统上的标准文件系统,支持unix文件权限管理,但,windows操作系统上使用广泛的文件系统例如vfat和ntfs,却不支持unix文件权限管理,仅能在设备挂载时进行统一设置。另外,unix文件权限管理不能基于单个用户进行独立授权。
6.为此,需要一种文件访问控制系统及方法,以解决现有技术中存在的问题。


技术实现要素:

7.为此,本发明提供一种文件访问控制系统、文件访问控制方法及计算设备,以解决或至少缓解上面存在的问题。
8.根据本发明的一个方面,提供一种文件访问控制系统,布置在操作系统中,所述操作系统上布置有一个或多个应用程序,所述文件访问控制系统包括:文件系统,适于接收应用程序对目标文件的访问请求,所述访问请求包括所述应用程序的访问信息;以及访问控制服务器,与所述文件系统相连,适于接收文件系统发送的基于所述访问信息检查所述应用程序的访问权限的请求,并适于基于权限表来确定与所述访问信息相对应的配置权限,并根据所述配置权限来确定所述应用程序是否具有对目标文件的访问权限;其中,在确定所述应用程序具有对目标文件的访问权限时,所述文件系统适于将所述目标文件返回至所述应用程序。
9.可选地,在根据本发明的文件访问控制系统中,所述文件系统包括:底层文件系统;权限控制文件系统,布置在所述底层文件系统之上,所述权限控制文件系统与访问控制
服务器相连,适于请求访问控制服务器基于所述访问信息检查所述应用程序的访问权限;以及虚拟文件系统,布置在权限控制文件系统之上,所述虚拟文件系统与一个或多个应用程序相连,适于接收所述应用程序发送的对底层文件系统的目标文件的访问请求,并将所述访问请求发送至权限控制文件系统。
10.可选地,在根据本发明的文件访问控制系统中,所述访问控制服务器中包括权限表,所述权限表中包括一个或多个权限项,每个权限项包括一种访问信息以及相应的配置权限,所述访问控制服务器适于:基于所述访问信息来查询权限表,以确定与所述访问信息相对应的权限项及配置权限;判断所述配置权限是否包括对所述目标文件的访问权限,如果包括,则确定所述应用程序具有对目标文件的访问权限。
11.可选地,在根据本发明的文件访问控制系统中,所述访问信息包括目标文件路径、用户标识、应用程序路径。
12.可选地,在根据本发明的文件访问控制系统中,所述文件访问控制系统还包括:访问控制应用,布置在操作系统上,所述访问控制应用与所述访问控制服务器相连,适于获取配置文件,从配置文件中获取权限配置信息,并将权限配置信息发送至访问控制服务器;所述访问控制服务器适于基于所述权限配置信息来更新权限表。
13.可选地,在根据本发明的文件访问控制系统中,所述访问控制服务器适于在确定所述应用程序不具有对目标文件的访问权限时,向所述访问控制应用发送检查访问权限失败的日志。
14.可选地,在根据本发明的文件访问控制系统中,所述访问控制应用适于通过netlink与所述访问控制服务器通信。
15.可选地,在根据本发明的文件访问控制系统中,所述权限控制文件系统为堆叠式文件系统。
16.可选地,在根据本发明的文件访问控制系统中,所述访问请求还包括对目标文件的打开请求、删除请求,所述访问控制服务器进一步适于:当所述访问请求是对目标文件的打开请求时,检查应用程序是否具有打开目标文件的权限,如果具有打开目标文件的权限,则通过所述文件系统将所述目标文件打开后返回至所述应用程序;当所述访问请求是对目标文件的删除请求时,检查应用程序是否具有删除目标文件的权限,如果具有删除目标文件的权限,则通过所述文件系统将所述目标文件删除。
17.可选地,在根据本发明的文件访问控制系统中,所述权限控制文件系统适于:当确定所述应用程序具有对目标文件的访问权限时,调用底层文件系统的打开回调函数,以便基于所述打开回调函数来打开所述底层文件系统的目标文件;以及将打开后的目标文件返回至虚拟文件系统,以便通过所述虚拟文件系统将打开后的目标文件返回至所述应用程序。
18.根据本发明的一个方面,提供一种文件访问控制方法,在文件访问控制系统中执行,所述文件访问控制系统布置在操作系统中,所述文件访问控制系统包括文件系统、与文件系统相连的访问控制服务器,所述操作系统上布置有一个或多个应用程序,所述方法包括步骤:通过文件系统接收应用程序对目标文件的访问请求,所述访问请求包括所述应用程序的访问信息;通过访问控制服务器基于所述访问信息检查所述应用程序的访问权限,其中,所述访问控制服务器适于基于权限表来确定与所述访问信息相对应的配置权限,并
根据所述配置权限来确定所述应用程序是否具有对目标文件的访问权限;以及如果确定所述应用程序具有对目标文件的访问权限,则通过文件系统将所述目标文件返回至所述应用程序。
19.可选地,在根据本发明的文件访问控制方法中,所述文件系统包括权限控制文件系统、布置在权限控制文件系统之上的虚拟文件系统、布置在权限控制文件系统之下的底层文件系统,所述权限控制文件系统与访问控制服务器相连;所述虚拟文件系统适于接收应用程序发送的对底层文件系统的目标文件的访问请求,并将所述访问请求发送至权限控制文件系统;所述权限控制文件系统适于请求访问控制服务器基于所述访问信息检查所述应用程序的访问权限。
20.可选地,在根据本发明的文件访问控制方法中,所述访问控制服务器中包括权限表,所述权限表中包括一个或多个权限项,每个权限项包括一种访问信息以及相应的配置权限,基于所述访问信息检查所述应用程序的访问权限的步骤包括:基于所述访问信息来查询权限表,以确定与所述访问信息相对应的权限项及配置权限;判断所述配置权限是否包括对所述目标文件的访问权限,如果包括,则确定所述应用程序具有对目标文件的访问权限。
21.可选地,在根据本发明的文件访问控制方法中,所述访问信息包括目标文件路径、用户标识、应用程序路径。
22.可选地,在根据本发明的文件访问控制方法中,所述访问请求还包括对目标文件的打开请求、删除请求,检查所述应用程序的访问权限包括:当所述访问请求是对目标文件的打开请求时,检查应用程序是否具有打开目标文件的权限,如果具有打开目标文件的权限,则将所述目标文件打开后返回至所述应用程序;当所述访问请求是对目标文件的删除请求时,检查应用程序是否具有删除目标文件的权限,如果具有删除目标文件的权限,则将所述目标文件删除。
23.可选地,在根据本发明的文件访问控制方法中,将所述目标文件返回至应用程序的步骤包括:调用底层文件系统的打开回调函数,以便基于所述打开回调函数来打开所述底层文件系统的目标文件;将打开后的目标文件通过虚拟文件系统返回至所述应用程序。
24.根据本发明的一个方面,提供一种计算设备,包括:至少一个处理器;存储器,存储有程序指令,其中,程序指令被配置为适于由上述至少一个处理器执行,所述程序指令包括用于执行如上所述的文件访问控制方法的指令。
25.根据本发明的一个方面,提供一种存储有程序指令的可读存储介质,当该程序指令被计算设备读取并执行时,使得该计算设备执行如上所述的文件访问控制方法。
26.根据本发明的技术方案,提供了一种文件访问控制系统和方法,通过在底层文件系统与虚拟文件系统之间创建基于堆叠文件系统结构的权限控制文件系统,形成了新的文件系统结构。基于这种新的文件系统结构,使得权限控制文件系统可以拦截应用程序对底层文件系统的访问,并通过访问控制服务器来检测应用程序的访问权限,实现了在不依赖具体文件系统的情况下,灵活控制应用程序对底层文件系统的访问权限,确保底层文件系统的数据安全性。
27.进一步地,访问控制服务器可以基于权限表来确定相应的配置权限,通过比较配置权限、操作目标文件所需的访问权限,来判断应用程序是否具有对目标文件的访问权限。
通过将权限配置数据存储在权限表中,不依赖于具体的文件系统,使得本发明的文件访问控制方案能够普遍适用于各类操作系统,适用性更广。并且,基于访问控制应用可以实现灵活配置和更新权限表中的配置权限数据,以便更新应用程序对文件的访问权限。
28.此外,根据本发明的技术方案,基于访问信息来查询权限表,根据与访问信息相对应的配置权限来确定访问权限,其中访问信息包括目标文件路径、用户标识、应用程序路径,这样,能实现基于单个用户来设置文件权限,从而细化了权限配置的粒度。
29.上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
30.为了实现上述以及相关目的,本文结合下面的描述和附图来描述某些说明性方面,这些方面指示了可以实践本文所公开的原理的各种方式,并且所有方面及其等效方面旨在落入所要求保护的主题的范围内。通过结合附图阅读下面的详细描述,本公开的上述以及其它目的、特征和优势将变得更加明显。遍及本公开,相同的附图标记通常指代相同的部件或元素。
31.图1示出了根据本发明一个实施例的文件访问控制系统100的示意图;
32.图2示出了根据本发明一个实施例的计算设备200的示意图;
33.图3示出了根据本发明一个实施例的文件访问控制方法300的流程图;以及
34.图4示出了根据本发明一个实施例的文件访问控制方法300对应的时序图。
具体实施方式
35.下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
36.图1示出了根据本发明一个实施例的文件访问控制系统100的示意图。文件访问控制系统100适于执行根据本发明的文件访问控制方法,能实现在不依赖具体文件系统的情况下,灵活控制应用程序对底层文件系统的访问权限,确保底层文件系统的数据安全性,并能支持各类操作系统。
37.文件访问控制系统100驻留在计算设备中。计算设备中包括操作系统,操作系统上可以布置一个或多个应用程序110。这里,操作系统包括内核、以及布置内核之上的用户空间,文件访问控制系统100布置在操作系统的内核中,一个或多个应用程序110布置在操作系统的用户空间,可以与内核通信。
38.应当指出,本发明对操作系统的种类不做具体限制,例如,操作系统可以实现为linux操作系统,也可以实现为windows操作系统。需要说明的是,linux操作系统是基于linux内核的操作系统,linux内核是一种开源的类unix操作系统宏内核。下文仅以linux操作系统为例来详细描述本发明的文件访问控制系统100。
39.如图1所示,文件访问控制系统100包括文件系统120和访问控制服务器130,文件
系统120、访问控制服务器130均布置在操作系统的内核中,并且,文件系统120与访问控制服务器130通信相连。
40.在根据本发明的实施例中,文件系统120可以接收一个或多个应用程序110对目标文件的访问请求。这里,访问请求包括应用程序110的访问信息。文件系统120通过从访问请求中获取应用程序110的访问信息,以便根据访问信息来判断该应用程序110是否具有对目标文件的访问权限。具体地,文件系统120可以将应用程序110的访问信息发送至访问控制服务器130,以请求访问控制服务器130基于访问信息检查应用程序110的访问权限,确定应用程序110是否具有对目标文件的访问权限。
41.访问控制服务器130可以接收到文件系统120发送的基于访问信息检查应用程序110的访问权限的请求。随后,访问控制服务器130可以基于权限表来确定与访问信息相对应的配置权限,并根据配置权限来确定应用程序110是否具有对目标文件的访问权限。如果确定应用程序110具有对目标文件的访问权限,访问控制服务器130可以向文件系统120返回应用程序具有对目标文件系统的访问权限的消息,也即是返回检查访问权限成功的消息。文件系统120在确定应用程序具有对目标文件的访问权限时,将目标文件返回至应用程序110。这里,当应用程序的访问请求是请求打开目标文件时,通过将目标文件打开,并将打开后的目标文件返回至应用程序110。
42.另外,如果与访问信息相对应的配置权限不包括对目标文件的访问权限,访问控制服务器130可以确定应用程序不具有对目标文件的访问权限,并向文件系统120返回应用程序不具有对目标文件系统的访问权限的消息,也即是返回检查访问权限失败的消息。
43.需要说明的是,根据现有技术中的文件系统,底层文件系统是具体文件系统,虚拟文件系统(vfs,virtual file system)是构建在具体文件系统之上的抽象文件系统层。并且,虚拟文件系统为上层用户空间的应用程序提供统一的接口函数,以便应用程序通过调用接口函数来访问底层文件系统。
44.在本发明的一个实施例中,构建了一种新的文件系统结构,其中,所构建的文件系统120包括底层文件系统123、虚拟文件系统121、以及布置在底层文件系统123与虚拟文件系统121之间的权限控制文件系统122。这样,通过在底层文件系统123与虚拟文件系统121之间创建权限控制文件系统122,形成了权限控制文件系统122布置在底层文件系统123之上、虚拟文件系统121布置在权限控制文件系统122之上的新的文件系统结构。并且,虚拟文件系统121的上层是用户空间,虚拟文件系统121与用户空间的一个或多个应用程序相连,可以与一个或多个应用程序进行通信。
45.应当指出,权限控制文件系统122是一种堆叠式文件系统,换言之,权限控制文件系统122是堆叠文件系统的一个具体实现。权限控制文件系统122基于堆叠文件系统的结构布置在底层文件系统123之上,实现对底层文件系统123的合并挂载。基于这种文件结构,使得权限控制文件系统122可以拦截应用程序110对底层文件系统123的访问,并检测应用程序110的访问权限,以便实现控制应用程序110对底层文件系统123的访问。
46.具体地,应用程序110在请求访问底层文件系统123的目标文件时,虚拟文件系统121可以接收到应用程序发送的对底层文件系统123的目标文件的访问请求,随后将访问请求发送至于其相连的权限控制文件系统122,由权限控制文件系统122拦截该访问请求进行权限检测。其中,权限控制文件系统122可以从访问请求中获取应用程序110的访问信息,并
请求访问控制服务器130基于应用程序110的访问信息检查应用程序的访问权限。
47.在一种实现方式中,权限控制文件系统122通过调用访问控制服务器130中的check_file_access_permission函数,来检查应用程序110的访问权限。
48.在一个实施例中,访问控制服务器130中包括权限表,权限表中可以存储所有文件的权限配置信息。这里,权限表是一种哈希表,其采用关联数组抽象数据类型的数据结构,这种数据结构可以将键映射到值。具体地,权限表中包括一个或多个权限项,每个权限项包括一种访问信息以及与访问信息相关联的配置权限。也就是说,权限项是基于访问信息与配置权限之间的关联关系而建立的。应当指出,通过将权限配置数据存储在权限表中,使其不依赖于具体的文件系统,使得本发明的文件访问控制方案能够普遍适用于各类操作系统。
49.在一种实现方式中,权限表中的每个权限项的数据结构可以定义为:
[0050][0051]
在一个实施例中,每个权限项中的访问信息可以包括文件路径、用户标识、应用程序路径,这样,可以基于文件路径、用户标识、应用程序路径中的一种或多种信息来查询权限表中的相应的权限项,并获取权限项中的配置权限。访问控制服务器130可以通过check_file_access_permission函数来查询权限表,基于权限表来确定与访问信息相对应的配置权限,并根据配置权限来判断应用程序110是否具有对目标文件的访问权限。这里,应当指出,基于文件路径、用户标识、应用程序路径来描述权限表中的权限项,这样,能实现基于单个用户来设置文件权限,从而细化了权限配置的粒度。并且,在进行权限判断时,可以结合应用程序信息进行处理,从而支持基于访问文件的应用程序的文件权限设置,提高了权限设置的范围。
[0052]
相应地,应用程序110的访问信息可以包括目标文件路径、用户标识、应用程序110的路径。访问控制服务器130可以基于应用程序110的访问信息来查询权限表,以便确定与访问信息相对应的权限项及配置权限。进而,判断与访问信息相对应的配置权限是否包括对目标文件的访问权限,如果包括对目标文件的访问权限,则可以确定应用程序具有对目标文件的访问权限。
[0053]
在一个实施例中,如图1所示,操作系统上还包括与访问控制服务器130相连的访问控制应用113,访问控制应用113布置在用户空间。这里,用户空间可以采用netlink方式与内核通信,从而,访问控制应用113可以通过netlink与访问控制服务器130进行通信。需要说明的是,netlink是一种用于linux内核的通信机制,netlink由一个在用户空间的标准的socket接口和内核模块提供的内核api组成。netlink套接字是用于实现用户进程与内核进程通信的一种特殊的进程间通信(ipc)。访问控制应用113可以通过标准的socketapi实现使用netlink与访问控制服务器130进行通信。
[0054]
访问控制应用113可以获取用户配置的配置文件,从配置文件中获取权限配置信息,并将权限配置信息发送至访问控制服务器130。访问控制服务器130在接收到访问控制应用113发送的权限配置信息后,可以基于权限配置信息来更新权限表中的相应权限项。这里,配置文件中可以包括一个或多个配置项,每个配置项分别可以包含相应的文件路径字符串、用户标识、应用程序的路径字符串、以及权限字符串。在一种实现方式中,配置文件中的一个或多个配置项例如可以实现为:
[0055]
/etc/passwd:1000:/usr/bin/cat:r
[0056]
/etc/group:1000:/usr/bin/vim:rw
[0057]
……
[0058]
可以理解,访问控制服务器130中的权限表,实际上是基于访问控制应用提供的权限配置信息来创建的。
[0059]
在一种实现方式中,访问控制服务器130在基于访问信息查询权限表中的权限项时,可以基于应用程序110的访问信息(目标文件路径、用户标识、应用程序路径)中的一种或多种分别来查询权限表中的相应权限项。例如,首先基于全部访问信息(file_path:uid:process_path)来查询权限表,并可以基于访问信息中的目标文件路径和用户标识(file_path:uid:*)来查询权限表,还可以基于访问信息中的目标文件路径(file_path:*:*)来查询权限表。
[0060]
访问控制服务器130在查询到与应用程序110的访问信息相对应的权限项后,通过比较判断权限项中的权限配置是否包括应用程序110对目标文件的访问权限,如果权限配置不包括对目标文件的访问权限,访问控制服务器130可以向访问控制应用113发送检查访问权限失败的日志,以便通知用户应用程序110不具有对目标文件的访问权限,使用户对失败访问进行跟踪。
[0061]
在一个实施例中,应用程序110基于对目标文件的操作类型来向文件系统120发送相应的访问请求。例如,应用程序110在进行打开目标文件的操作时,向文件系统120发送对目标文件的打开请求;应用程序110在进行删除目标文件的操作时,文件系统发送对目标文件的删除请求。换言之,访问请求可以是对目标文件的打开请求,还可以是对目标文件的删除请求。但,应当指出,本发明不限于对目标文件的打开操作和删除操作。
[0062]
相应地,在文件系统120接收到应用程序110的访问请求时,需要根据访问请求的类型来检查应用程序的访问权限。具体地,当应用程序110发送的对目标文件的访问请求是对目标文件的打开请求时,通过访问控制服务器130检查应用程序是否具有打开目标文件的权限,其中,在基于权限配置表确定与访问信息相对应的权限配置后,通过判断权限配置是否包含打开目标文件的权限,来确定应用程序110是否具有对目标文件的打开权限。如果确定应用程序110具有对目标文件的打开权限,则通过文件系统120将目标文件打开后返回至应用程序110。
[0063]
当应用程序110发送的对目标文件的访问请求是对目标文件的删除请求时,通过访问控制服务器130检查应用程序是否具有删除目标文件的权限,其中,在基于权限配置表确定与访问信息相对应的权限配置后,通过判断权限配置是否包含删除目标文件的权限,来确定应用程序110是否具有对目标文件的删除权限。如果确定应用程序110具有对目标文件的删除权限,则通过文件系统120将目标文件删除。
[0064]
在一个实施例中,如果确定应用程序具有对目标文件的访问权限,并且访问权限为打开目标文件的权限,则权限控制文件系统122120可以调用底层文件系统123的打开回调函数,例如ext4_file_open函数,以便基于打开回调函数来打开底层文件系统123的目标文件。并且,将打开后的目标文件返回至虚拟文件系统121,以便通过虚拟文件系统121将打开后的目标文件返回至应用程序。
[0065]
根据本发明的文件访问控制系统100,通过在底层文件系统与虚拟文件系统之间创建基于堆叠文件系统结构的权限控制文件系统,形成了新的文件系统结构。基于这种新的文件系统结构,使得权限控制文件系统可以拦截应用程序对底层文件系统的访问,并通过访问控制服务器来检测应用程序的访问权限,实现了在不依赖具体文件系统的情况下,灵活控制应用程序对底层文件系统的访问权限,确保底层文件系统的数据安全性。
[0066]
进一步地,访问控制服务器可以基于权限表来确定相应的配置权限,通过比较配置权限、操作目标文件所需的访问权限,来判断应用程序是否具有对目标文件的访问权限。通过将权限配置数据存储在权限表中,不依赖于具体的文件系统,使得本发明的文件访问控制方案能够普遍适用于各类操作系统,适用性更广。并且,基于访问控制应用可以实现灵活配置和更新权限表中的配置权限数据,以便更新应用程序对文件的访问权限。
[0067]
在一个实施例中,驻留有文件访问控制系统100的计算设备可以实现为计算设备200,使得本发明的文件访问控制方法可以在计算设备200中执行。
[0068]
图2示出了根据本发明一个实施例的计算设备200的示意图。
[0069]
如图2所示,在基本的配置202中,计算设备200典型地包括系统存储器206和一个或者多个处理器204。存储器总线208可以用于在处理器204和系统存储器206之间的通信。
[0070]
取决于期望的配置,处理器204可以是任何类型的处理,包括但不限于:微处理器(up)、微控制器(uc)、数字信息处理器(dsp)或者它们的任何组合。处理器204可以包括诸如一级高速缓存210和二级高速缓存212之类的一个或者多个级别的高速缓存、处理器核心214和寄存器216。示例的处理器核心214可以包括运算逻辑单元(alu)、浮点数单元(fpu)、数字信号处理核心(dsp核心)或者它们的任何组合。示例的存储器控制器218可以与处理器204一起使用,或者在一些实现中,存储器控制器218可以是处理器204的一个内部部分。
[0071]
取决于期望的配置,系统存储器206可以是任意类型的存储器,包括但不限于:易失性存储器(诸如ram)、非易失性存储器(诸如rom、闪存等)或者它们的任何组合。系统存储器206可以包括操作系统220、一个或者多个应用222以及程序数据224。应用222实际上是多条程序指令,其用于指示处理器204执行相应的操作。在一些实施方式中,应用222可以布置为在操作系统上使得处理器204利用程序数据224进行操作。
[0072]
计算设备200还包括储存设备232,储存设备232包括可移除储存器236和不可移除储存器238。
[0073]
计算设备200还可以包括储存接口总线234。储存接口总线234实现了从储存设备232(例如,可移除储存器236和不可移除储存器238)经由总线/接口控制器230到基本配置202的通信。操作系统220、应用222以及数据224的至少一部分可以存储在可移除储存器236和/或不可移除储存器238上,并且在计算设备200上电或者要执行应用222时,经由储存接口总线234而加载到系统存储器206中,并由一个或者多个处理器204来执行。
[0074]
计算设备200还可以包括有助于从各种接口设备(例如,输出设备242、外设接口
244和通信设备246)到基本配置202经由总线/接口控制器230的通信的接口总线240。示例的输出设备242包括图形处理单元248和音频处理单元250。它们可以被配置为有助于经由一个或者多个a/v端口252与诸如显示器或者扬声器之类的各种外部设备进行通信。示例外设接口244可以包括串行接口控制器254和并行接口控制器256,它们可以被配置为有助于经由一个或者多个i/o端口258和诸如输入设备(例如,键盘、鼠标、笔、语音输入设备、触摸输入设备)或者其他外设(例如打印机、扫描仪等)之类的外部设备进行通信。示例的通信设备246可以包括网络控制器260,其可以被布置为便于经由一个或者多个通信端口264与一个或者多个其他计算设备262通过网络通信链路的通信。
[0075]
网络通信链路可以是通信介质的一个示例。通信介质通常可以体现为在诸如载波或者其他传输机制之类的调制数据信号中的计算机可读指令、数据结构、程序模块,并且可以包括任何信息递送介质。“调制数据信号”可以这样的信号,它的数据集中的一个或者多个或者它的改变可以在信号中以编码信息的方式进行。作为非限制性的示例,通信介质可以包括诸如有线网络或者专线网络之类的有线介质,以及诸如声音、射频(rf)、微波、红外(ir)或者其它无线介质在内的各种无线介质。这里使用的术语计算机可读介质可以包括存储介质和通信介质二者。
[0076]
在根据本发明的实施例中,计算设备200被配置为执行根据本发明的文件访问控制方法300。计算设备200的操作系统中包含用于执行本发明的文件访问控制方法300的多条程序指令,使得本发明的文件访问控制方法300可以在计算设备200的操作系统中执行。
[0077]
根据本发明的一个实施例,计算设备200中驻留有文件访问控制系统100,文件访问控制系统100布置在计算设备200的操作系统的内核中。文件访问控制系统100包括执行文件访问控制方法300的多条程序指令,这些程序指令可以指示处理器204执行本发明的文件访问控制方法300,使得本发明的文件访问控制方法300可以在文件访问控制系统100中执行。
[0078]
如前文所述,在根据本发明的实施例中,操作系统上可以布置一个或多个应用程序110。这里,操作系统包括内核、以及布置内核之上的用户空间,文件访问控制系统100布置在操作系统的内核中,一个或多个应用程序110布置在操作系统的用户空间,可以与内核通信。其中,文件访问控制系统100包括文件系统120和访问控制服务器130,文件系统120与访问控制服务器130通信相连。
[0079]
应当指出,本发明对操作系统的种类不做具体限制,例如,操作系统可以实现为linux操作系统,也可以实现为windows操作系统。需要说明的是,linux操作系统是基于linux内核的操作系统,linux内核是一种开源的类unix操作系统宏内核。下文仅以linux操作系统为例来对本发明的文件访问控制方法300进行详细说明。
[0080]
图3示出了根据本发明一个实施例的文件访问控制方法300的流程图。方法300适于在文件访问控制方法100中执行。
[0081]
如图3所示,方法300始于步骤s310。
[0082]
在步骤s310中,通过文件系统120接收一个或多个应用程序110对目标文件的访问请求。这里,访问请求包括应用程序110的访问信息。文件系统120通过从访问请求中获取应用程序110的访问信息,以便根据访问信息来判断该应用程序110是否具有对目标文件的访问权限。具体地,文件系统120可以将应用程序110的访问信息发送至访问控制服务器130,
以请求访问控制服务器130基于访问信息检查应用程序110的访问权限,确定应用程序110是否具有对目标文件的访问权限。
[0083]
随后,在步骤s320中,访问控制服务器130基于访问信息检查应用程序的访问权限。具体地,基于权限表来确定与访问信息相对应的配置权限,并根据配置权限来确定应用程序110是否具有对目标文件的访问权限。
[0084]
在步骤s330中,在确定应用程序具有对目标文件的访问权限时,文件系统120将目标文件返回至应用程序110。这里,如果确定应用程序110具有对目标文件的访问权限,访问控制服务器130可以向文件系统120返回应用程序具有对目标文件系统的访问权限的消息,也即是返回检查访问权限成功的消息。在一个实施例中,当应用程序的访问请求是求打开目标文件的请求时,通过将目标文件打开,并将打开后的目标文件返回至应用程序110。
[0085]
根据本发明的一个实施例,文件系统120包括底层文件系统123、虚拟文件系统121、以及布置在底层文件系统123与虚拟文件系统121之间的权限控制文件系统122。这样,通过在底层文件系统123与虚拟文件系统121之间构建权限控制文件系统122,形成了权限控制文件系统122布置在底层文件系统123之上、虚拟文件系统121布置在权限控制文件系统122之上的新的文件系统结构。虚拟文件系统121的上层是用户空间,可以与用户空间的一个或多个应用程序进行通信。应当指出,权限控制文件系统122是一种堆叠式文件系统,其本身并不存储文件数据,基于堆叠文件系统的结构布置在底层文件系统123之上,使得权限控制文件系统122可以拦截应用程序110对底层文件系统123的访问,并检测应用程序110的访问权限,以便实现控制应用程序110对底层文件系统123的访问。
[0086]
其中,虚拟文件系统121可以接收到应用程序110发送的对底层文件系统123的目标文件的访问请求,并将访问请求发送至于其相连的权限控制文件系统122,由权限控制文件系统122拦截该访问请求进行权限检测。权限控制文件系统122可以从访问请求中获取应用程序110的访问信息,并请求访问控制服务器130基于应用程序110的访问信息检查应用程序的访问权限。
[0087]
在一种实现方式中,权限控制文件系统122通过调用访问控制服务器130中的check_file_access_permission函数,来检查应用程序110的访问权限。
[0088]
根据本发明的一个实施例,访问控制服务器130预先创建了权限表,权限表中可以存储所有文件的权限配置信息。权限表中包括一个或多个权限项,每个权限项包括一种访问信息以及与访问信息相关联的配置权限。也就是说,权限项是基于访问信息与配置权限之间的关联关系而建立的。应当指出,通过将权限配置数据存储在权限表中,使其不依赖于具体的文件系统,使得本发明的文件访问控制方案能够普遍适用于各类操作系统。
[0089]
在一个实施例中,每个权限项中的访问信息可以包括文件路径、用户标识、应用程序路径,这样,可以基于文件路径、用户标识、应用程序路径中的一种或多种信息来查询权限表中的相应的权限项,并获取权限项中的配置权限。访问控制服务器130可以通过check_file_access_permission函数来查询权限表,基于权限表来确定与访问信息相对应的配置权限,并根据配置权限来判断应用程序110是否具有对目标文件的访问权限。这里,应当指出,基于文件路径、用户标识、应用程序路径来描述权限表中的权限项,这样,能实现基于单个用户来设置文件权限,从而细化了权限配置的粒度。并且,在进行权限判断时,可以结合应用程序信息进行处理,从而支持基于访问文件的应用程序的文件权限设置,提高了权限
设置的范围。
[0090]
相应地,应用程序110的访问信息可以包括目标文件路径、用户标识、应用程序110的路径。访问控制服务器130可以基于应用程序110的访问信息来查询权限表,以便确定与访问信息相对应的权限项及配置权限。进而,判断与访问信息相对应的配置权限是否包括对目标文件的访问权限,如果包括对目标文件的访问权限,则可以确定应用程序具有对目标文件的访问权限。
[0091]
根据本发明的一个实施例,如图1所示,操作系统的用户空间还包括访问控制应用113。访问控制应用113可以通过netlink与访问控制服务器130进行通信。访问控制应用113可以获取用户配置的配置文件,从配置文件中获取权限配置信息,并将权限配置信息发送至访问控制服务器130。访问控制服务器130在接收到访问控制应用113发送的权限配置信息后,可以基于权限配置信息来更新权限表中的相应权限项。可以理解,访问控制服务器130中的权限表,实际上是基于访问控制应用提供的权限配置信息来创建的。
[0092]
在一种实现方式中,访问控制服务器130在基于访问信息查询权限表中的权限项时,可以基于应用程序110的访问信息(目标文件路径、用户标识、应用程序路径)中的一种或多种分别来查询权限表中的相应权限项。例如,首先基于全部访问信息(file_path:uid:process_path)来查询权限表,随后,可以基于访问信息中的目标文件路径和用户标识(file_path:uid:*)来查询权限表,还可以基于访问信息中的目标文件路径(file_path:*:*)来查询权限表。
[0093]
在查询到与应用程序110的访问信息相对应的权限项后,判断权限项中的权限配置是否包括应用程序110对目标文件的访问权限,如果权限配置不包括对目标文件的访问权限,说明访问权限检查失败,随后访问控制服务器130可以向访问控制应用113发送检查访问权限失败的日志,以便通知用户应用程序110不具有对目标文件的访问权限。
[0094]
根据本发明的一个实施例,应用程序110可以基于对目标文件的操作类型来向文件系统120发送相应的访问请求。应用程序110在进行打开目标文件的操作时,向文件系统120发送对目标文件的打开请求;应用程序110在进行删除目标文件的操作时,文件系统发送对目标文件的删除请求。换言之,访问请求可以是对目标文件的打开请求,还可以是对目标文件的删除请求。
[0095]
相应地,在文件系统120接收到应用程序110的访问请求时,需要根据访问请求的类型来检查应用程序的访问权限。具体地,当应用程序110发送的对目标文件的访问请求是对目标文件的打开请求时,通过访问控制服务器130检查应用程序是否具有打开目标文件的权限,其中,在基于权限配置表确定与访问信息相对应的权限配置后,通过判断权限配置是否包含打开目标文件的权限,来确定应用程序110是否具有对目标文件的打开权限。如果确定应用程序110具有对目标文件的打开权限,则通过文件系统120将目标文件打开后返回至应用程序110。
[0096]
当应用程序110发送的对目标文件的访问请求是对目标文件的删除请求时,通过访问控制服务器130检查应用程序是否具有删除目标文件的权限,其中,在基于权限配置表确定与访问信息相对应的权限配置后,通过判断权限配置是否包含删除目标文件的权限,来确定应用程序110是否具有对目标文件的删除权限。如果确定应用程序110具有对目标文件的删除权限,则通过文件系统120将目标文件删除。
[0097]
应当指出,本发明不限于对目标文件的打开操作和删除操作。在又一些实施例中,应用程序110对文件的操作类型还可以是基于索引节点的操作,索引节点操作类型例如包括:创建新文件、创建链接、取消链接、创建符号链接、删除命令、重命名等操作。具体地,索引节点操作由struct inode_operations结构体描述。基于上述列举的索引节点操作类型,struct inode_operations具体描述可以实现为:
[0098][0099]
图4示出了根据本发明一个实施例的文件访问控制方法300对应的时序图。
[0100]
如图4所示,在一种实现方式中,应用程序110发送的访问请求,是在执行打开目标文件的操作时向虚拟文件系统121发送的对目标文件的打开请求。其中,应用程序110可以执行系统调用open,并进入虚拟文件系统121的do_sys_open函数。do_sys_open函数会完成一些通用的unix文件权限检查和一些通用的打开操作,随后,虚拟文件系统121的vfs_open函数会调用权限控制文件系统122注册的open回调函数,以请求权限控制文件系统122通过open函数打开目标文件。
[0101]
随后,权限控制文件系统122的open函数会调用访问控制服务器的check_file_access_permission函数,以便通过访问控制服务器的check_file_access_permission函数来检查应用程序对目标文件系统的访问权限(即,打开目标文件的权限)。具体地,访问控制服务器通过check_file_access_permission函数来查询权限表,基于权限表来确定与访问信息相对应的配置权限,并根据配置权限来判断应用程序110是否具有打开目标文件的权限。
[0102]
其中,如果检查权限失败,则访问控制服务器130可以向访问控制应用113发送检查权限失败的日志,以便通知用户应用程序110不具有打开目标文件的权限,访问控制应用113可以保存日志。并且,访问控制服务器130将检查权限失败的结果基于权限控制文件系统122的open函数返回至权限控制文件系统122。
[0103]
如果检查权限成功,则访问控制服务器130将检查权限成功的结果基于权限控制文件系统122的open函数返回至权限控制文件系统122。随后,权限控制文件系统122的open函数会调用底层文件系统123注册的open回调函数,例如ext4_file_open函数,以便基于
ext4_file_open函数来打开底层文件系统123的目标文件。并且,权限控制文件系统122获取打开后的目标文件,并将打开后的目标文件返回至虚拟文件系统121,随后,虚拟文件系统121将打开后的目标文件返回至应用程序110。
[0104]
根据本发明的文件访问控制方法300,可以拦截应用程序对底层文件系统的访问,并通过访问控制服务器来检测应用程序的访问权限,实现了在不依赖具体文件系统的情况下,灵活控制应用程序对底层文件系统的访问权限,确保底层文件系统的数据安全性。进一步地,基于权限表来确定相应的配置权限,通过比较配置权限、操作目标文件所需的访问权限,来判断应用程序是否具有对目标文件的访问权限。通过将权限配置数据存储在权限表中,不依赖于具体的文件系统,使得本发明的文件访问控制方案能够普遍适用于各类操作系统,适用性更广。并且,基于访问控制应用可以实现灵活配置和更新权限表中的配置权限数据,以便更新应用程序对文件的访问权限。
[0105]
这里描述的各种技术可结合硬件或软件,或者它们的组合一起实现。从而,本发明的方法和设备,或者本发明的方法和设备的某些方面或部分可采取嵌入有形媒介,例如可移动硬盘、u盘、软盘、cd-rom或者其它任意机器可读的存储介质中的程序代码(即指令)的形式,其中当程序被载入诸如计算机之类的机器,并被所述机器执行时,所述机器变成实践本发明的设备。
[0106]
在程序代码在可编程计算机上执行的情况下,移动终端一般包括处理器、处理器可读的存储介质(包括易失性和非易失性存储器和/或存储元件),至少一个输入装置,和至少一个输出装置。其中,存储器被配置用于存储程序代码;处理器被配置用于根据该存储器中存储的所述程序代码中的指令,执行本发明的文件访问控制方法。
[0107]
以示例而非限制的方式,可读介质包括可读存储介质和通信介质。可读存储介质存储诸如计算机可读指令、数据结构、程序模块或其它数据等信息。通信介质一般以诸如载波或其它传输机制等已调制数据信号来体现计算机可读指令、数据结构、程序模块或其它数据,并且包括任何信息传递介质。以上的任一种的组合也包括在可读介质的范围之内。
[0108]
在此处所提供的说明书中,算法和显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与本发明的示例一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。
[0109]
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下被实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
[0110]
类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
[0111]
本领域那些技术人员应当理解在本文所公开的示例中的设备的模块或单元或组
件可以布置在如该实施例中所描述的设备中,或者可替换地可以定位在与该示例中的设备不同的一个或多个设备中。前述示例中的模块可以组合为一个模块或者此外可以分成多个子模块。
[0112]
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
[0113]
此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。
[0114]
此外,所述实施例中的一些在此被描述成可以由计算机系统的处理器或者由执行所述功能的其它装置实施的方法或方法元素的组合。因此,具有用于实施所述方法或方法元素的必要指令的处理器形成用于实施该方法或方法元素的装置。此外,装置实施例的在此所述的元素是如下装置的例子:该装置用于实施由为了实施该发明的目的的元素所执行的功能。
[0115]
如在此所使用的那样,除非另行规定,使用序数词“第一”、“第二”、“第三”等等来描述普通对象仅仅表示涉及类似对象的不同实例,并且并不意图暗示这样被描述的对象必须具有时间上、空间上、排序方面或者以任意其它方式的给定顺序。
[0116]
尽管根据有限数量的实施例描述了本发明,但是受益于上面的描述,本技术领域内的技术人员明白,在由此描述的本发明的范围内,可以设想其它实施例。此外,应当注意,本说明书中使用的语言主要是为了可读性和教导的目的而选择的,而不是为了解释或者限定本发明的主题而选择的。因此,在不偏离所附权利要求书的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。对于本发明的范围,对本发明所做的公开是说明性的而非限制性的,本发明的范围由所附权利要求书限定。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献