Linux用户名及密码存储主要涉及两个核心文件:用户名信息存储于/etc/passwd,包含用户名、UID、家目录、Shell等,普通用户可读;密码加密后存储于/etc/shadow,仅root可访问,包含密码加密串、上次修改时间、有效期等安全策略,系统认证时,服务(如login、sshd)先通过passwd匹配用户名,再调用shadow验证密码加密串是否正确,确保用户身份安全。
在Linux系统中,用户名和密码是系统安全的核心组成部分,其存储位置与系统版本、认证机制密切相关,本文将详细介绍Linux系统中用户名和密码的存储文件,以及相关的安全机制和注意事项。
用户名信息存储:/etc/passwd文件
用户名是Linux系统中标识用户身份的唯一标识,其基本信息(如用户名、UID、GID、家目录、登录Shell等)存储在/etc/passwd文件中,这是Linux系统中最基础的用户配置文件,几乎所有用户(包括普通用户和系统用户)的信息都会被记录在此。
/etc/passwd文件的结构
/etc/passwd是一个文本文件,每行代表一个用户,字段之间用冒号分隔,共7个字段,格式如下:

用户名:密码占位符:UID:GID:用户描述信息:家目录:登录Shell
各字段详解:
- 用户名:用户的登录名称,如
root、ubuntu等,长度通常不超过32字符,且需唯一。 - 密码占位符:早期Linux版本中,此处直接存储加密后的密码;但出于安全考虑,现代Linux系统已将密码信息迁移至
/etc/shadow文件,此处通常为x(表示密码已加密存储在/etc/shadow)或(表示该用户无法通过密码登录,如系统用户)。 - UID(User ID):用户标识符,唯一标识一个用户。
root用户的UID固定为0,系统用户(如bin、daemon)的UID通常小于1000,普通用户的UID默认从1000开始。 - GID(Group ID):用户所属主组的标识符,对应
/etc/group文件中的组名。 - 用户描述信息:对用户的简要说明,如
root、Linux User等,可为空。 - 家目录:用户登录后的默认工作目录,如
root的家目录为/root,普通用户通常为/home/用户名。 - 登录Shell:用户登录后默认执行的Shell程序,如
/bin/bash(Bash Shell)、/bin/sh(默认Shell)、/sbin/nologin(禁止用户登录,常用于系统服务账户)。
示例
以/etc/passwd中的root和ubuntu用户行为例:
root:x:0:0:root:/root:/bin/bash
ubuntu:x:1000:1000:Ubuntu User:/home/ubuntu:/bin/bash
root用户的UID为0,GID为0,家目录为/root,登录Shell为/bin/bash。ubuntu用户的UID为1000,GID为1000,家目录为/home/ubuntu,登录Shell为/bin/bash。
权限与查看
/etc/passwd文件的权限通常为644(所有者可读写,组用户和其他用户只读),所有者为root,普通用户可通过cat、less或awk等命令查看,
cat /etc/passwd | head -n 5 # 查看前5个用户信息
密码信息存储:/etc/shadow文件
密码是用户身份验证的关键,为防止密码被轻易窃取,Linux系统将加密后的密码信息从/etc/passwd中分离出来,存储在/etc/shadow文件中,该文件仅对root用户可读,确保了密码的安全性。
/etc/shadow文件的结构
/etc/shadow同样是文本文件,每行对应一个/etc/passwd中的用户,字段之间用冒号分隔,共9个字段,格式如下:
用户名:加密密码:密码最后一次修改日期:密码最小有效期:密码最大有效期:密码过期警告期:密码过期宽限期:账户失效时间:保留字段
各字段详解:
- 用户名:与
/etc/passwd中的用户名一一对应,用于标识密码所属的用户。 - 加密密码:密码的加密字符串,是
/etc/shadow的核心字段,若为空(),表示该用户无需密码即可登录;若为或,表示密码被锁定(无法通过密码登录);若为,表示账户从未设置密码,常见的加密算法包括:MD5($1$开头,已不安全,逐渐淘汰);SHA-256($5$开头,较安全);SHA-512($6$开头,目前主流Linux系统的默认算法)。
- 密码最后一次修改日期:自1970年1月1日以来的天数,表示密码最后一次修改的日期,可通过
date -d "1970-01-01 + 天数 days"转换为具体日期。 - 密码最小有效期:密码修改后,至少经过多少天才能再次修改,若为
0,表示密码可随时修改;若为1,表示修改后需隔1天才能再次修改。 - 密码最大有效期:密码从最后一次修改开始,最多多少天后必须强制修改,若为
99999,表示密码永不过期;若为90,表示90天后需修改密码。 - 密码过期警告期:在密码过期前多少天开始提醒用户修改密码,若为
7,则过期前7天每天会收到警告。 - **密码
文章版权声明:除非注明,否则均为xmsdn原创文章,转载或复制请以超链接形式并注明出处。

