/etc/shadow 文件,用于存储 Linux 系统中用户的密码信息,又称为“影子文件”。 |
前面介绍了 /etc/passwd 文件,因为该文件容许全部用户读取,易致使用户密码泄露,所以 Linux 系统将用户的密码信息从 /etc/passwd 文件中分离出来,并单独放到了此文件中。linux
/etc/shadow 文件只有 root 用户拥有读权限,其余用户没有任何权限,这样就保证了用户密码的安全性。算法
注意,若是这个文件的权限发生了改变,则须要注意是不是恶意***。vim
介绍此文件以前,咱们先打开看看,执行以下命令:安全
[root@localhost ~]#vim /etc/shadow root: $6$9w5Td6lg $bgpsy3olsq9WwWvS5Sst2W3ZiJpuCGDY.4w4MRk3ob/i85fl38RH15wzVoom ff9isV1 PzdcXmixzhnMVhMxbvO:15775:0:99999:7::: bin:*:15513:0:99999:7::: daemon:*:15513:0:99999:7::: …省略部分输出…
同 /etc/passwd 文件同样,文件中每行表明一个用户,一样使用 ":" 做为分隔符,不一样之处在于,每行用户信息被划分为 9 个字段。每一个字段的含义以下:bash
用户名:加密密码:最后一次修改时间:最小修改时间间隔:密码有效期:密码须要变动前的警告天数:密码过时后的宽限时间:帐号失效时间:保留字段服务器
接下来,给你们分别介绍这 9 个字段。ide
用户名加密
同 /etc/passwd 文件的用户名有相同的含义。spa
加密密码设计
这里保存的是真正加密的密码。目前 Linux 的密码采用的是 SHA512 散列加密算法,原来采用的是 MD5 或 DES 加密算法。SHA512 散列加密算法的加密等级更高,也更加安全。
注意,这串密码产生的乱码不能手工修改,若是手工修改,系统将没法识别密码,致使密码失效。不少软件透过这个功能,在密码串前加上 "!"、"*" 或 "x" 使密码暂时失效。
全部伪用户的密码都是 "!!" 或 "*",表明没有密码是不能登陆的。固然,新建立的用户若是不设定密码,那么它的密码项也是 "!!",表明这个用户没有密码,不能登陆。
最后一次修改时间
此字段表示最后一次修改密码的时间,但是,为何 root 用户显示的是 15775 呢?
这是由于,Linux 计算日期的时间是以 1970 年 1 月 1 日做为 1 不断累加获得的时间,到 1971 年 1 月 1 日,则为 366 天。这里显示 15775 天,也就是说,此 root 帐号在 1970 年 1 月 1 日以后的第 15775 天修改的 root 用户密码。
那么,到底 15775 表明的是哪一天呢?可使用以下命令进行换算:
[root@localhost ~]# date -d "1970-01-01 15775 days"
2013年03月11日 星期一 00:00:00 CST
能够看到,经过以上命令,便可将其换算为咱们习惯的系统日期。
最小修改时间间隔
最小修改间隔时间,也就是说,该字段规定了从第 3 字段(最后一次修改密码的日期)起,多长时间以内不能修改密码。若是是 0,则密码能够随时修改;若是是 10,则表明密码修改后 10 天以内不能再次修改密码。
此字段是为了针对某些人频繁更改帐户密码而设计的。
密码有效期
常常变动密码是个好习惯,为了强制要求用户变动密码,这个字段能够指定距离第 3 字段(最后一次更改密码)多长时间内须要再次变动密码,不然该帐户密码进行过时阶段。
该字段的默认值为 99999,也就是 273 年,可认为是永久生效。若是改成 90,则表示密码被修改 90 天以后必须再次修改,不然该用户即将过时。管理服务器时,经过这个字段强制用户按期修改密码。
密码须要变动前的警告天数
与第 5 字段相比较,当帐户密码有效期快到时,系统会发出警告信息给此帐户,提醒用户 "再过 n 天你的密码就要过时了,请尽快从新设置你的密码!"。
该字段的默认值是 7,也就是说,距离密码有效期的第 7 天开始,每次登陆系统都会向该帐户发出 "修改密码" 的警告信息。
密码过时后的宽限天数
也称为“口令失效日”,简单理解就是,在密码过时后,用户若是仍是没有修改密码,则在此字段规定的宽限天数内,用户仍是能够登陆系统的;若是过了宽限天数,系统将再也不让此帐户登录,也不会提示帐户过时,是彻底禁用。
好比说,此字段规定的宽限天数是 10,则表明密码过时 10 天后失效;若是是 0,则表明密码过时后当即失效;若是是 -1,则表明密码永远不会失效。
帐号失效时间
同第 3 个字段同样,使用自 1970 年 1 月 1 日以来的总天数做为帐户的失效时间。该字段表示,帐号在此字段规定的时间以外,不论你的密码是否过时,都将没法使用!
该字段一般被使用在具备收费服务的系统中。
保留
这个字段目前没有使用,等待新功能的加入。
忘记密码怎么办
常常有读者会忘记本身的帐户密码,该怎么处理呢?
对于普通帐户的密码遗失,能够经过 root 帐户解决,它会从新给你配置好指定帐户的密码,而不需知道你原有的密码(利用 root 的身份使用 passwd 命令便可)。
若是 root 帐号的密码遗失,则须要从新启动进入单用户模式,系统会提供 root 权限的 bash 接口,此时能够用 passwd 命令修改帐户密码;也能够经过挂载根目录,修改 /etc/shadow,将帐户的 root 密码清空的方法,此方式可以使用 root 没法密码便可登录,建议登录后使用 passwd 命令配置 root 密码。