Borrado de la papelera con Shred

8
2873

shred

Cuando borramos un fichero de nuestro disco duro (con el comando rm, por ejemplo), la información contenida en él permanece en el hardware aunque el sistema operativo nos informe de que el fichero ha sido eliminado.


Esto es aplicable a la limpieza de datos (historial, etc) que los navegadores web realizan a través de las opciones de sus menús. Toda esta información es fácilmente recuperable con programas como testdisk o photorec.

Esto, que en algunas ocasiones puede ser un recurso que nos sea de gran utilidad, puede en otras ocasiones hacer que se pueda recuperar de nuestro ordenador información que explícitamente deseábamos que quedase completamente eliminada. Un caso frecuente es cuando queremos vender nuestro ordenador y estar seguros de que nadie podrá recuperar ningún dato de él.

Para un borrado seguro de ficheros existe, entre otros, el comando shred.

Shred es una utilidad para borrado seguro de ficheros que sobrescribe estos con caracteres aleatorios y patrones que hacen  que la información contenida sea convertida en basura.

El número de veces de sobre-escritura se especifica con la opción n “numero”. Otras opciones son -z para hacer una última sobre-escritura con ceros, -v para informarnos del proceso y -u para eliminar el fichero después de sobrescrito.

Es un poco tedioso usar para cada fichero el comando shred. Además este no actúa sobre directorios. Para hacer más cómodo su uso, podemos proceder enviando toda la información que queramos borrar a la papelera (incluida la información sensible) y, cada vez que lo deseemos utilizar el siguiente script:

#!/bin/bash
ruta_a_papelera=$HOME'/.local/share/Trash/files'
#Cambiamos el valor del Separador interno
valor_ifs=$IFS
IFS=$(echo -en "\n\b")
cd $ruta_a_papelera

#Borramos primero todos los ficheros
for f in $(find . -type "f")
do
let longitud__fragmento_cadena=`expr length $f`-1
fichero=$ruta_a_papelera${f:1:$longitud__fragmento_cadena}
shred -n3 -v -z -u $fichero
echo $fichero
done
# Removemos directorios
for directorio in $(ls -a)
do
if [[ "$directorio" != "." && "$directorio" != ".." ]]
then
rm -r $directorio
fi
done
#Restauramos valores de IFS
IFS=$valor_ifs
echo "Fin de borrado (pulse para continuar)"
read a
#----------------------------------------------------------------

En Debian 6 y 7, la ruta a papelera es la indicada en la variable ruta_a_papelera. Si en otras distros difiere, sólo tenéis que cambiar esto en el script.

Para dejar el disco limpio, podemos crear un directorio donde recuperemos todos los datos “escondidos”, posteriormente moverlos a papelera y aplicar entonces este script.

Espero que os sea de utilidad.

8 COMENTARIOS

  1. mejor aún, mucho más potente y además se pueden borrar directorios llenos: instalar paquete secure-delete, y comando “srm archivo” hace desaparecer el archivo. Y “srm -r directorio” machaca el directorio y todo lo que haya dentro.

    * 1 pasada con 0xff
    * 5 pasadas aleatorias.
    * 27 pasadas con los valores especiales definidos por Peter Gutmann.
    * renombrado del archivo con un valor aleatorio
    * truncado del archivo

  2. Hablando de Shred les quiero compartir un service menu que hice para KDE el cual borrar los archivos seleccionados
    link al código http://paste.desdelinux.net/4820

    la parte de exec= se las explico a continuación:
    -mv %f %u: es para cambiar el nombre al archivo(s) por ejemplo de foto01.jpg a foto01.jpgtxt.jpg.mp4.rar.zip.mov.mov.ar (esto es para darle un poco mas de seguridad al momento de borrar)
    -shred -n 3 -z %u.txt -u: donde -n 3 sobreescribe 3 veces el archivo renombrado con mv (%u) y -u es para que despues de sobreescribir el archivo lo borre de forma permanene (sin pasar por la papelera).

    la ruta donde el archivo debe de estar es:
    /home/USUARIO/.kde/share/kde4/services/ (donde USUARIO es el nombre de su carpeta personal)

    la extenxión del archivo es .desktop (yo le tengo puesto shred.desktop)

    Bueno les quería compartir mi código, cualquier cosa me avisan:)

Dejar una respuesta