Aus Compliance-Gründen müssen Informationen zum Erstellungsdatum lokaler (Benutzer- und Nichtbenutzer-) Konten auf UNIX-Computern abgerufen werden.
Gibt es eine Möglichkeit (auch wenn dies nicht die zuverlässigste oder genaueste Methode ist), diese Art von Informationen zu sammeln?
Als Alternative habe ich beispielsweise nach dem home
Erstellungsdatum des Verzeichnisses (für Benutzerkonten) gesucht , aber festgestellt, dass für POSIX-kompatible Systeme keine Zeitstempel für die Dateierstellung verfügbar sind.
/var/log/auth.log
(man kann auch in den rotierten logs suchen müssen:/var/log/auth.log.1
,/var/log/auth.log.2.gz
, ...). Dies gibt Ihnen einen Hinweis auf das erste Datum, an dem sich das Benutzerkonto authentifiziert hat. Dies funktioniert jedoch nicht für Systembenutzer und schlägt auch fehl, wenn die Konten vor einem längeren Zeitraum als demsyslog
Protokollrotationszeitraum Ihres Protokolls erstellt wurden./home/user
Antworten:
Wenn es seit der Benutzererstellung erstellt und nicht berührt wurde , können Sie anhand der
.bash_logout
Datei das Datum bestimmen. Als Root-Lauf:ODER: Wenn der Benutzer über ein Ausgangsverzeichnis verfügt, können Sie das Datum der letzten Änderung dieses Verzeichnisses überprüfen:
um nur das Datum zu erhalten, das Sie verwenden können
awk
:Quelle
quelle
ls -ld /home/username/
gibt die Änderungszeit des Home-Verzeichnisses an, was wahrscheinlich nicht sinnvoll ist, da diese Zeit jedes Mal aktualisiert wird, wenn eine Datei im Home-Verzeichnis hinzugefügt oder entfernt wird.Die Kontoerstellung kann protokolliert werden. Führt unter Linux (bei Verwendung der allgemeinen Shadow Utility Suite)
useradd
einen Protokolleintrag unter der Funktion durchauth.info
. Dieses Protokoll befindet sich normalerweise in/var/log/secure
oder/var/log/auth.log
(dies hängt von der Verteilung ab).Sie können Ihre Backups überprüfen
/etc/passwd
und feststellen, welches das jüngste Backup ist, das dieses Konto nicht hat. Ich benutze und empfehle etckeeper , um Änderungen zu verfolgen/etc
, alsogit annotate /etc/passwd
würde ich die Antwort geben. (git annotate
Würde mir tatsächlich sagen, wann der letzte Eintrag eines Benutzers geändert wurde; ein bisschen mehr Graben, dessen Automatisierung außerhalb des Rahmens dieser Antwort liegt, würde mir sagen, wann der Eintrag hinzugefügt wurde.)Wenn Ihnen Überwachungsprotokolle, Sicherungen und der Revisionsverlauf fehlen, müssen Sie auf Heuristiken zurückgreifen. Ein guter Hinweis ist die Datei, deren Inode-Änderungszeit (ctime) die älteste ist. Diese Heuristik kann in beide Richtungen erfolgen: Wenn ein Verzeichnis in die Startseite des Benutzers verschoben wird, enthält es möglicherweise Dateien mit einer alten ctime (aber damit sie älter als der Benutzer sind, muss ihre UID nicht die des Benutzers sein, um dies zu ändern von uid beinhaltet das Aktualisieren der ctime, damit Sie die Dateien überspringen können, die nicht dem Benutzer gehören); Umgekehrt können einige Ereignisse die Uhrzeit einer Datei ändern (z. B. wenn das gesamte System aus einer Sicherung wiederhergestellt wurde). Sie können vom Home-Verzeichnis des Benutzers (
ls -Alctr ~bob
| sed -n 2p) ausgehen, das möglicherweise Dateien enthält/etc/skel
, die der Benutzer nie geändert hat (.bash_logout
häufig verwendet wird), und prüfen, ob ältere Dateien mit vorhanden sindfind ~bob ! -cnewer ~bob/.bash_logout -user bob
. Mit zsh ausführenls -ld ~bob/**/*(Doc[1]u:bob:)
.quelle
Überprüft das Änderungsdatum des Passworts.
quelle
Für lokale Benutzer können Sie die Geburtszeit ihres Home-Verzeichnisses für die Systeme und Dateisysteme einsehen, die sie aufzeichnen (Linux, die meisten BSDs, mindestens MacOS). Wie das geht, hängt vom System ab .
Für Benutzer in LDAP-Verzeichnissen können Sie die
createTimestamp
(oder möglicherweisewhenCreated
) Attribute des entsprechenden LDAP-Eintrags anzeigen:quelle