GNU/Linux >> Znalost Linux >  >> Linux

Jak obnovit nebo obnovit smazané příkazy v Linuxu

V tomto krátkém tutoriálu se naučíme, jak obnovit nebo obnovit smazané příkazy v Linuxu pomocí coreutils a busybox .

Obvykle používáme rm příkaz k odstranění věcí v Linuxu, že? Ano. Co když použijeme rm do rm rm ? Jinými slovy, co když odstraníme /bin/rm soubor pomocí rm příkaz? Vždy jsem přemýšlel, co by se stalo, kdybych to skutečně udělal na počítači s Linuxem. Rychle jsem tedy roztočil virtuální počítač Ubuntu a smazal /bin/rm soubor spuštěním následujícího příkazu:

$ sudo rm /bin/rm

Myslel jsem, že mohu snadno obnovit smazaný rm přeinstalováním Gnu coreutils balíček, protože rm příkaz je součástí coreutils balíček, že?

Zkusil jsem tedy přeinstalovat coreutils balíček pomocí apt správce balíčků jako níže:

$ sudo apt install --reinstall coreutils

Páni, mýlil jsem se! apt správce balíčků vyžaduje rm , takže nemůže přeinstalovat coreutils balík.

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)

Zkoušel jsem to také zkompilovat ze zdroje, ale ani to nefunguje, protože Makefile používá rm . Doposud jsem nevěděl, že přeinstalace není možná bez rm příkaz.

Myslel jsem, že obnovení smazaných příkazů je triviální. V tomto konkrétním případě jsem však nemohl obnovit rm příkaz. Nakonec jsem po několika vyhledáváních na webu našel řešení. Pokud jste někdy omylem odstranili rm (doufám, že to neuděláte), můžete jej obnovit pomocí kterékoli z následujících metod. Nejen rm Tento postup můžete použít k obnovení téměř všech smazaných základních příkazů poskytovaných coreutils balíček.

Odmítnutí odpovědnosti:

TOTO NESMÍTE PROVÁDĚT NA VÝROBNÍM SYSTÉMU . Je to výhradně pro vzdělávací účely!.

Obnovení smazaných příkazů v Linuxu pomocí coreutils

Pro ty, kteří nevědí, Gnu coreutils balíček poskytuje základní základní příkazy, jako je cat , ls , rm , mkdir , rmdir , touch , a mnoho dalších. Dodává se předinstalovaný s většinou distribucí GNU/Linux.

Chcete-li obnovit smazaný rm Nejprve vytvořte prázdný binární soubor s názvem "rm" pod /bin/ umístění:

$ sudo touch /bin/rm

Udělejte jej spustitelným:

$ sudo chmod +x /bin/rm

Stáhněte si coreutils zabalit pomocí příkazu:

$ apt download coreutils

Upozorňujeme, že nemůžeme přeinstalovat coreutils ale stáhněte si to. Také nemusíme používat sudo oprávnění ke stažení balíčku.

Rozbalte stažený balíček pomocí následujícího dpkg příkaz:

$ sudo dpkg --unpack coreutils_8.30-3ubuntu2_amd64.deb

Výše uvedený příkaz jednoduše rozbalí coreutils balíček, ale nebude jej konfigurovat.

Hotovo! Nyní můžete začít používat rm příkaz. Pro ověření funkčnosti rm příkaz je obnoven, jednoduše odstraňte jakýkoli nechtěný soubor. Například jsem smazal coreutils balíček, který jsem si dříve stáhl:

$ rm coreutils_8.30-3ubuntu2_amd64.deb 

Skvělý! Funguje to!

A prosím, nikdy to nedělejte na produkčním systému!!

Obnovení smazaných příkazů pomocí busybox v Linuxu

BusyBox je softwarová sada, která poskytuje mnoho běžných unixových utilit do jediného malého spustitelného souboru. Poskytuje náhradu za většinu utilit, které obvykle najdete v GNU fileutils, shellutils atd. Ve výchozím nastavení je k dispozici v Debianu a jeho derivátech, jako je Ubuntu a mnoho dalších distribucí Linuxu.

Můžete si prohlédnout seznam základních nástrojů příkazového řádku, které poskytuje busybox pomocí příkazu:

$ busybox --list

Ukázkový výstup:

[
[[
acpid
adjtimex
ar
arch
arp
arping
ash
awk
basename
bc
blkdiscard
blockdev
brctl
bunzip2
busybox
bzcat
bzip2
cal
cat
[..]

Na mém desktopu Ubuntu 20.04 LTS poskytuje busybox přibližně 263 nástroje příkazového řádku.

Nyní obnovíme smazaný rm dočasným vytvořením symlinku k tomu. Spusťte následující příkaz pro dočasný symbolický odkaz /bin/rm do /bin/busybox :

$ ln -s busybox /bin/rm

Poté znovu nainstalujte coreutils zabalit pomocí příkazu:

$ sudo apt install --reinstall coreutils

A je to. Výše uvedený příkaz obnoví rm příkaz.

Jak bylo uvedeno dříve, tento postup není pouze pro obnovu rm příkaz. Myslím, že pomocí těchto metod můžeme obnovit téměř všechny příkazy Linuxu. Zkontrolujte to sami na virtuálním počítači a uvidíte, že to funguje! Opět toto nedělejte v produkčním systému . Byli jste varováni!

Přečtěte si také:

  • Obnovte oprávnění ke spustitelnému souboru pro příkaz Chmod v systému Linux
  • Moreutils – sbírka užitečnějších unixových nástrojů

Linux
  1. Jak obnovit smazaný soubor v Linuxu

  2. Jak zakázat příkazy vypnutí a restartu v Linuxu

  3. Jak obnovit smazaný adresář /tmp v Linuxu

  1. Jak obnovit smazané soubory v systému Linux pomocí nástroje pro obnovu dat Scalpel?

  2. Jak omezit uživatelské příkazy v Linuxu

  3. Jak obnovit otevřený, ale smazaný soubor v Linuxu pomocí ln místo cp?

  1. Jak obnovit smazané soubory v Linuxu [Příručka pro začátečníky]

  2. Jak zabít proces v Linuxu? Příkazy k ukončení

  3. Jak obnovit smazané soubory v Linuxu