意外移动了根目录下的目录

意外移动了根目录下的目录

我不小心运行了这个命令

sudo mv /* /applications/minced/

代替

sudo mv ./* /applications/minced/

这是根目录中剩下的全部内容

$ /
applications/ dev/          proc/         run/          sys/          tmp/       

我与服务器仍保持着活动的 ssh 连接。我尝试过直接从或调用mvsudo和... ,但都不起作用,不过我可以使用路径自动完成功能在那里找到它们。chmod/applications/minced/bin//applications/minced/usr/bin/

$ /applications/minced/bin/ls
-bash: /applications/minced/bin/ls: No such file or directory

我读了递归还原移动根目录,但由于它是 VPS,而不是物理机器,因此无法在 LiveCD 下安装系统。有什么想法吗?

更新

我发现这是由于库链接问题引起的,所以我这样做了

$ export LD_LIBRARY_PATH=/applications/minced/lib/x86_64-linux-gnu/
$ /applications/minced/lib/x86_64-linux-gnu/ld-linux-x86-64.so.2 /applications/minced/bin/mv /applications/minced/* /

显然我遇到了权限问题。sudo使用链接器调用会抛出此错误

$ /applications/minced/lib/x86_64-linux-gnu/ld-linux-x86-64.so.2 /applications/minced/usr/bin/sudo ...
sudo: effective uid is not 0, is /applications/minced/usr/bin/sudo on a file system with the 'nosuid' option set or an NFS file system without root privileges?

根据 Barafu Albino 的建议,我尝试su使用 busybox ( .../bin/busybox su -) 进行调用,但它会抛出su: must be suid to work properly。我猜这是因为su无法定位/etc/passwd/etc/shadow。看来我彻底搞砸了系统。

答案1

您的应用程序无法运行,因为它们需要查找库,但这些库也放错了位置。请尝试busybox直接使用。

bin/busybox ls

應該可以起到ls诸如此类的作用。

答案2

让我们采用另一种方法。我假设您不知道真正的 root 密码。以下是 sudo 所需的库列表:

linux-vdso.so.1 =>  (0x00007ffea6be9000)
libselinux.so.1 => /lib/x86_64-linux-gnu/libselinux.so.1 (0x00007fbbad17b000)
libutil.so.1 => /lib/x86_64-linux-gnu/libutil.so.1 (0x00007fbbacf78000)
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007fbbacd74000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fbbac9aa000)
libpcre.so.3 => /lib/x86_64-linux-gnu/libpcre.so.3 (0x00007fbbac73d000)
/lib64/ld-linux-x86-64.so.2 (0x00007fbbad5c5000)
libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007fbbac51f000)

以下是 sudo 包中的文件列表(仅相关文件):

/lib
/lib/systemd
/lib/systemd/system
/lib/systemd/system/sudo.service
/usr
/usr/lib
/usr/lib/sudo
/usr/lib/sudo/system_group.so
/usr/lib/sudo/sudo_noexec.so
/usr/lib/sudo/sudoers.so
/usr/lib/sudo/group_file.so
/usr/lib/sudo/sesh
/usr/bin
/usr/bin/sudoreplay
/usr/bin/sudo

尝试将库移动到二进制文件,放入同一个文件夹。也许会起作用。su依赖项较少,但需要知道真正的 root 密码。

答案3

我刚刚遇到了和这篇文章一模一样的问题。我使用的 Ubuntu 服务器禁用了 root 用户,并正在使用sudoroot 命令。所以我无法以 root 用户身份登录,对我来说,唯一的办法就是进行操作sudo。不幸的是,几个小时过去了,我失败了,太糟糕了。

对于可以使用 root 身份登录的用户,我想你们忘了提到另一种可能更简单的方法:busybox sulogin

相关内容