centos系统bin文件被篡改,导致执行命令异常
背景
在linux日积月累的使用中,系统的二进制bin文件,可能因为磁盘问题,或者人为误操作等各种问题,导致部分二进制命令执行失败。
如何验证系统bin文件是否被篡改
全局验证
[root@localhost ~]#rpm –Va
此命令执行后,会有如下类似输出
单个文件验证
全局验证往往耗时较长,如果不需要,可以进行单个软件包内的文件进行验证。因为验证是基于软件包的,所以在验证前,可通过yum provides
去查看所验证的文件属于哪个软件包
[root@localhost ~]# yum provides /usr/bin/crontab
如上图可以看到,该命令来自于cronie-1.4.4-12.el6.x86_64这个软件包。
执行下列命令对该软件包进行验证
[root@localhost ~]# rpm -V cronie-1.4.4-12.el6.x86_64
前面各个字母或数字的意思如下
S= 大小改变
M= 权限改变
5=MD5改变,说明文件内容被改了 : md5sum
L= 连接改变
D= 设备改变
U=用户改变
G= 组改变
T=修改时间改变
只要是执行该命令输出的文件,说明该文件和系统初始文件发生了改变,这些文件主要分为两大类,一种是配置文件,如*.repo,*.conf等等,此类文件一般在做配置时都会修改,可以不用理会,还有一类是二进制文件,如在/bin或/sbin下的各种命令,如ls,rm等等,这类文件严格来说,不应该发生任何改变,如果在验证结果中出现这类文件,就需要格外注意了!
修复
如果只是权限或者用户属组发生改变,那么只要去找其他权限正常的机器,按照正确的权限修改即可;如果验证后发现有大小或者MD5的改变,那么就需要重新安装解决了(不是所有的命令涉及的软件包都可以重新安装,有些太过于底层的命令,依赖太多,可能只能重新安装系统,具体以现实情况为准),具体参见下文。
如上面的案例,我们发现crontab命令权限,MD5等文件大小都发生了改变,这会就需要重新安装软件包解决了
挂载上操作系统的光盘,配置好yum源后,执行下面的命令进行软件包的重新安装,安装前建议将crontab有关的配置文件进行备份,以防止覆盖丢失(虽说不太可能发生)
[root@localhost~]#yum reinstall cronie-1.4.4-12.el6.x86_64
安装完成后再次执行验证
[root@localhost ~]# rpm -V cronie-1.4.4-12.el6.x86_64
不再有任何输出,说明文件权限大小完全正确,修复成功。