一、用户分类与身份标识

1. 三种用户类型详解

用户类型 说明 UID 范围 特点
超级用户 root,拥有系统最高权限 0 可执行所有命令,修改任何文件
普通用户 供日常登录使用的用户 1000-∞(CentOS 7 及以上) 创建时不指定 UID 则自动增长,权限受限制
系统 / 程序用户 用于运行后台服务或应用程序,不允许登录 1–999(CentOS 7 及以上) 管理各自对应的系统服务(如 nginx、mysql)

2. 用户组类型

基本组(私有组):用户创建时自动生成,默认与用户名同名,每个用户必属一个基本组。

附加组(公共组):权限的集合,用于分配额外权限,一个用户可加入多个附加组。

二、用户账号文件

1. /etc/passwd(用户基本信息)

文件中每行对应一个用户,包含 7 个字段,格式为:

在这里插入图片描述

用户名:密码占位符:UID:GID:注释性描述:宿主目录:shell登录环境

字段 说明
用户名 用户登录时使用的名称
密码占位符 固定为x,真实密码存储在/etc/shadow
UID 用户唯一标识
GID 基本组唯一标识
注释性描述 对用户的说明(可选,可留空)
宿主目录 用户登录后默认进入的目录(家目录)
shell 登录环境 登录后使用的 Shell 环境

其中,shell登录环境的两种常见类型:

/bin/bash:允许用户登录系统

/sbin/nologin:禁止用户登录系统

2. /etc/shadow(用户密码及安全信息)

文件中每行与/etc/passwd一一对应,包含 9 个字段,格式为:

在这里插入图片描述

用户名:加密口令:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:标志

字段 说明
用户名 /etc/passwd中的用户名一致
加密口令 经过加密的密码(无密码时为*!
最后一次修改时间 距离 1970-01-01 的天数
最小时间间隔 密码修改的最小间隔天数(0 为无限制)
最大时间间隔 密码有效期(超过需修改)
警告时间 密码过期前的警告天数
不活动时间 密码过期后仍可登录的宽限天数
失效时间 账户彻底失效的日期(1970-01-01 起天数)
标志 保留字段(未使用)

三、用户管理核心命令

1. useradd(创建用户)

语法useradd [选项] 用户名

常用选项补充

-M:强制不创建家目录(即使系统默认配置为创建)

-g:指定基本组(必须已存在)

-G:指定附加组(多个组用逗号分隔)

示例

创建无家目录、禁止登录的用户(系统用户常用)
useradd -M -s /sbin/nologin zhangsan

创建指定家目录、基本组和附加组的用户
useradd -d /opt/lisi -g wheel -G root lisi

说明:家目录为/opt/lisi,基本组为wheel,附加组为root

2. usermod(修改用户属性)

语法usermod [选项] 用户名

示例

修改用户user1的家目录为/home/user2
usermod -d /home/user2 user1

注意:需手动移动原家目录文件到新目录,否则登录后文件不生效

将用户zhangsan的登录Shell改为禁止登录
usermod -s /sbin/nologin zhangsan

3. userdel(删除用户)

语法userdel -r 用户名

-r:必须添加,用于完全删除用户(包括家目录和邮件池)

示例

完全删除用户bob
userdel -r bob

验证删除结果
grep -w 'bob' /etc/passwd  # 无输出表示删除成功
ls -ld /home/bob           # 无输出表示家目录已删除

4. passwd(设置用户密码)

语法passwd [选项] 用户名

补充选项与示例

--stdin:从标准输入读取密码(适合脚本批量设置)

免交互给zhangsan设置密码"123"(批量初始化常用)
echo "123" | passwd --stdin zhangsan

查看用户密码状态(是否锁定、密码有效期等)
passwd -S zhangsan

四、用户组管理命令

1. groupadd(创建组)

语法groupadd [-g GID] 组名

示例

创建GID为1200的组market
groupadd -g 1200 market

2. groupdel(删除组)

语法groupdel 组名

注意:删除前需确保该组不是任何用户的基本组

示例

删除组market
groupdel market

3. gpasswd(管理组成员)

语法gpasswd [选项] 用户名 组名

常用选项示例

向market组添加用户dings001
gpasswd -a dings001 market

从market组移除用户dings001
gpasswd -d dings001 market

向market组批量添加用户(覆盖原有成员)
gpasswd -M dings001,zhangsan,lisi market

五、用户信息查询命令

1. id(查看用户 ID 及所属组)

语法id 用户名

示例

id dings001

输出:uid=1000(dings001) gid=1000(dings001) 组=1000(dings001),10(wheel)

说明:uid为用户ID,gid为基本组ID,后续为附加组(wheel)

2. groups(查看用户所属附加组)

语法groups 用户名

示例

groups dings001

输出:dings001 : dings001 wheel

说明:dings001的基本组是dings001,附加组是wheel

3. finger(查询用户详细资料)

语法finger 用户名

作用:查看用户的登录名、真实姓名、家目录、登录 Shell、登录时间等信息。

示例

在这里插入图片描述

finger zhangsan
输出包含用户基本信息及登录状态

4. w/who(查看当前登录用户)

w:显示详细登录信息(用户、终端、登录来源、登录时间、 idle 时间、进程数、CPU 占用等)

在这里插入图片描述

who:简洁显示登录用户(用户名、终端、登录时间、来源)

在这里插入图片描述

更多推荐