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 home
daty 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.
/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żsyslog
okres rotacji dziennika./home/user
Odpowiedzi:
Jeśli został utworzony i nie został zmieniony od czasu utworzenia użytkownika, możesz użyć
.bash_logout
pliku do ustalenia daty. W trybie rootowania:LUB Jeśli użytkownik ma katalog domowy, możesz sprawdzić datę ostatniej modyfikacji tego katalogu:
aby uzyskać tylko datę, której możesz użyć
awk
:źródło
ź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.Utworzenie konta może być zarejestrowane. W systemie Linux (jeśli korzystasz ze wspólnego pakietu narzędzi Shadow)
useradd
tworzy wpis dziennika w obiekcieauth.info
. Ten dziennik zazwyczaj znajduje się w/var/log/secure
lub/var/log/auth.log
(zależy od dystrybucji).Możesz sprawdzić swoje kopie zapasowe
/etc/passwd
i zobaczyć, która jest najmłodszą kopią zapasową, która nie ma tego konta. Używam i polecam etckeeper do śledzenia zmian/etc
, więcgit annotate /etc/passwd
dałbym odpowiedź. (Właściwiegit annotate
powiedział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/skel
których użytkownik nigdy nie zmodyfikował (.bash_logout
jest to typowy), i sprawdzić, czy istnieją starsze plikifind ~bob ! -cnewer ~bob/.bash_logout -user bob
. Z zsh, uruchomls -ld ~bob/**/*(Doc[1]u:bob:)
.źródło
Sprawdza datę zmiany hasła.
źródło
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 ewentualniewhenCreated
) atrybuty odpowiadającego im wpisu LDAP:źródło