问题
cp、mv、ls、vi和cat均无法使用,而且无法远程登陆,ssh协议不生效,只有cd命令可以操作。一开始还以为不成器的阿里云服务器会被黑客攻击了,查看脚本执行时的目录后,不得不承认脚本出错导致,简单而言就是脚本命令变量为空导致移动目录错误。如图一堆报错,心有点凉。
-bash: /bin/ls: No such file or directory
-bash: /bin/mv: No such file or directory
-bash: /bin/cp: No such file or directory
-bash: /bin/vi: No such file or directory
-bash: /bin/cat: No such file or directory
处理
命令都不能正常使用后,很可能/bin、/sbin、/usr/bin和/usr/sbin导致,查看后确认四个文件均丢失(cd 加tab键能查看服务器目录和文件),导致linux服务器上所有命令无法使用。
再cd+tab键/tmp/vsftpd时,发现问题所在了,就是脚本执行出错移动了/usr目录全部文件到/tmp/vsftpd目录下。
知道服务还有/bin和/sbin文件就好办了,先临时加载到环境变量。
export PATH=$PATH:/tmp/vsftpd/bin:/tmp/vsftp/sbin
此时发现已经tab键列出命令,但执行报错
-bash: /tmp/vsftpd/bin/su: /lib64/ld-linux-x86-64.so.2: bad ELF interpreter: No such file or directory
因为动态库/lib和/lib64同样移动到了当前目录,如图su -执行报错
此时使用以下便可执行操作。需要注意/tmp/vsftp是移动后的目录。公式可以理解为
移动后的目录/lib64/ld-linux-x86-64.so.2 --library-path 移动后的目录/lib64/ 移动后的目录/bin/cp -r /lib64 /
/tmp/vsftpd/lib64/ld-linux-x86-64.so.2 --library-path /tmp/vsftpd/lib64 /tmp/vsftpd/bin/cp -rfp lib64/* /
如图,因为根目录下有同名的/bin和/sbin文件(不是目录),便先执行删除后再执行移动,移动后命令已正常操作,便恢复/usr目录的所有文件。