Linux 密码都存储在哪里?
在 Linux 系统中,用户密码会使用加密格式安全地存储在专用系统文件和身份验证数据库中。这些凭据在管理访问控制以及确保只有授权用户才能与系统资源交互方面起着关键作用。例如,标准用户密码通常会被哈希并保存到 /etc/shadow 文件中,该文件仅可被特权进程访问。同样,OpenSSH 等服务依赖这些已存储的哈希在远程登录会话期间验证用户身份。
对于像 AvaHost 这样的托管服务提供商来说,了解 Linux 如何以及在哪里存储这些凭据,对于在 VPS 和 dedicated servers 上维护安全环境至关重要。无论你是在为多个客户配置 passwd 策略,还是通过 sshd_config 强制实施安全访问,正确处理密码存储都是防止未经授权访问和保护托管数据的关键。
1. /etc/passwd 文件(用户信息)
/etc/passwd 文件包含所有系统用户的列表,以及基本账户详情。
/etc/passwd 中的示例条目:
username:x:1001:1001:User Name:/home/username:/bin/bash
字段说明:
- username:用户的登录名。
- x:占位符,表示密码存储在单独的文件中。
- 1001:1001:用户 ID(UID)和组 ID(GID)。
- User Name:用户的全名或描述。
- /home/username:用户的主目录。
- /bin/bash:分配给用户的默认 shell。
2. /etc/shadow 文件(加密密码)
Linux 将实际的密码哈希存储在 /etc/shadow 文件中,该文件仅可由 root 用户访问。
/etc/shadow 中的示例条目:
username:$6$abc123$XYZhashedpassword:18528:0:99999:7:::
字段说明:
- $6$:表示加密算法(此处为 SHA-512)。
- abc123:用于对密码进行哈希的 salt。
- XYZhashedpassword:实际的哈希密码。
- 18528:自上次密码更改以来的天数。
- 0:99999:7:密码老化信息(最小和最大密码有效期)。
检查密码哈希算法:
要查看所使用的哈希算法,请运行:
cat /etc/shadow | grep username
3. /etc/group 文件(组信息)
/etc/group 文件包含有关用户组和组成员关系的信息。
/etc/group 中的示例条目:
developers:x:1002:username1,username2
4. /var/lib/AccountsService/ 目录(GUI 用户账户)
某些 Linux 发行版会将 GUI 登录的用户账户偏好设置存储在:
/var/lib/AccountsService/users/
这些文件包含显示名称和会话偏好等元数据,但不存储密码。
5. 密码管理命令
更改用户密码:
passwd username
查看密码老化信息:
chage -l username
强制用户在下次登录时更改密码:
passwd --expire username
6. Linux 如何保护密码
- 哈希和加盐:密码绝不会以明文存储。相反,它们会经过哈希和加盐处理,以防止被直接获取。
- 仅 root 可访问:像 /etc/shadow 这样的文件仅限制 root 访问。
- 可插拔认证模块(PAM):Linux 身份验证由 PAM 管理,它会执行密码安全策略。
结论
Linux 会将用户凭据安全地存储在 /etc/passwd 和 /etc/shadow 等系统文件中,确保加密和受限访问。了解这些存储机制对于系统安全和用户管理至关重要。


