Discussion:
Wer erzeugt die Datei[en]?
(zu alt für eine Antwort)
Jan Novak
2020-08-05 08:13:43 UTC
Permalink
Hallo,

unsere Software Entwickler haben ein sehr umfangreiches PRG geschrieben,
welches seit vielen Jahren im Einsatz ist.
Im Home Verzeichnis des Users, mit welchem das Programm läuft, entstehen
alle paar Sekunden leere Dateien Namens empty.txt.[fortlaufende Nummer]
Leider weiss aktuell keiner, woher diese Datei stammt und wer sie
erzeugt. Die Dateien haben immer den Zeitstempel vom 15. Januar 2015.
Das Systemdatum ist aktuell und korrekt.
Da Niemand in das Home dir geschaut hatte, standen da einige
Hunderttausend Dateien rum :-(

Meine Frage ist jetzt, wie sich es Shell-technisch herausfinden lässt,
wer diese Datei erzeugt.

Ich hatte es mit einem lsof |grep empty.txt versucht aber nichts gefunden.

Jan
Martin Schnitkemper
2020-08-05 09:03:31 UTC
Permalink
Post by Jan Novak
Meine Frage ist jetzt, wie sich es Shell-technisch herausfinden lässt,
wer diese Datei erzeugt.
Versuche mal, die Datei mit incron zu überwachen:
https://wiki.archlinux.org/index.php/Incron
--
powered by Arch Linux x86_64 🐧 Kernel: 5.7.11-arch1-1
KDE-Plasma 5.19.4 · KDE-Frameworks 5.72.0 · Qt 5.15.0
Juergen Ilse
2020-08-05 11:12:11 UTC
Permalink
Hallo,
Post by Martin Schnitkemper
Post by Jan Novak
Meine Frage ist jetzt, wie sich es Shell-technisch herausfinden lässt,
wer diese Datei erzeugt.
https://wiki.archlinux.org/index.php/Incron
Da die Dateien nur entstehen, wenn ein bestimmtes Programm gestartet wurde,
hilft vielleicht "strace", um die Systemaufrufe mitzutrotokollieren. Wenn
nur bestimmte Programmbinaries in Frage kommen, koennte man die mit dem
Kommando "strings" untersuchen, ob in einem davon eine Zichenkette ent-
halten ist, die zur Erzeugung des Dateinamens verwendet worden sein kann.

Tschuess,
Juergen Ilse (***@usenet-verwaltung.de)
Kay Martinen
2020-08-05 12:03:32 UTC
Permalink
Post by Jan Novak
Hallo,
Post by Martin Schnitkemper
Post by Jan Novak
Meine Frage ist jetzt, wie sich es Shell-technisch herausfinden lässt,
wer diese Datei erzeugt.
https://wiki.archlinux.org/index.php/Incron
Da die Dateien nur entstehen, wenn ein bestimmtes Programm gestartet wurde,
hilft vielleicht "strace", um die Systemaufrufe mitzutrotokollieren. Wenn
nur bestimmte Programmbinaries in Frage kommen, koennte man die mit dem
Kommando "strings" untersuchen, ob in einem davon eine Zichenkette ent-
halten ist, die zur Erzeugung des Dateinamens verwendet worden sein kann.
Ich bin ja nicht wirklich Programmierer aber: Hast du gelesen das er
"Seine Software-Entwickler" schrieb? Da vermute ich die Verfügbarkeit
von Quelltext. Wäre es dort nicht einfacher den string zu finden (+
Kontext) als im Kompilat?


Kay
--
Posted via leafnode
Jan Novak
2020-08-05 13:02:07 UTC
Permalink
Post by Kay Martinen
Post by Jan Novak
Hallo,
Post by Martin Schnitkemper
Post by Jan Novak
Meine Frage ist jetzt, wie sich es Shell-technisch herausfinden lässt,
wer diese Datei erzeugt.
https://wiki.archlinux.org/index.php/Incron
Da die Dateien nur entstehen, wenn ein bestimmtes Programm gestartet wurde,
hilft vielleicht "strace", um die Systemaufrufe mitzutrotokollieren. Wenn
nur bestimmte Programmbinaries in Frage kommen, koennte man die mit dem
Kommando "strings" untersuchen, ob in einem davon eine Zichenkette ent-
halten ist, die zur Erzeugung des Dateinamens verwendet worden sein kann.
Ich bin ja nicht wirklich Programmierer aber: Hast du gelesen das er
"Seine Software-Entwickler" schrieb? Da vermute ich die Verfügbarkeit
von Quelltext. Wäre es dort nicht einfacher den string zu finden (+
Kontext) als im Kompilat?
Das haben wir schon gemacht, aber nichts gefunden. Es muss auch nicht
von dem Programm der Entwicklung sein, war nur naheliegend.

Jan
Juergen Ilse
2020-08-05 14:47:24 UTC
Permalink
Hallo,
Post by Kay Martinen
Post by Juergen Ilse
Da die Dateien nur entstehen, wenn ein bestimmtes Programm gestartet wurde,
hilft vielleicht "strace", um die Systemaufrufe mitzutrotokollieren. Wenn
nur bestimmte Programmbinaries in Frage kommen, koennte man die mit dem
Kommando "strings" untersuchen, ob in einem davon eine Zichenkette ent-
halten ist, die zur Erzeugung des Dateinamens verwendet worden sein kann.
Ich bin ja nicht wirklich Programmierer aber: Hast du gelesen das er
"Seine Software-Entwickler" schrieb? Da vermute ich die Verfügbarkeit
von Quelltext.
Wenn Quelltext (noch) vorhanden ist, zweifellos. Falls nicht, ist aber die
Suche nach dem String im binary evt. eine Alternative ...
Post by Kay Martinen
Wäre es dort nicht einfacher den string zu finden (+
Kontext) als im Kompilat?
Wenn die Quelltexte verfuegbar sind: vermutlich ja.

Tschuess,
Juergen Ilse (***@usenet-verwaltung.de)
Jan Novak
2020-08-05 13:03:11 UTC
Permalink
Post by Jan Novak
Hallo,
Post by Martin Schnitkemper
Post by Jan Novak
Meine Frage ist jetzt, wie sich es Shell-technisch herausfinden lässt,
wer diese Datei erzeugt.
https://wiki.archlinux.org/index.php/Incron
Da die Dateien nur entstehen, wenn ein bestimmtes Programm gestartet wurde,
hilft vielleicht "strace", um die Systemaufrufe mitzutrotokollieren. Wenn
nur bestimmte Programmbinaries in Frage kommen, koennte man die mit dem
Kommando "strings" untersuchen, ob in einem davon eine Zichenkette ent-
halten ist, die zur Erzeugung des Dateinamens verwendet worden sein kann.
Hmmm... ich habe keine Ahnung, welches Binary die Datei erzeugen könnte,
somit ist es doch sehr schwierig, mit strace zu arbeiten (oder ich habe
was falsch verstanden)

Jan
Juergen Ilse
2020-08-05 14:59:46 UTC
Permalink
Jan Novak <***@gmail.com> wrote:

[strace zur Analyse ]
Post by Jan Novak
Hmmm... ich habe keine Ahnung, welches Binary die Datei erzeugen könnte,
somit ist es doch sehr schwierig, mit strace zu arbeiten (oder ich habe
was falsch verstanden)
Die Option "-f" sorgt dafuer, dass auch childprozesse mit getraced werden.
Die Childprozesse werden ueblicherweise i.d.R. mit "fork" gefolgt von "exec"
erzeugt. Die "fork" und "exec" aufrufe werden mit getraced, ebenso die
Systemaufrufe der so erzeugten childprozesse. Damit sollte sich (auch wenn
es vielleicht viel Arbeit ist und sehr viele trace-Daten erzeugt werden)
aus dem trace-log heraussuchen lassen, welcher Prozess den "open" Aufruf
zum erzeugen der Datei getaetigt hat. Bei Verwendung von "-ff" wird bei
+Angabe von "-o" zum angeben der Ausgabedatei fuer die tracing-Informationen
fuer jeden childprocess eine eigene trace-Datei erzeugt (durch anhaengen
von "." gefolgt von der Prozess-ID des neue erzeugten Prozesses). Beides
kann hilfreich sein, um das besser zu analysieren.

Tschuess,
Juergen Ilse (***@usenet-verwaltung.de)
Stefan Reuther
2020-08-05 15:41:43 UTC
Permalink
Post by Jan Novak
Post by Juergen Ilse
Da die Dateien nur entstehen, wenn ein bestimmtes Programm gestartet wurde,
hilft vielleicht "strace", um die Systemaufrufe mitzutrotokollieren. Wenn
nur bestimmte Programmbinaries in Frage kommen, koennte man die mit dem
Kommando "strings" untersuchen, ob in einem davon eine Zichenkette ent-
halten ist, die zur Erzeugung des Dateinamens verwendet worden sein kann.
Hmmm... ich habe keine Ahnung, welches Binary die Datei erzeugen könnte,
somit ist es doch sehr schwierig, mit strace zu arbeiten (oder ich habe
was falsch verstanden)
'strace -f' folgt fork(). Bei neueren Programmen sollte man sowieso -f
benutzen, weil man sonst nur den Hauptthread sieht.

Das nächstgrößere Geschütz wäre dann eine preload-library, die die
Syscalls 'open' bzw. 'openat' überschreibt und bei einem zutreffenden
Dateinamen z.B. den Prozess stoppt / eine Logmeldung schreibt / ein Core
wirft. Das ist ein bisschen C-Gebastel, müsste ich in meinen virtuellen
Keller gehen dafür.

Aber eigentlich sollte sich das mit 'strace' klären lassen. Wenn die
Dateien alle den Zeitstempel von 2015 haben, dürfte es sogar reichen,
'strace' auf den Syscall 'utimensat' einzuschränken, mit dem der
Zeitstempel gesetzt wird; das dürfte die zu analysierende Datenmenge
deutlich einschränken.


Stefan
Tim Landscheidt
2020-08-05 16:47:26 UTC
Permalink
Post by Stefan Reuther
Post by Jan Novak
Post by Juergen Ilse
Da die Dateien nur entstehen, wenn ein bestimmtes Programm gestartet wurde,
hilft vielleicht "strace", um die Systemaufrufe mitzutrotokollieren. Wenn
nur bestimmte Programmbinaries in Frage kommen, koennte man die mit dem
Kommando "strings" untersuchen, ob in einem davon eine Zichenkette ent-
halten ist, die zur Erzeugung des Dateinamens verwendet worden sein kann.
Hmmm... ich habe keine Ahnung, welches Binary die Datei erzeugen könnte,
somit ist es doch sehr schwierig, mit strace zu arbeiten (oder ich habe
was falsch verstanden)
'strace -f' folgt fork(). Bei neueren Programmen sollte man sowieso -f
benutzen, weil man sonst nur den Hauptthread sieht.
Das nächstgrößere Geschütz wäre dann eine preload-library, die die
Syscalls 'open' bzw. 'openat' überschreibt und bei einem zutreffenden
Dateinamen z.B. den Prozess stoppt / eine Logmeldung schreibt / ein Core
wirft. Das ist ein bisschen C-Gebastel, müsste ich in meinen virtuellen
Keller gehen dafür.
Aber eigentlich sollte sich das mit 'strace' klären lassen. Wenn die
Dateien alle den Zeitstempel von 2015 haben, dürfte es sogar reichen,
'strace' auf den Syscall 'utimensat' einzuschränken, mit dem der
Zeitstempel gesetzt wird; das dürfte die zu analysierende Datenmenge
deutlich einschränken.
Man sollte bei strace und dieser Konstellation natürlich
auch noch -p in Erwägung ziehen, denn wenn "empty.txt" in
keinem aktuellen Quelltext vorkommt, dürfte eine nicht ge-
ringe Wahrscheinlichkeit bestehen, dass da vielleicht ir-
gendwo ein Hintergrundprozess herumschlummert :-).

Tim
Josef Moellers
2020-08-06 07:09:57 UTC
Permalink
Post by Jan Novak
Hallo,
Post by Martin Schnitkemper
Post by Jan Novak
Meine Frage ist jetzt, wie sich es Shell-technisch herausfinden lässt,
wer diese Datei erzeugt.
https://wiki.archlinux.org/index.php/Incron
Da die Dateien nur entstehen, wenn ein bestimmtes Programm gestartet wurde,
hilft vielleicht "strace", um die Systemaufrufe mitzutrotokollieren. Wenn
Was ich gelegentlich mache ist, das/die Binary/-ies von suspekten
Programmen umzubenennen, indem ich ein ".orig" anhänge und dann durch
Shell-Skripte zu ersezen, die dann jeweils "exec strace -fo
<strace-ausgabe-datei-name>.$$
.../bin/binary.orig" aufrufen.

Darurch erwische ich dann z.B. auch Programme, die von "cron" oder "at"
aufgerufen werden.

Falls das mit dem Shell-Skript nicht geht, schreibe ich halt ein minimal
kleines Wrapper-Progrämmchen in "C", was das selbe macht.

Josef
Andreas Kohlbach
2020-08-05 13:16:18 UTC
Permalink
Post by Martin Schnitkemper
Post by Jan Novak
Meine Frage ist jetzt, wie sich es Shell-technisch herausfinden lässt,
wer diese Datei erzeugt.
https://wiki.archlinux.org/index.php/Incron
Vielleicht noch lsof oder fuser.
--
Andreas

PGP fingerprint 952B0A9F12C2FD6C9F7E68DAA9C2EA89D1A370E0
Kay Martinen
2020-08-05 09:47:08 UTC
Permalink
Post by Jan Novak
unsere Software Entwickler haben ein sehr umfangreiches PRG geschrieben,
welches seit vielen Jahren im Einsatz ist.
Im Home Verzeichnis des Users, mit welchem das Programm läuft, entstehen
alle paar Sekunden leere Dateien Namens empty.txt.[fortlaufende Nummer]
Leider weiss aktuell keiner, woher diese Datei stammt und wer sie
erzeugt. Die Dateien haben immer den Zeitstempel vom 15. Januar 2015.
Und keiner von euren Entwicklern hat eine Ahnung aus welchem Teil des
Quelltextes das kommt? Ist ja kaum zu glauben. Müsste da nicht ein grep
nach empty.txt im Quelltext schon eine Fundstelle liefern?
Post by Jan Novak
Meine Frage ist jetzt, wie sich es Shell-technisch herausfinden lässt,
wer diese Datei erzeugt.
Ich hatte es mit einem lsof |grep empty.txt versucht aber nichts gefunden.
Wahrscheinlich mußt du das mit 'watch' und Ausgabeumleitung in eine
Datei laufen lassen um den erstellenden Prozeß mit zu bekommen. Wenn die
alle paar Sekunden entstehen kann das ja nicht lange dauern.

IMHO gibt es bei linux auch eine Möglichkeit mit (i)notify auf eine
erstellte datei zu reagieren aber damit kenne ich mich nicht aus.

Werden diese Dateien denn einfach immer mehr oder teils
umbenannt/verschoben wenn das programm etwas speichert? Dann sind es
doch vermutlich nur leere dateien die beim bei I/O Operationen temporär
erzeugt werden. Bleiben sie leer zurück kann doch nur in dem Bereich
etwas schief gegangen sein.



Kay
--
Posted via leafnode
Jan Novak
2020-08-05 13:08:31 UTC
Permalink
Post by Kay Martinen
Post by Jan Novak
Ich hatte es mit einem lsof |grep empty.txt versucht aber nichts gefunden.
Wahrscheinlich mußt du das mit 'watch' und Ausgabeumleitung in eine
Datei laufen lassen um den erstellenden Prozeß mit zu bekommen. Wenn die
alle paar Sekunden entstehen kann das ja nicht lange dauern.
Ich habe das in einer while schleife mehrere Stunden laufen lassen.
Nichts. Dateien sind aber dennoch entsanden.
Post by Kay Martinen
IMHO gibt es bei linux auch eine Möglichkeit mit (i)notify auf eine
erstellte datei zu reagieren aber damit kenne ich mich nicht aus.
ich auch nicht ;-)
Post by Kay Martinen
Werden diese Dateien denn einfach immer mehr oder teils
umbenannt/verschoben wenn das programm etwas speichert?
Nein. Nur neu erstellt und immer die letzte Datei Endung plus 1
(scheinbar unendlich).

Dann sind es
Post by Kay Martinen
doch vermutlich nur leere dateien die beim bei I/O Operationen temporär
erzeugt werden. Bleiben sie leer zurück kann doch nur in dem Bereich
etwas schief gegangen sein.
da laufen viele php Scripte auf der CLI...


Jan
Josef Moellers
2020-08-05 13:28:32 UTC
Permalink
Post by Kay Martinen
Post by Jan Novak
unsere Software Entwickler haben ein sehr umfangreiches PRG geschrieben,
welches seit vielen Jahren im Einsatz ist.
Im Home Verzeichnis des Users, mit welchem das Programm läuft, entstehen
alle paar Sekunden leere Dateien Namens empty.txt.[fortlaufende Nummer]
Leider weiss aktuell keiner, woher diese Datei stammt und wer sie
erzeugt. Die Dateien haben immer den Zeitstempel vom 15. Januar 2015.
Hm, wenn die Dateien von einem Prozess erzeugt werden, dann haben die
immer das aktuelle Datum (und Uhrzeit), 15.1.2015 geht also nicht ohne
Weiteres. Das kann ein Prozess mit "root"-Rechten ändern, z.B. wenn ein
Archiv entpackt wird und der entpackte Krempel (natürlich) das
Erzeugungsdatum der archivierten Datei haben soll und eben nicht "jetzt
gerade"!
Post by Kay Martinen
IMHO gibt es bei linux auch eine Möglichkeit mit (i)notify auf eine
erstellte datei zu reagieren aber damit kenne ich mich nicht aus.
Ist jetzt nicht wirklich ganz so schwierig, siehe "man inotify".
Vielleicht tu's ja ein PERL-Skript, rudimentär (braucht mindestens das
liblinux-inotify2-perl Paket):

use warnings;
use strict;
use Linux::Inotify2;
my $inotify = new Linux::Inotify2 or die "unable to create new inotify
object: $!";
$inotify->watch (".", IN_CLOSE_WRITE, sub {
my $e = shift;
print STDERR "Datei mit Namen ", $e->fullname, " wurde erzeugt\n" if
$e->IN_CLOSE_WRITE;
});
$inotify->poll while 1;

Das Problem ist natürlich, daß Du dann weißt, wann und daß die Datei
erzeugt wurde, aber immer noch nicht von wem!

Wenn man das wirklich wissen will, bieten sich evtl. noch "audit" und
"apparmor" an, die kenne ich aber nun wiederum nicht wirklich.

Josef
Ulf Volmer
2020-08-06 13:21:23 UTC
Permalink
Post by Josef Moellers
Hm, wenn die Dateien von einem Prozess erzeugt werden, dann haben die
immer das aktuelle Datum (und Uhrzeit), 15.1.2015 geht also nicht ohne
Weiteres. Das kann ein Prozess mit "root"-Rechten ändern, z.B. wenn ein
Archiv entpackt wird und der entpackte Krempel (natürlich) das
Erzeugungsdatum der archivierten Datei haben soll und eben nicht "jetzt
gerade"!
Das hat mit root- Rechten gar nichts zu tun. Details findest Du z.B. in
der man- Page zu touch.

Viele Grüße
Ulf
Josef Moellers
2020-08-07 08:51:45 UTC
Permalink
Post by Ulf Volmer
Post by Josef Moellers
Hm, wenn die Dateien von einem Prozess erzeugt werden, dann haben die
immer das aktuelle Datum (und Uhrzeit), 15.1.2015 geht also nicht ohne
Weiteres. Das kann ein Prozess mit "root"-Rechten ändern, z.B. wenn ein
Archiv entpackt wird und der entpackte Krempel (natürlich) das
Erzeugungsdatum der archivierten Datei haben soll und eben nicht "jetzt
gerade"!
Das hat mit root- Rechten gar nichts zu tun. Details findest Du z.B. in
der man- Page zu touch.
Lesen bildet!

Danke,

Josef
Ralph Aichinger
2020-08-05 13:24:04 UTC
Permalink
Post by Jan Novak
Leider weiss aktuell keiner, woher diese Datei stammt und wer sie
erzeugt. Die Dateien haben immer den Zeitstempel vom 15. Januar 2015.
Das Systemdatum ist aktuell und korrekt.
Da Niemand in das Home dir geschaut hatte, standen da einige
Hunderttausend Dateien rum :-(
Meine Frage ist jetzt, wie sich es Shell-technisch herausfinden lässt,
wer diese Datei erzeugt.
Dazu drei Ideen:

1.
Das Programm daran hindern, d.h. über das Verzeichnis mal was read-only
drübermounten, sodaß es obiges nicht erfolgreich zustandebringt. Auf
Fehlermeldungen, logs, coredumps ... hoffen.

2.
Inotify oder ähnliches (nein, ich hab mich auch noch nicht beschäftigt)

3.
Es gibt etliche Klassen von Programmen, die sowas defaultmäßig anbieten.
Mir fällt z.B. aufs erste diverses Bildverarbeitungszeugs ein, das
derartige Numerierungsschemen anbietet.

Schau mal nach, ob irgendwas in der Art von ImageMagick, netpbm oder
ähnlich Teil des Softwarestacks ist. Ähnliches gilt für Backupprogramme
(ich glaube sogar tar bietet sowas an).

Wenn sich deine Software z.B. mit Gensequenzierung oder Häkeln beschäftig,
dann lohnt es zu googeln, ob populäre Häkel-Libraries ähnliches machen.

/ralph
/ralph
Post by Jan Novak
Ich hatte es mit einem lsof |grep empty.txt versucht aber nichts gefunden.
Jan
--
-----------------------------------------------------------------------------
https://aisg.at
ausserirdische sind gesund
Ulli Horlacher
2020-08-05 14:33:10 UTC
Permalink
Post by Ralph Aichinger
Post by Jan Novak
Leider weiss aktuell keiner, woher diese Datei stammt und wer sie
erzeugt. Die Dateien haben immer den Zeitstempel vom 15. Januar 2015.
Das Systemdatum ist aktuell und korrekt.
Da Niemand in das Home dir geschaut hatte, standen da einige
Hunderttausend Dateien rum :-(
Meine Frage ist jetzt, wie sich es Shell-technisch herausfinden lässt,
wer diese Datei erzeugt.
1.
Das Programm daran hindern, d.h. über das Verzeichnis mal was read-only
drübermounten, sodaß es obiges nicht erfolgreich zustandebringt. Auf
Fehlermeldungen, logs, coredumps ... hoffen.
Das waere auch mein Ansatz, wenn inotify nicht weiterhilft.
chmod -w $HOME
Dann abwarten, wer oder was sich dann beschwert :-)
--
Ullrich Horlacher Server und Virtualisierung
Rechenzentrum TIK
Universitaet Stuttgart E-Mail: ***@tik.uni-stuttgart.de
Allmandring 30a Tel: ++49-711-68565868
70569 Stuttgart (Germany) WWW: http://www.tik.uni-stuttgart.de/
Josef Moellers
2020-08-05 13:31:59 UTC
Permalink
Post by Jan Novak
Ich hatte es mit einem lsof |grep empty.txt versucht aber nichts gefunden.
lsof zeigt Dir auch nur die Prozesse an, die diese Dateien offen haben
(das "o" in "lsof"). Wenn also ein Prozess solch eine Datei erzeugt und
dann wieder schließt, ohne sie dann zu löschen, findet lsof sie
natürlich nicht.

Josef
Stefan+ (Stefan Froehlich)
2020-08-05 17:14:34 UTC
Permalink
Post by Jan Novak
Meine Frage ist jetzt, wie sich es Shell-technisch herausfinden lässt,
wer diese Datei erzeugt.
Wie schon jemand schrieb: Das Verzeichnis schreibschützen und im Log
schauen, ob (und dann von wem) der Dateiname auftaucht.
Post by Jan Novak
Ich hatte es mit einem lsof |grep empty.txt versucht aber nichts gefunden.
Ansonten - das dauert halt ein bisschen - find(1) über alle
relevanten Verzeichnisse laufen lassen und mit grep oder strings
nach dem Dateinamen suchen.

Servus,
Stefan
--
http://kontaktinser.at/ - die kostenlose Kontaktboerse fuer Oesterreich
Offizieller Erstbesucher(TM) von mmeike

Stefan. über den maskierten Klee zu loben!
(Sloganizer)
Volker Englisch
2020-08-05 18:03:56 UTC
Permalink
Post by Jan Novak
Im Home Verzeichnis des Users, mit welchem das Programm läuft, entstehen
alle paar Sekunden leere Dateien Namens empty.txt.[fortlaufende Nummer]
Leider weiss aktuell keiner, woher diese Datei stammt und wer sie
erzeugt. Die Dateien haben immer den Zeitstempel vom 15. Januar 2015.
Ich hatte es mit einem lsof |grep empty.txt versucht aber nichts gefunden.
lsof -r 1 | grep empty.txt und hoffen, dass der Zugriff in ein
Abfrageintervall fällt.

V.
Andreas Fenner
2020-08-05 20:35:08 UTC
Permalink
Post by Jan Novak
Hallo,
unsere Software Entwickler haben ein sehr umfangreiches PRG geschrieben,
welches seit vielen Jahren im Einsatz ist.
Im Home Verzeichnis des Users, mit welchem das Programm läuft, entstehen
alle paar Sekunden leere Dateien Namens empty.txt.[fortlaufende Nummer]
Leider weiss aktuell keiner, woher diese Datei stammt und wer sie
erzeugt. Die Dateien haben immer den Zeitstempel vom 15. Januar 2015.
Das Systemdatum ist aktuell und korrekt.
Da Niemand in das Home dir geschaut hatte, standen da einige
Hunderttausend Dateien rum :-(
Meine Frage ist jetzt, wie sich es Shell-technisch herausfinden lässt,
wer diese Datei erzeugt.
Ich hatte es mit einem lsof |grep empty.txt versucht aber nichts gefunden.
Jan
Unter welchem OS läuft das System?
Bei Solaris fällt mir dtrace ein - damit hat man sofort den Prozess der
sowas erstellt.
Aber sry, dtrace-Scripte schüttel ich aktuell nicht mehr aus dem
Ärmel..... zu lange her....

Andreas
Jan Novak
2020-08-06 06:59:16 UTC
Permalink
Post by Jan Novak
Hallo,
unsere Software Entwickler haben ein sehr umfangreiches PRG geschrieben,
welches seit vielen Jahren im Einsatz ist.
Im Home Verzeichnis des Users, mit welchem das Programm läuft, entstehen
alle paar Sekunden leere Dateien Namens empty.txt.[fortlaufende Nummer]
Leider weiss aktuell keiner, woher diese Datei stammt und wer sie
erzeugt. Die Dateien haben immer den Zeitstempel vom 15. Januar 2015.
Das Systemdatum ist aktuell und korrekt.
Da Niemand in das Home dir geschaut hatte, standen da einige
Hunderttausend Dateien rum :-(
Meine Frage ist jetzt, wie sich es Shell-technisch herausfinden lässt,
wer diese Datei erzeugt.
Ich hatte es mit einem lsof |grep empty.txt versucht aber nichts gefunden.
Danke für die zahlreichen Tipps... ich werde jetzt versuchen step by
step einige davon um zu setzen um das Problem zu finden.

Vielen Dank.

Jan
David Haller
2020-08-07 04:44:54 UTC
Permalink
Post by Jan Novak
Meine Frage ist jetzt, wie sich es Shell-technisch herausfinden lässt,
wer diese Datei erzeugt.
man fatrace

HTH,
-dnh
--
Woher bloß Mütter all das kennen, was sie ihren Töchtern verbieten...
Ralf Schneider
2020-08-19 18:51:22 UTC
Permalink
Post by Jan Novak
Meine Frage ist jetzt, wie sich es Shell-technisch herausfinden lässt,
wer diese Datei erzeugt.
HTH,
-dnh
Kann man an den Datei-Rechten feststellen, wer der Eigentümer der Datei
ist ?

Gruß
Ralf
--
http://www.kr-db.de
Andreas Kohlbach
2020-08-19 22:43:54 UTC
Permalink
Post by Ralf Schneider
Post by Jan Novak
Meine Frage ist jetzt, wie sich es Shell-technisch herausfinden lässt,
wer diese Datei erzeugt.
HTH,
-dnh
Kann man an den Datei-Rechten feststellen, wer der Eigentümer der Datei
ist ?
ls -l nat

-rw-r--r-- 1 ank ank 752 Apr 18 2016 nat

Das erste "ank" ist der Eigentümer, das Zweite die Gruppe (zufällig ;-)
auch "ank"), deren Mitglieder die Datei nur lesen dürfen.
--
Andreas
Ralf Schneider
2020-08-20 06:40:48 UTC
Permalink
Post by Andreas Kohlbach
Post by Ralf Schneider
Post by Jan Novak
Meine Frage ist jetzt, wie sich es Shell-technisch herausfinden lässt,
wer diese Datei erzeugt.
HTH, -dnh
Kann man an den Datei-Rechten feststellen, wer der Eigentümer der Datei
ist ?
ls -l nat
-rw-r--r-- 1 ank ank 752 Apr 18 2016 nat
Das erste "ank" ist der Eigentümer, das Zweite die Gruppe (zufällig ;-)
auch "ank"), deren Mitglieder die Datei nur lesen dürfen.
Das meine ich. Dann kann man doch zumindest sehen, wer die Datei erstellt
haben könnte, wenn der nicht die Rechte sofort geändert hat.

Gruß
Ralf
--
http://www.kr-db.de
Stefan Wiens
2020-08-20 09:13:55 UTC
Permalink
Post by Ralf Schneider
Post by Andreas Kohlbach
Post by Ralf Schneider
Post by Jan Novak
Meine Frage ist jetzt, wie sich es Shell-technisch herausfinden lässt,
wer diese Datei erzeugt.
HTH, -dnh
Kann man an den Datei-Rechten feststellen, wer der Eigentümer der Datei
ist ?
ls -l nat
-rw-r--r-- 1 ank ank 752 Apr 18 2016 nat
Das erste "ank" ist der Eigentümer, das Zweite die Gruppe (zufällig ;-)
auch "ank"), deren Mitglieder die Datei nur lesen dürfen.
Das meine ich. Dann kann man doch zumindest sehen, wer die Datei erstellt
haben könnte, wenn der nicht die Rechte sofort geändert hat.
Den Besitzer zu ändern braucht entsprechende Permissions (root bzw.
CAP_CHOWN). Die Gruppe ändern geht nur im Rahmen der Gruppen, denen man
angehört.
--
Stefan
Wolfgang Klein
2020-08-23 10:16:53 UTC
Permalink
Post by Jan Novak
...
Im Home Verzeichnis des Users, mit welchem das Programm läuft, entstehen
alle paar Sekunden leere Dateien Namens empty.txt.[fortlaufende Nummer]
Ich glaube, dazu sagt der Lateiner: nomen est omen! ;)
Post by Jan Novak
...
Meine Frage ist jetzt, wie sich es Shell-technisch herausfinden lässt,
wer diese Datei erzeugt.
Ich hatte es mit einem lsof |grep empty.txt versucht aber nichts gefunden.
Schau doch mal, was passiert, wenn du das $HOME auf readonly setzt, den
Eigentümer wechselst oder es komplett löscht. Mit etwas Glück stürzt das
erzeugende Programm ab und hinterlässt Einträge im Syslog.



Wolfgang

Loading...