加密密码的文件,听上去似乎可以做点什么,然而实际上啥都做不了,一个鸡肋啊。
文件样例
1 | myths@myths-X450LD:/home$ sudo cat /etc/shadow |
这是我的电脑上的文件,总体上和之前的文件一样,格式如下:
1 | 登录名:加密口令:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:标志 |
文件简析
登录名
是与/etc/passwd文件中的登录名相一致的用户账号。
口令
字段存放的是加密后的用户口令,长度为13个字符。如果为空,则对应用户没有口令,登录时不需要口令;如果含有不属于集合{./0-9A-Za-z}中的字符,则对应的用户不能登录。
一般存放的字符串就是加密过的密码文件。就是实际密码经过hash算法后的值。开头的数表示他用的是哪一种hash(可以在 man crypt 中查看到):
- 以$6$开头的,表明是用SHA-512加密的;
- 以$1$开头的,表明是用MD5加密的;
- 以$2$开头的,表明是用Blowfish加密的;
- 以$5$开头的,表明是用 SHA-256加密的。星号代表帐号被锁定;
如果是”*”或者”!”开头,则表示一般不能在Unix登陆。(呃。。不太清楚是啥意思)
最后一次修改时间
表示的是从某个时刻起,到用户最后一次修改口令时的天数。时间起点对不同的系统可能不一样。一般这个时间起点是1970年1月1日。
密码不可被更动的天数
第四个栏位记录了这个帐号的密码需要经过几天才可以被变更!如果是 0 的话, 表示密码随时可以更动的意思。这的限制是为了怕密码被某些人一改再改而设计的!(没啥大用)
密码需要重新变更的天数
由于害怕密码被某些‘有心人士’窃取而危害到整个系统的安全,所以有了这个栏位的设计。 你必须要在这个时间之内重新设定你的密码,否则这个帐号将会暂时失效。 而如果像上面的 99999 的话,那就表示,啊哈,密码永远不需要重新输入啦! (无聊的设定)
密码需要变更期限前的警告期限
当帐号的密码失效期限快要到的时候, 就是上面那个‘必须变更密码’的那个时间时, 系统会依据这个栏位的设定,发出‘警告’言论给这个帐号,提醒他‘再过 n 天你的密码就要失效了,请尽快重新设定你的密码呦!’,如上面的例子,则是密码到期之前的 7 天之内,系统会警告该用户。
密码过期的恕限时间
如果用户过了警告期限没有重新输入密码, 使得密码失效了,也就是说,你在‘必须变更密码的期限前,并没有变更你的密码!’ 那么该组密码就称为‘失效的密码’啰~怎么办?没关系,还有这个栏位的天数设计啊~ 意思就是说,当密码失效后,你还可以用这个密码在 n 天内进行登入的意思。 而如果在这个天数后还是没有变更密码,那么恭喜您的帐号已经失效了!
帐号失效日期
这个日期跟第三个栏位一样,都是使用 1970 年以来的总日数设定。这个栏位表示: 这个帐号在此栏位规定的日期之后,将无法再使用。 这个栏位会被使用通常应该是在‘收费服务’的系统中, 你可以规定一个日期让该帐号不能再使用啦!(坑)
保留
最后一个栏位是保留的,看以后有没有新功能加入。