我设置了一个 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'