本地帐户创建日期

ant*_*hor 10 users date files accounts

出于合规目的,需要获取有关 UNIX 机器上本地(用户和非用户)帐户创建日期的信息。

有没有办法(即使它不是最可靠或最准确的方法)来收集这种信息?

例如,作为替代方案,我去搜索home目录创建日期(对于用户帐户),但我发现对于符合 POSIX 的系统,文件创建的时间戳不可用。

Gil*_*il' 5

帐户创建可能会被记录。在 Linux 下(如果使用通用影子实用程序套件),useradd在该工具下创建一个日志条目auth.info。该日志通常位于/var/log/secure/var/log/auth.log(取决于分布)。

\n\n

您可以检查您的备份/etc/passwd并查看哪个是没有此帐户的最新备份。我使用并推荐etckeeper来跟踪 中的更改/etc,这样git annotate /etc/passwd会给我答案。(实际上git annotate会告诉我上次更改用户条目的时间;进一步挖掘其自动化超出此答案的范围会告诉我何时添加条目。)

\n\n

如果您缺乏审核日志、备份和修订历史记录,您将不得不求助于启发式方法。一个很好的线索是 inode 更改时间 (ctime) 最旧的文件。这个启发式可以有两种方式:\xc2\xa0如果一个目录被移动到用户的家中,它可能包含具有旧ctime的文件(但对于它们比用户更老的文件,它们的uid不必是那个)用户的 uid 更改涉及更新 ctime,因此您可以跳过那些不属于用户的文件);相反,某些事件可以更改文件的 ctime(例如,如果整个系统是从备份恢复的)。您可以从用户的主目录 ( ls -Alctr ~bob| sed -n 2p) 开始,其中可能包含/etc/skel用户从未修改过的文件(.bash_logout是常见的文件),然后查看是否有扩展名为 .sed 的旧文件find ~bob ! -cnewer ~bob/.bash_logout -user bob。使用 zsh,运行ls -ld ~bob/**/*(Doc[1]u:bob:).

\n


Nid*_*dal 3

如果已创建且自用户创建以来未曾触及,.bash_logout您可以使用该文件来确定日期。以 root 身份运行:

ls -l /home/<username>/.bash_logout
Run Code Online (Sandbox Code Playgroud)

或者,如果用户有主目录,您可以检查该目录的上次修改日期:

ls -ld /home/username/
Run Code Online (Sandbox Code Playgroud)

仅获取您可以使用的日期awk

ls -ld /home/username/ | awk '{ print $6,$7,$8 }'
Run Code Online (Sandbox Code Playgroud)

来源