View previous topic :: View next topic |
Author |
Message |
achimh n00b
Joined: 02 Sep 2006 Posts: 54 Location: Austria
|
Posted: Mon Dec 03, 2007 4:07 pm Post subject: Temporäre Dateien wegsichern! |
|
|
Hallo,
habe eine Frage, die sich aus meiner Arbeit heraus stellt.
Gibt es irgend eine Möglichkeit, Dateien die nur sehr kurz ins /tmp/ Verzeichnis geschrieben werden, irgendwie wegzusichern.
Manuell gehts mal nicht, weil die Datei wie gesagt nur angelegt wird, und eigentlich im fast selben Moment wieder gelöscht wird. Leider kann ich dieses Verhalten nicht beeinflussen, müsste mir allerdings den Inhalt anschauen.
Kann man /tmp/ irgendwie überwachen per perl oder sonst was und dann dementsprechende Aktionen setzen, falls die Datei angelegt wird? |
|
Back to top |
|
|
69719 l33t
Joined: 20 Sep 2004 Posts: 865
|
Posted: Mon Dec 03, 2007 5:11 pm Post subject: |
|
|
So richtig erkenne ich den sinn nicht? Was ist denn das problem, dass du in die temp files schauen mußt? |
|
Back to top |
|
|
think4urs11 Bodhisattva
Joined: 25 Jun 2003 Posts: 6659 Location: above the cloud
|
Posted: Mon Dec 03, 2007 6:46 pm Post subject: |
|
|
Ein regelmäßiges polling (per/bash-script mit regelmäßigem ls oder was auch immer) wäre unnütze Ressourcenverschwendung aber du kannst mit inotify dein /tmp überwachen und jede Datei die dort angelegt wird automatisch wegkopieren.
Siehe z.B. http://www.ende-der-vernunft.org/2006/02/02/mit-inotify-das-dateisystem-ueberwachen/ _________________ Nothing is secure / Security is always a trade-off with usability / Do not assume anything / Trust no-one, nothing / Paranoia is your friend / Think for yourself |
|
Back to top |
|
|
achimh n00b
Joined: 02 Sep 2006 Posts: 54 Location: Austria
|
Posted: Tue Dec 04, 2007 8:58 am Post subject: |
|
|
escor wrote: | So richtig erkenne ich den sinn nicht? Was ist denn das problem, dass du in die temp files schauen mußt? |
hallo escor
ich arbeite mit einer proprietären netzwerkmanagement software, da werden laufend reports über performance usw. erstellt
die report engine benutzt intern ein eigenes datenformat, das die daten dementsprechend aus der datenbank auslest, berechnet und dies dann kurz wegspeichert und daraus ein csv oä. erstellt, ist das passiert werden die temporären daten gelöscht
ich weiss zwar wie diese temporären datenfiles grundsätzlich aussehen, allerdings würde ich es in ein paar speziellen fällen trotzdem gerne nachsehen können
danke Think4UrS11, jetzt weiss ich nach was ich suchen kann |
|
Back to top |
|
|
69719 l33t
Joined: 20 Sep 2004 Posts: 865
|
Posted: Tue Dec 04, 2007 3:48 pm Post subject: |
|
|
Da könnte dir dies eventuell auch weiter helfen, solange die software nicht ausgezogen wurde (strip), ansonsten müßte man mal an die adressen ran :)
Makefile (die vielen leerzeichen durch ein tab ersetzten)
Code: |
OBJS = ununlink.o
BIN = ununlink.so
CC = cc
RM = rm -f
CFLAGS = -Wall -fPIC -march=i686
LDFLAGS = -ldl -shared
all: $(BIN)
$(BIN): $(OBJS)
$(CC) $(OBJS) -o $(BIN) $(LDFLAGS)
clean:
$(RM) $(OBJS) $(BIN)
|
ununlink.c
Code: |
#define _GNU_SOURCE
#include <stdio.h>
#include <dlfcn.h>
#define SAVE_PREFIX "/tmp/tempfile_backup_"
int ( *org_unlink )( __const char *__name );
int ( *org_unlinkat )( int __fd, __const char *__name, int __flag );
int tmpcount = 0;
void backup( __const char *src ) {
FILE *s, *d;
char buffer[ 1024 ], dst[ 100 ];
int count;
printf( "saving tmp file %s to %s_%03d\n", src, SAVE_PREFIX, tmpcount );
snprintf( dst, sizeof( dst ) - 1, "%s_%03d", SAVE_PREFIX, tmpcount++ );
s = fopen( src, "rb" );
if ( ! s )
return;
d = fopen( dst, "wb" );
if ( ! d ) {
fclose( s );
return;
}
count = fread( buffer, 1, sizeof( buffer ), s );
while ( count > 0 ) {
fwrite( buffer, 1, count, d );
count = fread( buffer, 1, sizeof( buffer ), s );
}
fclose( s );
fclose( d );
}
int unlink( __const char *__name ) {
if ( ! org_unlink )
org_unlink = dlsym( RTLD_NEXT, "unlink" );
backup( __name );
return org_unlink( __name );
}
int unlinkat( int __fd, __const char *__name, int __flag ) {
if ( ! org_unlinkat )
org_unlinkat = dlsym( RTLD_NEXT, "unlinkat" );
backup( __name );
return org_unlinkat( __fd, __name, __flag );
}
|
einsatz
Code: |
gendevel cpp # make
cc -Wall -fPIC -march=i686 -c -o ununlink.o ununlink.c
cc ununlink.o -o ununlink.so -ldl -shared
gendevel cpp # export LD_PRELOAD=./ununlink.so
gendevel cpp # echo test > testdatei
gendevel cpp # rm testdatei
saving tmp file testdatei to /tmp/tempfile_backup__000
gendevel cpp # cat /tmp/tempfile_backup__000
test
|
|
|
Back to top |
|
|
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
|