《在路由设备上运行插件的方法、装置及路由设备.pdf》由会员分享,可在线阅读,更多相关《在路由设备上运行插件的方法、装置及路由设备.pdf(23页珍藏版)》请在专利查询网上搜索。
1、10申请公布号CN104091132A43申请公布日20141008CN104091132A21申请号201410269810722申请日20140617G06F21/64201301G06F21/54201301G06F9/445200601H04L12/77520130171申请人小米科技有限责任公司地址100085北京市海淀区清河中街68号华润五彩城购物中心二期13层72发明人刘铁俊李政程亮陈现麟张鹏飞74专利代理机构北京弘权知识产权代理事务所普通合伙11363代理人逯长明许伟群54发明名称在路由设备上运行插件的方法、装置及路由设备57摘要本发明是关于一种在路由设备上运行插件的方法、装置。
2、及路由设备,该方法包括获取针对插件的运行指令;从操作系统中的第一设定目录获取所述插件;创建与所述插件对应的进程,并限制所述进程的访问空间为所述第一设定目录;在所述进程中运行所述插件。由于限制进程的访问空间仅仅在第一设定目录下,即安装插件的目录下,通常安装插件的目录不是操作系统的系统文件保存的目录,因此进程无法访问操作系统的系统文件,这样就可以有效阻止进程破坏路由设备的操作系统的系统文件,保证了操作系统正常工作。51INTCL权利要求书3页说明书12页附图7页19中华人民共和国国家知识产权局12发明专利申请权利要求书3页说明书12页附图7页10申请公布号CN104091132ACN1040911。
3、32A1/3页21一种在路由设备上运行插件的方法,其特征在于,包括获取针对插件的运行指令;从操作系统的第一设定目录中获取所述插件;创建与所述插件对应的进程,并限制所述进程的访问空间为所述第一设定目录;在所述进程中运行所述插件。2根据权利要求1所述的方法,其特征在于,所述获取针对插件的运行指令的步骤包括启动后,调用开机启动目录下保存所述插件的启动脚本,生成所述运行指令;或者,启动后,通过开机启动目录下的插件启动管理脚本从第二设定目录获取所述插件的配置文件,若所述配置文件携带开机启动标识,则生成所述运行指令,若所述配置文件未携带所述开机启动标识,则接收客户端发出的所述运行指令。3根据权利要求1所述。
4、的方法,其特征在于,所述限制所述进程的访问空间为所述第一设定目录的步骤包括若所述进程请求访问所述操作系统中除所述第一设定目录外的其它目录,则将所述其它目录挂载到所述第一设定目录下;将挂载在所述第一设定目录下的其它目录的属性设置为只读。4根据权利要求13任一所述的方法,其特征在于,所述方法还包括在进程列表中记录所述进程的标识信息。5如权利要求1所述的方法,其特征在于,所述方法还包括获取针对所述插件的安装指令;获取所述插件对应的压缩包,所述压缩包包括所述插件、所述插件对应的动态链接库、配置文件和数字证书;根据所述数字证书和预存的公钥对所述压缩包进行解密认证;若所述压缩包通过解密认证,将所述插件和所。
5、述动态链接库存储在所述第一设定目录下,将所述配置文件存储在第二设定目录下。6根据权利要求5所述的方法,其特征在于,所述方法还包括若所述配置文件携带开机启动标记,在开机启动目录下添加所述插件的启动脚本。7如权利要求1所述的方法,其特征在于,所述方法还包括获取针对所述插件的卸载指令;确定所述插件停止运行后,检测是否已从所述开机启动目录下删除所述插件的启动脚本;若已从所述开机启动目录下删除所述插件的启动脚本,则清空所述第一设定目录。8根据权利要求7所述的方法,其特征在于,所述确定所述插件停止运行的步骤包括检测进程列表中是否存在与所述插件对应的进程的标识信息;若所述进程列表中不存在与所述插件对应的进程。
6、的标识信息,则确定所述插件停止运行;若所述进程列表中存在与所述插件对应的进程的标识信息,则删除与所述插件对应的进程的标识信息。9一种在路由设备上运行插件的装置,其特征在于,包括权利要求书CN104091132A2/3页3第一获取模块,用于获取针对插件的运行指令;第二获取模块,用于从操作系统的第一设定目录中获取所述插件;限制模块,用于创建与所述插件对应的进程,并限制所述进程的访问空间为所述第一设定目录;运行模块,用于在所述进程中运行所述插件。10根据权利要求9所述的装置,其特征在于,所述第一获取模块包括生成单元,用于启动后,调用开机启动目录下保存所述插件的启动脚本,生成所述运行指令;或者,处理单。
7、元,用于启动后,通过开机启动目录下的插件启动管理脚本从第二设定目录获取所述插件的配置文件,若所述配置文件携带开机启动标识,则生成所述运行指令,若所述配置文件未携带所述开机启动标识,则接收客户端发出的所述运行指令。11根据权利要求9所述的装置,其特征在于,所述限制模块包括挂载单元,用于若所述进程请求访问所述操作系统中除所述第一设定目录外的其它目录,则将所述其它目录挂载到所述第一设定目录下;设置单元,用于将挂载在所述第一设定目录下的其它目录的属性设置为只读。12根据权利要求911任一所述的装置,其特征在于,所述装置还包括记录模块,用于在进程列表中记录所述进程的标识信息。13如权利要求9所述的装置,。
8、其特征在于,所述装置还包括第三获取模块,用于获取针对所述插件的安装指令;第四获取模块,用于获取所述插件对应的压缩包,所述压缩包包括所述插件、所述插件对应的动态链接库、配置文件和数字证书;解密认证模块,用于根据所述数字证书和预存的公钥对所述压缩包进行解密认证;存储模块,用于若所述压缩包通过解密认证,将所述插件和所述动态链接库存储在所述第一设定目录下,将所述配置文件存储在第二设定目录下。14根据权利要求13所述的装置,其特征在于,所述装置还包括添加模块,用于若所述配置文件携带开机启动标记,在开机启动目录下添加所述插件的启动脚本。15如权利要求9所述的装置,其特征在于,所述装置还包括第五获取模块,用。
9、于获取针对所述插件的卸载指令;检测模块,用于确定所述插件停止运行后,检测是否已从所述开机启动目录下删除所述插件的启动脚本;清空模块,用于若已从所述开机启动目录下删除所述插件的启动脚本,则清空所述第一设定目录。16根据权利要求15所述的装置,其特征在于,所述检测模块包括检测单元,用于检测进程列表中是否存在与所述插件对应的进程的标识信息;确定单元,用于若所述进程列表中不存在与所述插件对应的进程的标识信息,则确定所述插件停止运行;若所述进程列表中存在与所述插件对应的进程的标识信息,则删除与所述插件对应的进程的标识信息。17一种路由设备,其特征在于,包括权利要求书CN104091132A3/3页4处理。
10、器;用于存储处理器可执行指令的存储器;其中,所述处理器被配置为获取针对插件的运行指令;从操作系统的第一设定目录中获取所述插件;创建与所述插件对应的进程,并限制所述进程的访问空间为所述第一设定目录;在所述进程中运行所述插件。权利要求书CN104091132A1/12页5在路由设备上运行插件的方法、装置及路由设备技术领域0001本公开涉及通信技术领域,尤其涉及一种在路由设备上运行插件的方法、装置及路由设备。背景技术0002随着通信技术的飞速发展,路由设备越来越智能化,智能化的路由设备类似于一个开放的操作系统,可以执行插件的安装、运行、卸载等操作。0003但是,目前的路由设备上运行插件时,常常会出现。
11、操作系统中的系统文件被破坏,进而导致操作系统瘫痪的问题。因此,目前亟需一种可以防止插件运行过程中破坏操作系统的插件运行方法。发明内容0004为克服相关技术中存在的问题,本公开提供一种在路由设备上运行插件的方法、装置及路由设备。0005根据本公开实施例的第一方面,提供一种在路由设备上运行插件的方法,包括0006获取针对插件的运行指令;0007从操作系统的第一设定目录中获取所述插件;0008创建与所述插件对应的进程,并限制所述进程的访问空间为所述第一设定目录;0009在所述进程中运行所述插件。0010结合第一方面,在第一方面的第一种可能的实现方式中,所述获取针对插件的运行指令的步骤包括0011启动。
12、后,调用开机启动目录下保存所述插件的启动脚本,生成所述运行指令;或者,0012启动后,通过开机启动目录下的插件启动管理脚本从第二设定目录获取所述插件的配置文件,若所述配置文件携带开机启动标识,则生成所述运行指令;若所述配置文件未携带所述开机启动标识,则接收客户端发出的所述运行指令。0013结合第一方面,在第一方面的第二种可能的实现方式中,所述限制所述进程的访问空间为所述第一设定目录的步骤包括0014若所述进程请求访问所述操作系统中除所述第一设定目录外的其它目录,则将所述其它目录挂载到所述第一设定目录下;0015将挂载在所述第一设定目录下的其它目录的属性设置为只读。0016结合第一方面、第一方面。
13、的第一种可能的实现方式或者第一方面的第二种可能的实现方式,在第一方面的第三种可能的实现方式中,所述方法还包括0017在进程列表中记录所述进程的标识信息。0018结合第一方面,在第一方面的第四种可能的实现方式中,所述方法还包括0019获取针对所述插件的安装指令;说明书CN104091132A2/12页60020获取所述插件对应的压缩包,所述压缩包包括所述插件、所述插件对应的动态链接库、配置文件和数字证书;0021根据所述数字证书和预存的公钥对所述压缩包进行解密认证;0022若所述压缩包通过解密认证,将所述插件和所述动态链接库存储在所述第一设定目录下,将所述配置文件存储在第二设定目录下。0023结。
14、合第一方面的第四种可能的实现方式,在第一方面的第五种可能的实现方式中,所述方法还包括0024若所述配置文件携带开机启动标记,在开机启动目录下添加所述插件的启动脚本。0025结合第一方面,在第一方面的第六种可能的实现方式中,所述方法还包括0026获取针对所述插件的卸载指令;0027确定所述插件停止运行后,检测是否已从所述开机启动目录下删除所述插件的启动脚本;0028若已从所述开机启动目录下删除所述插件的启动脚本,则清空所述第一设定目录。0029结合第一方面的第六种可能的实现方式,在第一方面的第七种可能的实现方式中,所述确定所述插件停止运行的步骤包括0030检测进程列表中是否存在与所述插件对应的进。
15、程的标识信息;0031若所述进程列表中不存在与所述插件对应的进程的标识信息,则确定所述插件停止运行;0032若所述进程列表中存在与所述插件对应的进程的标识信息,则删除与所述插件对应的进程的标识信息。0033根据本公开实施例的第二方面,提供一种在路由设备上运行插件的装置,包括0034第一获取模块,用于获取针对插件的运行指令;0035第二获取模块,用于从操作系统的第一设定目录中获取所述插件;0036限制模块,用于创建与所述插件对应的进程,并限制所述进程的访问空间为所述第一设定目录;0037运行模块,用于在所述进程中运行所述插件。0038结合第二方面,在第二方面的第一种可能的实现方式中,所述第一获取。
16、模块包括0039生成单元,用于启动后,调用开机启动目录下保存所述插件的启动脚本,生成所述运行指令;或者,0040处理单元,用于启动后,通过开机启动目录下的插件启动管理脚本从第二设定目录获取所述插件的配置文件,若所述配置文件携带开机启动标识,则生成所述运行指令,若所述配置文件未携带所述开机启动标识,则接收客户端发出的所述运行指令。0041结合第二方面,在第二方面的第二种可能的实现方式中,所述限制模块包括0042挂载单元,用于若所述进程请求访问所述操作系统中除所述第一设定目录外的其它目录,则将所述其它目录挂载到所述第一设定目录下;0043设置单元,用于将挂载在所述第一设定目录下的其它目录的属性设置。
17、为只读。说明书CN104091132A3/12页70044结合第二方面、第二方面的第一种可能的实现方式或者第二方面的第二种可能的实现方式,在第二方面的第三种可能的实现方式中,所述装置还包括0045记录模块,用于在进程列表中记录所述进程的标识信息。0046结合第二方面,在第二方面的第四种可能的实现方式中,所述装置还包括0047第三获取模块,用于获取针对所述插件的安装指令;0048第四获取模块,用于获取所述插件对应的压缩包,所述压缩包包括所述插件、所述插件对应的动态链接库、配置文件和数字证书;0049解密认证模块,用于根据所述数字证书和预存的公钥对所述压缩包进行解密认证;0050存储模块,用于若所。
18、述压缩包通过解密认证,将所述插件和所述动态链接库存储在所述第一设定目录下,将所述配置文件存储在第二设定目录下。0051结合第二方面的第四种可能的实现方式,在第二方面的第五种可能的实现方式中,所述装置还包括0052添加模块,用于若所述配置文件携带开机启动标记,在开机启动目录下添加所述插件的启动脚本。0053结合第二方面,在第二方面的第六种可能的实现方式中,所述装置还包括0054第五获取模块,用于获取针对所述插件的卸载指令;0055检测模块,用于确定所述插件停止运行后,检测是否已从所述开机启动目录下删除所述插件的启动脚本;0056清空模块,用于若已从所述开机启动目录下删除所述插件的启动脚本,则清空。
19、所述第一设定目录。0057结合第二方面的第六种可能的实现方式,在第二方面的第七种可能的实现方式中,所述检测模块包括0058检测单元,用于检测进程列表中是否存在与所述插件对应的进程的标识信息;0059确定单元,用于若所述进程列表中不存在与所述插件对应的进程的标识信息,则确定所述插件停止运行;若所述进程列表中存在与所述插件对应的进程的标识信息,则删除与所述插件对应的进程的标识信息。0060根据本公开实施例的第三方面,提供一种路由设备,包括0061处理器;0062用于存储处理器可执行指令的存储器;0063其中,所述处理器被配置为0064获取针对插件的运行指令;0065从操作系统的第一设定目录中获取所。
20、述插件;0066创建与所述插件对应的进程,并限制所述进程的访问空间为所述第一设定目录;0067在所述进程中运行所述插件。0068本公开的实施例提供的技术方案可以包括以下有益效果获取针对插件的运行指令,从操作系统的第一设定目录中获取插件,创建与插件对应的进程,并限制进程的访问空间为第一设定目录,在进程中运行所述插件,由于限制进程的访问空间仅仅在第一设定目录下,即安装插件的目录下,通常安装插件的目录不是操作系统的系统文件保存的目录,因说明书CN104091132A4/12页8此进程无法访问操作系统的系统文件,这样就可以有效阻止进程破坏路由设备的操作系统的系统文件,保证了操作系统正常工作。0069应。
21、当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。附图说明0070此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本发明的实施例,并与说明书一起用于解释本发明的原理。0071图1是根据一示例性实施例示出的一种在路由设备上运行插件的方法的流程图。0072图2是根据一示例性实施例示出的一种在路由设备上安装插件的流程图。0073图3是根据一示例性实施例示出的一种在路由设备上卸载插件的流程图。0074图4是根据一示例性实施例示出的一种在路由设备上运行插件的方法的流程图。0075图5是根据一示例性实施例示出的第一种在路由设备上运行插件装置的框图。0076图6是根。
22、据一示例性实施例示出的一种限制模块的框图。0077图7是根据一示例性实施例示出的第二种在路由设备上运行插件装置的框图。0078图8是根据一示例性实施例示出的第三种在路由设备上运行插件装置的框图。0079图9是根据一示例性实施例示出的第四种在路由设备上运行插件装置的框图。0080图10是根据一示例性实施例示出的第五种在路由设备上运行插件装置的框图。0081图11是根据一示例性实施例示出的一种检测模块的框图。0082图12是根据一示例性实施例示出的一种路由设备的框图。具体实施方式0083这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字。
23、表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本发明相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本发明的一些方面相一致的装置和方法的例子。0084图1是根据一示例性实施例示出的一种在路由设备上运行插件的方法的流程图,如图1所示,该方法用于路由设备中,包括以下步骤。0085在步骤S11中,获取针对插件的运行指令。0086该运行指令表明需要运行该插件。0087在步骤S12中,从操作系统的第一设定目录中获取插件。0088插件安装在路由设备的操作系统的第一设定目录中,当获取到针对插件的运行指令后,可以到第一设定目录中获取该插件。0089在步骤S13中,创建与插。
24、件对应的进程,并限制进程的访问空间为第一设定目录。0090操作系统不同时,创建进程采用的工具和函数也不相同。假设操作系统是LINUX系统,可以专门创建一个工具,使用该工具调用FORK函数创建一个与插件对应的进程。0091由于运行插件主要考虑的是安全问题,如果插件蓄意删除操作系统的根目录下的系统文件,将会对操作系统造成毁灭性打击,所以需要限制与插件对应的进程的访问空间。比如,插件安装在PLUGINSFOLDER/ID/下,与插件对应的进程应该只能访问该目录下的文说明书CN104091132A5/12页9件,不能访问其他目录,即PLUGINSFOLDER/ID/就是该插件的根目录,调用CHROOT。
25、命令将PLUGINSFOLDER/ID/作为它的ROOT,可以实现限制该进程的访问空间。0092在步骤S14中,在进程中运行插件。0093继续沿用上例,可以调用EXEC函数在进程中运行插件。0094该方案中,获取针对插件的运行指令,从操作系统的第一设定目录中获取插件,创建与插件对应的进程,并限制进程的访问空间为第一设定目录,在进程中运行所述插件,由于限制进程的访问空间仅仅在第一设定目录下,即安装插件的目录下,通常安装插件的目录不是操作系统的系统文件保存的目录,因此进程无法访问操作系统的系统文件,这样就可以有效阻止进程破坏路由设备的操作系统的系统文件,保证了操作系统正常工作。0095上述S11中。
26、的获取针对插件的运行指令的步骤可以包括以下两种情况0096第一种情况,启动后,调用开机启动目录下保存插件的启动脚本,生成运行指令。0097如果该插件需要开机启动时运行,需要在安装插件时在开机启动目录下保存该插件的启动脚本,开机启动目录可以是/ETC/INITD。0098路由设备启动后,可以调用开机启动目录下保存插件的启动脚本,生成运行指令。0099第二种情况,启动后,通过开机启动目录下的插件启动管理脚本从第二设定目录获取插件的配置文件,若配置文件携带开机启动标识,则生成运行指令,若配置文件未携带开机启动标识,则接收客户端发出的运行指令。0100如果该插件需要开机启动时运行,还可以在开机启动目录。
27、下保存插件启动管理脚本。启动路由设备后,插件启动管理脚本去第二设定目录获取插件的配置文件,并在检测到配置文件携带开机启动标识后,生成运行指令。如果该插件不需要开机启动,可以由用户需要运行该插件时,通过客户端发出运行指令。0101其中,第二设定目录可以是PLUGINSFOLDER/REGISTER,配置文件可以表示为MANIFEST。0102上述S13中的限制进程的访问空间为第一设定目录的步骤包括0103若进程请求访问操作系统中除第一设定目录外的其它目录,则将其它目录挂载到第一设定目录下;0104将挂载在第一设定目录下的其它目录的属性设置为只读。0105若与插件对应的进程必须访问操作系统的系统文。
28、件,例如/USR/BIN下面的系统文件,可以采用挂载MOUNTBIND技术,将/USR/BIN目录挂载到PLUGINSFOLDER/ID目录上,得到PLUGINSFOLDER/ID/USR/BIN目录,然后设置PLUGINSFOLDER/ID/USR/BIN目录的属性为只读,这样就可以限制进程的访问空间为PLUGINSFOLDER/ID/,并且由于PLUGINSFOLDER/ID/USR/BIN目录的属性为只读,进程无法对/USR/BIN进行破坏操作,从而能够有效阻止进程破坏操作系统的系统文件,确保操作系统正常工作。0106还可以在进程列表中记录进程的标识信息,从而便于停止运行插件或者卸载插件。
29、。0107图2是根据一示例性实施例示出的一种在路由设备上安装插件的流程图,如图2所示,该方法用于路由设备中,包括以下步骤。0108在步骤S21中,获取针对插件的安装指令。0109例如,可以是接收客户端发送的针对插件的安装指令。说明书CN104091132A6/12页100110在步骤S22中,获取插件对应的压缩包,压缩包包括插件、插件对应的动态链接库、配置文件和数字证书。0111例如,可以从插件商店下载或者本地上传该插件对应的压缩包。0112在步骤S23中,根据数字证书和预存的公钥对压缩包进行解密认证。0113例如,由于压缩包通常都经过加密,路由设备上可以预存一个公钥,根据压缩包中的数字证书和。
30、预存的公钥就可以进行解密认证。0114在步骤S24中,若压缩包通过解密认证,将插件和动态链接库存储在第一设定目录下,将配置文件存储在第二设定目录下。0115若压缩包通过解密认证,则将压缩包中的文件存储在固定目录下,该目录是插件的统一安装位置。假设固定目录为PLUGINSFOLDER,每个插件都有一个标识信息记为ID,解压后得到的插件和动态链接库可以存储在PLUGINSFOLDER/ID/这个目录下面,即第一设定目录,解压后得到的配置文件存储到PLUGINSFOLDER/REGISTER目录下面,即第二设定目录。0116若配置文件携带开机启动标记,在开机启动目录下添加插件的启动脚本。若配置文件携。
31、带开机启动标识,也就是说该插件需要开机启动,则在开机启动目录下添加插件的启动脚本,即可实现开机启动该插件。0117图3是根据一示例性实施例示出的一种在路由设备上卸载插件的流程图,如图3所示,该方法用于路由设备中,包括以下步骤。0118在步骤S31中,获取针对插件的卸载指令。0119在步骤S32中,确定插件停止运行后,检测开机启动目录下是否存储插件的启动脚本。0120若开机启动目录下存储插件的启动脚本,在步骤S33中,删除插件的启动脚本。0121在步骤S34中,清空第一设定目录。0122例如,若开机启动目录下未存储插件的启动脚本,执行步骤S34。0123由于该插件安装在第一设定目录下,在确认已从。
32、开机启动目录下删除该插件的启动脚本后,可以清空第一设定目录下,从而实现卸载该插件。0124上述S32中的确定插件停止运行的步骤包括0125检测进程列表中是否存在与插件对应的进程的标识信息;0126若进程列表中不存在与插件对应的进程的标识信息,则确定插件停止运行;0127若进程列表中存在与插件对应的进程的标识信息,则删除与插件对应的进程的标识信息。0128这样,可以通过检测进程列表中是否存在与插件对应的进程的标识信息来确定插件是否停止运行。0129图4是根据一示例性实施例示出的方法流程图,如图4所示,该方法用于路由设备中,假设路由设备上的操作系统为LINUX系统,该方法包括以下步骤。0130在步。
33、骤S411中,获取针对插件的安装指令。0131当用户需要在路由设备上安装插件时,可以通过客户端向路由设备发送针对插件的安装指令。例如,在应用商店中选择了插件A后,选择将该插件安装在路由器B上时,服务器向该路由器B发送该插件A的安装包。同时,该路由器B接收到针对插件的安装指令。说明书CN104091132A107/12页110132在步骤S412中,获取插件对应的压缩包,压缩包包括插件、插件对应的动态链接库、配置文件和数字证书。0133插件是可执行文件,插件对应的动态链接库是可执行文件可能用到的动态链接库,配置文件是用来描述可执行文件的,数字证书是用来解密认证的。0134在步骤S413中,根据数。
34、字证书和预存的公钥对压缩包进行解密认证。0135由于压缩包通常都经过加密,路由设备上的固定位置会预存一个公钥,用来对压缩包进行解密认证。0136在步骤S414中,若压缩包通过解密认证,将插件和动态链接库存储在第一设定目录下,将配置文件存储在第二设定目录下。0137一般压缩包中的文件存储在固定目录下,该固定目录是插件的统一安装位置。假设固定目录为PLUGINSFOLDER,每个插件都有一个ID,那么第一设定目录为PLUGINSFOLDER/ID/,解压后得到的插件和动态链接库可以存储在该目录下,第二设定目录为PLUGINSFOLDER/REGISTER,解压后得到的配置文件存储在该目录下。013。
35、8在步骤S415中,配置文件携带开机启动标记时,在开机启动目录下添加插件的启动脚本。例如,在LINUX系统中,开机启动目录为/ETC/INITD。0139在步骤S416中,获取针对插件的运行指令。0140该步骤中可以包括以下两种情况0141第一种情况,启动后,调用开机启动目录下保存插件的启动脚本,生成运行指令。0142如果该插件需要开机启动时运行,可以调用/ETC/INITD保存插件的启动脚本,生成运行指令。0143第二种情况,启动后,通过开机启动目录下的插件启动管理脚本从第二设定目录获取插件的配置文件,若配置文件携带开机启动标识,则生成运行指令,若配置文件未携带开机启动标识,则接收客户端发出。
36、的运行指令。0144如果该插件需要开机启动时运行,还可以在/ETC/INITD下保存插件启动管理脚本。启动路由设备后,插件启动管理脚本去PLUGINSFOLDER/REGISTER获取插件的配置文件,并在检测到配置文件携带开机启动标识后,生成运行指令。如果该插件不需要开机启动,可以由用户需要运行该插件时,通过客户端发出运行指令。配置文件可以表示为MANIFEST。0145在步骤S417中,从操作系统的第一设定目录中获取插件。0146即从PLUGINSFOLDER/ID/中获取该插件。0147在步骤S418中,创建与插件对应的进程,并限制进程的访问空间为第一设定目录。0148在LINUX系统中,。
37、可以专门创建一个工具,使用该工具调用FORK函数创建一个与插件对应的进程。进程的访问空间为PLUGINSFOLDER/ID/,该目录就是插件的根目录,调用CHROOT命令将PLUGINSFOLDER/ID/作为它的ROOT,可以实现限制该进程的访问空间。0149若与插件对应的进程必须访问LINUX系统的系统文件,例如/USR/BIN下面的系统文件,可以采用BIND技术,将/USR/BIN目录挂载到PLUGINSFOLDER/ID目录上,得到PLUGINSFOLDER/ID/USR/BIN目录,然后设置PLUGINSFOLDER/ID/USR/BIN目录的属性为只读,这样就可以限制进程的访问空间。
38、为PLUGINSFOLDER/ID/,并且由于PLUGINSFOLDER/ID/说明书CN104091132A118/12页12USR/BIN目录的属性为只读,进程无法对/USR/BIN进行破坏操作,从而能够有效阻止进程破坏操作系统的系统文件,确保操作系统正常工作。0150在步骤S419中,在进程中运行插件,在进程列表中记录该插件的进程的ID。0151例如,可以调用EXEC函数在进程中运行插件。0152在步骤S420中,获取针对插件的卸载指令。0153当用户要卸载路由设备上的插件时,可以通过客户端向路由设备发送针对插件的卸载指令。0154在步骤S421中,确定插件停止运行后,检测开机启动目录下。
39、是否存储插件的启动脚本。0155例如,可以通过检测进程列表中是否存在与插件对应的进程的标识信息来确定插件是否停止运行,若进程列表中不存在与插件对应的进程的标识信息,则确定插件停止运行;若进程列表中存在与插件对应的进程的标识信息,则删除与插件对应的进程的标识信息,从而也确定了插件停止运行。0156若开机启动目录下存储插件的启动脚本,在步骤S422中,删除插件的启动脚本。0157在步骤S423中,清空第一设定目录。0158若开机启动目录下未存储插件的启动脚本,执行步骤S423。0159由于该插件安装在PLUGINSFOLDER/ID/下,在确认已从/ETC/INITD下删除该插件的启动脚本后,可以。
40、清空PLUGINSFOLDER/ID/,从而实现卸载该插件。0160图5是根据一示例性实施例示出的第一种在路由设备上运行插件的装置框图。参照图5,该装置包括第一获取模块511,第二获取模块512,限制模块513和运行模块514。0161该第一获取模块511被配置为,获取针对插件的运行指令。0162该第二获取模块512被配置为,从操作系统的第一设定目录中获取插件。0163该限制模块513被配置为,创建与插件对应的进程,并限制进程的访问空间为第一设定目录。0164该运行模块514被配置为,在进程中运行插件。0165该第一获取模块511包括生成单元和处理单元二者之一。0166该生成单元被配置为,启动。
41、后,调用开机启动目录下保存插件的启动脚本,生成运行指令。0167该处理单元被配置为,启动后,通过开机启动目录下的插件启动管理脚本从第二设定目录获取插件的配置文件,若配置文件携带开机启动标识,则生成运行指令,若所述配置文件未携带所述开机启动标识,则接收客户端发出的运行指令。0168如图6所示,该限制模块513包括挂载单元5131和设置单元5132。0169该挂载单元5131被配置为,若进程请求访问操作系统中除第一设定目录外的其它目录,则将其它目录挂载到第一设定目录下。0170该设置单元5132被配置为,将挂载在第一设定目录下的其它目录的属性设置为只读。0171第二种在路由设备上运行插件的装置如图。
42、7所示,在如图5所示的装置的基础上,还包括记录模块515。0172该记录模块515被配置为,在进程列表中记录进程的标识信息。说明书CN104091132A129/12页130173第三种在路由设备上运行插件的装置如图8所示,在如图5所示的装置的基础上,还包括第三获取模块516,第四获取模块517,解密认证模块518和存储模块519。0174该第三获取模块516被配置为,获取针对插件的安装指令。0175该第四获取模块517被配置为,获取插件对应的压缩包,压缩包包括插件、插件对应的动态链接库、配置文件和数字证书。0176该解密认证模块518被配置为,根据数字证书和预存的公钥对压缩包进行解密认证。0。
43、177该存储模块519被配置为,若压缩包通过解密认证,将插件和动态链接库存储在第一设定目录下,将配置文件存储在第二设定目录下。0178第四种在路由设备上运行插件的装置如图9所示,在如图8所示的装置的基础上,还包括添加模块520。0179该添加模块520被配置为,若配置文件携带开机启动标记,在开机启动目录下添加插件的启动脚本。0180第五种在路由设备上运行插件的装置如图10所示,在如图5所示的装置的基础上,还包括第五获取模块521,检测模块522和清空模块523。0181该第五获取模块521被配置为,用于获取针对插件的卸载指令。0182该检测模块522被配置为,确定插件停止运行后,检测是否已从开。
44、机启动目录下删除插件的启动脚本。0183该清空模块523被配置为,若已从开机启动目录下删除插件的启动脚本,则清空第一设定目录。0184如图11所示,该检测模块522包括检测单元5221和确定单元5222。0185该检测单元5221被配置为,检测进程列表中是否存在与插件对应的进程的标识信息。0186该确定单元5222被配置为,若进程列表中不存在与插件对应的进程的标识信息,则确定插件停止运行;若进程列表中存在与插件对应的进程的标识信息,则删除与插件对应的进程的标识信息。0187关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。0。
45、188图12是根据一示例性实施例示出的一种用于在路由设备上运行插件的装置1900的框图。例如,装置1900可以被提供为一路由设备。参照图12,装置1900包括处理组件1922,其进一步包括一个或多个处理器,以及由存储器1932所代表的存储器资源,用于存储可由处理组件1922的执行的指令,例如应用程序。存储器1932中存储的应用程序可以包括一个或一个以上的每一个对应于一组指令的模块。此外,处理组件1922被配置为执行指令,以执行上述在路由设备上运行插件的方法。0189装置1900还可以包括一个电源组件1926被配置为执行装置1900的电源管理,一个有线或无线网络接口1950被配置为将装置1900。
46、连接到网络,和一个输入输出I/O接口1958。装置1900可以操作基于存储在存储器1932的操作系统,例如WINDOWSSERVERTM,MACOSXTM,UNIXTM,LINUXTM,FREEBSDTM或类似。0190一个实施例中提供了一种路由设备,包括说明书CN104091132A1310/12页140191处理器;0192用于存储处理器可执行指令的存储器;0193其中,所述处理器被配置为0194获取针对插件的运行指令;0195从操作系统的第一设定目录中获取所述插件;0196创建与所述插件对应的进程,并限制所述进程的访问空间为所述第一设定目录;0197在所述进程中运行所述插件。0198可选。
47、的,在另一实施例中,所述获取针对插件的运行指令的步骤包括0199启动后,调用开机启动目录下保存所述插件的启动脚本,生成所述运行指令;或者,0200启动后,通过开机启动目录下的插件启动管理脚本从第二设定目录获取所述插件的配置文件,若所述配置文件携带开机启动标识,则生成所述运行指令,若所述配置文件未携带所述开机启动标识,则接收客户端发出的所述运行指令。0201可选的,在另一实施例中,限制所述进程的访问空间为所述第一设定目录的步骤包括0202若所述进程请求访问所述操作系统中除所述第一设定目录外的其它目录,则将所述其它目录挂载到所述第一设定目录下;0203将挂载在所述第一设定目录下的其它目录的属性设置。
48、为只读。0204可选的,在另一实施例中,在进程列表中记录所述进程的标识信息。0205可选的,在另一实施例中,获取针对所述插件的安装指令;获取所述插件对应的压缩包,所述压缩包包括所述插件、所述插件对应的动态链接库、配置文件和数字证书;根据所述数字证书和预存的公钥对所述压缩包进行解密认证;若所述压缩包通过解密认证,将所述插件和所述动态链接库存储在所述第一设定目录下,将所述配置文件存储在第二设定目录下。0206可选的,在另一实施例中,若配置文件携带开机启动标记,在开机启动目录下添加插件的启动脚本。0207可选的,在另一实施例中,获取针对插件的卸载指令;确定插件停止运行后,检测是否已从开机启动目录下删。
49、除所述插件的启动脚本;若已从开机启动目录下删除插件的启动脚本,则清空第一设定目录。0208可选的,在另一实施例中,确定插件停止运行的步骤包括0209检测进程列表中是否存在与所述插件对应的进程的标识信息;0210若所述进程列表中不存在与所述插件对应的进程的标识信息,则确定所述插件停止运行;0211若所述进程列表中存在与所述插件对应的进程的标识信息,则删除与所述插件对应的进程的标识信息。0212本公开实施例提供了一种非临时性计算机可读存储介质,当该存储介质中的指令由路由设备的处理器执行时,使得路由设备能够执行一种在路由设备上运行插件的方法,所述方法包括0213获取针对插件的运行指令;说明书CN10。
50、4091132A1411/12页150214从操作系统的第一设定目录中获取插件;0215创建与插件对应的进程,并限制进程的访问空间为第一设定目录;0216在进程中运行插件。0217所述获取针对插件的运行指令的步骤包括0218启动后,调用开机启动目录下保存所述插件的启动脚本,生成所述运行指令;或者,0219启动后,通过开机启动目录下的插件启动管理脚本从第二设定目录获取所述插件的配置文件,若所述配置文件携带开机启动标识,则生成所述运行指令,若所述配置文件未携带所述开机启动标识,则接收客户端发出的所述运行指令。0220所述限制所述进程的访问空间为所述第一设定目录的步骤包括0221若所述进程请求访问所。