尋找:誰寫入備份

尋找:誰寫入備份

我有一些守護進程將 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 -lsudo 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

另一種可能性是inotify。例如,設定一個因克朗工作:

/opt/BACKUP/mongodb.tgz IN_MOVED_TO,IN_CREATE logger $% $@/$#

相關內容