在 /etc 中意外执行“rm”后恢复 Linux 服务器

在 /etc 中意外执行“rm”后恢复 Linux 服务器

我设置了一个 Linux 服务器(Debian squeeze)。它的主要目的是运行 LAMP。我还用它来运行 mumble(语音聊天)和 minecraft 服务器等。

一开始一切都运行良好。然后事情开始发生了。像 Java 这样的程序在没有无头模式的情况下无法运行,并且完全失去了解析主机名的能力。我通过重新启动修复了主机名解析问题 - 我听说这在 Linux 系统上并不是一个真正理想的修复方法。

我确实可以物理访问服务器计算机(我自己构建的),但它不在我家里。所以我使用 SSH 与其交互。昨天我注意到它没有在 ssh 客户端中显示路径,而只显示“-bash-4.1#”。

重启后当我尝试启动 mumble 服务器时它只是说缺少文件:“/etc/mumble-server.ini”

该服务器包含重要(且机密)的公司信息。我应该担心有黑客入侵吗?我是否在上面安装了某种恶意软件?(我怀疑我没有)

编辑:我似乎无法访问它应该托管的网站。它是公司网络服务的重要组成部分。这真是太糟糕了。

我现在还记得几周前我错误地用 root 在 /etc 中运行了类似 rm .* 的命令。当时它运行正常,所以我忽略了它。我能做些什么来解决这个问题?我真的搞砸了吗?

更新:看来 apache 无法运行是因为缺少 mime.types 文件。它应该位于 /etc 中。是否有命令可以恢复它?

更新:由于其他一切都失败了,我正在重新安装操作系统和服务器软件。幸好我定期备份了所有重要和机密信息。

答案1

最有可能的是,导致您出现问题的原因是rm您在 中运行的命令/etc。我建议重新安装操作系统。

答案2

要弄清楚你到底做了什么以及在哪里做了什么,最好的办法就是检查你的 sudo 日志。下面是一个示例条目:

Jul 24 22:38:08 node1 sudo:    scott : TTY=pts/0 ; PWD=/home/scott ; USER=root ; COMMAND=/bin/rm marker_file

因此,我们可以看到,我从目录发出了命令/bin/rm marker_file,没有附加参数/home/scott。所以这告诉我们我删除了文件/home/scott/marker_file

通过推断,我们可以准确地找出缺失的内容,这样您就可以更好地了解从备份中挑选哪些文件。例如,如果我们看到日志消息

Jul 12 08:38:08 node1 sudo:    scott : TTY=pts/0 ; PWD=/etc/httpd/modules ; USER=root ; COMMAND=/bin/rm -rf tmpfile *

然后我们就可以发现你递归地删除了从目录开始的所有内容/etc/httpd/modules。由于这为我们提供了事件的时间戳以及受影响文件的列表,我们可以很容易地找出需要恢复的内容。

此外,我猜想您试图用制表符补全以 开头的文件组,tmpfile但没有意识到只有一个文件存在。我得出这个结论是基于这样一个事实:通常,bash 在用制表符补全时会在完全匹配的文件末尾添加一个空格。然而,这完全是一个猜测,只值得一提,作为对这一事件的潜在解释。

答案3

您可以通过重新安装所有软件包来撤消 Debian 中的(大多数)错误,例如从 /etc 中删除重要配置文件。可以使用以下命令执行此操作:

aptitude reinstall '~i'

相关内容