在2.6内核中,通过 netlink实现单播通讯(文件监控实例)

来源:互联网 发布:cmd连接mysql命令 编辑:程序博客网 时间:2024/05/16 14:25

      在2.6内核中, netlink相关的接口函数随着版本的变化很大,现在网上流传的多数代码是以较老的版本(2.6.24以下)作为依托。这里,我将一段基于2.6.18的简单的代码移植到了2.6.27中,希望可以帮助大家理解其中的变化。

      这个程序主要分为内核模块和用户模块。主要功能是监控一个指定的文件,如果他被打开了,记录打开的方式、程序、时间等信息到指定的log文件中。请到源码中理解代码具体的含义和作用:

      (1) 内核部分:

      文件 netlinkp.c(不同内核版本代码主要不同在这个文件)

      为了保持代码段的完整性,贴出其他两个的源码

      文件 syscalltable.c

      文件 syscalltable.c

      (2) 用户部分:

      唯一的文件 auditdeamon.c.

 

     代码使用说明:

     内核部分Makefile:

     将三个内核部分文件和Makefile文件拷到同一目录下,直接make,在# insmod AuditModule.ko。

     创建待监听的文件 :# touch /root/audit

     对于应用程序部分, # gcc auditdeamon.c

     后台运行 :              # a.out &

     测试,通过各种方式打开测试文件:

     # cat  /root/audit

     # vi    /root/audit

     当然你也可以自己写代码打开 /root/audit

     最后通过 : # kill -15(或者-SIGTERM) pid(a.out &的pid,可以通过ps -aux查看)

     结束监控后,查看 a.out 同级目录下的log文件,便可查看到日志信息了。