我不小心将目录重命名/usr
为/usr_bak
.
我想把它改回来,所以我附加了路径/usr_bak/bin
以$PATH
允许系统找到 command sudo
。
但现在sudo mv /usr_bak /usr
给了我错误:
sudo: error while loading shared libraries: libsudo_util.so.0: cannot open shared object file: No such file or directory
除了重装系统,还有什么办法可以重命名/usr_bak
as吗?/usr
由于您已经为 root 设置了密码,因此使用
su
和busybox
, 默认安装在 Ubuntu 中。所有su
必需的库都在/lib
. Busybox 是一组静态链接的实用程序,因此缺少库应该不是问题。做:(虽然 Busybox 本身也有一个
su
小程序,但/bin/busybox
二进制文件不是 setuid,因此除非以 root 身份运行,否则无法工作。)如果你没有 root 密码,
你可以在这里使用 Gilles 的解决方案(Gilles 说这不适用于像 sudo 这样的 setuid 二进制文件)重新启动并编辑 GRUB 菜单以LD_LIBRARY_PATH
,或者init=/bin/busybox
作为内核参数启动并移动文件夹回来。除了穆鲁的回答:
您可以使用一些救援启动 USB 密钥来修复您的系统;例如,如果您的系统是某个 Debian 或 Ubuntu,请在救援模式下启动安装 USB 密钥,然后执行相应的
mount
andmv
和umount
.为了能够更轻松地修复此类错误,我通常还会安装一个带有几个内置命令的静态 shell(特别是一些
cp
,rm
,mv
-like 内置命令),例如sash
(它被打包在 Debian 和 Ubuntu 中,也可以作为sash-3.8 使用。 tar.gz以源代码形式)并引导并init=/bin/sash
传递给 Grub。PS:
sash
有一点问题,并不完全符合 Posix,但仍然非常有用。我认为最安全的方法是使用 USB、CD 或 DVD 引导的操作系统(Debian、Ubuntu、Suse 等)重新启动。然后安装包含问题的驱动器并进行重命名。
比启动到 /usr 或 /lib 有效缺失的雷区更安全。
我遇到了一个类似的问题,我重命名
/usr/bin
为/usr/bin_bkp
进行一些测试,然后我无法重命名(因为该命令sudo
在标准目录中找不到/usr/bin
)然后我/usr/bin_bkp
手动转到该目录(使用文件管理器) 并且右键单击的大部分功能(包括重命名)都被禁用。然后我尝试了以下命令并解决了问题
我从当前路径调用了 sudo 并且它工作了,现在一切都恢复正常了。
操作系统:Xubuntu 14.04
我现在不能尝试这个(我不确定我是否愿意),但它似乎应该为自己创建一个新的“/usr”作为硬链接(不是软链接)到你的“ /usr_bak,然后删除“/usr_bak”
由文件系统中的“ln”(没有“-s”参数)创建的硬链接应该使 usr 和 usr_bak 目录同样有效地链接到相关目录。“rm”只是删除您要求它删除的一个链接,而不是两个链接。由于仍然有指向内容的有效链接,它们应该仍然可以通过“/usr”中的剩余链接访问。