一种访问文件的控制方法及装置与流程

文档序号:14249862阅读:137来源:国知局
一种访问文件的控制方法及装置与流程

本发明涉及计算机技术领域,尤其涉及一种访问文件的控制方法及装置。



背景技术:

在android系统内核采用selinux安全机制中,linux的安全策略和决策过程如下所述:当主体对客体进行访问时,客体管理器会收集主体和客体的sid,并根据此sid对在avc中进行查找:如果找到,则根据相应的安全决策进行处理;反之客体管理器会将主体的sid、客体的sid以及客体的类型传递给安全服务器,安全服务器会根据这些数据及相应的安全策略来计算访问向量,并将计算结果返回给客体管理器,同时将该结果存放到avc。

如此,使得在android系统中对于每次文件访问操作,都会进行权限安全检查,实际使用中,用户可能需要避免不必要的安全检查,如:实际使用中,需要用一个路径中文件替换另一个路径中文件,如果这个两个路径或文件具有不同的安全属性,就会导致用户能打开这个文件,但却无权打开另一个文件;由此可知,在源文件和新文件有不同安全属性且实际使用中需要等同访问时,现有技术仍需要分别对源文件和新文件进行安全检查然后再打开,进而会存在源文件和新文件这两个文件的不能等同访问的问题。



技术实现要素:

鉴于上述问题,本发明提供发明以便提供一种访问文件的控制方法及装置,以实现了等同访问源文件和目标文件的效果。

第一方面,本发明实施例提供了一种访问文件的控制方法,包括:

获取需要等同访问的源文件的安全属性和目标文件的唯一标识;

建立文件过滤列表,其中,在所述文件过滤列表中创建所述目标文件的安全属性表,所述目标文件的安全属性表中包括所述目标文件的唯一标识和所述源文件的安全属性;

在访问所述目标文件时,通过所述文件过滤列表对所述目标文件进行安全列表过滤检查,将所述目标文件的安全属性替换为所述文件过滤列表中所述目标文件的安全属性表中的安全属性,利用所述源文件的安全属性访问所述目标文件。

本发明的访问文件的控制方法及装置中,首先,建立文件过滤列表,在文件过滤列表中创建目标文件的安全属性表,目标文件的安全属性表中包括目标文件的唯一标识和源文件的安全属性;以及在访问目标文件时,通过文件过滤列表对目标文件进行安全列表过滤检查,将所述目标文件的安全属性替换为所述文件过滤列表中所述目标文件的安全属性表中的安全属性,利用所述源文件的安全属性访问所述目标文件,如此,使得在访问目标文件时使用的其实是源文件的安全属性,从而实现了等同访问源文件和目标文件的效果。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作以简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明实施例中的访问文件的控制方法的流程示意图;

图2为本发明实施例中的访问文件的控制装置的结构示意图;

图3为本发明实施例中的访问文件的电子设备的结构示意图。

具体实施方式

下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。

本发明实施例提供了一种用访问文件的控制方法,该方法应用于linux系统或基于linux的其它系统例如android系统中。

参见图1所示,该访问文件的控制方法包括以下步骤:

s101:获取需要等同访问的源文件的安全属性和目标文件的唯一标识;

s102:建立文件过滤列表,其中,在文件过滤列表中创建目标文件的安全属性表,目标文件的安全属性表中包括目标文件的唯一标识和源文件的安全属性;

s103:在访问目标文件时,通过文件过滤列表对目标文件进行安全列表过滤检查,将目标文件的安全属性替换为文件过滤列表中目标文件的安全属性表中的安全属性,利用源文件的安全属性访问目标文件。

其中,在s101中,首先获取需要等同访问的源文件和目标文件,然后获取源文件的路径和文件名;再根据源文件的路径和文件名,获取源文件的安全属性;以及在获取目标文件之后,获取目标文件的路径和文件名,再根据目标文件的路径和文件名,获取目标文件在索引节点中的索引值,并将获取的索引值作为目标文件的唯一标识。

具体来讲,可以根据源文件的属性,获取到源文件的路径和文件名,例如根据源文件的属性可知源文件的路径为“c:\programfiles(x86)\addr\a”和文件名为“a”;在获取到源文件的路径和文件名之后,可以通过kern_path函数获取源文件的唯一标识,即inode结构体中i_ino值;根据源文件的唯一标识,读取源文件的inode中存储的读、写和执行权限等安全属性信息,安全属性信息例如可以用sid、sclass等进行表示。

同理,可以根据目标文件的属性,获取到目标文件的路径和文件名,例如根据目标文件的属性可知目标文件的路径为“c:\programfiles(x86)\addr\b”和文件名为“b”;在获取到目标文件的路径和文件名之后,可以通过kern_path函数获取目标文件在inode结构体中索引值(即i_ino值)。

在linux中,每个文件在inode结构体中i_ino值均是唯一的,操作系统通过i_ino值来识别不同的文件。

接下来执行s102,首先建立文件过滤列表,然后在文件过滤列表中创建目标文件的安全属性表;在文件过滤列表中创建目标文件的安全属性表,具体为:根据目标文件的唯一标识构建目标文件的安全属性表,在目标文件的安全属性表中写入源文件的安全属性。

例如源文件a的i_ino值为1001,而目标文件b的i_ino值为1201,则文件过滤列表中的b的安全属性表具体如下:

由此可知,文件过滤列表中的目标文件的安全属性为源文件的安全属性,即在访问主体访问目标文件时使用的其实是源文件的安全属性,使得访问主体是你使用源文件的安全属性来访问目标文件,若访问主体能够访问源文件即可以访问目标文件。即使目标文件的安全属性比源文件的安全属性高,如果访问主体能够打开源文件也即能够打开目标文件,从而实现了对源文件和目标文件等同访问的效果。

在实际应该过程中,在文件进行热替换时,源文件和新文件(即目标文件)可能有不同的安全属性,实际使用中需要等他访问,若目标文件的权限过高,会导致出现用户仅能访问源文件而不能访问目标文件的问题。

接下来执行s103,在访问目标文件且对目标文件进行文件权限检查时,进行系统调用响应(hook响应),在hook中通过文件过滤列表对目标文件进行安全列表过滤检查,将目标文件的安全属性替换为文件过滤列表中目标文件的安全属性表中的安全属性,利用源文件的安全属性访问目标文件。

具体来讲,在访问目标文件时,首先使用open()系统调用打开目标文件,在使用open()系统调用打开要访问的目标文件时就需要检查访问主体是否有权限访问目标文件。open()系统调用经过层层调用,最后会通过inode_permission()函数来检查目标文件的inode结构体中的访问权限,该函数首先基于acl进行权限的检查,接着检查访问主体是否能访问目标文件所在的设备,最后调用security_inode_permission()函数基于挂载到lsm的安全策略来进行权限的检查;其中,在调用security_inode_permission()函数时进行系统调用响应(即hook响应),如此,在hoook的函数中做安全列表过滤检查,即通过文件过滤列表对目标文件进行安全列表过滤检查,将目标文件的安全属性替换为文件过滤列表中目标文件的安全属性表中的安全属性,利用源文件的安全属性访问目标文件。

如此,使得目标文件使用的其实是源文件的安全属性,从而巧妙绕过了安全属性检查,进而实现了对源文件和目标文件的等同访问的效果。

例如,用户在访问b时,open()系统调用经过层层调用,最后会通过inode_permission()函数来检查b的inode结构体中的访问权限,该函数首先基于acl进行权限的检查,接着检查访问主体是否能访问目标文件所在的设备,最后调用security_inode_permission()函数基于挂载到lsm的安全策略来进行权限的检查;其中,在调用security_inode_permission()函数时进行系统hook响应,此时,hoook的函数中做安全列表过滤检查,即通过文件过滤列表对目标文件进行安全列表过滤检查,将目标文件的安全属性uint32_tsid:201;

然后利用源文件的安全属性访问目标文件。

进一步,通过上述方法可以实现增强或减弱linux文件系统的安全访问控制,通过修改文件的安全属性,对于用户访问的文件,可以提高权限禁止用户访问,也可以降低权限允许用户访问。例如当一个普通用户需要访问root用户的文件时,可以通过上述方法将root用户的文件的安全属性改成system文件的安全属性,则该普通用户可访问root用户的文件。

在一实施例中,在建立文件过滤列表之后,方法还包括:

s201、检测文件过滤列表中的列表数量是否大于预设阈值;

s202、若检测到文件过滤列表中的列表数量不大于预设阈值,则控制文件过滤列表中的列表以链表形式存储;

s203、若检测到文件过滤列表中的列表数量大于预设阈值,则控制文件过滤列表中的列表以无锁直接表形式存储。

具体来讲,预设阈值可以由系统自行设定,也可以由用户设定,也可以根据硬件的性能来设定,本申请不作具体限制。

具体地,在文件过滤列表中的列表数量大于预设阈值时,即表明文件过滤列表中的列表过长,此时,查找目标文件的安全属性表的时间会变长。如此,为了提高查找效率,可以优化数据结构,即选用无锁直接表替换链表,在不发生冲突情况下,一次就可命中,能够有效提高查找效率。

例如,以预设阈值为100为例,若文件过滤列表中的列表数量用l表示,若l=90<100,则文件过滤列表中的列表采用链表形式存储;若l=102>100,则文件过滤列表中的列表采用无锁直接表形式存储。

在一实施例中,在利用源文件的安全属性访问目标文件之后,方法还包括:删除文件过滤列表中的目标文件的安全属性表。

具体来讲,为了降低文件访问的风险,提高文件访问的安全性,在利用源文件的安全属性访问目标文件之后,删除文件过滤列表中的目标文件的安全属性表,使得用户在当次访问的时才会使用源文件的安全属性来访问目标文件;而当次访问之后再访问时,由于文件过滤列表中的目标文件的安全属性表已被删除,从而仍需验证用户的访问权限,如此,能够临时地进行等同访问源文件和目标文件,而下次访问目标文件时需要重新验证权限,从而能够提高文件访问的安全性,降低文件访问的风险。

例如,在用户使用a的安全属性访问b之后,在文件列表中删除掉b的安全属性表。

基于同一发明构思,本发明实施例提供一种访问文件的控制装置,如图2所示,该控制装置200,包括:获取单元201,用于获取需要等同访问的源文件的安全属性和目标文件的唯一标识;建立单元202,用于建立文件过滤列表,其中,在文件过滤列表中创建目标文件的安全属性表,目标文件的安全属性表中包括目标文件的唯一标识和源文件的安全属性;替换单元203,用于在访问目标文件时,通过文件过滤列表对目标文件进行安全列表过滤检查,将目标文件的安全属性替换为文件过滤列表中目标文件的安全属性表中的安全属性;访问单元204,用于利用源文件的安全属性访问目标文件。

在本发明其他实施例中,获取单元,用于根据源文件的路径和文件名,获取源文件的安全属性;以及,根据目标文件的路径和文件名,获取目标文件在索引节点中的索引值,并将获取的索引值作为目标文件的唯一标识。

在本发明其他实施例中,建立单元,用于根据目标文件的唯一标识构建目标文件的安全属性表,在目标文件的安全属性表中写入源文件的安全属性。

在本发明其他实施例中,建立单元,还用于在建立文件过滤列表之后,检测文件过滤列表中的列表数量是否大于预设阈值;若检测到文件过滤列表中的列表数量不大于预设阈值,则控制文件过滤列表中的列表以链表形式存储;若检测到文件过滤列表中的列表数量大于预设阈值,则控制文件过滤列表中的列表以无锁直接表形式存储。

在本发明其他实施例中,控制装置,还包括:删除单元,用于在访问单元利用源文件的安全属性访问目标文件之后,删除文件过滤列表中的目标文件的安全属性表。

基于同一发明构思,本发明实施例提供一种电子设备,如图3所示,该电子设备300包括:存储器301和处理器302,其中,存储器301中存储有一个或者多个程序指令303,处理器302执行程序指令303以实现上述一个或者多个实施例所述的访问文件的控制方法的方法步骤。

基于同一发明构思,本发明实施例提供一种计算机可读存储介质,可读存储介质上存储有程序,程序被处理器执行时实现上述一个或者多个实施例所述的访问文件的控制方法的方法步骤。

本发明一个或多个实施例,至少具有以下有益效果:

由于在本发明实施例中,建立文件过滤列表,在文件过滤列表中创建目标文件的安全属性表,目标文件的安全属性表中包括目标文件的唯一标识和源文件的安全属性;以及在访问目标文件时,通过文件过滤列表对目标文件进行安全列表过滤检查,将目标文件的安全属性替换为文件过滤列表中目标文件的安全属性表中的安全属性,利用源文件的安全属性访问目标文件,如此,使得在访问目标文件时使用的其实是源文件的安全属性,从而实现了等同访问源文件和目标文件的效果。

在此提供的算法和显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与基于在此的示教一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。

在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。

类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。

此外,本领域的技术人员能够理解,尽管在此的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。

应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1