fragen stichworte

Dateien verschwinden auf dem Linux-Server

Ich habe 4 bestimmte Dateien, die scheinbar immer im Heimatverzeichnis eines Benutzers verschwinden. Soweit wir wissen, gibt es keine Cronjobs oder andere automatisierte Aufgaben, die sie entfernen würden. Ich habe auditd für sie eingerichtet, aber die Protokolle zeigen wirklich nichts Interessantes. Ich kann sehen, dass unser Backup-Dienstprogramm jede Nacht auf sie zugreift, bis sie nicht mehr da sind, aber sonst nichts. Gibt es etwas, das dazu führt, dass Dateien entfernt werden, die auditd umgehen würden?

Es handelt sich um folgende Dateien:

/home/username/.bashrc
/home/username/.bash_profile

sowie einige Dateien im .ssh-Verzeichnis dieses Benutzers. Kopien dieser Dateien, die in einem Unterordner namens "Keepers" abgelegt werden, werden gleichzeitig gelöscht. Das Ändern der Berechtigungen auf 000 und der Besitz von root hat nicht geholfen.

Ich habe derzeit das inotifywait-Setup, um Protokolle zu erstellen, zu löschen und in diesem Unterordner zu verschieben. Hoffentlich wird sich etwas ergeben, obwohl es sich nicht so sehr nach dem Zeitpunkt, an dem es aufgetreten ist, protokolliert, nicht nach der Ursache.

antworten

Mit systemtap können Sie alle PIDs anzeigen, die unlink () im Inode der Dateien .bashrc und .bash_profile verwenden.

Installieren Sie systemtap und die Debug-Symbole für Ihren Kernel.

Erstellen Sie eine Datei mit dem Namen unlink.stap mit folgendem Inhalt:

probe syscall.unlink
{
    printf ("%s(%d) unlink (%s) userID(%d)\n", execname(), pid(), argstr, uid())
}

Führen Sie es dann mit sudo stap unlink.stap

aus

Sie können auch inotify verwenden, um zu sehen, wann die Datei gelöscht wird.

Eine andere Lösung ist die Verwendung von ftrace:

trace-cmd record -e \*unlink\*

Warten Sie, bis die Datei gelöscht ist, drücken Sie STRG + C, um trace-cmd record ... zu stoppen, und führen Sie dann Folgendes aus:

trace-cmd report

Zusätzlich zu miceas Antwort können Sie die Dateien als root chatten und sehen, ob beim Versuch, sie zu entfernen, ein Fehler auftritt.

Sind Sie absolut sicher, dass der Benutzer sie nicht (versehentlich) löscht?

Ich hatte einige ahnungslose (Windows) Benutzer mit dem gleichen Problem. Es stellte sich heraus, dass sie diese Dateien bei jedem Besuch ihres Heimatverzeichnisses mit einem FTP-Client selbst gelöscht haben. Sie bemerkten die .xxxx-Dateien (der FTP-Client verdeckte sie nicht) und beseitigten das "Durcheinander".

Ich habe nie gedacht, dass sie es sich selbst angetan haben, bis sich einer über die spontan wiederkehrenden Dateien beklagte, die er einige Tage zuvor gelöscht hatte.

Wir verwenden Bash-Abmeldeskripts (~/.bash_logout), um bestimmte Dateien beim Abmelden zu bereinigen. Sie können überprüfen, ob Sie dieses Setup haben, vielleicht mit einem fettgefingerten Glob.

Mehr scheint ein Eindringling zu sein, der find/home/user -name Dateiname -exec rm -f {} \\; nach all seinem Schleichen :) durchführt. Nur raten, weil Sie erwähnt haben, dass auch die Sicherungsdateien gelöscht werden.

Um zu verhindern, dass die Dateien und deren Inhalte verloren gehen, können Sie libtrash über LD_PRELOAD einrichten. Mit libtrash können Sie viele Dinge tun, aber die, die für Sie interessant sein könnten, sind

INTERCEPT_UNLINK
INTERCEPT_RENAME
INTERCEPT_FOPEN
INTERCEPT_OPEN

Einen guten Artikel über libtrash finden Sie hier

Andere Dinge, die Sie erwähnen, dass Sie Dateien als root deklariert haben und trotzdem entfernt wurden. Dies liegt daran, dass/home/username im Besitz von username ist. und wenn dir hat sagen mod 755; dann eine beliebige Datei oder ein Verzeichnis in diesem Verzeichnis, dessen Inhaber derjenige ist, der vom Benutzer entfernt werden kann; sogar Wenn es sich um eine Root-Datei oder ein Verzeichnis handelt. Es ist im Wesentlichen darauf zurückzuführen, dass das Entfernen der Datei in dir bedeutet Wenn Sie den Inhalt des Verzeichnisses ändern, hat der Benutzer 7 (in 755) dieses Verzeichnisses, damit er tun kann, was er will.

Es gibt Möglichkeiten, dies zu blockieren, da andere Personen bereits vorgeschlagen haben, dass chattr auf ext-Dateisystemen Dateien als unveränderlich (+ i) festlegt. Dann müsste man das unveränderliche Flag aufheben bevor Sie Änderungen an file/dir vornehmen, die das + i-Flag haben. Das unveränderliche Flag/chattr kann nur von root verwendet werden.