当Linux计算机受到入侵时,常见的情况是日志文件被删除,以掩盖攻击者的踪迹。管理错误也可能导致意外删除重要的文件,比如在清理旧日志时,意外地删除了数据库的活动事务日志。有时可以通过lsof来恢复这些文件。
当进程打开了某个文件时,只要该进程保持打开该文件,即使将其删除,它依然存在于磁盘中。这意味着,进程并不知道文件已经被删除,它仍然可以向打开该文件时提供给它的文件描述符进行读取和写入。除了该进程之外,这个文件是不可见的,因为已经删除了其相应的目录索引节点。
实验开始
删除 /var/log/messages
日志文件
rm -f /var/log/messages
虽然messages文件被删除,但是由于 rsyslogd , in:imjour ,rs:main 进在正常调用
这个文件,所以它能然存在磁盘中,但是目录索引节点已经被删除了,所以文件是不可见的
lsof | grep /var/log/messages
可以看出文件的调用PID(进程)为623,FD(文件描述符)为6,所有到/proc目录里面恢复
可以看出6就是messages日志文件
那么就可以使用 I/O 重定向将其复制到文件中,如:
cat /proc/1283/fd/6 > /var/log/messages
可以看出文件已经恢复