/etc/shadow文件是/etc/passwd的影子文件,二者之中的记录行是一一对应的。这个文件并不
由/etc/passwd而产生的,而是由pwconv命令根据/etc/passwd文件中的数据字段生成。这两个文件
是应该是对应互补的
shadow内容包括用户及被加密的密码以及其它/etc/passwd不能包括的信息,比如用户的有效
期限等;
这个文件只有root权限可以读取和操作,权限如下:/etc/shadow的权限不能随便改为其它用
户可读,这样做是危险的。如果你发现这个文件的权限变成了其它用户组或用户可读了,要进行检
查,以防系统安全问题的发生;如果我们以普通用户查看这个文件时,应该什么也查看不到,提示
是权限不够。
/etc/shadow中的内容,同样也以“:”进行分割,共分为9个字段。
使用cat /etc/shadow命令查看:
第一字段:用户名
在/etc/shadow中,用户名和/etc/passwd是相同的,这样就把passwd和shadow中用的用户记
录联系在一起;这个字段是非空的;必须保证与/etc/passwd完全相同。
第二字段:密码(已被加密)
这个字段内的数据才是真正的密码,而且是经过编码的密码 (加密)。你只会看到有一些特殊
符号的字母。需要特别留意的是,虽然这些加密过的密码很难被解出来, 但是很难不等于不会,
所以,这个文件的预设权限是『-rw-------』或者是『----------』,亦即只有 root 才可以读写。
很多软件透过这个功能,在此字段前加上 ! 或 * 改变密码字段长度,就会让密码暂时失效了。
第三字段:上次修改口令的时间
表示的是从某个时刻起,到用户最后一次修改口令时的天数。时间起点对不同的系统可能不
一样。Rathadlinux中这个时间是从1970年01月01日算起到最近一次修改口令的时间间隔(天
数),您可以通过passwd来修改用户的密码,然后查看/etc/shadow中此字段的变化。
第四字段:两次修改口令间隔最少的天数
或者叫做密码不可变更的时间。如果设置为0,则禁用此功能,也就是可以随时修改密码。如
果非0也就是说用户必须经过多少天才能修改其口令;此项功能用处不是太大;默认值是通
过/etc/login.defs文件定义中获取,PASS_MIN_DAYS中有定义。
第五字段:两次修改口令间隔最多的天数
或者叫做密码需要重新更改的天数,指的是相对于第三个字段,这个能增强管理员管理用户
口令的时效性,应该说在增强了系统的安全性;如果是系统默认值,是在添加用户时
由/etc/login.defs文件定义中获取,在PASS_MAX_DAYS中定义。
99999(计算为 273 年),表示密码的变更没有强制性。
第六字段:提前多少天警告用户口令将过期
密码需要更改期限前的警告天数,是指相对于第五个字段。当用户登录系统后,系统登录程序提醒用户口令将要作废;如果是系统默认值,是在添加用户时由/etc/login.defs文件定义中获取,在PASS_WARN_AGE中定义。
第七字段:密码过期后的账号宽限时间
在口令过期之后多少天禁用此用户,是相对于第五个字段来说的。此字段表示用户口令作废多少天后,系统会禁用此用户,也就是说系统会不能再让此用户登录,也不会提示用户过期,是完全禁用。
第八字段:用户过期日期
第九字段:保留字段
实例:
说明:fairy账户的密码已经加密;上次修改密码的时间为19168(与1970年1月1日间隔);0代表可以随时修改密码;99999代表密码永不过期,可能有的读者会有疑问,为什么99999代表永久呢,其实算一下应该清楚大约273年,其实对于我们人来说,这就是永久有效的意思了;提前警告时间为7天,也就是在密码过期前的7天给予提示,当然这里看不到提示,因为密码永久有效。