在这个简短的教程中,我们将学习如何在 Linux 中使用恢复或恢复已删除的命令 coreutils
和 busybox
.
我们通常使用 rm
在 Linux 中删除东西的命令,对吗? 是的。 如果我们使用 rm
到 rm
rm
? 换句话说,如果我们删除 /bin/rm
文件使用 rm
命令? 我一直想知道如果我真的在 Linux 机器上这样做会发生什么。 所以我快速启动了一个 Ubuntu VM 并删除了 /bin/rm
通过运行以下命令来创建文件:
$ sudo rm /bin/rm
我以为我可以轻松恢复已删除的 rm
通过重新安装命令 Gnu coreutils
包,因为 rm
命令是一部分 coreutils
包,不是吗?
所以我尝试重新安装 coreutils
包使用 apt
包管理器如下:
$ sudo apt install --reinstall coreutils
哦,伙计,我错了! 这 apt
包管理器需要 rm
,所以它不能重新安装 coreutils
包裹。
Reading package lists... Done Building dependency tree Reading state information... Done 0 upgraded, 0 newly installed, 1 reinstalled, 0 to remove and 0 not upgraded. Need to get 1249 kB of archives. After this operation, 0 B of additional disk space will be used. Get:1 https://in.archive.ubuntu.com/ubuntu focal/main amd64 coreutils amd64 8.30-3ubuntu2 [1249 kB] Fetched 1249 kB in 2s (747 kB/s) dpkg: warning: 'rm' not found in PATH or not executable dpkg: error: 1 expected program not found in PATH or not executable Note: root's PATH should usually contain /usr/local/sbin, /usr/sbin and /sbin E: Sub-process /usr/bin/dpkg returned an error code (2)
我也尝试从源代码编译它,但它也不起作用,因为 Makefile
用途 rm
. 直到现在,我不知道重新安装是不可能的 rm
命令。
我认为恢复已删除的命令很简单。 但是,在这种特殊情况下,我无法恢复 rm
命令。 最终我在几次网络搜索后找到了解决方案。 如果您曾经不小心删除 rm
命令(我希望你不会),你可以使用以下任何一种方法来恢复它。 不只是 rm
命令,您可以使用此过程恢复几乎所有由 coreutils
包裹。
免责声明:
你 不得在生产系统上执行此操作. 它仅用于教育目的!
使用 coreutils 在 Linux 中恢复已删除的命令
对于不知道的人, Gnu coreutils
包提供了基本的核心命令,例如 cat
, ls
, rm
, mkdir
, rmdir
, touch
, 还有很多。 大多数 GNU/Linux 发行版都预装了它。
恢复已删除的 rm
命令,首先创建一个空的二进制文件,名字为 "rm"
在下面 /bin/
地点:
$ sudo touch /bin/rm
使其可执行:
$ sudo chmod +x /bin/rm
下载 coreutils
使用命令打包:
$ apt download coreutils
请注意,我们无法重新安装 coreutils
但下载它。 此外,我们不需要使用 sudo
下载软件包的权限。
使用以下内容解压下载的包 dpkg
命令:
$ sudo dpkg --unpack coreutils_8.30-3ubuntu2_amd64.deb
上面的命令只是解压 coreutils
包,但不会配置它。
完毕! 现在,您可以开始使用 rm
命令。 验证功能是否正常 rm
命令恢复后,只需删除任何不需要的文件。 比如我删了 coreutils
我之前下载的包:
$ rm coreutils_8.30-3ubuntu2_amd64.deb
伟大的! 有用!
而且,请永远不要在生产系统上这样做!!
在 Linux 中使用 busybox 恢复已删除的命令
忙箱 是一个软件套件,它将许多常见的 UNIX 实用程序提供到一个小的可执行文件中。 它提供了您通常在 GNU fileutils、shellutils 等中找到的大多数实用程序的替代品。默认情况下,它在 Debian 及其衍生产品(如 Ubuntu 和许多其他 Linux 发行版)中可用。
您可以查看由提供的核心命令行实用程序列表 busybox
使用命令:
$ busybox --list
示例输出:
[ [[ acpid adjtimex ar arch arp arping ash awk basename bc blkdiscard blockdev brctl bunzip2 busybox bzcat bzip2 cal cat [..]
在我的 Ubuntu 20.04 LTS 桌面中,busybox 提供了 263 命令行实用程序。
现在让我们恢复已删除的 rm
通过临时创建一个命令 符号链接 到它。 运行以下命令临时符号链接 /bin/rm
到 /bin/busybox
:
$ ln -s busybox /bin/rm
然后重新安装 coreutils
使用命令打包:
$ sudo apt install --reinstall coreutils
就是这样。 上面的命令将恢复 rm
命令。
如前所述,此程序不仅用于恢复 rm
命令。 我想我们可以使用这些方法恢复几乎所有的 Linux 命令。 自己在虚拟机上检查一下,看看它是否有效! 再次, 不要在生产系统中这样做. 你被警告了!
- 在 Linux 中恢复 chmod 命令的可执行权限
- Moreutils – 更有用的 Unix 实用程序的集合
APTbusyboxCoreutilsdpkgGnu CoreutilsLinuxLinux 命令Linux 提示Linux 故障排除Ubuntu