作死卸载了 glic,现在系统命令全都不能用了,还有救么? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
612
V2EX    Linux

作死卸载了 glic,现在系统命令全都不能用了,还有救么?

  •  
  •   612 2017-04-20 11:25:29 +08:00 7266 次点击
    这是一个创建于 3151 天前的主题,其中的信息可能已经有所发展或是发生改变。

    想升级 glic 的,结果先卸载了原先的,现在命令全都不能用了。。。 啊啊啊啊,怎么办呀?

    [root@localhost 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

    [root@localhost gettext-0.18.1.1]# ls -bash: /bin/ls: /lib64/ld-linux-x86-64.so.2: bad ELF interpreter: No such file or directory

    [root@localhost gettext-0.18.1.1]# ls -bash: /bin/ls: /lib64/ld-linux-x86-64.so.2: bad ELF interpreter: No such file or directory

    [root@localhost 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

    [root@localhost 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

    [root@localhost gettext-0.18.1.1]# ldconfig -bash: /sbin/ldconfig: No such file or directory

    [root@localhost gettext-0.18.1.1]# l Display all 133 possibilities? (y or n)

    [root@localhost 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

    [root@localhost gettext-0.18.1.1]#

    第 1 条附言    2017-04-20 13:15:38 +08:00
    是一台物理服务器,机房很远,进去也麻烦。现在只剩下一个本地的 ssh 了,断了就什么都没有了。准备用楼下那个 busybox 先恢复 cp 命令,但是我下载了 busybox-x86_64 ,用 xdd 或者 hexdump 查看的都是二进制,怎么确定哪条是 cp 命令呢?
    第 2 条附言    2017-04-20 14:07:29 +08:00
    ![QQ 截图 20170420140426.png]( https://ooo.0o0.ooo/2017/04/20/58f84f9182797.png)
    5 万多行二进制,我切了 50 份,慢慢搞吧。
    晚点来报告结果...
    QAQ
    第 3 条附言    2017-04-20 14:14:14 +08:00
    一千多行单数据看来太多了, ssh 爆掉了。
    GAME OVER 。。。
    第 4 条附言    2017-04-20 15:39:40 +08:00
    GG 思密达,与世隔绝了。。。
    报告老大了,被批了一顿。明天去机房现场挂镜像 trouble shuting
    QAQ
    57 条回复    2017-04-21 10:25:44 +08:00
    612
        1
    612  
    OP
       2017-04-20 11:29:43 +08:00
    只剩下本地一个 ssh 连接了,新建连接都连不上了。。。。
    EricInBj
        2
    EricInBj  
       2017-04-20 11:31:04 +08:00
    同情&关注
    knva
        3
    knva  
       2017-04-20 11:31:51 +08:00
    如果.还能连上 sftp 的话,下载一个 glibc 替换.也许还有救
    dzxx36gyy
        4
    dzxx36gyy  
       2017-04-20 11:31:59 +08:00 via Android
    活着不好吗……
    ldbC5uTBj11yaeh5
        5
    ldbC5uTBj11yaeh5  
       2017-04-20 11:32:30 +08:00   4
    nicevar
        6
    nicevar  
       2017-04-20 11:35:34 +08:00
    楼主做得一手好死啊,找个能用的 libc 库,然后用 LD_PRELOAD=/lib/libc.so ls 这样处理
    ldbC5uTBj11yaeh5
        7
    ldbC5uTBj11yaeh5  
       2017-04-20 11:37:05 +08:00
    然后我继续观察 V2EX 小学生如何自作聪明的提出自己的方案,(笑
    kokutou
        8
    kokutou  
       2017-04-20 11:40:19 +08:00 via Android
    busybox...
    这玩意好牛逼。。。
    nfroot
        9
    nfroot  
       2017-04-20 11:45:33 +08:00
    楼主也没说是 VPS ,还是杜甫,还是能接触到的物理机器

    Windows 用户表示只要你能接触到物理机,就能存文件进去,其他都不是问题吧
    holyzhou
        10
    holyzhou  
       2017-04-20 12:16:19 +08:00
    远程我估计你是没戏了 这种情况大多还是需要依赖外部启动的方式来解决。讲一下对于物理机的修复方式,非 rpm 包管理的 linux 启动盘,解压相同版本 rpm ,打成 tar 包后,然后解包到挂载后的根目录。 rpm 系的启动盘,直接把这个 rpm 包安装到挂载的根目录下(关键为 rpm 的 root 参数)
    612
        11
    612  
    OP
       2017-04-20 12:19:42 +08:00
    @jigloo 谢谢,我去试试。
    QAQ
    xss
        12
    xss  
       2017-04-20 12:22:36 +08:00
    做得一手好死....

    要么用光盘引导修复
    要么想办法弄个 busybox 上去修复喽...
    treo
        13
    treo  
       2017-04-20 12:26:08 +08:00   1
    挂载相应系统的 iso 引导后修复就行了, kvm 架构的 vps 都可以挂 iso , vps 服务商没提供选项就发 ticket
    liuqhang
        14
    liuqhang  
       2017-04-20 12:32:29 +08:00
    就用 5L 的文章里面的方案。挺好的。帮你总结一下。
    sgissb1
        15
    sgissb1  
       2017-04-20 12:35:11 +08:00
    这就是 windows 和 linux 最大的区别:
    Windows File Protection

    xp 以上的系统,在拿不到特权(挂入内核)的情况下,基本是动不了受保护的部分文件区域的。而大部分发行版本的 linux 在这块的管理上。。。。松散。

    看以后 windows 阵营和 linux 阵营怎么互怼(商业度高的 linux 除外哈)。

    哥们要么弄个 glibc 放进去,要么重装 base system/kernel system 部分?(不了解 linux 里面叫什么)
    okudayukiko0
        16
    okudayukiko0  
       2017-04-20 12:46:29 +08:00 via iPhone
    用 Linux 安装盘的恢复,安装 glibc 。
    liuqhang
        17
    liuqhang  
       2017-04-20 12:50:32 +08:00   1
    1.找一个静态链接的 busybox 然后用 xxd 或 hexdump 查看二进制数据。
    2.把上一步的数据拆解成数条“ printf '...' >> file ”这样的语句,这样复制到 shell 里面执行就相当于拷贝文件了。
    3.用上一步描述的方式把 busybox 写到 /bin/cp 里面, cp 就复活了。然后 “ cp /bin/cp /bin/ln ”, 这样 ln 也就复活了,同理可以恢复其他命令。
    4.用上一步恢复的命令恢复 glibc 。
    k9982874
        18
    k9982874  
       2017-04-20 12:51:10 +08:00
    @sgissb1
    Linux 设定的用户群是知道自己在干什么的有动手能力的技术人员
    Win 定位的是电脑小白
    choury
        19
    choury  
       2017-04-20 13:02:01 +08:00 via Android
    @liuqhang 你确定 glibc 没了还能有 shell 用?
    liuqhang
        20
    liuqhang  
       2017-04-20 13:06:10 +08:00
    @choury 我是把 5L 发的链接里面的方案总结了一下,这里描述错了,意思是直接复制到仅存的那个 ssh 连接里面执行就好了, printf 是 bash 的内部命令 glibc 没了还可以用。
    612
        21
    612  
    OP
       2017-04-20 13:09:29 +08:00
    @liuqhang 你好, xdd 跟 hexdump 出来的都是二进制,我怎么确定哪条是 cp 命令呢?
    eccstartup
        22
    eccstartup  
       2017-04-20 13:11:55 +08:00 via iPhone
    是时候开发一个不依赖 glibc 的应急工具了
    palytoxin
        23
    palytoxin  
       2017-04-20 13:12:36 +08:00 via iPhone
    @jigloo 我想问问, busybox 进去以后怎么修复,回复 so,然后 rpm glibc 强制安装?
    liuqhang
        24
    liuqhang  
       2017-04-20 13:15:43 +08:00
    @612 不是哪条。。是把整个 busybox 都放进去,看原文。
    doubleflower
        25
    doubleflower  
       2017-04-20 13:17:07 +08:00
    本地的话直接用个启动盘 mount 系统盘手工装一下 glibc 先启动起来再安装 glibc 。

    archlinux 的话直接可以在启动盘里安装包到目标系统。
    612
        26
    612  
    OP
       2017-04-20 13:21:41 +08:00
    @liuqhang 噢噢,我又看了一下评论,他说弄了几十次,意思要用追加的方式,一直往 /bin/cp 里面写喽?
    liuqhang
        27
    liuqhang  
       2017-04-20 13:22:14 +08:00
    @612 第一步第二步做的事情,实际上就是把 cp 一个静态编译的 busybox 并且覆盖 /bin/cp 。
    但是由于 cp 以其他相关命令没法用,所以原文作者采用了 hexdump 查看二进制然后 printf 的方式来达到复制 busybox 的目的。
    liuqhang
        28
    liuqhang  
       2017-04-20 13:22:46 +08:00
    @612 对,就是这个意思。
    sgissb1
        29
    sgissb1  
       2017-04-20 13:31:30 +08:00
    @k9982874 你这言论好神奇。有那个 linux 发行商或者社区可以证实你的说法吗?

    至于 win 为啥有 Windows File Protection 这个倒确实是有出处,但并非为了照顾小白。
    danielmiao
        30
    danielmiao  
       2017-04-20 13:39:07 +08:00
    @k9982874 mac 也有 System Integrity Protection ...所以你这言论好神奇。
    ldbC5uTBj11yaeh5
        31
    ldbC5uTBj11yaeh5  
       2017-04-20 13:43:22 +08:00   1
    楼主你先执行下这个命令

    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 命令,然后挨个粘贴执行吧。
    mind3x
        32
    mind3x  
       2017-04-20 13:53:54 +08:00
    @jigloo 第一条 printf 不能用 >> 哈,得是 >
    linhua
        33
    linhua  
       2017-04-20 13:54:34 +08:00
    @612
    再次 SSH 应该只是 不能 打开 bash ( shell )

    sftp 和 scp 命令应该还是可以用的吧,毕竟 服务器端的 SSH server 一直在运行,没有停掉(只要不额外打开其他程序)
    xxzs
        34
    xxzs  
       2017-04-20 13:58:53 +08:00
    @jigloo 没有 glibc python 可以跑吗
    qiyuey
        35
    qiyuey  
       2017-04-20 14:05:56 +08:00
    @xxzs Python 跑在本地机器上用来复制内容到 ssh 的
    xxzs
        36
    xxzs  
       2017-04-20 14:16:36 +08:00
    @qiyuey 本地 xxd 就可以了,用 python 更麻烦些
    voocel
        37
    voocel  
       2017-04-20 14:55:17 +08:00
    活着就好
    linhua
        38
    linhua  
       2017-04-20 15:04:19 +08:00
    @612
    sftp 或 scp 可以用吗?
    如果可以, 传个 静态编译 版 的 bash , SSH 的时候指定启动这个 shell
    或直接 传 glibc 文件
    612
        39
    612  
    OP
       2017-04-20 15:38:54 +08:00
    @linhua GG 思密达,与世隔绝了。。。
    报告老大了,被批了一顿。明天去机房现场挂镜像 trouble shuting
    QAQ
    linhua
        40
    linhua  
       2017-04-20 15:43:27 +08:00
    @612
    意思是 这两个命令 不能用?
    yanyanjia
        41
    yanyanjia  
       2017-04-20 16:05:12 +08:00
    我想起了我自己的经历,曾经用 sudo 命令搞掉了 glibc ……
    JJaicmkmy
        42
    JJaicmkmy  
       2017-04-20 16:10:14 +08:00
    ssh 登陆不上去, scp 总可以用吧?
    VYSE
        43
    VYSE  
       2017-04-20 16:11:02 +08:00 via Android   1
    回答 glibc 删除为啥 sshd 还在
    因为文件链接断了,但 inode 还在
    这时就要先找本机能用的 command
    myself659410
        44
    myself659410  
       2017-04-20 16:21:28 +08:00
    参考这个吧

    LD_PRELOAD=/lib64/libc-2.12.so ln -s libc-2.12.so libc.so.6

    如果 libc.so.6 没有被删除
    iot
        45
    iot  
       2017-04-20 16:29:00 +08:00
    关爱的眼神
    612
        46
    612  
    OP
       2017-04-20 16:58:42 +08:00
    @linhua 不能用,之前都试过了。
    treo
        47
    treo  
       2017-04-20 18:30:31 +08:00
    什么牌子的服务器?没有 HP iLO 、 dell iDRAC 之类的远控吗
    hanxiV2EX
        48
    hanxiV2EX  
       2017-04-20 18:55:19 +08:00 via iPhone
    装个 docker ,只玩虚拟机。
    mN71eOOprFyMsnPx
        49
    mN71eOOprFyMsnPx  
       2017-04-20 19:47:33 +08:00
    @sgissb1 Linux 和 Windows 定位本来就不同,你这个观点强制把它们放在一起用同样的标准去对比本身就有问题。

    最关键的是:
    为什么楼主能有 Root 权限?
    acdfjelxe
        50
    acdfjelxe  
       2017-04-20 19:57:32 +08:00 via Android
    Glibc 如此基础的东西都敢删,哇哈哈。
    xuyl
        51
    xuyl  
       2017-04-20 23:17:13 +08:00
    可能比 rm -rf / 还恐怖,我也遇到过一次,为了升级 pcre ,删了系统自带的 pcre ,断了 ssh 后再也连不上了。没办法只能去现场,把丢失的 so 文件一个个拷回去。
    kn007
        52
    kn007  
       2017-04-20 23:36:59 +08:00
    明明可以共存,却要过河拆桥。

    祝楼主顺利恢复物理机吧。
    msg7086
        53
    msg7086  
       2017-04-21 06:41:07 +08:00
    等等, busybox 不是自带的包吗?直接运行 busybox 拿不到命令提示符?
    standin000
        54
    standin000  
       2017-04-21 09:26:30 +08:00
    刚在 openwrt 碰到, 重新下载 glibc 包,解压,然后 export LD_LIBRARY_PATH= 搞定
    skylancer
        55
    skylancer  
       2017-04-21 09:30:39 +08:00
    @612 shooting...
    fuxkcsdn
        56
    fuxkcsdn  
       2017-04-21 09:46:20 +08:00
    以前遇到类似问题,不过我是 upgrade 时出问题,最后是通过启动盘解决的
    sgissb1
        57
    sgissb1  
       2017-04-21 10:25:44 +08:00
    @FifiLyu 关于定位不同上你说到重点上了,但具体布置你指代的定位是哪个角度就不清楚(上面 17 楼哪种观点的角度就不太认同了)。

    我只想看看两个阵营的脑残粉们如何互怼,结果还真有人上钩。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     1438 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 29ms UTC 16:51 PVG 00:51 LAX 08:51 JFK 11:51
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86