管理用户密码
影子密码和密码策略加密的密码最初存储在全局可读的/etc/passwd文件中。这些密码曾被认为是妥善的直到对加密密码的字典式攻击变得常见。加密后的哈希密码已移至/etc/shadow文件只有 root 用户可以读取该文件。与/etc/passwd文件一样每个用户在/etc/shadow文件中都有一个条目。/etc/shadow文件中的示例条目具有九个以冒号分隔的字段[roothost ~]# cat /etc/shadow ...output omitted... user03:$6$CSsXsd3rwghsdfarf:17933:0:99999:7:2:18113:此代码块的每个字段用冒号分隔user03用户帐户的名称。$6$CSsXsd3rwghsdfarf用户的加密哈希密码。17933上次更改密码时间距离纪元的天数其中纪元是 UTC 时区的 1970-01-01。0自上次更改密码以来到用户可再次更改密码之前必须经过的最短天数。99999在密码过期之前不进行密码更改的最长天数。空字段表示密码永不过期。7在用户密码过期前提前多少天警告用户。2自密码过期之日起在帐户自动锁定之前能够无活动的天数。18113密码到期之日距离纪元的天数。空字段表示密码永不过期。最后一个字段通常为空预留给未来使用。加密哈希密码的格式加密哈希密码字段中存储了三段信息所用的哈希算法、salt 及加密哈希值。salt 添加随机数据到加密哈希以创建唯一哈希来增强加密哈希密码。每段信息由美元符号$字符分隔。$6$CSsXcYG1L/4ZfHr/$2W6evvJahUfzfHpc9X.45Jc6H30E6此密码所用的哈希算法。6 表示 SHA-512 哈希这是 RHEL 9 的默认算法1 表示 MD5而 5 则表示 SHA-256。CSsXcYG1L/4ZfHr/用于加密哈希密码的 salt最初是随机选择的。2W6evvJahUfzfHpc9X.45Jc6H30E用户密码的加密哈希将 salt 和纯文本密码组合并加密哈希以生成密码哈希。将 salt 与密码组合的主要原因是为了防止使用预先计算的密码哈希列表的攻击。添加 salt 会改变生成的哈希值使预先计算的列表毫无用处。如果攻击者获得了使用 salt 的/etc/shadow文件的副本则他们需要通过暴力破解来猜测密码这将花费更多的时间和精力。密码验证用户尝试登录时系统在/etc/shadow文件中查询用户的条目将用户的 salt 和键入的纯文本密码组合。然后系统使用指定的哈希算法对 salt 和纯文本密码的组合进行加密哈希。如果结果与加密哈希匹配则用户键入了正确的密码。如果结果与加密哈希不符则用户键入了错误的密码登录尝试也会失败。这种方式允许系统判断用户是否键入了正确的密码同时又不以用于登录的密码形式来存储密码。配置密码期限以下示例演示了使用chage命令更改 sysadmin05 用户的密码策略。该命令定义最短期限 (-m) 为零天最长期限 (-M) 为 90 天警告期 (-W) 为 7 天以及不活动期 (-I) 为 14 天。[roothost ~]# chage -m 0 -M 90 -W 7 -I 14 sysadmin05假设您在红帽服务器上管理用户密码策略。cloudadmin10 用户是系统中的新用户您要设置自定义密码期限策略。您希望将帐户到期时间设置即日起 30 天因此您可以使用以下命令[roothost ~]# date %F ① 2022-03-10 [roothost ~]# date -d 30 days %F ② 2022-04-09 [roothost ~]# chage -E $(date -d 30 days %F) cloudadmin10 ③ [roothost ~]# chage -l cloudadmin10 | grep Account expires ④ Account expires : Apr 09, 2022① 使用 date 命令获取当前的日期。② 使用 date 命令获取即日起 30 天后的日期。③ 使用chage命令-E选项来更改 cloudadmin10 用户的到期日期。④ 使用chage命令-l选项来显示 cloudadmin10 用户的密码期限策略。几天后您在/var/log/secure日志文件中发现 cloudadmin10 用户有一个奇怪的行为。用户尝试使用 sudo 与属于其他用户的文件交互。您怀疑用户可能忘了关闭在另一台计算机上工作时打开的 ssh 会话。您希望 cloudadmin10 用户在下一次登录时更改密码因此您将使用以下命令[roothost ~]# chage -d 0 cloudadmin10下一次 cloudadmin10 用户登录时系统会提示该用户更改密码。[user01host ~]$ date -d 45 days -u Thu May 23 17:01:20 UTC 2019您可以在/etc/login.defs文件中更改默认密码期限配置。PASS_MAX_DAYS和PASS_MIN_DAYS选项分别设置密码的默认最长和最短期限。PASS_WARN_AGE设置密码的默认警告期。默认密码期限策略中的任何更改都会影响更改后创建的用户。现有用户继续使用旧密码期限设置而非新密码设置。

相关新闻