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