一种动态可配置的文件替换和监控的方法和系统与流程

文档序号:17537023发布日期:2019-04-29 14:06阅读:340来源:国知局
一种动态可配置的文件替换和监控的方法和系统与流程

本发明涉及操作系统中对文件进行操作的方法,尤其涉及一种动态可配置的文件替换监控方法和系统。



背景技术:

在一个系统中,文件分为可执行文件和数据文件。由于需求在不断变化,无论可执行文件和数据文件都需要不停升级,修改,调试才能赶上需求变换和运营要求,这样原来的文件需要替换成新的文件,就是所谓的升级或修改配置。

这一个过程,在通常情况下,至少需要重启进程,在部分情况下还需要重启整个设备。对于部分嵌入式设备而言,由于存储空间宝贵,除了配置数据等极小部分区间,大部分文件系统是压缩和只读的,导致这大部分文件系统哪怕任何小的文件修改,都需要升级并重启整个系统。这些给研发调试运营人员维护带来极大的不便,业务中断也影响了用户使用感受。



技术实现要素:

本发明的目的在于克服现有技术的缺点,提供了一种动态可配置的文件替换监控方法和系统,能够解决现有在对数据文件进行升级、修改、调试时存在的不便。

本发明的目的通过以下技术方案来实现:一种动态可配置的文件替换监控系统,它包括:

文件替换模块:用于将全路径文件名称、进程号和用户组这些信息和已经配置好的规则进行比较;

拦截监控模块:用于监控打开文件的名称、进程号和用户组并通知所述文件替换模块打开文件事件发生;

配置模块:用于对文件替换规则进行配置,并将配置好的替换规则在用户空间通过命令传递到所述文件替换模块。

一种动态可配置的文件替换监控方法,它包括以下步骤:

s1、配置文件替换规则:

s2、通过命令行的方式将配置好的替换规则传递到系统的文件替换模块中;

s3、通过系统调用进入系统调用表并按照函数路径调用函数打开文件;

s4、拦截检测调用文件名,并把进程所在的用户组信息传递到文件替换模块;

s5、文件替换模块根据预先配置好的替换规则进行匹配。

所述的文件替换规则包括无条件替换、根据用户组替换、以不同的时间段分派不同的替换规则和替换成空文件中的一种规则或者多种规则亦或者多种规则组合成的规则。

根据步骤s5文件替换模块根据预先配置好的替换规则进行匹配具体包括以下匹配结果:

a1、未发现任何匹配的规则,按照原有的处理流程处理,即打开原来的文件;

a2、发现匹配的规则,规则设置为需要做替换,替换成新的路径下的文件,为替换后的文件分配相关节点信息;

a3、发现匹配规则,规则设置为不允许打开,直接返回为空,表现结果为打开文件失败。

如果文件打开失败,则退出后续处理;如果文件打开成功,无论是否被替换后续的处理都是新文件信息结构体所指定的文件节点上操作。

还包括在内存文件系统中创建一个目录,并将替换文件存放在该目录中,当符合替换规则时使用存放在该目录下的文件;以便在掉电或重启后仍然后替换功能。

本发明具有以下优点:一种动态可配置的文件替换监控方法和系统,能够在很多情景下部分或者完全解决现有对为数据文件进行升级、修改、调试时存在的不便,并在不修改源码的情况下能扩展原有软件的部分功能。

附图说明

图1为本发明方法的流程图;

图2为本发明系统的结构示意图。

具体实施方式

下面结合附图对本发明做进一步的描述,但本发明的保护范围不局限于以下所述。

如图1和图2所示,一种动态可配置的文件替换监控系统,它包括:

文件替换模块:用于将全路径文件名称、进程号和用户组这些信息和已经配置好的规则进行比较;如果没有匹配规则就按原来的处理方式处理,如果有匹配规则,就按匹配规则处理;例如打开a文件,文件替换模块把a文件替换成b文件。

拦截监控模块:用于监控打开文件的名称(包含全路径或者相对路径)、进程号和用户组并通知所述文件替换模块打开文件事件发生;

配置模块:用于对文件替换规则进行若干条替换规则的配置,并将配置好的替换规则在用户空间通过命令传递到所述文件替换模块。也可以在进程运行时根据需要动态的调整配置。

一种动态可配置的文件替换监控方法,它包括以下步骤:

s1、配置文件替换规则:

s2、通过命令行的方式将配置好的替换规则传递到系统的文件替换模块中;

s3、通过系统调用进入系统调用表并按照函数路径调用函数打开文件;

如:在linux操作系统中,打开一个文件是通过系统调用进入系统调用表,并按照以下函数路径调用函数;

sys_open->do_sys_open->do_filp_open->path_openat->link_path_walk。

s4、这些函数参数传入了文件名(全路径或者相对路径),在上面这些函数忠辉找到一个合适的点,拦截检测调用文件名,并把进程所在的用户组信息传递到文件替换模块;

s5、文件替换模块根据预先配置好的替换规则进行匹配。

所述的文件替换规则包括无条件替换、根据用户组替换、以不同的时间段分派不同的替换规则和替换成空文件中的一种规则或者多种规则亦或者多种规则组合成的规则。

优选地,无条件替换:例如临时替换原系统中的busybox,旧的busybox位于/bin/busybox,当打开busybox文件时,配置规则,实际打开位于/var/apps/busybox,这样执行busybox中的任何命令,实际执行的是新版本位于/var/apps/busybox。

根据用户组来替换:查找进程所属的用户组,根据进程所在的用户组,例如管理员权限的用户打开logon.jpg,替换成admin.jpg,普通用户权限的用户打开logon.jpg,替换成user.jpg。

以不同的时间段分派不同的替换规则:例如配置进程打开hello.jpg时,在00:00-12:00时间段替换成goodmorning.jpg,在12:00-18:00替换成goodafternoon.jpg,在18:00-24:00替换成goodevening.jpg。

优选地,多种规则组合成的规则包括无条件替换规则和根据用户组来替换规则二者组合成的规则;无条件替换规则和以不同的时间段分派不同的替换规则二者组合成的规则;以不同的时间段分派不同的替换规则和根据用户组来替换规则二者组合成的规则;无条件替换规则、根据用户组来替换规则和以不同的时间段分派不同的替换规则三者组合成的规则。

根据步骤s5文件替换模块根据预先配置好的替换规则进行匹配具体包括以下匹配结果:

a1、未发现任何匹配的规则,按照原有的处理流程处理,即打开原来的文件;

a2、发现匹配的规则,规则设置为需要做替换,替换成新的路径下的文件,为替换后的文件分配相关节点信息;后续的读写文件,关闭文件都是在替换的文件上进行操作。由于替换发生在内核空间,并且对于用户态空间是不透明的,用户空间的进程是无法感知的,也不影响原有的处理流程。相当于”欺骗”了用户空间的进程,以为打开了原来的文件,实际打开了被替换的文件,除非现有替换文件数据有异常,在通常情况下,都能完全正常地工作。

a3、发现匹配规则,规则设置为不允许打开,直接返回为空,表现结果为打开文件失败。这样可以阻止一些用户打开敏感文件,或在某些时间段阻止用户使用一些功能。

如果文件打开失败,则退出后续处理;如果文件打开成功,无论是否被替换,因为分配了文件信息结构(在linux系统中是structfile这个结构)返回给用户空间的进程,后续的读写文件,移动文件指针,关闭文件等等都是在此新文件信息结构体所指定的文件节点上操作。因此监控拦截模块无需监控后续这些操作,减少了复杂度和提高了效率。

优选地,针对某些系统,特别是有些嵌入式小型设备,存储空间宝贵。文件系统大部分文件是压缩的,在启动后解压到内存,无法通过部分修改的文件的方式修改升级部分功能,在内存文件系统中创建一个目录,例如/var/apps,将替换文件放在此目录中,ftp等方式上传替换文件到此目录中,当符合替换规则时,使用/var/apps下的文件。在内存中,便于快速操作替换,此方法用于调试阶段。当需要永久替换部分模块时,可以把这些需要替换的文件存放在配置文件区间,以便在掉电重启后仍然有替换功能。用于解决嵌入式小型设备的压缩文件系统无法替换升级其中的部分文件的问题,之前通常的解决方法是哪怕有一点点功能或代码的改变,需要重新编译打包压缩整个文件系统,然后升级才能做到。此方法另外还需要开发者具有全部的代码模块,编译打包工具等才能完成,缺一不可。采用本发明的方法后,只要有配置权限,就能轻易做到任意文件的替换。

以上所述仅是本发明的优选实施方式,应当理解本发明并非局限于本文所披露的形式,不应看作是对其他实施例的排除,而可用于各种其他组合、修改和环境,并能够在本文所述构想范围内,通过上述教导或相关领域的技术或知识进行改动。而本领域人员所进行的改动和变化不脱离本发明的精神和范围,则都应在本发明所附权利要求的保护范围内。

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