V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
612
V2EX  ›  Linux

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

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

    想升级 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 ,只玩虚拟机。
    FifiLyu
        49
    FifiLyu  
       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   ·   实用小工具   ·   1937 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 32ms · UTC 00:33 · PVG 08:33 · LAX 16:33 · JFK 19:33
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.