
我有一些守護進程將 Mongo 和 MySQL 備份寫入目錄/opt/BACKUP
,但我不知道 - 什麼樣的守護進程,它何時工作以及在哪裡可以找到它的設定?
這些檔案位於目錄中:
-rwxrwxrwx 1 root root 10954766682 Aug 30 21:02 history_2013-08-26.sql.bz2
-rw-r--r-- 1 root root 22707064861 Sep 19 07:07 history.sql
drwx------ 2 root root 16384 Dec 24 2012 lost+found
drwxr-xr-x 3 root root 4096 Sep 19 03:12 mongodb
-rw-r--r-- 1 root root 6708923175 Sep 18 04:16 mongodb.0.tgz
-rw-r--r-- 1 root root 6685715560 Sep 17 04:16 mongodb.1.tgz
-rw-r--r-- 1 root root 6733542547 Sep 19 04:17 mongodb.tgz
drwxr-xr-x 5 mysql root 4096 Sep 19 06:25 mysql
drwxr-xr-x 2 root root 4096 Dec 24 2012 nobacula
drwxr-xr-x 2 root root 4096 Aug 29 04:05 tmp
我如何找到誰寫了 mongodb.* 和history_2013-08-26.sql.bz2?
答案1
你無法直接查出。您擁有的唯一資訊是擁有者以及文件的時間戳記。
擁有者
由於相關文件的所有者為root
,因此這給您提供的資訊很少。
時間戳 - mongodb
正如您所看到的,mongodb
備份基本上都是在同一時間(凌晨 4 點 15 分)進行的。事實上,創建時間是在晚上,此時服務很可能負載很小),使得備份很可能是由進程觸發的cron
;因此您需要檢查 cron 配置。
/etc/crontab
(不太可能,因為這通常是由系統控制的)/etc/cron.daily/
(可能是,取決於您的設定;在我的 Debian/jessie 系統上,每日計劃表根據 ,作業在早上 6:25 運行/etc/crontag
,因此也不太可能)/etc/cron.d/
(最有可能的)- 這根-使用者的 crontab 檔案(例如,但
/var/spool/cron/crontabs/root
最好透過運行來訪問crontab -l
根或sudo crontab -l -u root
。
時間戳記 - mysql
該history.sql
文件是最近的(9 月 19 日),並且創建得很早 ( 7:07
);它也可能是由 cron-job 創建的(見上文)
已history_2013-08-26.sql.bz2
創建於8月30日 21:02;假設晚上 9 點是系統管理員可能需要做一些工作的時間,並注意到時間戳記(8 月 30 日)和檔案名稱(8 月 26 日)之間存在差異,我假設該檔案已建立手動。
答案2
有多種方法可以知道誰編寫了文件,但通常需要事先設定監視。
由於所有文件大約是在同一時間創建的,因此請尋找大約在該時間運行的每日 cron 作業。這很有可能給你答案。
如果你有BSD 行程會計啟用後,運行lastcomm
以查看寫入檔案時可能正在運行哪些進程。這可能很困難,因為進程記帳僅追蹤進程啟動的時間,而不追蹤進程完成運行的時間。
有幾種方法可以在下次建立文件時找出責任人。一種可能性是審計子系統:
auditctl -A exit,always -F path=/opt/BACKUP/mongodb.tgz -S open -S rename
/opt/BACKUP/mongodb.tgz IN_MOVED_TO,IN_CREATE logger $% $@/$#