修改 NTFS 權限、變更檔名會改變檔案修改日期嗎?
這問題乍聽之下無關緊要,在射茶包過程卻可能是左右偵辦方向的關鍵,有追究到底的必要。
今天遇到一起案例。同事報案,某個運行多時的網站忽然故障,由錯誤訊息懷疑是系統無法從設定檔讀取連線字串,但檢查過「設定檔沒有被修改的痕跡」,格外離奇。注意到了嗎?(謎:你都加了「」,要不注意很難吧?)一般我們判斷檔案是否被修改,主要會依據檔案修改日期,而這裡隱藏了一個假設 - 檔案只要被更動修改,就一定會反映在檔案修改日期上。
事實不然,例如這次的網站故障,最後查出來是 AppPool 身分對設定檔的 NTFS 讀取權限被移除造成的,而該設定檔的最後修改日期與去年上線時間吻合,差點被當成不在場證明讓犯人逍遙法外。
為求加深印象,我做了以下實驗:證明修改 NTFS 權限及檔案更名都不會改變檔案的最後修改時間(一直是下午 09:04:23)。
補充:除了修改權限、檔案更名不會改變檔案修改日期,檔案修改日期可透過 Windows API 修改,而複製或解壓縮覆寫檔案時也可能被置換成來源檔的修改時間。故在判斷檔案是否有異動時,不宜單依修改日期做判斷。