当前位置:首页>Linux>Linux基础 | 你的密码真的安全吗?深入解析 /etc/passwd 与 /etc/shadow

Linux基础 | 你的密码真的安全吗?深入解析 /etc/passwd 与 /etc/shadow

  • 2026-09-08 08:34:20
Linux基础 | 你的密码真的安全吗?深入解析 /etc/passwd 与 /etc/shadow

截至今日,已经发表了60多篇Linux基础命令相关的文章,可在历史文章列表里查看!创作不易,希望大家点个关注和❤️支持一下,以防失去这个多才多艺的博主!废话不多说,开始今天的内容!

很多人刚接触 Linux 时都会有一个疑问:

为什么 /etc/passwd 文件所有人都能读?

密码真的存在这个文件里吗?

Linux 是如何保证账户安全的?

如果你做过服务器运维或权限管理,那么/etc/passwd与/etc/shadow是必须理解的核心文件。

今天这篇文章,我们就系统讲清它们的结构、作用以及安全机制。

一、Linux 用户信息存在哪里?

在 Linux 系统中,用户相关信息主要存放在两个文件中:

/etc/passwd

/etc/shadow

它们分工明确:

文件
作用
passwd
存储用户基本信息
shadow
存储加密后的密码信息

二、/etc/passwd 文件解析

查看文件内容:

cat /etc/passwd

示例:

root:x:0:0:root:/root:/bin/bashtest:x:1001:1001::/home/test:/bin/bash

每一行代表一个用户,字段以“:”分隔,共 7 个字段:

用户名:密码占位符:UID:GID:描述:家目录:登录Shell

关键点来了:密码字段显示的是 x,而不是实际密码。

这意味着真正的密码信息并不在这里。

三、/etc/shadow 文件解析

查看 shadow 文件:

sudo cat /etc/shadow

示例:

root:$6$abc123...:19000:0:99999:7:::

字段含义如下:

用户名:加密密码:最后修改日期:最小间隔:最大有效期:警告期:不活动期:过期时间:保留

重点关注第二个字段:

$6$abc123...

这是一段加密后的密码字符串。

其中:

  • $6$ 表示使用 SHA-512 加密

  • 后面是盐值和哈希值

这就是 Linux 存储密码的核心方式。

四、为什么要分成两个文件?

早期 Unix 系统中,密码直接存在 passwd 文件中。

但问题是:/etc/passwd 必须对所有用户可读,否则很多程序无法正常运行。如果密码也放在这里,就存在安全风险。

因此引入了 shadow 文件:

  • passwd 公开基础信息

  • shadow 仅 root 可读

查看权限:

ls -l /etc/passwdls -l /etc/shadow

你会看到:

  • passwd:所有用户可读

  • shadow:只有 root 可读

这就是权限分离机制。

五、一个实战场景

1️⃣ 新建用户

useradd testuserpasswd testuser

设置密码后,可以查看:

grep testuser /etc/passwdgrep testuser /etc/shadow

你会发现:

  • passwd 只记录账号信息

  • shadow 中出现加密密码

六、账户锁定机制

如果 shadow 中密码字段变成:

!$6$abc...

说明该账户被锁定。

可以使用:

passwd -l 用户名

进行锁定。

这在安全管理中非常重要。

七、常见误区

❌ 认为密码存储在 passwd 文件❌ 误删 shadow 导致系统异常❌ 不理解 UID 的权限含义

核心理解应该是:Linux 通过“文件权限 + 加密算法”双重保障账户安全。

八、总结

关于 passwd 与 shadow,你至少要掌握:

  1. passwd 存基本信息

  2. shadow 存加密密码

  3. shadow 仅 root 可读

  4. 密码使用 SHA-512 等算法加密

在 Linux 安全体系中,这两个文件是:用户认证机制的基础。

如果你正在学习Linux运维或安全方向,这部分内容一定要彻底理解。

如果这篇文章对你有帮助,欢迎点赞、收藏、转发,我们下篇继续聊 Linux基础。

最新文章

随机文章