如何知道用户何时创建?但根据 Ubuntu 本身的版本明确

如何知道用户何时创建?但根据 Ubuntu 本身的版本明确

我知道sudo adduser <username>创造:

  • 一名用户
  • 密码
  • 主目录
  • GECOS(可选)

假设执行了以下命令在同一台机器上 根据 Ubuntu 版本的不同,在不同的时间点如下:

  • sudo adduser commanderkeenUbuntu 桌面版为 18:04
  • sudo adduser tron当 Ubuntu 桌面是 20:04 时
  • sudo adduser captainfuture当 Ubuntu 桌面是 22:04 时

如何知道特定用户是在哪个特定的 Ubuntu 版本下创建的?例如:特伦应该指出用户是在 Ubuntu 20.04 时创建的。有可能实现这个目标吗?

答案1

没有用户创建日志以及创建用户的 Ubuntu 版本。Ubuntu 版本只是参考/etc/lsb-release,如果您需要它,则需要编写一些代码来执行此操作(这将适用于从那一刻起创建的新用户)。

关于用户创建的日期。(这是昨天新安装的):

/var/log/auth.log有一个用户活动帐户。

2024-05-02T17:42:34.259561+00:00 schijwereld useradd[2391]: 
new user:name=rinzwind, UID=1000, GID=1000, 
home=/home/rinzwind, shell=/bin/bash, from=none

如果该文件从未被删除或截断,它将有一行“新用户”和使用的命令(此处useradd),其中包含所有创建用户的确切日期和时间。如果它被删除或截断,您将需要依靠备份来恢复此文件的旧版本。

如果用户的密码从未更改,chage则将执行以下操作:

$ chage -l rinzwind
Last password change                    : May 02, 2024
Password expires                    : never
Password inactive                   : never
Account expires                     : never
Minimum number of days between password change      : 0
Maximum number of days between password change      : 99999
Number of days of warning before password expires   : 7

但它不是“创建的”。它是上次更改密码时,此后的任何升级都不是用户创建时。auth.log对此会更有用。

答案2

正如其他评论所暗示的,您可以尝试查看主目录的元数据,例如:

:; stat ~
  File: /home/jim
  Size: 4096            Blocks: 8          IO Block: 4096   directory
Device: 810h/2064d      Inode: 664         Links: 43
Access: (0755/drwxr-xr-x)  Uid: ( 1000/     jim)   Gid: ( 1000/     jim)
Access: 2024-04-29 20:28:07.102535227 +0200
Modify: 2024-05-02 13:16:18.824761686 +0200
Change: 2024-05-02 13:16:18.824761686 +0200
 Birth: 2022-08-03 09:15:16.581359797 +0200

“Birth”行说明了此目录在此文件系统中的创建时间(这意味着如果您通过rsync或类似的复制技术从一台机器迁移到另一台机器,或者从备份中恢复,则这可能是创建该目录的新副本的时刻)。

然后,只要您有日期,您就可以猜测或在日志等中查找(如其他答案所建议的)您当时可能正在运行的版本。

需要检查的一点是,您的操作系统是否具有并使用 ZFS 或类似的支持快照的文件系统,以及是否使用快照进行升级例程(以便在需要回滚时保持升级前的状态不变)。在这种情况下,您的历史分层存储可以包含有关您在哪个时间范围内运行了哪个版本的信息。本质上是之前帖子中“查看您的备份”想法的另一种转变,但在这里您更有可能拥有一个(每个人知道他们应该使用备份,但很少有家庭用户真正投资进行备份 - 并保留多年)。

相关内容