追踪“隐藏”的 cron 作业

追踪“隐藏”的 cron 作业

每天晚上,数据库都会在服务器上备份。这是一件好事。

奇怪的是我找不到执行此操作的 cron 作业。我已经签到了/etc/cron*,我已经签到了/var/spool/cron/。我已经检查了该系统上所有其他用户的 crontab。我好像找不到这个工作了所以我的下一个理论是,该作业是远程执行的,连接到服务器,然后将数据库备份到文件。目前参与的人似乎都不知道(或记得)有关此过程的任何信息。

我需要立即抓住这份工作!我想了解一下:

它真的是远程执行的吗?如果是这样,我如何找到连接来自哪里?我认为它一定来自某个具有登录凭据的用户,但我想知道WHO

如果是在本地执行的话在哪里就是这个文件,怎么这么难找呢?

我怎样才能找到这些东西?到目前为止,我所掌握的发生这种情况的唯一证据是每天晚上在同一时间创建的数据库转储文件。

答案1

作为第一步,我会使用inotifywait.

假设是 Debian 系统,如果没有,您可以将等效命令移植到您的系统中。

安装 inotify 工具:

apt-get install inotify-tools -y

在 / 上运行 inotifywait 并监视所有访问过夜。这是我通常使用的:

echo 10000 > /proc/sys/fs/inotify/max_user_watches
inotifywait -mr / -e access -e create -e modify -e delete -e moved_to -e moved_from --format %w:%f:%e:%T --timefmt %F:%T >> /root/system.inotify.log &

第二天验证日志以了解发生的情况。

即使远程系统在本地复制脚本、执行它然后删除它,您仍然会在那里看到它。无论你在那里看到什么,都会暗示你发生了什么,因为它会捕捉到底层的一切。

它不容易受到竞争条件的影响,或者脚本在连接到 Linux 界面时很快删除源文件,inotify因此不会错过任何操作。

让我们知道你发现了什么,我很想知道。

相关内容