一种Linux隐藏配置文件的方法

文档序号:6636796阅读:331来源:国知局
一种Linux隐藏配置文件的方法
【专利摘要】本发明提供了一种Linux隐藏配置文件的方法,包括:步骤1,从flash的bootloader中划出一块连续区域,所述区域隐藏于其他flash分区,将配置文件以非文件形式存储于所述隐藏分区;步骤2,内核启动时,将隐藏分区的内容读取到内存中;步骤3,初始化netlink,等待应用程序连接。采用本发明技术方案后,在flash分区中的bootloader中的一块连续区域,所述区域隐藏于其他区域,配置文件在所述隐藏分区以非文件形式存储,内核启动后将隐藏分区的内容读取到内存中,应用程序跟内核的交互采用netlink连接,而netlink自由的自定义字段,使得配置文件对于非研发人员来说是不可获知的,即配置对用户来说是隐藏的,保证了系统的安全。
【专利说明】一种L i nux隐藏配置文件的方法

【技术领域】
[0001]本发明涉及Linux配置文件的【技术领域】,尤其涉及一种Linux隐藏配置文件的方法。

【背景技术】
[0002]—般Linux配置以实体文件存放于文件系统,而文件系统以一定格式存放于flash,如jffs2,ext2,ext3等,通过对如jffs2文件系统的读写,可找到相应的配置文件并查看。而对于一些非常重要的配置文件,我们不希望用户通过任何Iinux命令直接查看,也不在实际的文件系统显示。
[0003]如图1所示,Iinux的配置文件放于etc目录,各配置以可见文件形式存放其中,通过直接查看文件内容,我们可以了解相应的系统配置。对于有些配置,如涉及到系统安全,我们不希望任何用户可以看到其中信息,甚至在文件系统中不存在该配置文件。


【发明内容】

[0004]本发明需解决的技术问题是克服上述的不足,提供一种Linux隐藏配置文件的方法,其特征在于,包括:
[0005]步骤1,从flash的bootloader中划出一块连续区域,所述区域隐藏于其他flash分区,将配置文件以非文件形式存储于所述隐藏分区;
[0006]步骤2,内核启动时,将隐藏分区的内容读取到内存中;
[0007]步骤3,初始化netlink,等待应用程序连接。
[0008]进一步的,所述隐藏分区包括用于检验配置正确性的配置项头部和多项配置条目。
[0009]进一步的,所述配置条目包括配置名和配置内容。
[0010]进一步的,所述内核启动时,将隐藏分区的内容读取到内存中的步骤包括:
[0011]内核启动时,内核启动时,读取配置项头部并检查其正确性;
[0012]若配置项头部正确,则将隐藏分区的内容读取到内存中,否则将配置设置为空。
[0013]进一步的,配置条目在内核以哈稀链表方式存储,每个conf data表示一个配置条目,查找配置时,以配置名为参数,使用哈稀函数找到数组下标,然后遍历该下标链表,即可找到对应配置,所述conf data包含了配置名、配置内容以及指向下一个配置条目的指针。
[0014]进一步的,所述netlink报文自定义字段包括op、Ien以及data三个字段,分别描述为:
[0015]op:报文类型,I表示检查配置,2表示set保存配置,3表示get获取配置,4表示内核回复报文,5表示提交配置;
[0016]Ien:数据长度,表不data字段报文长度;
[0017]data:含配置信息,可直接是配置文件或字符串类型等任意格式。
[0018]进一步的,还包括:
[0019]当应用程序启动后,发送netlink消息给内核,检查配置是否为空;
[0020]若配置为空,则下发默认配置。
[0021]进一步的,还包括:
[0022]应用程序添加和/或修改内核中的配置;
[0023]添加和/或修改的配置保存于内存中;
[0024]确定后再写入flash。
[0025]采用本发明方法后,在flash分区中的bootloader中的一块连续区域,所述区域隐藏于其他区域,配置文件在所述隐藏分区以非文件形式存储,内核启动后将隐藏分区的内容读取到内存中,应用程序跟内核的交互采用net I ink连接,而net I ink自由的自定义字段,使得配置文件对于非研发人员来说是不可获知的,即配置对用户来说是隐藏的,保证了系统的安全。

【专利附图】

【附图说明】
[0026]图1是现有技术中的Iinux文件系统;
[0027]图2是本发明提供的Linux隐藏配置文件的方法的流程图;
[0028]图3是本发明提供的隐藏分区的flash格式;
[0029]图4为本发明提供的配置项头部格式;
[0030]图5为本发明提供的netlink的报文字段;
[0031]图6为应用程序启动的流程图。

【具体实施方式】
[0032]为了使本领域相关技术人员更好地理解本发明的技术方案,下面将结合本发明实施方式的附图,对本发明实施方式中的技术方案进行清楚、完整地描述,显然,所描述的实施方式仅仅是本发明一部分实施方式,而不是全部的实施方式。
[0033]下面结合附图和实施方式对本发明作进一步说明。
[0034]参阅图2,为本发明提供的一种实施方式的Linux隐藏配置文件的方法,本方法包括:
[0035]步骤S100,从flash的bootloader中划出一块连续区域,所述区域隐藏于其他flash分区,将配置文件以非文件形式存储于所述隐藏分区;
[0036]在Linux系统中,flash分为3个区,包括bootloader、kernel以及fs三个分区,bootloader相当于我们的b1s,kernel为内核,fs为文件系统。从bootloader分区中划出一块连续区域,该区域隐藏于其他flash,将配置文件以非文件形式存储于隐藏分区。划出来的区域不被用户获知。本实施例中,该隐藏区域为bootloader分区最后一段连续的区域。
[0037]参阅图3,隐藏分区包括用于检验配置正确性的配置项头部和多项配置条目,配置条目包括配置名和配置内容,一般采用配置名=配置内容的方式存储,例如password =123456。本实施例中,配置项头部如图4所示,它以4字节长度Magic魔数为标示,Len为4字节整形数,表示除配置项头部外的配置条目长度,crc则记录从配置条目I到η的crc校验和,保证配置的正确性。
[0038]步骤S200,内核启动;
[0039]步骤S300,读取配置项头部并检查其正确性;
[0040]步骤S400,若配置项头部不正确,则将配置设置为空;
[0041]步骤S500,若配置项头部正确,则将隐藏分区的内容读取到内存中;
[0042]配置条目在内核以哈稀链表方式存储,每个conf data表示一个配置条目,查找配置时,以配置名为参数,使用哈稀函数找到数组下标,然后遍历该下标链表,即可找到对应配置,所述conf data包含了配置名、配置内容以及指向下一个配置条目的指针。
[0043]步骤S600,初始化netlink,等待应用程序连接。
[0044]netlink可自定义字段,本实施例中,所述netlink报文自定义字段包括op、Ien以及data三个字段,分别描述为:
[0045]op:报文类型,I表示检查配置,2表示set保存配置,3表示get获取配置,4表示内核回复报文,5表示提交配置;
[0046]Ien:数据长度,表不data字段报文长度;
[0047]data:含配置信息,可直接是配置文件或字符串类型等任意格式。
[0048]上述步骤表明,Linux隐藏配置文件的关键步骤在于在内核启动后,也将隐藏分区的内容读取到内存中,只是普通用户看不见,需要用特定的方式才可以读取配置文件并应用。
[0049]上述步骤SlOO?步骤S600,隐藏分区的内容即配置已经读取到内核中,且netlink初始化,等待应用程序连接。
[0050]参阅图6,应用程序连接内核包括:
[0051]步骤S10,应用程序启动;
[0052]步骤S20,发送netlink消息给内核,检查配置是否为空;
[0053]步骤S30,若配置为空,则下发默认配置。
[0054]在配置不为空,则应用程序通过netlink正常获取配置。
[0055]应用程序获取配置的方式如下:
[0056]A)填充并发送图5所示的netlink报文,其中op字段为3,Ien字段为data数据长度,data为配置名,当data为空时表示获取所有配置;
[0057]B)内核接收到netlink报文后,若配置名非空,则通过该名在哈稀链表找到相应配置,以“配置名=配置内容”为数据,填充报文并返回给应用程序。若配置名为空,则表明获取所有配置,需遍历哈稀链,将所有数据填充到data区域,返回给应用程序。
[0058]C)应用程序收到配置后做相应处理。
[0059]内核接收到报文后,若配置名非空,则通过该名在哈稀链表找到相应配置,以’配置名=配置内容’为数据,填充报文并返回给应用程序。若配置名为空,则表明获取所有配置,需遍历哈稀链,将所有数据填充到data区域,返回给应用程序。
[0060]应用程序收到配置后做相应处理。
[0061]我们还可以采用netlink报文对配置进行添加和/或修改。
[0062]1、填充并发送图5所示的netlink报文,op字段为2,Ien字段为data长度,data为“配置名=配置内容”。
[0063]2、内核收到报文后,以配置名为参数,通过哈稀函数找到对应数组下标,遍历对应链表,如找到配置名,则直接修改conf_data数据;若未找到,则新建conf_data结点,填写结点配置名和配置内容,最后添加到链表中。
[0064]内核保存的配置在内存中,断电后无法保存,而如果每次修改配置,都烧写Flash,会容易引起flash频繁烧写,减少flash寿命。为了延长flash寿命,一般应用程序添加和/或修改内核中的配置时,如下操作:
[0065]应用程序添加和/或修改内核中的配置;
[0066]添加和/或修改的配置保存于内存中;
[0067]确定后再写入flash。
[0068]采用本发明方法后,在flash分区中的bootloader中的一块连续区域,所述区域隐藏于其他区域,配置文件在所述隐藏分区以非文件形式存储,内核启动后将隐藏分区的内容读取到内存中,应用程序跟内核的交互采用net I ink连接,而net I ink自由的自定义字段,使得配置文件对于非研发人员来说是不可获知的,即配置对用户来说是隐藏的,保证了系统的安全。
[0069]以上仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。
【权利要求】
1.一种Linux隐藏配置文件的方法,其特征在于,包括: 步骤I,从flash的bootloader中划出一块连续区域,所述区域隐藏于其他flash分区,将配置文件以非文件形式存储于所述隐藏分区; 步骤2,内核启动时,将隐藏分区的内容读取到内存中; 步骤3,初始化netlink,等待应用程序连接。
2.根据权利要求1所述Linux隐藏配置文件的方法,其特征在于,所述隐藏分区包括用于检验配置正确性的配置项头部和多项配置条目。
3.根据权利要求2所述的Linux隐藏配置文件的方法,其特征在于,所述配置条目包括配置名和配置内容。
4.根据权利要求2所述的Linux隐藏配置文件的方法,其特征在于,所述内核启动时,将隐藏分区的内容读取到内存中的步骤包括: 内核启动时,读取配置项头部并检查其正确性; 若配置项头部正确,则将隐藏分区的内容读取到内存中,否则将配置设置为空。
5.根据权利要求3所述的Linux隐藏配置文件的方法,其特征在于,配置条目在内核以哈稀链表方式存储,每个conf data表示一个配置条目,查找配置时,以配置名为参数,使用哈稀函数找到数组下标,然后遍历该下标链表,即可找到对应配置,所述conf data包含了配置名、配置内容以及指向下一个配置条目的指针。
6.根据权利要求5所述的Linux隐藏配置文件的方法,其特征在于,所述netI ink报文自定义字段包括op、Ien以及data三个字段,分别描述为: op:报文类型,I表示检查配置,2表示set保存配置,3表示get获取配置,4表示内核回复报文,5表示提交配置; Ien:数据长度,表示data字段报文长度; data:含配置信息,可直接是配置文件或字符串类型等任意格式。
7.根据权利要求6所述的Linux隐藏配置文件的方法,其特征在于,还包括: 当应用程序启动后,发送netlink消息给内核,检查配置是否为空; 若配置为空,则下发默认配置。
8.根据权利要求6所述的Linux隐藏配置文件的方法,其特征在于,还包括: 应用程序添加和/或修改内核中的配置; 添加和/或修改的配置保存于内存中; 确定后再写入flash。
【文档编号】G06F21/78GK104463031SQ201410717425
【公开日】2015年3月25日 申请日期:2014年12月1日 优先权日:2014年12月1日
【发明者】王东华, 黄沁宇, 刘驰 申请人:上海斐讯数据通信技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1