Dans ce bref tutoriel, nous apprendrons comment restaurer ou récupérer des commandes supprimées sous Linux en utilisant coreutils
et busybox
.
Nous utilisons généralement rm
commande pour supprimer des éléments sous Linux, n'est-ce pas ? Oui. Et si nous utilisions rm
à rm
rm
? En d'autres termes, que se passe-t-il si nous supprimons /bin/rm
fichier en utilisant rm
commande? Je me suis toujours demandé ce qui se passerait si je faisais cela sur une machine Linux. J'ai donc rapidement lancé une machine virtuelle Ubuntu et supprimé le /bin/rm
fichier en exécutant la commande suivante :
$ sudo rm /bin/rm
Je pensais pouvoir facilement récupérer le rm
supprimé commande en réinstallant Gnu coreutils
package, car rm
la commande fait partie de coreutils
paquet, n'est-ce pas ?
J'ai donc essayé de réinstaller coreutils
paquet utilisant apt
gestionnaire de paquets comme ci-dessous :
$ sudo apt install --reinstall coreutils
Oh mec, j'avais tort! Le apt
le gestionnaire de paquets nécessite rm
, il ne peut donc pas réinstaller les coreutils
emballer.
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)
J'ai également essayé de le compiler à partir des sources, mais cela ne fonctionne pas non plus, car le Makefile
utilise rm
. Jusqu'à présent, je ne savais pas que la réinstallation n'était pas possible sans rm
commande.
Je pensais que la restauration des commandes supprimées était triviale. Cependant, dans ce cas particulier, je n'ai pas pu restaurer le rm
commande. Finalement, j'ai trouvé la solution après quelques recherches sur le Web. Si vous avez déjà supprimé accidentellement rm
commande (j'espère que vous ne le ferez pas), vous pouvez utiliser l'une des méthodes suivantes pour le récupérer. Pas seulement rm
commande, vous pouvez utiliser cette procédure pour récupérer presque toutes les commandes principales supprimées fournies par coreutils
paquet.
Avis de non-responsabilité :
Vous NE DEVEZ PAS FAIRE CELA SUR UN SYSTÈME DE PRODUCTION . C'est strictement à des fins éducatives uniquement !
Récupérer des commandes supprimées sous Linux à l'aide de coreutils
Pour ceux qui ne connaissent pas, les Gnu coreutils
package fournit des commandes de base essentielles telles que cat
, ls
, rm
, mkdir
, rmdir
, touch
, et beaucoup plus. Il est préinstallé avec la plupart des distributions GNU/Linux.
Pour récupérer le rm
supprimé commande, créez d'abord un fichier binaire vide avec le nom "rm"
sous /bin/
emplacement :
$ sudo touch /bin/rm
Rendez-le exécutable :
$ sudo chmod +x /bin/rm
Téléchargez les coreutils
package à l'aide de la commande :
$ apt download coreutils
Veuillez noter que nous ne pouvons pas réinstaller coreutils
mais téléchargez-le. De plus, nous n'avons pas besoin d'utiliser sudo
privilèges pour télécharger un package.
Décompressez le package téléchargé avec le dpkg
suivant commande :
$ sudo dpkg --unpack coreutils_8.30-3ubuntu2_amd64.deb
La commande ci-dessus décompresse simplement les coreutils
package, mais ne le configurera pas.
Fait! Maintenant, vous pouvez commencer à utiliser le rm
commande. Pour vérifier si la fonctionnalité du rm
commande est restaurée, supprimez simplement tout fichier indésirable. Par exemple, j'ai supprimé coreutils
package que j'ai téléchargé plus tôt :
$ rm coreutils_8.30-3ubuntu2_amd64.deb
Génial! Ça marche !
Et, s'il vous plaît, ne faites jamais cela sur un système de production !!
Restaurer les commandes supprimées à l'aide de busybox sous Linux
BusyBox est une suite logicielle qui fournit de nombreux utilitaires UNIX courants dans un seul petit exécutable. Il fournit des remplacements pour la plupart des utilitaires que vous trouvez habituellement dans GNU fileutils, shellutils, etc. Il est disponible par défaut dans Debian et ses dérivés comme Ubuntu et de nombreuses autres distributions Linux.
Vous pouvez afficher la liste des principaux utilitaires de ligne de commande fournis par busybox
en utilisant la commande :
$ busybox --list
Exemple de résultat :
[ [[ acpid adjtimex ar arch arp arping ash awk basename bc blkdiscard blockdev brctl bunzip2 busybox bzcat bzip2 cal cat [..]
Dans mon bureau Ubuntu 20.04 LTS, busybox fournit environ 263 utilitaires de ligne de commande.
Maintenant, restaurez le rm
supprimé commande en créant temporairement un lien symbolique à cela. Exécutez la commande suivante pour lier temporairement /bin/rm
vers /bin/busybox
:
$ ln -s busybox /bin/rm
Réinstallez ensuite coreutils
package à l'aide de la commande :
$ sudo apt install --reinstall coreutils
C'est ça. La commande ci-dessus restaurera le rm
commande.
Comme indiqué précédemment, cette procédure ne sert pas uniquement à récupérer rm
commande. Je suppose que nous pouvons récupérer presque toutes les commandes Linux en utilisant ces méthodes. Vérifiez-le vous-même sur une machine virtuelle et voyez que cela fonctionne ! Encore une fois, ne faites pas cela dans un système de production . Vous êtes prévenu !
Lire aussi :
- Restaurer l'autorisation exécutable pour la commande Chmod sous Linux
- Moreutils – Une collection d'utilitaires Unix plus utiles