Sonntag, 23. September 2012

Datei automatisch löschen in Linux

In diesem Artikel erfährst du wie man Dateien unter Linux so überwachen kann und z.B. eine Datei automatisch gelöscht wird sobald sie erstellt wird. Damit schafft man sich extra Sicherheit wenn jemand versucht über unsichere Scripte irgendwelche Dateien auf unseren Server zu laden.

Das Tool welches wir brauchen nennt sich inotify.
Ich persönlich verwende Debian, es wird einfach über diesen Befehl installiert:
apt-get inotify-tools

Dieses Paket installiert zwei tools:

  • inotifywait

  • inotifywatch


Als Beispiel soll eine Datei entfernt werden sobald sie erstellt wird. Man baut sich ein shell script und speichert es zB als ninja.sh
#!/bin/sh
while true
do
inotifywait --format '%w%f' -r -e create /PFAD | while read FILE
do
rm $FILE;
done
done

In dem Beispiel oben muss man noch den /PFAD anpassen den man überwachen will. Die Option -r ist "rekursiv" und überwacht auch unterordner, wer die rekursive Option nicht braucht, kann auf sie verzichten.
inotifywait überwacht in dem Beispiel den Ordner /PFAD und sobald eine Datei erstellt wurde (-e create), wird der Pfad und Datei (%w%f) an die Variable FILE übergeben. Diese Variable wird dann von rm verwendet um die Datei zu löschen.
Das ganze ist in einer Schleife gepackt weil notify sich sonst nach dem Trigger automatisch beendet.

Um ninja.sh zu starten muss man noch es ausführbar machen:
chmod 777 ninja.sh
und gestartet wird es einfach mit:
./ninja.sh

beenden müsst ihr es von hand, einfach nach der PID von ninja.sh über "ps ax" suchen.
Mit inotifywait kann man noch viele andere Dinge machen. Hier sind noch mehr gute Beispiele:
http://wiki.ubuntuusers.de/inotify

Keine Kommentare:

Kommentar veröffentlichen