在linux系统里,/etc/shadow文件用于存储用户的密码数据,且存储的密码数据是通过加密算法加密后的字符串,不是明文密码。通过ls -ll /etc/shadow命令(如图1)可以知道,该文件只有root用户才能进行修改。
图1
使用cat命令查看该文件的内容(如图2),发现每行都有一组信息,信息里用:分隔符分隔成了九个字段信息,接下来,简单说明下第一行即root用户的相关字段表示的含义。
图2
字段含义字段1:表示用户,如root用户。
字段2:表示加密密码,该字段的信息里,又用$分隔符分隔成了三组信息 ($id$salt$encrypted) ,其中,每组信息的含义如下:
信息1(id):表示加密算法的标识符,如图2的$6表示使用SHA-512加密算法,还有$1表示使用MD5加密算法,$2a、$2b、$2y表示使用Blowfish加密算法,$5表示使用SHA-256加密算法。
信息2(salt):表示用于增加密码散列复杂性的随机字节序列,即增加密码加密复杂性。
信息3(encrypted):密码通过加密算法加密后的字符串数据。
字段3:表示最后一次更改密码的时间,用整数表示,该值表示从1970年1月1日开始到密码修改日期的天数。
字段4:表示用户最少要经过的天数,才可以修改密码。
字段5:表示用户最多经过的天数,就需要修改密码。
字段6:表示密码过期前多少天,要通知用户。
字段7:表示密码到期后的一定时间内,用户将被禁用。
字段8:表示账户的到期时间。
字段9:保留字段,方便以后扩展使用。