1. /etc/shadow
/etc/shadow
档案结构如下:
[root@centos-chuan ~]# cat /etc/shadow | head
root:$6$u3BdkeixNDUhdeAO$tsRjYhLblmaZ0vFpBuwL2HDndaw2vk2A.1gQPG9Pg.t38l/nxc03Rt8vWT17CLvWk46Nm04BX6ajLds.QBx3V0:16812:0:99999:7:::
bin:*:15980:0:99999:7:::
daemon:*:15980:0:99999:7:::
adm:*:15980:0:99999:7:::
lp:*:15980:0:99999:7:::
sync:*:15980:0:99999:7:::
shutdown:*:15980:0:99999:7:::
halt:*:15980:0:99999:7:::
mail:*:15980:0:99999:7:::
uucp:*:15980:0:99999:7:::
从此档案的内容可以看到,和/etc/passwd
一样,同样使用:分隔,每行被分为9个字段,各个字段的含义如下所述:
用户名: 跟
/etc/passwd
对应。密码: 用户密码,这个才是该账号的真正的密码,不过这个密码已经加密过了,但是有些黑客还是能够解密的。所以为了安全,该文件属性设置为600,只允许root读写。
最近更动密码的日期 这个数字是这样计算得来的,距离1970年1月1日到上次更改密码的日期,例如上次更改密码的日期为2012年1月1日,则这个值就是365*(2012-1970)+1=15331。 也可以使用
[root@centos-chuan ~]# echo $(($(date --date="2016/01/14" +%s)/86400+1))
16814
多少天才可以更改密码:(与第 3 字段相比) 第四个字段记录了:这个账号的密码在最近一次被更改后需要经过几天才可以再被变更!如果是 0 的话, 表示密码随时可以更动的意思。
密码多少天后过期:(与第 3 字段相比) 即在多少天内必须更改密码,例如这里设置成30,则30天内必须更改一次密码,否则将不能登录系统,默认是99999,可以理解为永远不需要改。
密码需要变更期限前的警告天数:(与第 5 字段相比) 密码到期前的警告期限,若这个值设置成7,则表示当7天后密码过期时,系统就发出警告告诉用户,提醒用户他的密码将在7天后到期。
密码过期后的账号宽限时间(密码失效日):(与第 5 字段相比) : 密码有效日期为『更新日期(第3字段)』+『重新变更日期(第5字段)』,过了该期限后用户依旧 没有更新密码,那该密码就算过期了。 虽然密码过期但是该账号还是可以用来进行其他工作的, 包括登入系统取得 bash 。不过如果密码过期了, 那当你登入系统时,系统会强制要求你必须要 重新设定密码才能登入继续使用,这就是密码的过期性。
那这个字段的功能是什么呢?是在密码过期几天后,如果使用者如果还没有登录更改密码,那么这 个账号的密码将会『失效』, 亦即该账号再也无法使用该密码登录了。
要注意密码过期与密码失效并不相同。
账号失效期限。你可以这样理解,如果设置这个值为3,则表示:密码已经到期,然而用户并没有在到期前修改密码,那么再过3天,则这个账号就失效了,即锁定了。
- 账号的生命周期, 跟第三段一样,是按距离1970年1月1日多少天算的。它表示的含义是,账号在这个日期前可以使用,到期后账号作废。
- 保留 最后一个字段是保留的,看以后有没有新功能加入。
某些情况底下你得要使用一些方法来更改这个档案,举例来说,『我的密 码忘记了』, 或者是『我的密码不晓得被谁改过,跟原先的不一样了』,这个时候怎么办?
一般用户的密码忘记了: 这个最容易解决,请系统管理员帮忙, 他会重新设定好你的密码而不需 要知道你的旧密码!利用 root 的身份使用 passwd 指令来处理即可。
root 密码忘记了: 这就麻烦了,
重新启动进入单人维护模式后,系统会主动的给予 root 权限的 bash 接口, 此时再以 passwd 修改密码即可;
或以 Live CD 开机后挂载根目录去修改 /etc/shadow
,将里面的 root 的密码字段清空, 再重新启动后 root 将不用 passwd 指令去设 定 root 密码即可。