linux-详细解析密码文件passwd与shadow

输入命令:head -n 4 /etc/passwd

输出:

root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/bin/sh
bin:x:2:2:bin:/bin:/bin/sh
sys:x:3:3:sys:/dev:/bin/sh

以:隔开,相应的字段含义如下:

用户名: 密码 : uid  : gid :用户描述:家目录:登陆shell

其中密码都加了密,并存放在/etc/shadow文件中了。

head -n 4 /etc/shadow | sed 4a$(tail -1 /etc/shadow) #需要root权限,取前4行及最后一行

root:$6$v3gjfoY7$oKrVCSFnLQFiUlEbEdZn.t9PVZ0NgSV/6AmfarNrZp8BkWdIzYi1lb0fwQtb73/mo83z9jem2OSJLX6EU3EmR/:15847:0:99999:7:::
daemon:*:14728:0:99999:7:::
bin:*:14728:0:99999:7:::
sys:*:14728:0:99999:7:::
rose:$6$tDmg2PPz$7a.qIV9dToZtTomvLnQitMWEGNLDW1ZjMQmadjE5iXeNGsUrTy4q5UEP8UVBAzqFcKOlSScBRwg0/wkks15dq/:15848:0:7:7:15849:15851:

各字段的含义如下:

登录名:加密口令:最后一次修改时间:密码保留最短时间:密码过期的时间:密码过期前警告的天数:过期后的宽限天数:帐号失效时间:保留字段
1)“登录名”是与/etc/passwd文件中的登录名相一致的用户账号
2)“口令”字段存放的是加密后的用户口令字,如果为空,则对应用户没有口令,登录时不需要口令;如果含有不属于集合{./0-9A-Za-z}中的字符,则对应的用户不能登录。
3)“最后一次修改时间”以从某个时刻起,到用户最后一次修改口令时的天数来表示。时间起点对不同的系统可能不一样。例如在SCOLinux中,这个时间起点是1970年1月1日。
4)“密码保留最短天数” :在这几天内不得需要密码,若为0表示随时可以修改。
5)“密码过期天数” :从上次修改密码的日期算起,过了x天后,密码就过期了,注意过期不一定就不能登录了,还要看第七个属性判断。
6)“密码过期前警告的天数” :密码过期前x天都会提示你修改密码。
7)“过期后的宽限天数” 密码过期那天算起,在x天内还可以登录,但系统强制你修改密码,如果为0,密码一旦过期了就直接失效,不能再登录了。
8)“帐号过期时间” 过了这时间后,帐号被禁用。以1970-01-01以日期到结束日期的天数来表示。

具体含义及修改命令如下表:

    含义   相应修改命令 备注
 1  登录名        
 2  加密口令     passwd  
 3  最后一次修改时间 Last password change --lastday chage -d 2013-05-25 userName 也可用从1970-01-01算起的天数表示
如chage -d 15845 userName
 4  密码保留最短天数 Minimum number of days between password change --mindays chage -m 2  
 5  密码过期天数 Maximum number of days between password change --maxdays chage -M 10  
 6  密码失效前警告的天数 Number of days of warning before password expires --warndays chage -W 7  
 7  过期后的宽限天数 set password inactive after expiration to INACTIVE --inactive chage -I 5  
 8  帐号过期时间 Account expires --expiredate chage -E 2013-06-10 userName 也可用从1970-01-01算起的天数表示
 9 保留字段   - -  

chage -l 可以列出帐户的过期信息



你可能感兴趣的:(Unix/linux)