この簡単なチュートリアルでは、coreutils
を使用してLinuxで削除されたコマンドを復元または回復する方法を学習します。 および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 http://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を使用して削除されたコマンドを復元する
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 [..]

私のUbuntu20.04LTSデスクトップでは、busyboxは約 263を提供します コマンドラインユーティリティ。
次に、削除したrm
を復元しましょう。 シンボリックリンクを一時的に作成してコマンドを実行します それに。次のコマンドを実行して、/bin/rm
を一時的にシンボリックリンクします。 /bin/busybox
へ :
$ ln -s busybox /bin/rm
次に、coreutils
を再インストールします コマンドを使用したパッケージ:
$ sudo apt install --reinstall coreutils
それでおしまい。上記のコマンドは、rm
を復元します コマンド。
前述のように、この手順はrm
を回復するためだけのものではありません 指図。これらの方法を使用して、ほぼすべてのLinuxコマンドを回復できると思います。 VMで自分でチェックして、機能することを確認してください。繰り返しますが、本番システムではこれを行わないでください 。警告されました!
また読む:
- LinuxでChmodコマンドの実行可能権限を復元する
- Moreutils –より便利なUnixユーティリティのコレクション