news 2026/8/20 13:18:53

管理用户密码

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
管理用户密码

影子密码和密码策略

加密的密码最初存储在全局可读的/etc/passwd文件中。这些密码曾被认为是妥善的,直到对加密密码的字典式攻击变得常见。加密后的哈希密码已移至/etc/shadow文件,只有 root 用户可以读取该文件。

/etc/passwd文件一样,每个用户在/etc/shadow文件中都有一个条目。/etc/shadow文件中的示例条目具有九个以冒号分隔的字段:

[root@host ~]# 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.45Jc6H30E
  • 6:此密码所用的哈希算法。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 天。

[root@host ~]# chage -m 0 -M 90 -W 7 -I 14 sysadmin05

假设您在红帽服务器上管理用户密码策略。cloudadmin10 用户是系统中的新用户,您要设置自定义密码期限策略。您希望将帐户到期时间设置即日起 30 天,因此您可以使用以下命令:

[root@host ~]# date +%F ① 2022-03-10 [root@host ~]# date -d "+30 days" +%F ② 2022-04-09 [root@host ~]# chage -E $(date -d "+30 days" +%F) cloudadmin10 ③ [root@host ~]# 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 用户在下一次登录时更改密码,因此您将使用以下命令:

[root@host ~]# chage -d 0 cloudadmin10

下一次 cloudadmin10 用户登录时,系统会提示该用户更改密码。

[user01@host ~]$ date -d "+45 days" -u Thu May 23 17:01:20 UTC 2019

您可以在/etc/login.defs文件中更改默认密码期限配置。PASS_MAX_DAYSPASS_MIN_DAYS选项分别设置密码的默认最长和最短期限。PASS_WARN_AGE设置密码的默认警告期。默认密码期限策略中的任何更改都会影响更改后创建的用户。现有用户继续使用旧密码期限设置,而非新密码设置。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/20 13:16:15

可扩展环境:驱动通用AI智能体泛化能力的核心引擎

1. 项目概述:为什么“可扩展环境”是通向通用智能体的必经之路 最近几年,AI领域最让人兴奋也最让人头疼的话题之一,就是“通用智能体”。我们训练出的模型在特定任务上,比如下围棋、打星际争霸,甚至写代码,…

作者头像 李华
网站建设 2026/8/20 13:15:42

资源查找工具实战指南:从原理到稳定运行的完整流程

这类工具最值得先看的不是功能列表,而是能不能在普通环境里稳定跑起来,以及它到底解决了资源查找中的哪些具体痛点。从标题来看,它指向的是资源查找与获取工具。对于普通用户,尤其是需要查找特定学习资料、公开文档或开源软件资源…

作者头像 李华
网站建设 2026/8/20 13:13:34

丰田IT整合:从数据孤岛到统一中台,传统车企数字化转型的破局之路

1. 从“各自为战”到“攥指成拳”:丰田IT整合的战略动因 最近,丰田汽车宣布了一项在内部引起不小震动的决定:将旗下三家信息科技公司进行合并。这可不是简单的部门重组,而是一次面向未来的战略集结。在汽车行业正经历百年未有之大…

作者头像 李华
网站建设 2026/8/20 13:11:32

跨域问题详解:原因 + 9 种跨域解决方案

1. 跨域原因浏览器同源策略,协议、域名、端口任一不同即跨域2. 九种解决方案CORS、JSONP、代理服务器、Nginx 反向代理、node 中间件、postMessage、WebSocket、window.name、iframe 跨域对比各自优缺点、适用场景、面试高频考点

作者头像 李华