Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 在CentOS 6.4中意外删除了符号链接libc.so.6。如何获得sudo特权来重新创建它?_Linux_Centos - Fatal编程技术网

Linux 在CentOS 6.4中意外删除了符号链接libc.so.6。如何获得sudo特权来重新创建它?

Linux 在CentOS 6.4中意外删除了符号链接libc.so.6。如何获得sudo特权来重新创建它?,linux,centos,Linux,Centos,我不小心用删除了符号链接/lib64/libc.so.6->/lib64/libc-2.12.so $ 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=/lib

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

$ 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
在此之后,我可以使用
ls
ln…
,但仍然不能使用
sudo-ln…
sudo-eln…
。我总是犯这个错误

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

我怎样才能修好它?谢谢~

有点尴尬:)但在Ubuntu 12.04.3上也发生了同样的事情(虽然不是CentOS 6.4,但我认为这可能还是有帮助的)

由于我的Ubuntu无法启动,我使用liveUSB启动,然后安装硬盘并创建了符号链接(我确实有文件本身
libc-2.15.so
),就这样做了

只是一些具体细节:

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


    希望它能帮助您(或其他人)

    我会在@wilfo answer中添加更多内容,就像我在启动时意外删除lib.so.6并得到/sbin/init missing libc.so.6一样。 在windows中创建liveUSB后(使用UNetbootin等)[http://unetbootin.sourceforge.net/])或者像@wilfo建议的那样在ubuntu中。 从liveUSB启动时,我选择了“体验ubuntu而不安装它”,并很高兴应用wilfo的方法,直到第6步,然后我找不到ext3/4类型的硬盘分区。所有这些都是nftf/脂肪/扩展材料

    因此,我通过以下链接恢复了以前的ubuntu(缺少libc.So的ubuntu)

    确保遵循所有必要的步骤并备份ubuntu分区。 您可以在/mnt/boot-sav/wubi1/home中看到以前的ubuntu文件 从这里备份到您的windows部件/mnt/boot sav/sda。。。
    然后按照此处剩余的过程进行操作

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

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

    @OlegMikheev不,或者
    $su
    或者
    $sudo su
    也许你可以尝试将同一版本的libc.so.6从不同的机器复制到你的机器上……从不同的映像(可能是一张live CD)启动。在返回
    libc.so.6
    之前,无论出于何种目的,您都无法运行任何命令,因此您必须找到一种运行O/S的方法来替换符号链接。您不必安装O/S;您只需要运行足够长的时间,就可以挂载正常O/S的根文件系统并修复符号链接。@JonathanLeffler我甚至无法获得sudo权限来重新启动机器…@rakib是的,但不是root拥有的文件我想添加的东西:使用fdisk定位要挂载的分区。如果你没有像我一样的BIOS访问权限-有一个解决办法-你可以使用grub启动USB。Ubuntu:在grub中按“c”。列出根目录并切换到USB(在我的例子中是hd2)。如果您只是在获取根目录方面有问题,那么也可以从grub加载具有根目录权限的bash。因此,或多或少linuxes并不像ppl认为的那样安全:)