Data utworzenia konta lokalnego


9

W celu zapewnienia zgodności należy pobrać informacje dotyczące daty utworzenia kont lokalnych (użytkowników i użytkowników niebędących użytkownikami) na komputerach z systemem UNIX.

Czy istnieje jakiś sposób (nawet jeśli nie jest to najbardziej wiarygodna lub dokładna metoda) gromadzenia tego rodzaju informacji?

Na przykład, alternatywnie, szukałem homedaty utworzenia katalogu (dla kont użytkowników), ale odkryłem, że dla systemów zgodnych z POSIX znaczniki czasu dla tworzenia plików nie są dostępne.


Jako surowy zbliżenia, myślę, że najlepiej jest zrobić trochę kopanie w kryminalistycznych /var/log/auth.log(może trzeba spojrzeć w obróconych dzienników, a także: /var/log/auth.log.1, /var/log/auth.log.2.gz, ...). To da ci wskazówkę co do pierwszej daty uwierzytelnienia konta użytkownika. Nie będzie to jednak działać dla użytkowników systemu i zakończy się niepowodzeniem, jeśli konta zostały utworzone wcześniej niż syslogokres rotacji dziennika.
Joseph R.

ta konkretna informacja nie jest nigdzie domyślnie przechowywana. ale możesz spróbować sprawdzić datę modyfikacji/home/user
Nidal

Odpowiedzi:


3

Jeśli został utworzony i nie został zmieniony od czasu utworzenia użytkownika, możesz użyć .bash_logoutpliku do ustalenia daty. W trybie rootowania:

ls -l /home/<username>/.bash_logout

LUB Jeśli użytkownik ma katalog domowy, możesz sprawdzić datę ostatniej modyfikacji tego katalogu:

ls -ld /home/username/

aby uzyskać tylko datę, której możesz użyć awk:

ls -ld /home/username/ | awk '{ print $6,$7,$8 }'

źródło


ls -ld /home/username/podaje czas modyfikacji katalogu domowego, co raczej nie będzie przydatne, biorąc pod uwagę, że czas ten jest aktualizowany za każdym razem, gdy plik jest dodawany lub usuwany w katalogu domowym.
Gilles 'SO - przestań być zły'

3

Utworzenie konta może być zarejestrowane. W systemie Linux (jeśli korzystasz ze wspólnego pakietu narzędzi Shadow) useraddtworzy wpis dziennika w obiekcie auth.info. Ten dziennik zazwyczaj znajduje się w /var/log/securelub /var/log/auth.log(zależy od dystrybucji).

Możesz sprawdzić swoje kopie zapasowe /etc/passwdi zobaczyć, która jest najmłodszą kopią zapasową, która nie ma tego konta. Używam i polecam etckeeper do śledzenia zmian /etc, więc git annotate /etc/passwddałbym odpowiedź. (Właściwie git annotatepowiedziałby mi, kiedy ostatni wpis użytkownika został zmieniony; nieco więcej kopania, którego automatyzacja jest poza zakresem tej odpowiedzi, powiedziałoby mi, kiedy wpis został dodany.)

Jeśli brakuje dzienników kontroli, kopii zapasowych i historii zmian, konieczne będzie skorzystanie z heurystyki. Dobrą wskazówką jest plik, którego czas zmiany i-węzła (ctime) jest najstarszy. Ta heurystyka może kłamać na dwa sposoby: jeśli katalog zostanie przeniesiony do domu użytkownika, może on zawierać pliki ze starą godziną (ale aby były starsze od użytkownika, ich identyfikator użytkownika nie musiałby być numerem użytkownika UID obejmuje aktualizację ctime, więc możesz pominąć te pliki, które nie są własnością użytkownika); i odwrotnie, niektóre zdarzenia mogą zmienić czas działania pliku (np. jeśli cały system został przywrócony z kopii zapasowej). Możesz zacząć od katalogu domowego użytkownika ( ls -Alctr ~bob| sed -n 2p), który może zawierać pliki, z /etc/skelktórych użytkownik nigdy nie zmodyfikował ( .bash_logoutjest to typowy), i sprawdzić, czy istnieją starsze pliki find ~bob ! -cnewer ~bob/.bash_logout -user bob. Z zsh, uruchomls -ld ~bob/**/*(Doc[1]u:bob:).


1
$ chage -l fred

Sprawdza datę zmiany hasła.


+1: W porównaniu z innymi odpowiedziami, z wyjątkiem dzienników kontroli (które nie muszą być dostępne) i LDAP (które nie odnoszą się do konta lokalnego), nie mamy żadnych wiarygodnych metod określania tworzenia daty, tylko kilka atrybutów, na które warto spojrzeć, aby uzyskać jakiś pomysł. To jeden z nich i w moim systemie okazał się najdokładniejszy (ludzie po prostu nie zmieniali haseł), choć tylko z dokładnością do kilku dni.
user1182474,

1

Dla użytkowników lokalnych możesz sprawdzić czas urodzenia katalogu domowego dla tych systemów i systemów plików, które go rejestrują (Linux, przynajmniej większość BSD, macOS). Jak to zrobić, zależy od systemu .

W przypadku użytkowników w katalogach LDAP możesz przejrzeć createTimestamp(lub ewentualnie whenCreated) atrybuty odpowiadającego im wpisu LDAP:

ldapsearch -LLL -x -H ldaps://ldap.example.com -s sub \
  -b dc=example,dc=com 'uid=username' createTimestamp whenCreated
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.