Tutoriales

¿Qué sucede cuando se eliminan archivos en Linux?

Los entornos gráficos y de escritorio modernos proporcionan una carpeta de basura. Esta ubicación permite recuperar los archivos «eliminados» antes de un borrado irreversible. Cuando usa la terminal, el comando basura enviará archivos a la carpeta basura como área de preparación.Pero, ¿qué sucede cuando le dices a tu computadora Linux que elimine un archivo? rm ¿Ordenar? ¿Eliminará archivos?

[ Keep your most commonly used commands handy with the Linux commands cheat sheet. ]

eliminación de archivos

Se producen diferentes interacciones cuando se eliminan archivos, principalmente según el sistema de archivos (EXT4, XFS, BtrFS, etc.) uso del sistema.Las llamadas siempre se pueden monitorear con precisión sin entrar en los detalles del sistema de archivos rm Ordenar.

Primero, crea un archivo llamado example.txt:

$ echo "This is a test file" > example.txt

Obtener información adicional sobre el archivo stat Ordenar:

$ stat example.txt
  File: example.txt
  Size: 26              Blocks: 8
  IO Block: 4096   regular file
Device: fd00h/64768d
Inode: 17198515    Links: 1
Access: (0664/-rw-rw-r--)
Uid: ( 1001/testuser)
Gid: ( 1001/testuser)
Context: unconfined_u:object_r:user_home_t:s0
Access: 2022-09-14 17:22:51.492026903 +0200
Modify: 2022-09-14 17:24:21.667609795 +0200
Change: 2022-09-14 17:24:21.667609795 +0200
 Birth: 2022-09-14 17:22:51.492026903 +0200

Este stat La salida del comando muestra el tamaño de bloque del sistema de archivos, la cantidad de bloques utilizados por el archivo, etc. (¡No se preocupe, este artículo no requiere matemáticas!)

La información más importante en este ejemplo es el número de inodo. En este ejemplo, eso es:

Inode: 17198515

¿Qué es un inodo?

Los inodos contienen metadatos sobre archivos. Incluye el tamaño del archivo, dónde encontrar los bloques que contienen el contenido del archivo, el modo de archivo, etc. Cada archivo tiene un inodo de referencia.

Hay herramientas para encontrar información de bloque sobre archivos. Estos comandos son específicos del sistema de archivos.Por ejemplo, en XFS es xfs_bmap Ordenar.

$ xfs_bmap example.txt
example.txt:
  0: [0..7]: 9343608..9343615

Recuerda esos números. ¡Los necesitarás si sigues borrando!

comando de seguimiento

Una llamada al sistema («syscall» para abreviar) es una forma de programación para que un programa solicite servicios del núcleo. pista es una poderosa herramienta que le permite rastrear la delgada capa entre los procesos de usuario y el kernel de Linux.Comprender la interacción entre los archivos y las llamadas al sistema que utiliza rmpuede monitorear el proceso de eliminación con strace:

$ strace --follow-forks \
--absolute-timestamps \
--syscall-times \
--no-abbrev \
--decode-fds -o /tmp/rm_log.txt \
--string-limit 1024 \
rm example.txt

usar /tmp/rm_log.txt Para el registro, se puede ver acerca de rm Ejecución de procesos. Primero, tenga en cuenta el ID del proceso (PID):

1727 [...] execve("/usr/bin/rm", ["rm", "example.txt"],

También puede ver las estadísticas del sistema usando syscall para verificar el archivo newfstatat:

1727  17:26:04.489674 newfstatat(AT_FDCWD, "example.txt", {st_dev=makedev(0xfd, 0), st_ino=17198515, st_mode=S_IFREG|0664, st_nlink=1, st_uid=1001, st_gid=1001, st_blksize=4096, st_blocks=8, st_size=26, st_atime=1663168971 /* 2022-09-14T17:22:51.492026903+0200 */, st_atime_nsec=492026903, st_mtime=1663169061 /* 2022-09-14T17:24:21.667609795+0200 */, st_mtime_nsec=667609795, st_ctime=1663169061 /* 2022-09-14T17:24:21.667609795+0200 */, st_ctime_nsec=667609795}, AT_SYMLINK_NOFOLLOW) = 0 <0.000004>

es misterioso Esto es lo que significa:

  • st_ino=17198515: número de inodo que contiene todos los metadatos del archivo
  • st_uid=1001, st_gid=1001: ID de usuario (UID) y ID de grupo (GID) propietario del archivo
  • st_blksize=4096: dimensión del tamaño del bloque
  • st_atime=1663168971: última hora de acceso
  • st_mtime=1663169061: Última modificación
  • st_ctime=1663169061: hora del último cambio de estado

Archivo ejecutable rm Se ha accedido con éxito al archivo como en W_OK Marcos:

1727  17:26:04.489705 faccessat(AT_FDCWD, "example.txt", W_OK) = 0 <0.000005>

A continuación, el proceso hace unlinkat Llamada al sistema:

1727  17:26:04.489724 unlinkat(AT_FDCWD, "example.txt", 0) = 0 <0.000062>

y el archivo se elimina de la carpeta:

$ ls -la
total 16
drwx------. 2 [...]  83 Sep 14 17:08 .
drwxr-xr-x. 4 [...]      35 Sep 13 16:46 ..
-rw-------. 1 [...] 508 Sep 13 18:22 .bash_history
-rw-r--r--. 1 [...]  18 Jun 20 13:31 .bash_logout
-rw-r--r--. 1 [...] 141 Jun 20 13:31 .bash_profile
-rw-r--r--. 1 [...] 376 Jun 20 13:31 .bashrc

El archivo ya no existe. ¿O es eso?

desvincular llamada al sistema

Este unlink syscall ha eliminado un nombre del sistema de archivos, posiblemente el archivo al que se refiere.

Lo siguiente es de unlink Página man:

unlink() deletes a name from the filesystem.
If that name was the last link to a file and no processes have
the file open, the file is deleted and the space it was using
is made available for reuse.

Recuperar archivos borrados

Anteriormente en el artículo, usé xfs_bmap Herramienta para obtener los bloques utilizados por los archivos en el sistema de archivos. Esto será muy útil ya que es hora de recuperar archivos eliminados.

Primer uso dd Leer bloques anteriores del disco y redirigir la salida al archivo recover.txt:

$ sudo dd if=/dev/mapper/rhel-root of=recover.txt count=8 skip=9343512
8+0 records in
8+0 records out
4096 bytes (4.1 kB, 4.0 KiB) copied, 0.00012141 s, 33.7 MB/s

Acaba de crear un flujo de datos de 4096 bytes desde su disco duro, pero ¿qué hay dentro de este archivo?

$ cat recover.txt
This is a test file......

¡El archivo ha sido restaurado!

eliminar con cuidado

Sus archivos eliminados pueden ser reconfortantes o perturbadores rm En realidad no desapareció. La recuperación depende del conocimiento previo de las ubicaciones de inodos de archivos o de la búsqueda y recuperación de fuerza bruta utilizando herramientas especializadas.

comprender rm Las llamadas del sistema en las que se basa son conocimientos importantes. Con él, puede tomar decisiones informadas sobre cómo descartar, eliminar o triturar archivos.

LEER  Protección de nuestro servidor web Tesing bajo Kali Linux

Publicaciones relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Botón volver arriba