一、/etc/shadow文件
在Linux系统中,所有用户对/etc/passwd文件都有读取权限,为了增强系统的安全性,用户经过加密后的口令都存放在/etc/shadow文件中。
/etc/shadow文件相当于/etc/passwd文件的影子文件,二者之中的记录行是一一对应的。
该文件通常只有root用户和具有特殊权限的用户才能访问。
这里介绍一个普通用户访问这类特殊文件的方式:
使用root用户登录后,修改(使用vim编辑器)普通用户的UID为0,使其拥有超级用户的权限,此操作后,该普通用户可以访问有权限要求的文件。
【UID为0时,被判定为超级用户。】
该文件的内容格式为(可以使用cat命令查看):
用户名:加密后的用户密码:用户最近一次口令被修改的天数:最短口令存活期:密码有效期:密码过期前几天提醒用户:过期后几天账户被禁用:被禁用具体日期:保留字段(用于功能扩展)
【共9个字段】
二、9个字段说明
1. 用户登录名
这个用户名与/etc/passwd文件中的保持一致。
2. 加密后的用户口令,‘*’表示非登录用户,‘!!’表示未设置密码
如果有密码,则会显示密码的哈希值(被加密)
3. 自1970年1月1日起,到用户最近一次口令被修改的天数。
可以通过passwd来修改用户的密码,然后查看/etc/shadow中此字段的变化。
4. 自1970年1月1日起,到用户可以更改密码的天数,即最短口令存活期(或者叫密码不可变更的时间)。
如果设置为0,禁用此功能,也就是可以随时修改密码。
如果非0,表示用户需要经过多少天才能修改密码。
5. 自1970年1月1日起,到用户必须修改密码的天数,即最长口令存活期(两次修改口令间隔最多的天数)。
这个用于增强管理员管理用户口令的时效性,增强了系统的安全性;如果是系统默认值,是在添加用户时由/etc/login.defs文件定义中获取,在PASS_MAX_DAYS中定义。
99999(计算为 273 年),表示密码的变更没有强制性。
6. 口令过期前几天提醒用户更改口令。
7. 口令过期后几天账户被禁用。
账户被禁用后,系统不允许此用户登录,也不会提示过期,是完全禁用。
8. 口令被禁用的具体日期(相对日期,自1970年1月1日到禁用时的天数)。
如果设置为"!",表示用户账户已被禁用;如果为空,则表示账户是活动的。