免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 891 | 回复: 0
打印 上一主题 下一主题

完成了关于linux内核有关的项目,写点感想 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-04-28 20:00 |只看该作者 |倒序浏览
       这是一个信息安全方面的由军队科研院所提供经费支持的项目。我负责是linux下文件监控方面的研发工作。到今天为止,我负责的模块基本完成。2006年4月28日。
       我所完成的模块的功能大致为,在linux操作系统下,对关键文件的访问进行进一步的保护。虽然linux作为类Unix系统有较好的文件访问控制功能。但权限的划分还过粗,需要进一步保护。原操作系统中,可以设置文件所有者,与文件所有者同组,其他用户,读写和执行权限,操作系统root用户不受此限制。操作系统添加我的模块后,可以进一步设置与文件所有同组的单个用户的对该文件的存取权限,也可以区分不同的root用户,使某些root用户,对某些文件不可读写,虽然某普通用户可以对此文件读写。基于我的模块,可以实现某个用户对硬件的访问控制。因为在linux下,硬件是以特殊文件的形式存在的。
       实现这些功能,要修改现有的操作系统内核。
       给内核添加或修改其功能,有几种常用的方法,如直接修改内核,然后重新编译内核;以可加载内核模块的形式;编写驱动程序。我采用的是第二种方法,主要符合我的需要。
       为了对某些关键文件的读写进行进一步检查和控制这一功能,我将它划分为3个子功能模块:关键文件设置模块,关键文件监控模块,关键文件访问记录模块。
       关键文件设置模块,我建立了一个动态哈希链表来存储某些用户对某些关键文件的访问权限信息。以内核可加载模块的形式嵌入到内核中。编写了一个静态链接库,提供一些API给root用户以设置相应的权限,也可以做成动态链接库,实现时两者几乎没什么差别,不过动态链接库空间效率要高些。
       关键文件监控模块实现原理比较简单,就是在内核中截获文件操作open(),read(),write()等几个文件操作函数。在内核执行这些函数前进行预处理。这里要得到系统调用表的入口地址,在以前的内核版本这是很容易的,不过现在的内核版本稍稍有点变化,不过也不难办到。有文件描述符得到文件的全路径相对而言要复杂点,因为要对进程的pcb,文件系统的内核数据结构进行操作,这花了我大概几天的时间学习内核相关知识,和一两天的实际编程开发。调试时,有一个小bug,起因就是操作文件系统内核数据结构时,fput()和fget()没有成对使用,虽然实现了预期功能,但对操作系统其他功能造成了破坏。
       关键文件访问日志记录模块,这部分不是最主要的功能却花了我最多的时间。原因是内核同步问题,内核与用户空间的通信问题,以及内核缓冲区的设计和淘汰算法问题。对第一个问题原想用内核信号量或等待队列来处理,可以效果不佳,弃之。第二个问题原想用netlink,结果由于编程资料太少,没有很好实现,关键文件设置子模块中,内核与用户空间通信,信息交换,使用的是netlink,效果挺好,到了这里却不行,也许是因为我自己的水平问题,也许是因为netlink的实现机制问题,因为netlink是较新的内核才引入的一种机制。前两个问题我用/proc文件系统较好地解决了。内核缓冲区的设计和淘汰算法问题比较复杂,具体算法就不仔细记录了,不过效果总体让人满意,虽然我已经发现了点小bug,不过我不准备解决它了,时间和精力有限,再说没有物质激励,动力总要差一些。
       还写了一些用户级的测试程序,用于测试我的模块功能,比较简单,没什么可记录的。
       本想在完成了这个模块后,写篇工程性的学术文章,现在看来我所做的太简单了,恐怕不能发表,关于写学术论文还要再想想,可以结合项目其他内容。
       差不多了,没有经过仔细构思,随想随写,真的可以叫随笔了。虽然在中学时写过很多随笔,但写工程性的项目随笔倒是第一次。


本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/17788/showart_106271.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP