Answers:
如果已创建但自用户创建以来未被触摸,则可以使用该.bash_logout
文件确定日期。以root身份运行:
ls -l /home/<username>/.bash_logout
或者,如果用户具有主目录,则可以检查该目录的最后修改日期:
ls -ld /home/username/
仅获取您可以使用的日期awk
:
ls -ld /home/username/ | awk '{ print $6,$7,$8 }'
ls -ld /home/username/
给出主目录的修改时间,由于每次在主目录中添加或删除文件时都会更新此时间,因此修改时间不太可能。
帐户创建可能会被记录。在Linux下(如果使用通用的影子实用程序套件),useradd
在便利设施下进行日志输入auth.info
。该日志通常位于/var/log/secure
或/var/log/auth.log
(取决于分布)中。
您可以检查的备份,/etc/passwd
看看哪个是没有该帐户的最年轻的备份。我使用并推荐etckeeper来跟踪的更改/etc
,因此git annotate /etc/passwd
会给我答案。(实际上git annotate
会告诉我最后一次更改用户条目的内容;如果进一步挖掘其自动化超出了此答案的范围,则会告诉我何时添加条目。)
如果缺少审核日志,备份和修订历史记录,则必须采用启发式方法。一个很好的线索是其inode更改时间(ctime)最旧的文件。这种启发式方法有两种可能:如果将目录移到用户的家中,则该目录可能包含具有旧ctime的文件(但是对于比用户更旧的文件,其uid不必是用户的uid)。 uid涉及更新ctime,因此您可以跳过用户不拥有的那些文件);相反,某些事件可以更改文件的ctime(例如,如果整个系统是从备份还原的)。您可以从用户的主目录(ls -Alctr ~bob
| sed -n 2p)开始,该目录可能包含/etc/skel
用户从未修改过的文件(.bash_logout
是常见文件),然后查看是否存在带有的较旧文件find ~bob ! -cnewer ~bob/.bash_logout -user bob
。使用zsh,运行ls -ld ~bob/**/*(Doc[1]u:bob:)
。
$ chage -l fred
检查密码更改日期。
对于本地用户,您可以查看记录它们的那些系统和文件系统的主目录出生时间(至少Linux,大多数BSD,macOS)。该如何执行随系统而异。
对于LDAP目录中的用户,您可以查看其相应LDAP条目的createTimestamp
(或可能是whenCreated
)属性:
ldapsearch -LLL -x -H ldaps://ldap.example.com -s sub \
-b dc=example,dc=com 'uid=username' createTimestamp whenCreated
/var/log/auth.log
(可能需要在旋转后的日志看还有:/var/log/auth.log.1
,/var/log/auth.log.2.gz
,...)。这将为您提供有关用户帐户验证的第一个日期的线索。但是,这对于系统用户不起作用,并且如果创建帐户的时间比您syslog
的日志轮换期限更长的时间,也会失败。