Offene deleted Files wiederbeleben

05/04/2009 - 08:58 von Martin Vaeth | Report spam
Hallo,

ein bekannter Trick fuer temporaere Files ist es ja,
diese zwar offen zu halten, aber dennoch zu entfernen,
so dass das File selbst ein kill -9 des Prozesses nicht ueberlebt.

Wie sieht es jetzt aber aus, wenn der Prozess lange laeuft, und
man aus irgendeinem Grund (im Nachhinein) das entfernte File retten
moechte? Zumindest als root sollte das ja theoretisch moeglich
sein, zumindest wenn man sich in die Innereien des Kernels und
Filesystems begibt.

Tatsaechlich scheint man aber gar nicht so tief ansetzen zu muessen:
Man muesste ja nur irgendwie an den Filehandle kommen und diesen linken
(oder notfalls die Daten kopieren: link() mag kein Filehandle als Argument).
Gibt es ev. bereits ein fertiges Tool, mit dem man
(ggf. entsprechende Rechte vorausgesetzt) ein solches File
"undelete"n kann (theoretisch muesste das sogar ohne Kopieren
der Daten moeglich sein, wobei diese Frage zweitrangig ist)?

Immerhin: lsof findet die erste Inode solcher Files und weiss zu
meinem Erstaunen sogar noch den urspruenglichen Pfad, aber ohne
weitere Tools nuetzt das wohl nicht viel.

Schone Gruesse
Martin
 

Lesen sie die antworten

#1 Markus Wichmann
05/04/2009 - 11:13 | Warnen spam
Martin Vaeth wrote:
Hallo,

ein bekannter Trick fuer temporaere Files ist es ja,
diese zwar offen zu halten, aber dennoch zu entfernen,
so dass das File selbst ein kill -9 des Prozesses nicht ueberlebt.

Wie sieht es jetzt aber aus, wenn der Prozess lange laeuft, und
man aus irgendeinem Grund (im Nachhinein) das entfernte File retten
moechte? Zumindest als root sollte das ja theoretisch moeglich
sein, zumindest wenn man sich in die Innereien des Kernels und
Filesystems begibt.

Tatsaechlich scheint man aber gar nicht so tief ansetzen zu muessen:
Man muesste ja nur irgendwie an den Filehandle kommen und diesen linken
(oder notfalls die Daten kopieren: link() mag kein Filehandle als Argument).
Gibt es ev. bereits ein fertiges Tool, mit dem man
(ggf. entsprechende Rechte vorausgesetzt) ein solches File
"undelete"n kann (theoretisch muesste das sogar ohne Kopieren
der Daten moeglich sein, wobei diese Frage zweitrangig ist)?

Immerhin: lsof findet die erste Inode solcher Files und weiss zu
meinem Erstaunen sogar noch den urspruenglichen Pfad, aber ohne
weitere Tools nuetzt das wohl nicht viel.

Schone Gruesse
Martin



ls -l /proc/$PID/fd

Sagt dir, welcher fd die Datei enthàlt, anschließend

cp /proc/$PID/fd/$NUMMER $ZIEL

Und fertig.

Tschö,
Markus

GUI - ein Hintergrundbild und zwölf XTerms

vim -c "exec \"norm iwHFG#NABGURE#IVZ#UNPXRE\"|%s/#/ /g|norm g??g~~"

Ähnliche fragen