Lionstarrs Linux Blog

Ein Blog über Linux und die Welt

shred – Löscht sicher!

Mit dem Befehl shred kann man Dateien sicher löschen, indem sie von shred mehrmals mit zufälligem Schrott überschrieben werden. Dieses Befehl habe ich mir mal genauer angesehen und ein paar Sachen programmiert:

Nr 1. Im Kontextmenü von Nautilus einen Befehl “Sicher löschen” anzeigen. Es gibt so genannte nautilus-scripts, die im Ordner ~/.gnome2/nautilus-scripts. Hier muss nun die folgende Datei angelegt und mit dem eXecute-Recht versehen werden:

#!/bin/sh

shred -n`zenity –scale –value 25 –min-value 1 –text ‘Wie oft soll die Datei überschrieben werden?\n Je öfter, desto sicherer.. aber auch desto länger…’` -u -v $NAUTILUS_SCRIPT_SELECTED_FILE_PATHS 2> /tmp/mist
zenity –text-info –filename=/tmp/mist
rm /tmp/mist

Dieses Skript bietet im Kontextmenü von Nautilus unter Scripts->Name_der_Datei die Möglichkeit, Dateien sicher zu löschen. Erst wird nach der Anzahl der Überschreibvorgänge gefragt, und der Befehl ausgeführt, dann wird die Erfolgs-/Misserfolgsmeldung angezeigt.

Nr. 2. Löschen beim Herunterfahren: Wenn man sensible Daten hat, dann speichert man sie einfach in einem bestimmten Verzeichnis und sie werden beim Herunterfahren gelöscht. Das war die Idee. Gar nicht so einfach, dass zu bewerkstelligen, aber jetzt funktioniert es (hoffe ich). Folgendes Perl-Skript muss in /bin als shredhome.pl gespeichert werden:

#!/usr/bin/perl
use POSIX;
#Bitte aendern, in das zu löschende Verzeichni
$dir=”/home/lionstarr/shredded”;
open(DU,”find “.$dir.” -type f -print0 | xargs -0 –no-run-if-empty du|”);
foreach(){
($groesse, $name)=split(/\s+/,$_);
if($groesse){
$durchlaufe=ceil((1024*100)/$groesse);
}
else{
$daurchlaufe=0;
}
if($name ne “.”){
system(“echo ‘\033[0;32m Datei “.$name.” mit der Größe “.$groesse.” bekommt “.$durchlaufe.” Durchläufe!\033[0m’”);
system(“shred -n”.$durchlaufe.” -u -v “.$name);
}
}
system(“rm -r “.$dir);
system(“mkdir “.$dir);

Dies ist das eigentliche Skript womit die Löschung des Verzeichnisses auch ohne Herunterfahren ausgeführt werden kann. Dann sogar mit Statusmeldungen. Zusätzlich wird die folgende Datei benötigt:

#! /bin/sh
### BEGIN INIT INFO
# Provides: shred
# Required-Start:
# Required-Stop:
# Should-Start:
# Default-Start:
# Default-Stop: 0
# Short-Description: Shred the Directory.
# Description:
### END INIT INFO
PATH=/usr/sbin:/usr/bin:/sbin:/bin
. /lib/lsb/init-functions
LOUD=”yes”
case “$1″ in
start)
log_action_msg “Beginne nun das loeschen des Verzeichnisses…”
shredhome.pl
;;
restart|reload|force-reload)
echo “Error: argument ‘$1′ not supported” >&2
exit 3
;;
stop)
log_action_msg “Beginne nun das loeschen des Verzeichnisses…”
shredhome.pl
;;
*)
echo “Usage: $0 start|stop” >&2
exit 3
;;
esac
exit 0;

Dies ist das eigenltiche Skript, das beim Herunterfahren aufgerufen wird. Es muss in /etc/init.d/ gespeichert werden und ein Link auf dieses Skript muss in /etc/rc0.d/ angelegt werden. Der Linkname muss mit S02 bzw. der nächsthöheren, unbesetzten Nummer beginnen. Das wars: Es sollte eigentlich klappten. Für eventuellen Datenverlust kann ich aber trotzdem nicht verantwortlich gemacht werden.

P.S. Das Skript überschreibt jede Datei 1024*100/Größe-der-Datei mal, das kann bei kleinen Dateien zu einer wahrscheinlich unnötigen Anzahl von Löschvorgängen kommen (z.B. 25600 mal). Außerdem gibt das Skript beim Herunterfahren keine Statusmeldungen aus, also sollte man Geduld haben.

In: , ,
— March 18, 2007


Kommentare

(verstecken)
      RSS
Leider gibt es bis jetzt keine Kommentare!

Gib deine Meinung ab!


(notwendig)






Stoppt die Vorratsdatenspeicherung! Jetzt klicken & handeln!Willst du auch bei der Aktion teilnehmen? Hier findest du alle relevanten Infos und Materialien: