本文介绍了Linux系统下/etc/passwd以及/etc/shadow两个文件的格式。这两个文件,一个是用户账户信息数据的存储,另一个是用户密码信息以及密码超期相关信息的存储。 这两个文件都是使用冒号做为分隔符来分隔字段的。为了安全起见,这两个文件都只有超级管理员可以读写。

一、 /etc/passwd 文件的格式,使用冒号分隔的7段用户账户信息

account:password:UID:GID:GECOS:directory:shell (帐号:密码:用户ID:组ID:一般的信息:目录:shell)

示例:root:x:0:0:root:/root:/bin/bash

  1. 账户名称
  2. 密码占位符,用x代替
  3. 用户标识
  4. 基本组标识
  5. GECOS,可以理解为用户全名
  6. 用户家目录
  7. 用户shell

二、/etc/shadow文件格式,使用冒号分隔的9段密码相关信息

liuqing:$6$HE1uq5GI$1BUG8ACoUscfpvuW:18192:0:99999:7:::

1.login name 登录名:必须是有效的账户名,且已经存在于系统中。 2. date of last password change 加密了的密码:加密了的密码,这个密码是加了salt这个随机数的密码。用$进行分隔的。这样,就不会让使用相同密码的用户得到同一个加密的值。 而在验证密码时,将用户输入的密码与salt(存在于shaodw文件对应用户行中的)组合,与加密密码进行一致性验证。 3. date of last password change 最后一次更改密码的日期: 密码上一次更改时的日期,这个日期是从1970年1月1日开始计算的。0表示用户在下次登录时应该更改密码,空字段表示密码老化功能被禁用。 4. date of last password change 密码的最小使用期限: 用户更改完一次密码后,最小需要多少天才能再次更改密码。空字段或者0表示没有最小密码使用期限。 5. maximum password age 密码最长使用期限:用户的密码最长使用多少天后,必须进行更改。过了这个时间点后,密码仍旧是有效的,但下次登录的时候需要更改密码。如果这个字段为空则表示没有最长密码使用期限,没有密码行告警时间段,没有密码禁用时间段。如果最大密码期限小于最小密码期限,则用户不能更改密码。 6. password warning period 密码警告时间段:密码过期之前,提前警告用户的天数。空字段或者0表示没有密码警告期限。 7.password inactivity period 密码禁用期:密码过期(密码最长使用期限)后,仍然接受此密码的天数(在此期间,用户应该在下次登录时修改密码)。密码到期并且过了这个宽限期以后,使用当前密码将不能登录。空字段表示没有强制密码过期。 8. account expiration date 账户过期日期:账户的过期的日期,表示从1970年1月1日开始的天数。注意,账户过期不同于密码过期,账户过期时,用户将不被允许登录;密码过期时,用户将不被允许使用其密码进行登录。空字段表示账户永不过期。 9. 保留字段:此字段保留以作将来使用。