查找:谁写入备份

查找:谁写入备份

我有一些守护进程将 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

另一种可能性是inotify。例如,设置一个因克朗工作:

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

相关内容