この簡単なチュートリアルでは、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ユーティリティのコレクション