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

各位救命,刚刚不小心升级 glibc 版本,现在不管使用什么命令都报 Permission Denied,只有 cd 命令可以使用

  •  
  •   AllOfMe · 2018-06-14 14:18:42 +08:00 · 9983 次点击
    这是一个创建于 2348 天前的主题,其中的信息可能已经有所发展或是发生改变。

    最近在搭建一个内网应用,提示 glibc 版本过低,所以我先通过 rpm 卸载一些应用。
    但是后面发现 yum 命令还有其他很多命令都用不了,提示说: /lib64/ld-linux-x86-64.so.2: bad ELF interpreter: No such file or directory

    后面发现这是一个软连接,名字是 ld-2.12.so ,应该是缺失了,所以我进行了 sftp 上传。

    后面发现虽然是没有这提示,但是命令改为提示 Permission Denied 了,应该是 ld-2.12.so 的 chmod 没有权限可以访问。。。尝试上传一个 sh 文件覆盖原来 755 的 sh 文件,里面包括 chmod 命令,但是执行了也是提示 Permission Denied

    目前服务器上跑着 Java Tomcat(包括 jsp),还有 Oracle 数据服务器,可以进行访问,我想问下有没有什么可以解决的方法。。头疼了。。

    第 1 条附言  ·  2018-06-14 16:52:12 +08:00
    谢谢各位。现在连接不上服务器了,我想明天直接去机房修改了
    第 2 条附言  ·  2018-06-14 18:36:04 +08:00
    是从 glibc2.12 版本升级上来,我备份了 /lib 和 /lib64,但是是打包成 zip 文件,这样还可以吗?。。
    第 3 条附言  ·  2018-06-15 12:55:02 +08:00
    楼主报个平安。目前系统可以进去了,我通过 recure 模式拷贝 lib64 的 so 文件。还要再去测测,希望一切正常
    64 条回复    2018-06-15 14:24:19 +08:00
    yuqaf
        1
    yuqaf  
       2018-06-14 14:23:07 +08:00
    细软跑吧。。。线上系统敢动 glibc。。升级 glibc 的是很不安全的。。
    ChristopherWu
        2
    ChristopherWu  
       2018-06-14 14:24:17 +08:00
    赶紧找大佬,你不会就不要着急自己搞了。
    1iuh
        3
    1iuh  
       2018-06-14 14:30:32 +08:00
    有快照就恢复快照。没有快照且没有重要资料需要保存就重装吧。
    privil
        4
    privil  
       2018-06-14 14:33:16 +08:00
    第三次看到这种操作了,知乎一次 ,v2ex 两次
    privil
        5
    privil  
       2018-06-14 14:35:56 +08:00   ❤️ 3
    zpf124
        6
    zpf124  
       2018-06-14 14:35:59 +08:00
    你上的这个 so 文件 是不是没权限啊...是不是 644
    fancyhan
        7
    fancyhan  
       2018-06-14 14:37:17 +08:00 via iPhone
    Centos 吧
    Gcourage
        8
    Gcourage  
       2018-06-14 14:41:38 +08:00 via iPhone
    操作之前有没有备份原来的 libc ?
    ryd994
        9
    ryd994  
       2018-06-14 14:58:47 +08:00 via Android
    进 livecd 把数据拷出来,其他无所谓
    sw0rd3n
        10
    sw0rd3n  
       2018-06-14 15:02:13 +08:00 via iPhone
    Busybox 走起来
    E1n
        11
    E1n  
       2018-06-14 15:35:42 +08:00 via Android
    rpm 卸载心太大
    LukeChien
        12
    LukeChien  
       2018-06-14 15:43:02 +08:00 via Android
    所以这个系统还有救吗?单用户模式 root 身份进去搞?
    AllOfMe
        13
    AllOfMe  
    OP
       2018-06-14 16:51:37 +08:00 via Android
    @Gcourage 有的,lib64 和 lib 都备份了
    jjianwen68
        14
    jjianwen68  
       2018-06-14 16:54:28 +08:00
    不破不立,sudo rm -rfv /
    airqj
        15
    airqj  
       2018-06-14 16:55:37 +08:00
    进 livecd,把根目录覆盖
    z3jjlzt
        16
    z3jjlzt  
       2018-06-14 16:57:18 +08:00
    说个我自己的经历,我也是在 vps 上升级了 glibc,然后发现 permission denied,想回退到 2.12 版本的,之后按网上改软链接的方式,失败了,之后发现通过 vps 后台也无法登陆 bash (后来发现这个时候如果没有断开 ssh,还是可以补救的,的但是我以为最坏的方式我也可以通过后台文件管理找回数据~~~),发 email 给 vps 提供商也回复说无法私自修改用户主机。最后只能重装,丢失了所有的数据。给你参考参考,哈哈哈
    wr410
        17
    wr410  
       2018-06-14 17:00:28 +08:00
    glibc 是核心中的核心,我宁愿直接装新的发行版也不敢去升级内核,自找麻烦~
    mooncakejs
        18
    mooncakejs  
       2018-06-14 17:04:25 +08:00
    已经断开 ssh 了? 那没救了,祝你好运。
    AllOfMe
        19
    AllOfMe  
    OP
       2018-06-14 17:10:19 +08:00 via Android
    @mooncakejs 我没办法了。。您能给些建议吗?我明天要去机房,再去修复一下。感激不尽!
    AllOfMe
        20
    AllOfMe  
    OP
       2018-06-14 17:11:05 +08:00 via Android
    @zpf124 对的,然后我拷贝了其他的 755 的文件进行更名,但是后面直接连接不上去了
    lepig
        21
    lepig  
       2018-06-14 17:20:25 +08:00   ❤️ 1
    哎呀 楼主的头像 现在 很应景啊
    kimqcn
        22
    kimqcn  
       2018-06-14 17:23:16 +08:00
    让你不用 docker
    wqsfree
        23
    wqsfree  
       2018-06-14 17:30:00 +08:00   ❤️ 1
    你千万不要想着跑路啊,你千万不要想着坐走私船离开泰国,再转到越南老挝缅甸柬埔寨,你不要让领导见到你啊,让领导见到你我分分钟弄死你啊。(笑话)
    dmx
        24
    dmx  
       2018-06-14 17:37:17 +08:00   ❤️ 2
    我也遇到过这个问题,我是把某个版本的 so 换成了另一个版本,结果啥都不行了。印象中是使用命令的时候可以通过参数指定使用的 so 路径,这样给弄活的
    dmx
        25
    dmx  
       2018-06-14 17:47:13 +08:00   ❤️ 1
    噢,有个环境变量 LD_LIBRARY_PATH
    xiaoheijw
        26
    xiaoheijw  
       2018-06-14 17:49:05 +08:00   ❤️ 1
    ld-2.12.so 软链接的是旧版本的 glibc 库?如果是的话,把软链接删了,指定新的 glibc 库,lib64 跟 lib 有备份的话,可以尝试 ldd 看下和新版本的区别.
    artandlol
        27
    artandlol  
       2018-06-14 17:53:29 +08:00 via iPhone   ❤️ 1
    链接: https://pan.baidu.com/s/1eMmp1a5-EgwEy21e-_2avQ 密码:3l62

    用 rpm 包吧
    artandlol
        28
    artandlol  
       2018-06-14 17:55:46 +08:00 via iPhone   ❤️ 1
    LD_PRELOAD=/lib64/libc-2.14.1.so; ln -s /lib64/libc-2.14.1.so /lib64/libc.so.6


    cat >>/etc/sysconfig/i18n <<EOF
    LC_ALL=C
    export LC_ALL
    EOF
    . /etc/sysconfig/i18n
    AllOfMe
        29
    AllOfMe  
    OP
       2018-06-14 18:04:49 +08:00
    @dmx 好的,谢谢,我去试一下
    AllOfMe
        30
    AllOfMe  
    OP
       2018-06-14 18:05:02 +08:00
    @artandlol 谢谢谢谢!
    AllOfMe
        31
    AllOfMe  
    OP
       2018-06-14 18:05:35 +08:00
    @xiaoheijw 好的,谢谢!
    xiaoheijw
        32
    xiaoheijw  
       2018-06-14 18:17:05 +08:00   ❤️ 1
    @artandlol 你怎么知道他升级的是 2.14 版本?
    xiaoheijw
        33
    xiaoheijw  
       2018-06-14 18:18:54 +08:00
    @AllOfMe 你是 2.12 升级成那个版本了?
    AllOfMe
        34
    AllOfMe  
    OP
       2018-06-14 18:34:18 +08:00
    @xiaoheijw 我是从 glibc2.12 版本升级的,卸载了之后就是没能再进行了。。我是有备份 /lib 和 /lib64 的,但是是被打包成 zip 文件,这样还有救吗?请教
    AllOfMe
        35
    AllOfMe  
    OP
       2018-06-14 18:34:31 +08:00
    @AllOfMe
    @xiaoheijw
    请教,感激不尽!
    BadMan
        36
    BadMan  
       2018-06-14 18:40:10 +08:00
    跑路吧,机票我已经帮你订好了
    xiaoheijw
        37
    xiaoheijw  
       2018-06-14 18:45:12 +08:00
    @AllOfMe 线上业务多吗?就算现在解决了,也是临时救火,glibc 的影响太大了,建议迁移业务,重装吧.给个思路,回滚到旧版本的 glibc,你先看下 lib64 下所有的软链接指向,然后把备份的库还原回去试试,当然先备份现在的库.或者有同样 linux 版本的机器,也是 glibc2.12 的话,你可以比较两者的软链接差异.还有库的差异. ld-2.12.so 是 2.12 版本,还有看看有没有 busybox 工具,可以救急用.
    zpf124
        38
    zpf124  
       2018-06-14 18:50:14 +08:00
    看来得跑路了, 你现在需要众筹车票了...
    qiyuey
        39
    qiyuey  
       2018-06-14 18:52:06 +08:00 via Android
    又见到了。。。看楼上的知乎吧
    sevncz
        40
    sevncz  
       2018-06-14 19:01:59 +08:00
    升级过一次 glibc,还好没出问题。。。后怕。。。
    mooncakejs
        41
    mooncakejs  
       2018-06-14 19:08:18 +08:00
    @AllOfMe 如果你还能进去终端,还有得救,,,不过我怕,,,已经进不去了,只能搞搞分区挂载了
    fangdingjun
        42
    fangdingjun  
       2018-06-14 19:09:23 +08:00
    如果要使用新的 libc 正确的方法是这样的, LD_LIBRARY_PATH=/path/to/new_glibc /path/to/command
    twl007
        43
    twl007  
       2018-06-14 19:20:55 +08:00 via iPhone
    干啥不好要动这个……
    fancyhan
        44
    fancyhan  
       2018-06-14 19:21:51 +08:00
    @jjianwen68 -rfv 删的满,朋克一点 sudo nohup rm -rf / & ,直接后台删除 bootloader 和 kernel
    cinhoo
        45
    cinhoo  
       2018-06-14 19:34:19 +08:00 via iPhone
    soulmine
        46
    soulmine  
       2018-06-14 19:36:02 +08:00
    @fancyhan nohup 还行
    AllOfMe
        47
    AllOfMe  
    OP
       2018-06-14 19:43:25 +08:00
    @zpf124
    @twl007
    @fangdingjun
    @mooncakejs
    @zpf124
    @xiaoheijw

    谢谢各位回复。我现在手上全是汗,下次不这么乱搞了。想问下 glibc 被删除会不会对硬盘上的数据有影响呢?我最怕这个了
    x86vk
        48
    x86vk  
       2018-06-14 19:50:26 +08:00 via Android   ❤️ 1
    @AllOfMe 应该不会有影响的,我个人笔记本上误删过 glibc,直接拿 arch linux 的 iso 启动系统,挂载硬盘后把必须的.so 拷过去,然后 Chroot 过去装回来就好了 我觉得你这个解决方式应该也差不多
    AllOfMe
        49
    AllOfMe  
    OP
       2018-06-14 19:56:12 +08:00
    @x86vk 谢谢!我刚刚在虚拟机上模拟了各种情况下 glibc 被删除的情况,从救援模式进去。现在就是怕明天机房没有 KVM,也没有 U 盘可以插进去。。。刚刚准备了键盘鼠标 VGA 线等,只能等待命运了。。
    AntonChen
        50
    AntonChen  
       2018-06-14 19:58:00 +08:00
    Linux 上打死别动 glibc 可能会浪费你一大把时间。
    AntonChen
        51
    AntonChen  
       2018-06-14 20:07:52 +08:00   ❤️ 1
    @AllOfMe 用 LiveCD 从别的系统拷贝一份完好的 /lib、/lib64、/usr/lib、/usr/lib64。当然有备份还原备份更好(注意检查权限),然后 chroot 进去再安装一遍系统自带的 glibc ( yum install glibc/apt install glibc )。

    5L 发的是比较极端的解决方案(没有控制台,仅剩余 ssh 连接)
    userlol
        52
    userlol  
       2018-06-14 20:14:49 +08:00
    还有一歪招:试下自己配的各种服务有没有软件漏洞,能不能借此拿到控制权限?
    AllOfMe
        53
    AllOfMe  
    OP
       2018-06-14 20:19:35 +08:00
    @AntonChen 好的,实在很谢谢!
    wwhc
        54
    wwhc  
       2018-06-14 20:52:18 +08:00
    给大家看看这几年 glibc 在 Gentoo 上疯狂的升级:

    Sat Apr 9 03:28:49 2016 >>> sys-libs/glibc-2.22-r4
    merge time: 11 minutes and 36 seconds.

    Sat Jan 7 03:29:09 2017 >>> sys-libs/glibc-2.23-r3
    merge time: 11 minutes and 49 seconds.

    Sat Jun 24 03:28:29 2017 >>> sys-libs/glibc-2.23-r4
    merge time: 11 minutes and 16 seconds.

    Sat Nov 4 03:26:04 2017 >>> sys-libs/glibc-2.25-r8
    merge time: 8 minutes and 49 seconds.

    Sat Nov 18 03:25:38 2017 >>> sys-libs/glibc-2.25-r9
    merge time: 8 minutes and 23 seconds.

    Sat Feb 10 03:25:51 2018 >>> sys-libs/glibc-2.25-r10
    merge time: 8 minutes and 37 seconds.

    Sat Mar 31 03:26:10 2018 >>> sys-libs/glibc-2.25-r11
    merge time: 8 minutes and 55 seconds.

    定制后的 Gentoo 的稳定性 /可靠性比其它发行版强的太多,现在配置服务器都是 host 为 gentoo,各种服务全部扔到 qemu/kvm 里的 ubuntu centos fedora 上
    thundernet8
        55
    thundernet8  
       2018-06-14 21:06:03 +08:00 via Android
    ldconfig 命令试试
    nicevar
        56
    nicevar  
       2018-06-14 21:06:35 +08:00
    用 LD_PRELOAD 能解决
    xiaket
        57
    xiaket  
       2018-06-15 09:05:54 +08:00
    @wwhc 丧心病狂啊...
    abmin521
        58
    abmin521  
       2018-06-15 10:37:57 +08:00   ❤️ 1
    junbaor
        59
    junbaor  
       2018-06-15 12:33:30 +08:00   ❤️ 1
    楼主怎么样了,还安全吗,报个平安啊
    raptor
        60
    raptor  
       2018-06-15 12:50:27 +08:00   ❤️ 1
    人生难免有今日,踩过才知道有些坑是不能踩的。还好我当年是在自己的 VPS 上踩过这个坑,还好重要的内容都有备份,重装了事。
    AllOfMe
        61
    AllOfMe  
    OP
       2018-06-15 12:52:56 +08:00
    @raptor 是啊,我昨晚一直睡不好。这应该也是难得的经验,比书上的知识更深刻,更难忘
    AllOfMe
        62
    AllOfMe  
    OP
       2018-06-15 12:53:42 +08:00
    @junbaor 暂时平安。早上跑去机房拿着 USB 去拷贝 lib64 的 so 文件,目前命令初步可以,SSH 也 ok,但是我还是要再试试
    AllOfMe
        63
    AllOfMe  
    OP
       2018-06-15 12:53:56 +08:00
    @abmin521 谢谢
    284716337
        64
    284716337  
       2018-06-15 14:24:19 +08:00
    glibc 不要搞啊,之前就是因为这个,系统都重装了,还好上面没有啥重要的东西
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2747 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 06:38 · PVG 14:38 · LAX 22:38 · JFK 01:38
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.