我有一些守护进程将 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 $% $@/$#