当前位置: 首页 > news >正文

标题:Linux 系统中的“保险库管理员”:深入浅出理解 /etc/shadow 文件

目录

为什么需要 /etc/shadow?它的“前任”是谁?

揭开“保险库”的真面目:文件内容详解

重要提醒:如何正确修改这个文件?

总结


大家好!今天我们来聊一聊 Linux 系统里一个非常关键,但又常常被忽略的文件——/etc/shadow。你可以把它想象成系统的 “保险库管理员” 或者 “密码账本”,它专门负责保管所有用户(包括超级管理员 root)的密码信息。

对于新手朋友来说,理解它不仅能让你更了解 Linux 是如何工作的,还能在日后进行用户管理时,更加得心应手。

为什么需要 /etc/shadow?它的“前任”是谁?

在很久以前的 Unix 系统里,所有用户的基本信息(如用户名、用户ID等)和加密后的密码,都存放在同一个文件里,这个文件就是 /etc/passwd

这带来了一个巨大的安全问题:因为很多系统程序(比如列出用户)需要读取 /etc/passwd 文件,所以它必须是全局可读的。这意味着任何人都能看到那个加密过的密码字符串。虽然密码是加密的,但坏人可以通过“彩虹表”等工具进行暴力破解,风险很高。

于是,为了解决这个问题,/etc/shadow 应运而生!它的设计非常巧妙:

  • 分工明确/etc/passwd 只存放用户的基本账户信息(谁可以登录)。

  • 集中保护/etc/shadow 专门存放敏感的密码信息

最重要的是,/etc/shadow 文件默认只有超级管理员 root 才有权限读取。这样一来,就把用户的密码锁进了一个只有管理员才能进入的“保险库”,大大提升了系统的安全性。


揭开“保险库”的真面目:文件内容详解

让我们先看看 /etc/shadow 文件里的一行长什么样子。通常,每一行都代表一个用户的密码信息,格式如下:

text

root:$6$xyz...abc:19678:0:99999:7:::
alice:$6$def...ghi:19680:7:60:10:30::

是不是看起来像一串天书?别担心,我们把它拆解开。每一行都用冒号 : 分隔成 9 个字段,就像表格一样。我们以 alice 用户为例:

alice : $6$def...ghi : 19680 : 7 : 60 : 10 : 30 :  : 

字段序号字段名示例值详细解释(小白友好版)
1用户名alice这就是用户的账号名,和 /etc/passwd 里的名字一一对应。
2加密后的密码$6$def...ghi这是核心机密!它不是明文密码,而是经过加密算法处理后的“密码指纹”。
· 开头的 $6$ 表示使用的是 SHA-512 加密算法,这是目前最安全的。
· 如果这个字段是 * 或 !,则表示这个账户被锁定,无法用密码登录。
3最后修改密码的日期19680这个数字表示密码最后一次被修改的时间。但它不是我们常见的日期,而是从 1970年1月1日 开始计算的天数(这个日期在计算机界被称为“纪元”)。所以 19680 天,大概是 54 年左右。
4密码不可更改的天数7密码修改后,必须等待 7 天 才能再次修改。这可以防止用户频繁改密码后又马上改回去。如果为 0,则表示随时可以修改。
5密码必须更改的天数60密码的最长有效期为 60 天。60 天后,系统会强制用户修改密码。
6密码过期前的警告期10在密码即将过期(第60天)之前的 10 天 里,用户登录时会收到“您的密码即将过期”的警告。
7密码过期后的宽限期30如果密码已经过期(过了第60天),用户还有 30 天 的“宽限期”。在这期间,用户登录时会被强制要求修改密码,但账户仍然可以登录。宽限期过后,账户将被完全锁定。
8账户失效日期(示例中为空)和第三个字段一样,用从1970年算起的天数表示一个绝对的账户过期日期。过了这个日期,账户就无法使用了。通常为空,表示永不过期。
9保留字段这个字段目前没有使用,是为未来可能的新功能保留的。

重要提醒:如何正确修改这个文件?

警告:绝对不要直接用文本编辑器(如 vim, nano)去修改 /etc/shadow 文件! 手动修改非常容易出错,一个多余的冒号或空格就可能导致用户无法登录,甚至系统崩溃。

正确的做法是使用系统提供的专用命令:

  • 修改密码:使用 passwd [用户名] 命令。

    sudo passwd alice  # 为 alice 修改密码
  • 修改密码策略:使用 chage 命令。

    sudo chage -M 90 alice  # 将 alice 的密码有效期改为90天
    sudo chage -l alice     # 查看 alice 的密码策略详情

这些命令会帮我们安全、正确地更新 /etc/shadow 文件,避免人为错误。

总结

  • /etc/shadow 是 Linux 系统的密码保险库,安全性极高。

  • 它用 9个字段 来精细地管理用户的密码生命周期,包括加密密码、有效期、警告期等。

  • 永远使用 passwd 和 chage 命令来管理它,而不是手动编辑。

注:在后续我会发表关于chage命令(个性化定制密码时间)的使用和/etc/login.defs配置文件(初始化限制密码时间)的作用相关博客

http://www.dtcms.com/a/485860.html

相关文章:

  • CSS3》》 transform、transition、translate、animation 区别
  • HTML实现流星雨
  • JavaWeb-html、css-网页正文制作
  • GaussDB 分布式下, 报错concurrent update under Stream mode is not yet support
  • 服务器连接百度网盘并下载文件
  • 云计算实验3——CentOS中storm的安装
  • 一次被“动画关闭”启发的思考:Animate.css 与 prefers-reduced-motion 的无障碍设计
  • 《突破同质化:太空殖民地NPC行为差异化的底层架构》
  • 做网站ppt常见c2c网站有哪些
  • 专业手机网站建设价格明细表wordpress xiu 5.6
  • CSS 组合选择符详解
  • css:`target-before and :target-after 和 scroll-target-group`
  • 项目中执行SQL报错oracle.jdbc.OracleDatabaseException: ORA-00942: 表或视图不存在
  • 上门养老小程序源码 uniapp PHP MySQL
  • 供应链数据分析:Excel+Power BI双引擎打造智能供应链
  • 从零开始部署 GitLab CE 18.4.2:Docker Compose 新手教程
  • 高并发内存池日志
  • 使用PyTorch实现自定义损失函数以FocalLoss为例的详细教程
  • 《彻底理解C语言指针全攻略(4)--数组与指针的关系专题(下)》
  • app模板网站网站的源代码有什么用
  • Vue3的Pinia状态管理库【8】
  • 网站建设后台做网站难
  • 禅城区响应式网站怎么做企业网站推广
  • K8S(九)—— Kubernetes持久化存储深度解析:从Volume到PV/PVC与动态存储
  • 【课堂笔记】概率论-1
  • Java 大视界 -- Java 大数据在智能金融区块链跨境支付与结算中的应用
  • 面试_项目问题_RPC调用异常
  • 金融分析师核心能力构建:从数据解读到战略洞察
  • 【八股笔记】SSM
  • Selenium WebDriver自动化测试(框架篇)--数据驱动测试