我遇到了严重的问题“-bash:/bin/egrep:无法执行二进制文件”

我遇到了严重的问题“-bash:/bin/egrep:无法执行二进制文件”

当我登录到我的服务器(Centos5.2-Final)时遇到严重问题,它宣布:

-bash: /bin/egrep: cannot execute binary file
-bash: /bin/egrep: cannot execute binary file
-bash: /bin/egrep: cannot execute binary file
-bash: /bin/hostname: cannot execute binary file
-bash: /bin/grep: cannot execute binary file
-bash: /bin/grep: cannot execute binary file
-bash: /bin/grep: cannot execute binary file
-bash: /bin/grep: cannot execute binary file

该服务器上运行的 apache 和 mysql 工作正常,但是 /bin 文件夹中的所有执行文件都存在这个问题,其中一些无法执行(vi、uname、ps……)

有人遇到过这个问题吗?请告诉我如何解决!

答案1

您能否发布以下内容...

ls -l /bin/hostname /bin/egrep /bin/hostname
ldd /bin/hostname /bin/egrep /bin/hostname
file /bin/hostname /bin/egrep /bin/hostname
ls -ld /bin/
echo $SHELL

答案2

您的输出是什么:grep SELINUX /etc/sysconfig/selinux

有可能 SELinux 正在阻止访问。

答案3

那是一个 rootkit ... 通常有些 rootkit 不需要编译。所有文件都只是被替换了。当您使用某些 i686 Linux 时,这些 rootkit 已安装,一切运行正常,但在 x86_64 机器上,您会遇到这些错误。您可以检查 /usr/lib/libsh 。如果此文件夹存在,则您有名为 shv(4-5) 的 rootkit,并且您将找到一个名为备份。在该文件夹中,您将找到类似以下文件:egrep/hostname/uname/etc。只需复制它们并替换 /bin 文件,或者您可以像这样测试它们:./hostname。您可以使用 yum 重新安装 binutils 或获取 .rpm 文件并手动安装。如果您要手动替换,请记住进行备份。

答案4

我能想到的最坏情况是 /bin 目录中的文件已损坏。另一种情况是 ELF 文件的体系结构与您的平台体系结构不匹配;如果您拥有 x86_64(64 位)系统,但使用无法运行 x86_64 可执行文件的 i386(32 位)内核启动,则可能会发生这种情况。

  1. 执行“file /bin/grep”的输出是什么
  2. “uname -a”的输出是什么

相关内容