ForumSamba/NFS Protokollierung, Dateiwiederherrstellung
Stefan Koch – Donnerstag, 23. Juni 2005 18:22 Uhr

Hallo,

Gibt es eine Möglichkeit bei Samba und NFS nachzuschauen (vielleicht in irgendeiner log-Datei)wann von welchem Rechner (IP-Adresse) im lokalen Netz eine Datei/Ordner gelöscht oder angelegt wurde?

Wie kann man eine/mehrere gelöschte Dateien unter SuSE Linux 7-9 wiederherrstellen?

Danke!

2 Antworten
Tobias Hunger – Donnerstag, 23. Juni 2005 19:38 Uhr

Man kann Samba und sicher auch NFS so konfigurieren, das es alles mögliche
protokolliert. Normalerweise ist das aber nicht der Fall (log Dateien werden
einfach zu groß). Wenn Du nicht selber an den Logging-Einstellungen geschraubt
hast, dann wirst Du wohl nicht herausbekommen, wer da zugeschlagen hat.

Ob Du Dateien wieder herstellen kannst, hängt vom Dateisystem auf dem Server
ab, generell gilt aber: Gelöscht ist gelöscht. Insbesondere wenn nach dem
Löschen noch andere auf dem System gearbeitet haben ist der Versuch fast
hoffnungslos. Wenn Du es trotzdem versuchen musst, dann hilft googlen nach
“Filesystem undelete” evtl. weiter.

Du hast doch hoffentlich Backups gemacht… oder?

Stefan Koch – Donnerstag, 23. Juni 2005 19:57 Uhr

Und wie kann ich samba/nfs konfigurieren?

Das ganze hat sich in der Schule abgespielt, irgendwer hat vermutlich einige Ordner und Dateien vom Windows Nt Rechnar auf dem SuSE Linux 7.2 Server gelöscht.

Eine Sicherung soviel ich weiß haben wir nicht durchgeführt. Dateisystem muss ich nachschauen.

Tobias Hunger – Donnerstag, 23. Juni 2005 20:47 Uhr

Bei Samba ist das in der Sektion [global] der “log level”. Normalerweise ist
der auf 1, je höher Du den drehst, umso mehr Informationen werden
protokolliert (0 ist ganz aus). Die Entwickler sagen über 3 solltest Du als
Anwender nicht gehen: Die Leistung des Servers leidet dann zu sehr.

Die Logdateien wachsen aber entsprechend schneller! Vergewissere Dich lieber
vorher, das Du in /var/log noch genug Platz hast.

Wie wäre es mal mit einem Update des Servers? Wird SuSE 7.2 überhaupt noch
unterstützt oder installierst Du die nötigen Sicherheitsupdates von Hand?
Sicherheitsupdates sind ein Muss, gerade in einer Schule, wo Du von
Kindsköpfen mit zu viel Zeit umgeben bist (fast so schlimm wie Studenten diese
Schüler;-).

Ein Backup Konzept solltest Du Dir ebenfalls mal überlegen. Dateien sind
schnell mal versehentlich gelöscht und Platten halten auch nicht ewig!

Kennst Du Skolelinux[1]? Das ist eine Distribution, die auf die Bedürfnisse in
Schulen abgestimmt ist. Evtl. wäre das was… schließlich bist Du ja sicher
lieber Lehrer als Computer-Fuzzi, oder? ;-)

[1] http://www.skolelinux.de/

Stefan Koch – Donnerstag, 23. Juni 2005 21:09 Uhr

Ich bin Schüler und erledige mit meinem Lehrer die Systamadministration. Einen andren Server haben wir schon erneuert und irgendwan kommt der auch dran. Meine Lieblingsbeschäftigung in der Schule sind die PCs (besonders die Linux Rechner, wenns nach mir gine wär die ganze Schule Linux-Basiert) :-)

Stefan Günther – Donnerstag, 23. Juni 2005 20:43 Uhr

Hi,

wenn ich mich richtig erinnere, dann beginnt der Samba-Server ab Loglevel 4 die Informationen mitzuschreiben, aus den erkennbar ist, was ein User mit einer Datei gemacht hat.

Neben dem Logging nach /var/log/samba kann man über den Parameter syslog in der smb.conf das Logging durch den syslog durchführen lassen. Setzt man dann noch anstelle des alten syslogd, den syslog-ng ein, dann stehen einem mit den Filtermöglichkeiten (match-Anweisung) genau die Tools zur Verfügung, die ein detailiertes Auswerten der Meldungen ermöglichen und ein drastischen Anwachsen der Logdateien verhindert.

Außerdem kann der Syslog als Ausgabeziel nicht nur eine Datei oder ein Terminal nutzen, sondern über eine Pipe auch ein Programm aufrufen. Wenn Du es also eilig hast, dann kannst Du Dir beispielsweise beim Auftreten eines “Löschereignisses” eine Mail schicken lassen und den Übeltäter in flagranti ertappen ;-))

Viel Spaß & Erfolg,

Stefan

********************************************
in-put GbR – Das Linux-Systemhaus
Stefan-Michael Guenther
Moltkestrasse 49 D-76133 Karlsruhe
Tel./Fax : +49 (0)721 / 83044 – 98/93
http://www.in-put.de
********************************************
Schulungen Installationen Support
********************************************

Stefan Koch – Donnerstag, 23. Juni 2005 22:43 Uhr

Ich finde auch, dass die log-Dateien zu umfangreich werden. Vielleicht könntest du das nochmal genaer erklären. Testen tue ich das ganze unter SuSE Linux 9.3 Personal.

Stefan Günther – Samstag, 25. Juni 2005 16:03 Uhr

Hi Namenvetter,

bevor Du Dir nun die Mühe machts, den Rest der Email zu lesen und zu verstehen, eines vorneweg: Diese Lösung ermöglicht Dir zwar, den Löschvorgang zu protokollieren, allerdings ist mir kein sinnvoller Weg eingefallen, wie man auch noch herausfinden kann, wer eigentlich die Datei gelöscht hat.

Meine syslog-Lösung gibt dies auch den ersten Blick nicht her (vielleicht fällt doch noch jemanden eine Lösung ein). Der einzige Ausweg wäre, daß Du das Logging des Samba-Servers so einstellst, daß für jedes Share oder jeden User eine Logdatei angelegt wird (siehe dazu in man smb.conf z.B. %U). Da löst dann aber nicht Dein Problem der großen Logdateien.

Wenn ich ein solches Problem hätte, dann würde ich den Samba wie folgt konfigurieren:

log level = 5
log file = /var/log/samba/log.smb.%U
max log size = 9999999999

Die absurd hohe Dateigröße verhindert, daß der Samba die Logdatei rotiert. Dann würde ich über einen Cronjob alle 5 (?) min ein Shellskript laufen lassen. Dieses Skript überprüft, ob die Logdatei eine bestimmte Größe erreicht hat. Falls ja, dann sucht das Skript nach dem String “deleting file” (Erklräung siehe unten). Kein Treffer->Datei löschen. Treffer -> Datum an den Dateinamen anhängen, Datei komprimieren und Email an Dich. Es ist eine Textdatei, also wird die resultierende Logdatei angenehm klein sein.

Ansonsten hier die gewünschte Konfiguration mittels Syslog.

/etc/syslog-ng/syslog-ng.conf.in
filter f_samba { match(“smbd”);};
destination samba { file(“/var/log/samba.log”);};
log {source(src); filter(f_samba);destination(samba);};

/etc/samba/smb.conf
syslog = 6
log level = 5

Im Loglevel 5 schreibt der Samba-Server mit, daß eine Datei gelöscht wurde. Die gleiche Information steht in der oben konfigurierten Logdatei /var/log/samba.log

Danach SuSEconfig aufrufen und den Syslog-Daemon und den Samba-Server neu starten.

Wenn nun ein User die Datei test4.txt löscht, dann findet sich in beiden Logdateien der folgende Eintrag:

Jun 25 15:44:34 pc101 smbd[6668]: close_file: file test4.txt. Delete on close was set – deleting file.

Weitere Informationen zum Syslog findest Du unter den beiden angegebenen Links.

Viel Erfolg,

Stefan

********************************************
in-put GbR – Das Linux-Systemhaus
Stefan-Michael Guenther
Moltkestrasse 49 D-76133 Karlsruhe
Tel./Fax : +49 (0)721 / 83044 – 98/93
http://www.in-put.de
********************************************
Schulungen Installationen Support
********************************************

[1] http://www.balabit.com/products/syslog_ng/
[2] http://www.linux-magazin.de/Artikel/ausgabe/2003/11/tagebuch/tagebuch.html

Michael Fahland – Sonntag, 26. Juni 2005 23:52 Uhr

Hallo Stefan,

ist es evtl auch möglich für solche Netzwerke eine Art virtuellen Papierkorb für das Dateisystem
anzulegen wohin im Fall eines versehentlichen Löschens von Daten diese zuerst einmal abgelegt
werden? Der Admin könnte diese dann in Regelmäßigen abständen löschen.

Abgesehen davon würde ich in dem obigen Fall die Rechte so setzen das löschen nur durch ein
bestimmten User erfolgen kann.

Vielen Dank

Gruß

Michael

Tobias Hunger – Montag, 27. Juni 2005 09:48 Uhr

Wie wäre es mit Backups? Brauchst Du sowieso, falls die Platte mal ausfällt.

Mir fällt spontan keine Möglichkeit eines “Papierkorbs” auf Dateisystemebene
ein. Evtl. könntest Du mit LVM snapshots des Dateisystems vom Vortag
bereitstellen. Bringt Dich aber auch nicht um ein Backup rum.

Stefan Günther – Montag, 27. Juni 2005 19:46 Uhr

Hi Stefan,

in jedem Share kannst Du mit “root preexec=” und “root postexec=” ein Kommando mit Root-Rechten auführen lassen, wenn ein Benutzer eine Verbindung zu Share herstellt oder beenden.

Wenn die Menge der zu überwachenden/sichernden Daten nicht zu groß ist, dann könntest Du in einem versteckten Verzeichnis, den Ist-Zustand der aktullen Dateien ablegen. Wenn sich eine Benutzer vom Share trennt, könntest Du mit “root postexec” ein Skript starten, das überprüft, ob eine Datei fehlt und diese Datei aus dem versteckten Verzeichnis zurückkopiert.

Diese Lösung ist zwar technisch machbar, aber ich denke, da schießt Du mit Kanonen auf Spatzen. Wie von den anderen Teilnehmern zuvor angeführt, dürfte ein Backup die sauberer Lösung sein.

Gruß,

Stefan

********************************************
in-put GbR – Das Linux-Systemhaus
Stefan-Michael Guenther
Moltkestrasse 49 D-76133 Karlsruhe
Tel./Fax : +49 (0)721 / 83044 – 98/93
http://www.in-put.de
********************************************
Schulungen Installationen Support
********************************************

Tobias Hunger – Montag, 27. Juni 2005 22:30 Uhr

Wenn wir bei Lösungen mit Von-hinten-durch-die-Brust-ins-Auge-Punkten
angelangt sind: Man könnte (aktueller Kernel vorrausgesetzt) mit (i|d)notify
das freigegebene Verzeichnis überwachen und Nicht-Lösch-Änderungen irgendwo
per Skript spiegeln. Löschungen könnte man mit dem selben Skript aus diesem
Spiegel in den “Papierkorb” kopieren.

Wäre doch mal was für eine Projektarbeit;-)

Ein Backupkonzept wäre für die Testphase sicherlich sinnvoll;-)