前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Linux中shadow文件详解

Linux中shadow文件详解

作者头像
mythsman
发布2022-11-14 15:06:42
2.5K0
发布2022-11-14 15:06:42
举报

加密密码的文件,听上去似乎可以做点什么,然而实际上啥都做不了,一个鸡肋啊。

文件样例

代码语言:javascript
复制
myths@myths-X450LD:/home$ sudo cat /etc/shadow
root:!:16618:0:99999:7:::
daemon:*:16484:0:99999:7:::
bin:*:16484:0:99999:7:::
sys:*:16484:0:99999:7:::
sync:*:16484:0:99999:7:::
games:*:16484:0:99999:7:::
man:*:16484:0:99999:7:::
lp:*:16484:0:99999:7:::
mail:*:16484:0:99999:7:::
news:*:16484:0:99999:7:::
uucp:*:16484:0:99999:7:::
proxy:*:16484:0:99999:7:::
www-data:*:16484:0:99999:7:::
backup:*:16484:0:99999:7:::
list:*:16484:0:99999:7:::
irc:*:16484:0:99999:7:::
gnats:*:16484:0:99999:7:::
nobody:*:16484:0:99999:7:::
libuuid:!:16484:0:99999:7:::
syslog:*:16484:0:99999:7:::
messagebus:*:16484:0:99999:7:::
usbmux:*:16484:0:99999:7:::
dnsmasq:*:16484:0:99999:7:::
avahi-autoipd:*:16484:0:99999:7:::
kernoops:*:16484:0:99999:7:::
rtkit:*:16484:0:99999:7:::
saned:*:16484:0:99999:7:::
whoopsie:*:16484:0:99999:7:::
speech-dispatcher:!:16484:0:99999:7:::
avahi:*:16484:0:99999:7:::
lightdm:*:16484:0:99999:7:::
colord:*:16484:0:99999:7:::
hplip:*:16484:0:99999:7:::
pulse:*:16484:0:99999:7:::
myths:$6$GfWTYGIz$LmomqbhIzJbxA0arFMTs7r/JmIcZS8dyK1V4X/BilYTbqJecLYJWLTFTUoWcPKTF6iPH.kbj2ZDzSbb5d.PUE1:16618:0:99999:7:::
ftp:*:16708:0:99999:7:::
postfix:*:16709:0:99999:7:::
smmta:*:16709:0:99999:7:::
smmsp:*:16709:0:99999:7:::
guest-g1Jo1T:*:16711:0:99999:7:::

这是我的电脑上的文件,总体上和之前的文件一样,格式如下:

代码语言:javascript
复制
登录名:加密口令:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:标志

文件简析

登录名

是与/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 年以来的总日数设定。这个栏位表示: 这个帐号在此栏位规定的日期之后,将无法再使用。 这个栏位会被使用通常应该是在‘收费服务’的系统中, 你可以规定一个日期让该帐号不能再使用啦!(坑)

保留

最后一个栏位是保留的,看以后有没有新功能加入。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 文件样例
  • 文件简析
    • 登录名
      • 口令
        • 最后一次修改时间
          • 密码不可被更动的天数
            • 密码需要重新变更的天数
              • 密码需要变更期限前的警告期限
                • 密码过期的恕限时间
                  • 帐号失效日期
                    • 保留
                    领券
                    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档