GNU/Linux >> Tutoriales Linux >  >> Linux

Cómo restaurar o recuperar comandos eliminados en Linux

En este breve tutorial, aprenderemos cómo restaurar o recuperar comandos eliminados en Linux usando coreutils y busybox .

Usualmente usamos rm comando para eliminar cosas en Linux, ¿verdad? Sí. ¿Qué pasa si usamos rm? a rm rm ? En otras palabras, ¿qué pasa si eliminamos /bin/rm? archivo usando rm ¿dominio? Siempre me pregunté qué pasaría si realmente hiciera esto en una máquina Linux. Así que encendí rápidamente una VM de Ubuntu y eliminé el /bin/rm archivo ejecutando el siguiente comando:

$ sudo rm /bin/rm

Pensé que podría recuperar fácilmente el rm eliminado comando reinstalando Gnu coreutils paquete, porque rm el comando es parte de coreutils paquete, ¿no?

Entonces traté de reinstalar coreutils paquete usando apt administrador de paquetes como a continuación:

$ sudo apt install --reinstall coreutils

¡Oh hombre, estaba equivocado! El apt el administrador de paquetes requiere rm , por lo que no puede reinstalar coreutils paquete.

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)

También traté de compilarlo desde la fuente, pero tampoco funciona, porque el Makefile usa rm . Hasta ahora, no sabía que la reinstalación no es posible sin rm comando.

Pensé que restaurar los comandos eliminados es trivial. Sin embargo, en este caso particular no pude restaurar el rm dominio. Finalmente encontré la solución después de un par de búsquedas en la web. Si alguna vez eliminó accidentalmente rm comando (espero que no lo haga), puede usar cualquiera de los siguientes métodos para recuperarlo. No solo rm comando, puede usar este procedimiento para recuperar casi todos los comandos principales eliminados proporcionados por coreutils paquete.

Descargo de responsabilidad:

NO DEBE HACER ESTO EN UN SISTEMA DE PRODUCCIÓN . ¡Es estrictamente solo para fines educativos!.

Recuperar comandos eliminados en Linux usando coreutils

Para aquellos que no saben, el Gnu coreutils El paquete proporciona comandos básicos esenciales como cat , ls , rm , mkdir , rmdir , touch , y muchos más. Viene preinstalado con la mayoría de las distribuciones GNU/Linux.

Para recuperar el rm eliminado comando, primero cree un archivo binario vacío con el nombre "rm" en /bin/ ubicación:

$ sudo touch /bin/rm

Hazlo ejecutable:

$ sudo chmod +x /bin/rm

Descarga las coreutils paquete usando el comando:

$ apt download coreutils

Tenga en cuenta que no podemos reinstalar coreutils pero descargalo. Además, no necesitamos usar sudo privilegios para descargar un paquete.

Descomprima el paquete descargado con el siguiente dpkg comando:

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

El comando anterior simplemente desempaqueta el coreutils paquete, pero no lo configurará.

¡Hecho! Ahora, puede comenzar a usar el rm dominio. Para verificar si la funcionalidad del rm se restaura el comando, simplemente elimine cualquier archivo no deseado. Por ejemplo, eliminé coreutils paquete que descargué anteriormente:

$ rm coreutils_8.30-3ubuntu2_amd64.deb 

¡Estupendo! ¡Funciona!

¡¡Y, por favor, nunca hagas esto en un sistema de producción!!

Restaurar comandos eliminados usando busybox en Linux

BusyBox es un paquete de software que proporciona muchas utilidades comunes de UNIX en un solo ejecutable pequeño. Proporciona reemplazos para la mayoría de las utilidades que normalmente encuentra en GNU fileutils, shellutils, etc. Está disponible de forma predeterminada en Debian y sus derivados como Ubuntu y muchas otras distribuciones de Linux.

Puede ver la lista de las principales utilidades de línea de comandos proporcionadas por busybox usando el comando:

$ busybox --list

Salida de muestra:

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

En mi escritorio Ubuntu 20.04 LTS, busybox proporciona alrededor de 263 utilidades de línea de comandos.

Ahora vamos a restaurar el rm eliminado comando creando temporalmente un enlace simbólico lo. Ejecute el siguiente comando para enlazar temporalmente /bin/rm a /bin/busybox :

$ ln -s busybox /bin/rm

Luego reinstale coreutils paquete usando el comando:

$ sudo apt install --reinstall coreutils

Eso es todo. El comando anterior restaurará el rm comando.

Como se indicó anteriormente, este procedimiento no es solo para recuperar rm dominio. Supongo que podemos recuperar casi todos los comandos de Linux usando estos métodos. Compruébelo usted mismo en una VM y vea si funciona. De nuevo, no hagas esto en un sistema de producción . ¡Has sido advertido!

Lea también:

  • Restaurar permiso ejecutable al comando Chmod en Linux
  • Moreutils:una colección de utilidades Unix más útiles

Linux
  1. Cómo recuperar un archivo eliminado en Linux

  2. Cómo deshabilitar los comandos de apagado y reinicio en Linux

  3. Cómo restaurar el directorio /tmp eliminado en Linux

  4. ¿Cómo recuperar archivos borrados en Linux usando la herramienta de recuperación de datos Scalpel?

  5. Cómo limitar los comandos de usuario en Linux

Cómo usar los comandos Pbcopy y Pbpaste en Linux

Cómo recuperar datos eliminados en un sistema Linux

Cómo usar los comandos FTP de Linux

Cómo instalar TestDisk en Linux y recuperar archivos eliminados

Cómo usar PhotoRec para recuperar archivos borrados en Linux/Ubuntu

Cómo usar Linux para recuperar archivos borrados