所以我想知道哪個進程正在我的根目錄中建立目錄“]”。我假設這是某些腳本中的拼字錯誤。因此,我對該目錄設定了審核,與上所示非常相似這個問題。
第二天查看日誌,發現目錄又被建立了,並且已經被審計記錄下來了。但我從這個輸出只能看出根創建了它。
輸出:
type=SYSCALL msg=audit(26.04.2013 06:25:20.275:85) : arch=i386 syscall=mkdir success=yes exit=0 a0=bfd02ea5 a1=1ed a2=bfd02ea5 a3=bfd025b8 items=2 ppid=24114 pid=24115 auid=unset uid=root gid=root euid=root suid=root fsuid=root egid=root sgid=root fsgid=root tty=(none) ses=4294967295 comm=mkdir exe=/bin/mkdir key=weird
斷行:
type=SYSCALL
msg=audit(26.04.2013 06:25:20.275:85) :
arch=i386
syscall=mkdir
success=yes
exit=0 a0=bfd02ea5
a1=1ed a2=bfd02ea5 a3=bfd025b8
items=2 ppid=24114 pid=24115
auid=unset
uid=root
gid=root
euid=root
suid=root
fsuid=root
egid=root
sgid=root
fsgid=root
tty=(none)
ses=4294967295
comm=mkdir
exe=/bin/mkdir
key=weird
我想知道哪個腳本以 root 身分發出此命令。那可能嗎?使用該 PPID 的進程不再運作。
答案1
假設這是由 cron 啟動的腳本引起的,您可以追蹤所有 crond-children:
strace -p $CRONPID -f -o /path/to/cron-strace.log -e trace=mkdir
這應該會導致如下輸出:
Process 3584 attached
Process 18227 attached
[pid 18227] execve("./testscript", ["./testscript"], [/* 100 vars */]) = 0
Process 18228 attached
[pid 18228] execve("/usr/bin/mkdir", ["mkdir", "/home/hl/tmp/strace-testdir"], ...) = 0
[pid 18228] mkdir("/home/hl/tmp/strace-testdir", 0777) = 0
當然,strace 會減慢腳本執行速度,但這通常不會成為問題。
答案2
僅根據此輸出,您無法確定哪個程式呼叫了該mkdir
命令。
如果你有BSD 行程會計,以下指令顯示哪個程式的 PID 為 24114:
dump-acct /var/log/account/pacct | awk -F '|' '$10 ~ / 24114 / {print}'
這大概是sh
。第 10 列(以|
分隔符號)包含記錄進程的 PID,後面跟著其 PPID,因此使用 PPID 重複搜尋以查看調用的程式sh
等。您還可以了解進程開始的時間,這可能有助於確定這是哪個 cron 作業。
僅使用auditd,您不僅需要記錄mkdir
調用,還需要記錄對該目錄的所有訪問,從而記錄更改該目錄或訪問該目錄中的檔案的命令。如果創建了目錄但沒有其他東西訪問它,我認為單獨的auditd不足以解決這個問題。