9.10 进阶2:/etc/shadow文件
/etc/shadow文件用于保存用户的口令,当然是使用加密后的形式。shadow文件仅对root用户可读,这是为了保证用户口令的安全性。尽管所有的口令都经过加密,但让任何人都有机会接触这些口令是非常危险的,如果口令不够强的话,完全可以通过暴力破解获取其加密前的形式。关于如何合理地选择和保管口令,参见3.1节。
和/etc/passwd文件类似,/etc/shadow文件的每一行代表一个用户,并以冒号分隔每一个字段。其中,只有用户名和口令字段是要求非空的。一条典型的记录如下:
mike:$1$F60O3P9D$250FhpLPgsJINANs7j93Z0:14166:0:180:7::14974:
以下是各个字段的含义。
q 登录名;
q 加密后的口令;
q 上次修改口令的日期;
q 两次修改口令之间的天数(最少);
q 两次修改口令之间的天数(最多);
q 提前多少天提醒用户修改口令;
q 在口令过期多少天后禁用该账号;
q 账号过期的日期;
q 保留,目前为空。
以mike这个账号为例,mike上次修改其口令是在2008年10月14日,口令必须在180天内再次修改。在口令失效前的7天,mike会接到必须修改口令的警告。该账号将在2010年12月31日过期。
注意到在shadow文件中,绝对日期是从1970年1月1日至今的天数,这个时间很难计算,但总是可以使用usermod命令来设置过期字段(以MM/DD/YY的格式)。下面这条命令设置mike用户的过期日期为2010年12月31日。
$ sudo usermod -e 12/31/2010