截至今日,已经发表了60多篇Linux基础命令相关的文章,可在历史文章列表里查看!创作不易,希望大家点个关注和❤️支持一下,以防失去这个多才多艺的博主!废话不多说,开始今天的内容!
很多人刚接触 Linux 时都会有一个疑问:
为什么 /etc/passwd 文件所有人都能读?
密码真的存在这个文件里吗?
Linux 是如何保证账户安全的?
如果你做过服务器运维或权限管理,那么/etc/passwd与/etc/shadow是必须理解的核心文件。
今天这篇文章,我们就系统讲清它们的结构、作用以及安全机制。
一、Linux 用户信息存在哪里?
在 Linux 系统中,用户相关信息主要存放在两个文件中:
它们分工明确:
二、/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 文件:
示例:
root:$6$abc123...:19000:0:99999:7:::
字段含义如下:
用户名:加密密码:最后修改日期:最小间隔:最大有效期:警告期:不活动期:过期时间:保留
重点关注第二个字段:
这是一段加密后的密码字符串。
其中:
$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 中密码字段变成:
说明该账户被锁定。
可以使用:
这在安全管理中非常重要。
七、常见误区
❌ 认为密码存储在 passwd 文件❌ 误删 shadow 导致系统异常❌ 不理解 UID 的权限含义
核心理解应该是:Linux 通过“文件权限 + 加密算法”双重保障账户安全。
八、总结
关于 passwd 与 shadow,你至少要掌握:
passwd 存基本信息
shadow 存加密密码
shadow 仅 root 可读
密码使用 SHA-512 等算法加密
在 Linux 安全体系中,这两个文件是:用户认证机制的基础。
如果你正在学习Linux运维或安全方向,这部分内容一定要彻底理解。
如果这篇文章对你有帮助,欢迎点赞、收藏、转发,我们下篇继续聊 Linux基础。