//sensei/
ToSensei's Chaosblubb
Logo
von ToSensei
Seitenauswahl
Linux Shell
Visual Basic 6
Chatlogs
Senseis Saftladen
Senseis Giftküche
Nachos und Salsa
Top Secret

Linux Coding

Hier werde ich meine geistigen Ergüsse präsentieren, die in den Bereich der Linuxprogrammierung fallen (was wahrsch. Hauptsächlich Bash-programmierung sein wird). Achja: Benutzung 100% auf eigene Gefahr.

Und da fang ich auch gleich mit einem kleinen Shellscript an

Sicheres Löschen von Dateien

Erst einmal: Warum sicher löschen - mit einem 'rm Dateiname' ists doch auch weg?

Stimmt. Aber nur teilweise. Weil dadurch nur der Eintrag im Filesystem gelöscht wird, die Daten aber noch da bleiben. Sprich: Die Festplatte sagt einfach, dass die Daten nicht mehr da sind.

Prinzipiell ist das nicht weiter schlimm, die meisten Daten sind eh nicht wichtig. Aber bei vertraulichen Daten (oder nicht ganz legalen *hüstel*) kann die Wiederherstellung problematisch werden (besonders bei nicht ganz legalen *hüstel*).


Was also tun?


Richtig. Überschreiben. Am besten mit Zufallszahlen, denn das lässt sich am schwierigsten wiederherstellen.
Am besten mehrfach, damit eventuelle magnetische Überbleibsel (beim schreiben werden keine 100% garantierten Einsen und Nullen gespeichert, sondern Spuren der alten Daten bleiben minimal übrig und ermöglichen eine Wiederherstellung im Labor)

#!/bin/bash

if [ $# -gt 0 ]; then
file=$1
if [ $# -gt 1 ]; then
rnd=$2
else
rnd=10
fi

size=$(ls -l $file 2>/dev/null| tr -s " " | cut -d " " -f 5)

if [ ! "$size" = "" ]; then
i=1

while [ $i -le $rnd ]; do
head -c $size /dev/urandom > $file
echo -n .
i=$[$i+1]
done
rm $file
echo
echo done.

else
echo Datei nicht vorhanden
fi
fi
fi

Zur Benutzung:

Der Aufruf erfolgt über
./secdel.sh Dateiname [Zyklen]
(wenn angenommen wird, dass die Datei unter dem Namen gespeichert wurde und im aktuellen Verzeichnis ist. Achtung: vorher ausführbar machen.)
  • Dateiname ist (sinnigerweise) der Name der zu löschenden Datei
  • Zyklen ist eine optionale Zahl, die besagt, wie oft die Datei überschrieben wird (Standart 10 mal)
Achtung: Nicht für große Dateien geeignet, da er dann Beispielsweise versucht, 3GB auf einmal zu kopieren. Hierfür müsste man entweder 3*1024^(3) mal 1 Byte kopieren, oder aus der Größe der Datei heraus ein Optimum zwischen der Größe der zu kopierenden Blöcke und der Anzahl der Kopiervorgänge ermitteln - wozu ich aber erstmal zu faul bin.