本地帐户创建日期


9

为了达到合规目的,需要获取有关UNIX(本地和非本地)帐户在UNIX计算机上创建日期的信息。

有什么方法(即使不是最可靠或最准确的方法)来收集此类信息?

例如,作为一种选择,我去搜索了home目录创建日期(用于用户帐户),但是我发现对于POSIX兼容系统,文件创建的时间戳不可用。


作为一个粗略的近似,我认为最好的办法是做一些法医挖掘中/var/log/auth.log(可能需要在旋转后的日志看还有:/var/log/auth.log.1/var/log/auth.log.2.gz,...)。这将为您提供有关用户帐户验证的第一个日期的线索。但是,这对于系统用户不起作用,并且如果创建帐户的时间比您syslog的日志轮换期限更长的时间,也会失败。
2014年

默认情况下,此特定信息不会存储在任何地方。但您可以尝试检查/home/user
-Nidal

Answers:


3

如果已创建但自用户创建以来未被触摸,则可以使用该.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/给出主目录的修改时间,由于每次在主目录中添加或删除文件时都会更新此时间,因此修改时间不太可能。
吉尔斯(Gilles)'所以

3

帐户创建可能会被记录。在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:)


1
$ chage -l fred

检查密码更改日期。


+1:与其他答案相比,除了审核日志(不一定可用)和LDAP(不涉及本地帐户)外,我们没有任何可靠的方法来确定创建日期,只有一堆属性可供参考。这就是其中之一,在我的系统上,它实际上是最准确的(人们只是不更改密码),尽管只有几天的时间。
user1182474

1

对于本地用户,您可以查看记录它们的那些系统和文件系统的主目录出生时间(至少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
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.