【问题标题】:Accidentally deleted symlink libc.so.6 in CentOS 6.4. How to get sudo privilege to re-create it?在 CentOS 6.4 中意外删除了符号链接 libc.so.6。如何获得 sudo 权限来重新创建它?
【发布时间】:2013-06-27 13:27:03
【问题描述】:

我不小心删除了符号链接 /lib64/libc.so.6 -> /lib64/libc-2.12.so with

$ sudo rm libc.so.6

然后我不能使用任何东西,包括ls 命令。我输入的任何命令都会出现错误

ls: error while loading shared libraries: libc.so.6: cannot open shared object file: No such file or directory

我试过了

$ export LD_PRELOAD=/lib64/libc-2.12.so

之后我可以使用lsln ...,但仍然不能使用sudo ln ...sudo -E ln ...。我总是犯这个错误

sudo: error while loading shared libraries: libc.so.6: cannot open shared object file: No such file or directory

这是一个远程服务器,所以我不能使用 Live CD。我现在有一个 ssh bash 会话,但无法建立新会话。我有 sudo 权限,但没有 root 密码。

所以目前我的问题是我需要运行sudo sln -s libc-2.12.so libc.so.6 来重新创建符号链接libc.so.6,但是如果没有libc.so.6,我就无法运行sudo

我该如何解决?谢谢~

【问题讨论】:

  • @OlegMikheev 不,$ su$ sudo su
  • 也许你可以尝试从另一台机器上 scp 相同版本的 libc.so.6 到你的机器上......
  • 从不同的映像(可能是 Live CD)启动。出于所有意图和目的,您将无法运行任何命令,直到您返回 libc.so.6,因此您必须找到一种运行 O/S 的方法,以允许您替换符号链接。您不必安装操作系统;你只需要运行它足够长的时间就可以挂载你的普通操作系统的根文件系统并修复符号链接。
  • @JonathanLeffler 我什至无法获得 sudo 权限来重新启动机器......
  • @rakib 是,但不是 root 拥有的文件

标签: linux centos


【解决方案1】:

我通过使用已经在服务器 /sbin 中的静态链接版本的“ln”解决了这个问题。

例如,这为我的配置恢复了它: /sbin/sln /lib64/libc-2.5.so /lib64/libc.so.6

【讨论】:

    【解决方案2】:

    有点尴尬 :) 但它也发生在 Ubuntu 12.04.3 上(不是 CentOS 6.4,但我认为这可能仍然有帮助)。

    因为我的 Ubuntu 无法启动,所以我使用 liveUSB 启动,然后安装了我的硬盘并创建了符号链接(我确实有文件本身 libc-2.15.so),然后就完成了。

    只是一些具体的细节:

    1. 我请一个好朋友用他的电脑半小时
    2. 我从这里下载了我的确切 Ubuntu iso(12.04.3,如果你在;y 缺少符号链接,它可能是任何版本,以至于它可以安装驱动器):link
    3. 我确定他的 Ubuntu 有 usb-creator-gtk($ sudo apt-get install usb-gtk-creator,我确定 Windows 有一个等效的 USB 引导创建器)
    4. 使用 usb-creator-gtk 创建了 liveUSB
    5. 用它启动了我的计算机(您可能需要更改 BIOS 设置以允许首先启动外部 USB)
    6. 一旦我从 live USB 启动,我通过运行 Ubuntu 分区工具(live USB 有一个)来确定我的硬盘分区在哪里 - 我的类型是 ext4/dev/sdb1
    7. 我通过 $ mkdir /home/ubuntu/mnt 然后 $ sudo mount-t ext4 /dev/sdb1 /home/ubuntu/mnt 安装它
    8. 然后我进入那个文件夹$ cd /home/ubuntu/mnt
    9. 然后我从那个位置通过$ sudo ln -s lib/x86_64-linux-gnu/libc-2.15.so lib/x86_64-linux-gnu/libc.so.6 创建了符号链接

    重启后我很好。

    希望它能帮助你(或某人..)

    【讨论】:

    • 我想补充一点:使用 fdisk 来定位要挂载的分区。如果您没有像我一样的 BIOS 访问权限 - 有一个解决方法 - 您可以使用 grub 来启动 USB。 Ubuntu:在 grub 中按“c”。列出并将 root 切换到 USB(在我的情况下是 hd2)。如果您只有进入 root 的问题,也可以从 grub 加载具有 root 权限的 bash。所以或多或少的 linux 并不像人们认为的那样安全 :)
    【解决方案3】:

    我会在@wilfo 答案中添加更多内容,因为我也发生了同样的情况[意外删除 lib.so.6 并且在启动时 /sbin/init 缺少 libc.so.6]。 在 Windows 中创建 liveUSB(使用 UNetbootin 等 [http://unetbootin.sourceforge.net/])或在 ubuntu 中创建 @wilfo 建议。 从 liveUSB 启动,我选择了“体验 ubuntu 而不安装它”,并且很高兴应用 wilfo 的方法直到第 6 步,然后我找不到 ext3/4 类型的硬盘分区。都是 nftf/fat/extended 的东西。

    所以我通过点击这个链接恢复了以前的 ubuntu(缺少 libc.so...的那个) https://help.ubuntu.com/community/Boot-Repair

    确保遵循所有必要步骤并备份您的 ubuntu 分区。 你可以在 /mnt/boot-sav/wubi1/home 中看到你以前的 ubuntu 文件 从这里备份到您的 Windows 分区 /mnt/boot-sav/sda... 并按照此处的剩余程序https://help.ubuntu.com/community/Boot-Repair

    【讨论】:

      猜你喜欢
      • 2012-08-28
      • 2013-08-29
      • 1970-01-01
      • 2017-08-04
      • 2015-01-24
      • 1970-01-01
      • 1970-01-01
      • 2021-08-19
      • 1970-01-01
      相关资源
      最近更新 更多