/etc/shadow字段详解

1)/etc/shadow 概说;

/etc/shadow文件是/etc/passwd 的影子文件,这个文件并不禁/etc/passwd 而产生的,这两个文件是应该是对应互补的;shadow内容包括用户及被加密的密码以及其它/etc/passwd 不能包括的信息,好比用户的有效期限等;这个文件只有root权限能够读取和操做,权限以下:
-r-------- 1 root root 1.5K 10月 16 09:49 /etc/shadow
/etc/shadow 的权限不能随便改成其它用户可读,这样作是危险的。若是您发现这个文件的权限变成了其它用户组或用户可读了,要进行检查,以防系统安全问题的发生;
若是咱们以普通用户查看这个文件时,应该什么也查看不到,提示是权限不够:
[beinan@localhost ~]$ more /etc/shadow
/etc/shadow: 权限不够

2)/etc/shadow 的内容分析;
/etc/shadow 文件的内容包括9个段位,每一个段位之间用:号分割;咱们以以下的例子说明;
beinan:$1$VE.Mq2Xf$2c9Qi7EQ9JP8GKF8gH7PB1:13072:0:99999:7:::
linuxsir:$1$IPDvUhXP$8R6J/VtPXvLyXxhLWPrnt/:13072:0:99999:7::13108:
第一字段:用户名(也被称为登陆名),在/etc/shadow中,用户名和/etc/passwd 是相同的,这样就把passwd 和shadow中用的用户记录联系在一块儿;这个字段是非空的;
第二字段:密码(已被加密),若是是有些用户在这段是x,表示这个用户不能登陆到系统;这个字段是非空的;
第三字段:上次修改口令的时间;这个时间是从1970年01月01日算起到最近一次修改口令的时间间隔(天数),您能够经过passwd 来修改用户的密码,而后查看/etc/shadow中此字段的变化;
第四字段:两次修改口令间隔最少的天数;若是设置为0,则禁用此功能;也就是说用户必须通过多少天才能修改其口令;此项功能用处不是太大;默认值是经过/etc/login.defs文件定义中获取,PASS_MIN_DAYS 中有定义;
第五字段:两次修改口令间隔最多的天数;这个能加强管理员管理用户口令的时效性,应该说在加强了系统的安全性;若是是系统默认值,是在添加用户时由/etc/login.defs文件定义中获取,在PASS_MAX_DAYS 中定义;
第六字段:提早多少天警告用户口令将过时;当用户登陆系统后,系统登陆程序提醒用户口令将要做废;若是是系统默认值,是在添加用户时由/etc/login.defs文件定义中获取,在PASS_WARN_AGE 中定义;
第七字段:在口令过时以后多少天禁用此用户;此字段表示用户口令做废多少天后,系统会禁用此用户,也就是说系统会不能再让此用户登陆,也不会提示用户过时,是彻底禁用;
第八字段:用户过时日期;此字段指定了用户做废的天数(从1970年的1月1日开始的天数),若是这个字段的值为空,账号永久可用;
第九字段:保留字段,目前为空,以备未来Linux发展之用;
若是更为详细的,请用 man shadow来查看帮助,您会获得更为详尽的资料;

再根据实例分析:

beinan:$1$VE.Mq2Xf$2c9Qi7EQ9JP8GKF8gH7PB1:13072:0:99999:7:::
linuxsir:$1$IPDvUhXP$8R6J/VtPXvLyXxhLWPrnt/:13072:0:99999:7::13108:
第一字段:用户名(也被称之为登陆名),在例子中有峡谷两条记录,也表示有两个用户beinan和linuxsir
第二字段:被加密的密码,若是有的用户在此字段中是x,表示这个用户不能登陆系统,也能够看做是虚拟用户,不过虚拟用户和真实用户都是相对的,系统管理员随时能够对任何用户操做;
第三字段:表示上次更改口令的天数(距1970年01月01日),上面的例子能说明beinan和linuxsir这两个用户,是在同一天更改了用户密码,固然是经过passwd 命令来更改的,更改密码的时间距1970年01月01日的天数为13072;
第四字段:禁用两次口令修改之间最小天数的功能,设置为0
第五字段:两次修改口令间隔最多的天数,在例子中都是99999天;这个值若是在添加用户时没有指定的话,是经过/etc/login.defs来获取默认值,PASS_MAX_DAYS 99999;您能够查看/etc/login.defs来查看,具体的值;
第六字段:提早多少天警告用户口令将过时;当用户登陆系统后,系统登陆程序提醒用户口令将要做废;若是是系统默认值,是在添加用户时由/etc/login.defs文件定义中获取,在PASS_WARN_AGE 中定义;在例子中的值是7 ,表示在用户口令将过时的前7天警告用户更改期口令;
第七字段:在口令过时以后多少天禁用此用户;此字段表示用户口令做废多少天后,系统会禁用此用户,也就是说系统会不能再让此用户登陆,也不会提示用户过时,是彻底禁用;在例子中,此字段两个用户的都是空的,表示禁用这个功能;
第八字段:用户过时日期;此字段指定了用户做废的天数(从1970年的1月1日开始的天数),若是这个字段的值为空,账号永久可用;在例子中,咱们看到beinan这个用户在此字段是空的,表示此用户永久可用;而linuxsir这个用户表示在距1970年01月01往后13108天后过时,算起来也就是2005年11月21号过时;哈哈,若是有兴趣的的弟兄,本身来算算,大致仍是差很少的;);