任何方式来确定如何在Linux / Apache服务器上删除文件?

问题:

我在异地的Linux / Apache服务器上有几个丢失的目录。 我已经跟踪了他们从httpd错误日志中丢失的时间,并且我有一个到机器的SSLlogin列表(包含networking地址)。

有几个人可以在机器上访问我的帐户,所以我试图确认这些文件是否被意外删除或有意删除。 如果我可以确定会话来自外部networking地址,那么我可以确定这是故意的。 否则,我将需要更多的信息。

题:

有什么办法来确定什么用户帐户(我的根对比),networking会话,或进程删除的文件? 我不担心恢复他们最近的备份。

相关问题:

我已经尝试着为自己的帐户(除root权限以外的唯一权限)查看bash历史logging,而且似乎只能延伸到我的SSL会话开始。 这是否意味着bash的历史被篡改,还是这种正常的行为?

默认情况下,这不会被logging(想象日志会有多大)。 你可以使用auditctl或inotify / iwatch(感兴趣的选项,检查出来)来添加日志logging,或者你的控制面板日志logging或者ftp日志(通常都在/ var / log某处)或者bash历史logging可以帮助你稍微追踪一下。 检查你的HTTP访问日志,以防万一GET请求设法做到这一点(不太可能,但可能)

如果你的历史不存在,它已被清除。 这可以手动完成,也可以在.bash_logout或.logout文件中执行。

另外,这是SSH不SSL!

清理总是很难的。 您可以使用的资源:

要确定谁已login,并从哪里:

  • last / lastlog
  • / var / log / secure(大部分时间显示login成功和失败)

要确定当时发生了什么事情:

  • ausearch(假设你正在审计;如果你不是,你可以考虑开始)
  • sar(找出系统当时是闲置还是忙碌)

如果自事件发生后没有太多的stream失,目录上的mtime可能会有有用的信息(可能不是,但我通常喜欢收集这种数据的方式)

为了将来,让每一个能够访问机器的人都拥有自己的账户。 你刚才发现的原因很愚蠢, 你不知道谁做了什么。

bash历史logging只有在closuresshell时才会写入(可以为当前会话停用)。 在正在运行的bash会话中,在bash历史logging文件中看不到在该会话中键入的命令 – closures会话,启动一个新会话,您应该能够看到它。

如果您正在运行stream程会计,则可以在stream程会计日志中findrm的呼叫。

Shell历史logging可能已被删除,或者可能configuration为会话个人历史logging。 并发会话也可能会导致shell历史问题。

唯一可靠的方法是运行系统会计(如sar或类似的)。其他的东西可能会给你答案,但不能保证:

  1. bash的历史没有保证,因为(a)有历史限制; (b)默认情况下不会立即写入; (c)您必须search所有用户帐户的所有bash历史; (d)历史select会影响行为; (e)用户可以清除自己的bash历史logging(防止它被写入文件)。

  2. sftp在默认情况下不会logging事务,但是可以根据需要在sftp服务器上启用。 通过sftp或ftp添加或删除的文件不会login到shell历史文件或任何其他地方。

在你的情况下,如果你还没有运行会计,那么唯一的办法就是search所有用户账户的shell命令历史logging,希望保存它。