在2.6內核中,通過 netlink實現單播通訊(文件監控實例)

      在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文件,便可查看到日誌信息了。

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章