Linux - Wie erkennt man, welche Dateien beim Login bezogen werden?


7

Wenn sich ein bestimmter Benutzer bei einem Linux-Computer anmeldet, werden bestimmte Dateien bezogen, z. B. .bashrc, .bash_profile usw. Manchmal bedeuten unterschiedliche Shells, dass unterschiedliche Dateien bezogen werden. Und natürlich kann der Benutzer etwas eingerichtet haben, um bestimmte benutzerdefinierte Dateien selbst zu beschaffen.

Meine Frage: Gibt es eine Möglichkeit für root / su, eine Liste aller Dateien zu ermitteln, die für einen bestimmten Benutzer beim Anmelden bezogen werden?

Antworten:


7

inotifywatch kann helfen. Verpackt in inotify-tools. Verwenden Sie als Benutzer von files / dir, damit das Ausgangsverzeichnis überwacht wird, nicht sudo, oder Sie erhalten Fehler in .gvfs, wenn Sie einen neueren Gnome ausführen.

Inotify teilt Ihnen nur mit, auf welche Dateien zugegriffen / erstellt / geändert / gelöscht wird.

$ inotifywatch -r /home/username/.* /home/username/*
Establishing watches...

in einem anderen Terminal

$ cat /home/username/.bashrc 

im inotifywatch-Terminal Strg-C zum Beenden

Finished establishing watches, now collecting statistics.
total  access  modify  close_nowrite  open  filename
3      1       0       1              1     /home/username/.bashrc

Für Ihre spezielle Anfrage alle Dateien, auf die während der Anmeldung zugegriffen wird.

$ inotifywatch -r /home/username/.* /home/username/*
Establishing watches...

in einem anderen Terminal

$ sudo su
# login username

im inotifywatch-Terminal Strg-C zum Beenden

Möglicherweise möchten Sie die inotifywatch in eine Datei umleiten, wenn Sie einen fetten Desktop wie gnome oder kde verwenden. Oder erhöhen Sie Ihren Scrollback im Inotifywatch-Terminal. In Gnome 3 wird während der Anmeldung auf Tausende von Homedir-Dateien zugegriffen. Sie möchten wahrscheinlich entweder Verzeichnisse ausschließen oder eine bestimmte Verzeichnis- / Dateiliste erstellen, um sie anzusehen.


Was ist mit / etc / * Dateien?
Jeff Ferland

inotifywatch -r /home/username/.* / home / username / * / etc / *
joe

Wenn Sie die Befehlszeile erweitern, um dieses Verzeichnis zu überwachen, werden Dateien angezeigt, auf die von dort aus zugegriffen wird. Ich habe mich gefragt, ob Sie vielleicht etwas haben, das an einen bestimmten Prozess gebunden ist. Mir fällt jedoch ein, dass das anschließende Filtern der Ergebnisse wahrscheinlich genauso sinnvoll ist.
Jeff Ferland

1

Sie können jeder Punktdatei zusätzlichen Code hinzufügen, zum Beispiel:

.bashrc

if [ ! -z "$PS1" ]; then # Determine whether Bash is running interactively or not.
  echo $(basename $BASH_SOURCE) loaded.
fi

und ähnlich für .bash_profile, .bash_aliases, .profileetc.

Wenn Sie sich anmelden, sehen Sie, welche Dateien geladen wurden und in welcher Reihenfolge. Wenn Sie nichts auf dem Bildschirm drucken möchten (z. B. für die Benutzer), melden Sie es stattdessen in der Datei an. Zum Beispiel:

echo # $(basename $BASH_SOURCE) loaded for $USER. >> ~/.bash_history

Sie können die obige Lösung in meinen Punktedateien überprüfen .


0

Eine Möglichkeit, die eher ineffizient ist, besteht darin, den Computer zu starten und die Person anmelden zu lassen. Hängen Sie dann das Laufwerk mit ein, noatimedamit die Zugriffszeit nicht mehr aktualisiert wird. Verwenden Sie dann find, um eine Liste der Dateien zu sichern, auf die in dem Zeitraum zugegriffen wurde, in dem sich der Benutzer angemeldet hat.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.