在 CentOS 系統中,要實現目錄(例如 /var/log)的 readdir 操作的日志記錄,可以通過以下幾種方法:
inotifyinotify 是 Linux 內核提供的一種文件系統事件監控機制。你可以使用 inotifywait 工具來監控目錄的變化,并將變化記錄到日志文件中。
安裝 inotify-tools
sudo yum install inotify-tools
創建一個腳本來監控目錄并記錄日志
創建一個腳本文件,例如 monitor_directory.sh:
#!/bin/bash
LOG_FILE="/var/log/directory_monitor.log"
MONITOR_DIR="/var/log"
inotifywait -m -r -e create,delete,modify --format '%w%f %e' "$MONITOR_DIR" |
while read FILE EVENT; do
echo "$(date '+%Y-%m-%d %H:%M:%S') - $FILE - $EVENT" >> "$LOG_FILE"
done
賦予腳本執行權限并運行
chmod +x monitor_directory.sh
./monitor_directory.sh
auditdauditd 是 Linux 審計守護進程,可以用來監控和記錄系統調用和文件系統事件。
安裝 auditd
sudo yum install audit
配置 auditd 規則
編輯 /etc/audit/audit.rules 文件,添加以下規則來監控 /var/log 目錄:
-a exit,always -F path=/var/log -F perm=wa -k directory_monitor
這條規則的意思是:監控 /var/log 目錄下的所有寫操作(perm=wa),并在每次操作完成后記錄日志(-a exit,always),使用 directory_monitor 作為關鍵字。
重啟 auditd 服務
sudo systemctl restart auditd
查看審計日志
審計日志通常位于 /var/log/audit/audit.log。你可以使用 ausearch 和 aureport 工具來查詢和分析日志。
sudo ausearch -k directory_monitor
sudo aureport -k directory_monitor
rsyslog 和自定義腳本你也可以結合 rsyslog 和自定義腳本來實現日志記錄。
編輯 rsyslog 配置文件
編輯 /etc/rsyslog.conf 或 /etc/rsyslog.d/50-default.conf 文件,添加以下內容:
if $programname == 'custom_script' then /var/log/custom_script.log
& stop
創建自定義腳本
創建一個腳本文件,例如 custom_script.sh:
#!/bin/bash
LOG_FILE="/var/log/custom_script.log"
MONITOR_DIR="/var/log"
inotifywait -m -r -e create,delete,modify --format '%w%f %e' "$MONITOR_DIR" |
while read FILE EVENT; do
logger -t custom_script "$FILE - $EVENT"
done
賦予腳本執行權限并運行
chmod +x custom_script.sh
./custom_script.sh
通過以上方法,你可以在 CentOS 系統中實現對目錄 readdir 操作的日志記錄。選擇適合你需求的方法進行配置即可。