/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天给予提示,当然这里看不到提示,因为密码永久有效。

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐