想升级 glic 的,结果先卸载了原先的,现在命令全都不能用了。。。
啊啊啊啊,怎么办呀?
[[email protected] gettext-0.18.1.1]# rpm -e --nodeps glibc-2.12-1.192.el6.x86_64
warning: /etc/ld.so.conf saved as /etc/ld.so.conf.rpmsave
warning: %postun(glibc-2.12-1.192.el6.x86_64) scriptlet failed, exit status 127
[[email protected] gettext-0.18.1.1]# ls
-bash: /bin/ls: /lib64/ld-linux-x86-64.so.2: bad ELF interpreter: No such file or directory
[[email protected] gettext-0.18.1.1]# ls
-bash: /bin/ls: /lib64/ld-linux-x86-64.so.2: bad ELF interpreter: No such file or directory
[[email protected] gettext-0.18.1.1]# rpm -ivh glibc-2.15-60.el6.x86_64.rpm
-bash: /bin/rpm: /lib64/ld-linux-x86-64.so.2: bad ELF interpreter: No such file or directory
[[email protected] gettext-0.18.1.1]# cp /etc/ld.so.conf.rpmsave /etc/ld.so.conf
-bash: /bin/cp: /lib64/ld-linux-x86-64.so.2: bad ELF interpreter: No such file or directory
[[email protected] gettext-0.18.1.1]# ldconfig
-bash: /sbin/ldconfig: No such file or directory
[[email protected] gettext-0.18.1.1]# l
Display all 133 possibilities? (y or n)
[[email protected] gettext-0.18.1.1]# ln /etc/ld.so.conf.rpmsave /etc/ld.so.conf
-bash: /bin/ln: /lib64/ld-linux-x86-64.so.2: bad ELF interpreter: No such file or directory
[[email protected] gettext-0.18.1.1]#
只剩下本地一个 ssh 连接了,新建连接都连不上了。。。。
同情&关注
如果.还能连上 sftp 的话,下载一个 glibc 替换.也许还有救
活着不好吗……
知乎来拯救你了 https://zhuanlan.zhihu.com/p/20062978
楼主做得一手好死啊,找个能用的 libc 库,然后用 LD_PRELOAD=/lib/libc.so ls 这样处理
然后我继续观察 V2EX 小学生如何自作聪明的提出自己的方案,(笑
busybox...
这玩意好牛逼。。。
楼主也没说是 VPS ,还是杜甫,还是能接触到的物理机器
Windows 用户表示只要你能接触到物理机,就能存文件进去,其他都不是问题吧
远程我估计你是没戏了 这种情况大多还是需要依赖外部启动的方式来解决。讲一下对于物理机的修复方式,非 rpm 包管理的 linux 启动盘,解压相同版本 rpm ,打成 tar 包后,然后解包到挂载后的根目录。 rpm 系的启动盘,直接把这个 rpm 包安装到挂载的根目录下(关键为 rpm 的 root 参数)
谢谢,我去试试。
QAQ
做得一手好死....
要么用光盘引导修复
要么想办法弄个 busybox 上去修复喽...
挂载相应系统的 iso 引导后修复就行了, kvm 架构的 vps 都可以挂 iso , vps 服务商没提供选项就发 ticket
就用 5L 的文章里面的方案。挺好的。帮你总结一下。
这就是 windows 和 linux 最大的区别:
Windows File Protection
xp 以上的系统,在拿不到特权(挂入内核)的情况下,基本是动不了受保护的部分文件区域的。而大部分发行版本的 linux 在这块的管理上。。。。松散。
看以后 windows 阵营和 linux 阵营怎么互怼(商业度高的 linux 除外哈)。
哥们要么弄个 glibc 放进去,要么重装 base system/kernel system 部分?(不了解 linux 里面叫什么)
用 Linux 安装盘的恢复,安装 glibc 。
1.找一个静态链接的 busybox 然后用 xxd 或 hexdump 查看二进制数据。
2.把上一步的数据拆解成数条“ printf '...' >> file ”这样的语句,这样复制到 shell 里面执行就相当于拷贝文件了。
3.用上一步描述的方式把 busybox 写到 /bin/cp 里面, cp 就复活了。然后 “ cp /bin/cp /bin/ln ”, 这样 ln 也就复活了,同理可以恢复其他命令。
4.用上一步恢复的命令恢复 glibc 。
Linux 设定的用户群是知道自己在干什么的有动手能力的技术人员
Win 定位的是电脑小白
你确定 glibc 没了还能有 shell 用?
我是把 5L 发的链接里面的方案总结了一下,这里描述错了,意思是直接复制到仅存的那个 ssh 连接里面执行就好了, printf 是 bash 的内部命令 glibc 没了还可以用。
你好, xdd 跟 hexdump 出来的都是二进制,我怎么确定哪条是 cp 命令呢?
是时候开发一个不依赖 glibc 的应急工具了
我想问问, busybox 进去以后怎么修复,回复 so,然后 rpm glibc 强制安装?
不是哪条。。是把整个 busybox 都放进去,看原文。
本地的话直接用个启动盘 mount 系统盘手工装一下 glibc 先启动起来再安装 glibc 。
archlinux 的话直接可以在启动盘里安装包到目标系统。
噢噢,我又看了一下评论,他说弄了几十次,意思要用追加的方式,一直往 /bin/cp 里面写喽?
第一步第二步做的事情,实际上就是把 cp 一个静态编译的 busybox 并且覆盖 /bin/cp 。
但是由于 cp 以其他相关命令没法用,所以原文作者采用了 hexdump 查看二进制然后 printf 的方式来达到复制 busybox 的目的。
对,就是这个意思。
你这言论好神奇。有那个 linux 发行商或者社区可以证实你的说法吗?
至于 win 为啥有 Windows File Protection 这个倒确实是有出处,但并非为了照顾小白。
mac 也有 System Integrity Protection ...所以你这言论好神奇。
楼主你先执行下这个命令
python -c 'import sys,re; print "\n\n".join(["printf \"%s\" >>/bin/cp" % "".join("\\x%X" % ord(c) for c in x) for x in re.findall(r"(?s).{1,20480}", open(sys.argv[1]).read())])' busybox-x86_64
可以把 busybox-x86_64 分割成多个 printf 命令,然后挨个粘贴执行吧。
第一条 printf 不能用 >> 哈,得是 >
再次 SSH 应该只是 不能 打开 bash ( shell )
sftp 和 scp 命令应该还是可以用的吧,毕竟 服务器端的 SSH server 一直在运行,没有停掉(只要不额外打开其他程序)
没有 glibc python 可以跑吗
Python 跑在本地机器上用来复制内容到 ssh 的
本地 xxd 就可以了,用 python 更麻烦些
活着就好
sftp 或 scp 可以用吗?
如果可以, 传个 静态编译 版 的 bash , SSH 的时候指定启动这个 shell
或直接 传 glibc 文件
GG 思密达,与世隔绝了。。。
报告老大了,被批了一顿。明天去机房现场挂镜像 trouble shuting
QAQ
意思是 这两个命令 不能用?
我想起了我自己的经历,曾经用 sudo 命令搞掉了 glibc ……
ssh 登陆不上去, scp 总可以用吧?
回答 glibc 删除为啥 sshd 还在
因为文件链接断了,但 inode 还在
这时就要先找本机能用的 command
参考这个吧
LD_PRELOAD=/lib64/libc-2.12.so ln -s libc-2.12.so libc.so.6
如果 libc.so.6 没有被删除
关爱的眼神
不能用,之前都试过了。
什么牌子的服务器?没有 HP iLO 、 dell iDRAC 之类的远控吗
装个 docker ,只玩虚拟机。
Linux 和 Windows 定位本来就不同,你这个观点强制把它们放在一起用同样的标准去对比本身就有问题。
最关键的是:
为什么楼主能有 Root 权限?
Glibc 如此基础的东西都敢删,哇哈哈。
可能比 rm -rf / 还恐怖,我也遇到过一次,为了升级 pcre ,删了系统自带的 pcre ,断了 ssh 后再也连不上了。没办法只能去现场,把丢失的 so 文件一个个拷回去。
明明可以共存,却要过河拆桥。
祝楼主顺利恢复物理机吧。
等等, busybox 不是自带的包吗?直接运行 busybox 拿不到命令提示符?
刚在 openwrt 碰到, 重新下载 glibc 包,解压,然后 export LD_LIBRARY_PATH= 搞定
shooting...
以前遇到类似问题,不过我是 upgrade 时出问题,最后是通过启动盘解决的
关于定位不同上你说到重点上了,但具体布置你指代的定位是哪个角度就不清楚(上面 17 楼哪种观点的角度就不太认同了)。
我只想看看两个阵营的脑残粉们如何互怼,结果还真有人上钩。