Distributions
› Ubuntu
› Fedora
› CentOS
中文资源站
› 网易开源镜像站
612
V2EX  ›  Linux

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

  •  
  •   612 · Apr 20, 2017 · 8158 views
    This topic created in 3483 days ago, the information mentioned may be changed or developed.

    想升级 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]#

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

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

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

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

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

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

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

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

    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
    mind3x
    Apr 20, 2017
    32
    @jigloo 第一条 printf 不能用 >> 哈,得是 >
    linhua
    linhua
    Apr 20, 2017
    33
    @612
    再次 SSH 应该只是 不能 打开 bash ( shell )

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

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

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

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

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

    我只想看看两个阵营的脑残粉们如何互怼,结果还真有人上钩。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1249 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 93ms · UTC 21:12 · PVG 05:12 · LAX 13:12 · JFK 16:12
    ♥ Do have faith in what you're doing.