用户管理 #

用户和组基础 #

用户类型 #

text
┌─────────────────────────────────────────────────────────────┐
│                      用户类型                               │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│   超级用户 (root)                                            │
│   ├── UID: 0                                                │
│   ├── 拥有系统最高权限                                       │
│   └── 可以执行任何操作                                       │
│                                                             │
│   系统用户                                                   │
│   ├── UID: 1-999                                            │
│   ├── 运行系统服务                                           │
│   └── 通常不能登录                                          │
│                                                             │
│   普通用户                                                   │
│   ├── UID: 1000+                                            │
│   ├── 日常使用的用户账户                                     │
│   └── 权限受限                                              │
│                                                             │
└─────────────────────────────────────────────────────────────┘

相关文件 #

text
┌─────────────────────────────────────────────────────────────┐
│                      用户相关文件                            │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│   /etc/passwd      用户账户信息                              │
│   /etc/shadow      用户密码信息                              │
│   /etc/group       组信息                                    │
│   /etc/gshadow     组密码信息                                │
│   /etc/skel/       新用户默认配置                            │
│   /etc/login.defs  用户创建默认设置                          │
│                                                             │
└─────────────────────────────────────────────────────────────┘

useradd - 创建用户 #

基本用法 #

bash
# 创建用户
$ sudo useradd username

# 创建用户并创建家目录
$ sudo useradd -m username

# 创建用户并指定 shell
$ sudo useradd -m -s /bin/bash username

# 创建用户并指定用户组
$ sudo useradd -m -g developers username

# 创建用户并指定附加组
$ sudo useradd -m -G sudo,docker username

# 创建系统用户
$ sudo useradd -r -s /sbin/nologin serviceuser

常用选项 #

bash
# -m 创建家目录
$ sudo useradd -m username

# -d 指定家目录
$ sudo useradd -m -d /home/custom username

# -s 指定登录 shell
$ sudo useradd -m -s /bin/zsh username

# -g 指定主组
$ sudo useradd -m -g developers username

# -G 指定附加组
$ sudo useradd -m -G sudo,docker username

# -u 指定 UID
$ sudo useradd -m -u 2000 username

# -c 添加注释
$ sudo useradd -m -c "John Doe" username

# -e 设置账户过期时间
$ sudo useradd -m -e 2026-12-31 username

# -r 创建系统用户
$ sudo useradd -r serviceuser

# 组合使用
$ sudo useradd -m -s /bin/bash -G sudo,docker -c "Admin User" admin

usermod - 修改用户 #

基本用法 #

bash
# 修改用户名
$ sudo usermod -l newname oldname

# 修改家目录
$ sudo usermod -d /home/newdir -m username

# 修改登录 shell
$ sudo usermod -s /bin/zsh username

# 修改主组
$ sudo usermod -g developers username

# 添加附加组
$ sudo usermod -aG docker username

# 锁定账户
$ sudo usermod -L username

# 解锁账户
$ sudo usermod -U username

常用选项 #

bash
# -l 修改用户名
$ sudo usermod -l newname oldname

# -d 修改家目录
$ sudo usermod -d /home/newdir username

# -m 移动家目录内容
$ sudo usermod -d /home/newdir -m username

# -s 修改 shell
$ sudo usermod -s /bin/zsh username

# -g 修改主组
$ sudo usermod -g developers username

# -G 设置附加组(覆盖)
$ sudo usermod -G sudo,docker username

# -aG 添加附加组(追加)
$ sudo usermod -aG docker username

# -L 锁定账户
$ sudo usermod -L username

# -U 解锁账户
$ sudo usermod -U username

# -e 设置过期日期
$ sudo usermod -e 2026-12-31 username

# -u 修改 UID
$ sudo usermod -u 2000 username

userdel - 删除用户 #

基本用法 #

bash
# 删除用户
$ sudo userdel username

# 删除用户和家目录
$ sudo userdel -r username

# 删除用户及其所有文件
$ sudo userdel -r -f username

常用选项 #

bash
# -r 删除家目录和邮件
$ sudo userdel -r username

# -f 强制删除
$ sudo userdel -f username

# 删除前检查
$ sudo find / -user username 2>/dev/null
$ sudo userdel -r username

passwd - 管理密码 #

基本用法 #

bash
# 修改当前用户密码
$ passwd

# 修改指定用户密码
$ sudo passwd username

# 锁定用户密码
$ sudo passwd -l username

# 解锁用户密码
$ sudo passwd -u username

# 删除用户密码
$ sudo passwd -d username

# 查看密码状态
$ sudo passwd -S username

密码策略 #

bash
# 设置密码过期天数
$ sudo passwd -x 90 username    # 90 天后过期

# 设置警告天数
$ sudo passwd -w 7 username     # 过期前 7 天警告

# 设置最小使用天数
$ sudo passwd -n 1 username     # 至少使用 1 天

# 立即使密码过期
$ sudo passwd -e username

# 查看密码信息
$ sudo chage -l username

组管理 #

groupadd - 创建组 #

bash
# 创建组
$ sudo groupadd developers

# 指定 GID
$ sudo groupadd -g 2000 developers

# 创建系统组
$ sudo groupadd -r services

groupmod - 修改组 #

bash
# 修改组名
$ sudo groupmod -n newname oldname

# 修改 GID
$ sudo groupmod -g 2001 developers

groupdel - 删除组 #

bash
# 删除组
$ sudo groupdel developers

# 注意:不能删除用户的主组

gpasswd - 管理组成员 #

bash
# 添加用户到组
$ sudo gpasswd -a username developers

# 从组中删除用户
$ sudo gpasswd -d username developers

# 设置组管理员
$ sudo gpasswd -A admin developers

# 设置组密码
$ sudo gpasswd developers

su 和 sudo #

su - 切换用户 #

bash
# 切换到 root
$ su -

# 切换到指定用户
$ su - username

# 执行单个命令
$ su -c "command" username

# 以指定用户身份执行
$ su -s /bin/bash username

sudo - 以超级用户执行 #

bash
# 以 root 执行命令
$ sudo command

# 以指定用户执行
$ sudo -u username command

# 以 root 身份启动 shell
$ sudo -i

# 保留环境变量
$ sudo -E command

# 列出可执行的命令
$ sudo -l

# 验证 sudo 密码
$ sudo -v

# 清除 sudo 缓存
$ sudo -k

sudo 配置 #

bash
# 编辑 sudoers 文件
$ sudo visudo

# 常用配置示例
# 用户权限
username ALL=(ALL:ALL) ALL

# 组权限
%sudo ALL=(ALL:ALL) ALL

# 免密码
username ALL=(ALL) NOPASSWD: ALL

# 允许特定命令
username ALL=(ALL) /usr/bin/apt, /usr/bin/systemctl

# 允许特定用户身份
username ALL=(www-data) ALL

查看用户信息 #

id - 显示用户信息 #

bash
# 显示当前用户信息
$ id
uid=1000(username) gid=1000(username) groups=1000(username),27(sudo),999(docker)

# 显示指定用户信息
$ id username

# 只显示 UID
$ id -u

# 只显示 GID
$ id -g

# 显示所有组
$ id -G

whoami - 显示当前用户 #

bash
# 显示当前用户名
$ whoami
username

# 等同于
$ id -un

who 和 w - 查看登录用户 #

bash
# 查看登录用户
$ who
username pts/0        2026-04-11 10:00 (192.168.1.100)

# 查看登录用户详细信息
$ w
 10:00:00 up 30 days,  2:15,  3 users,  load average: 0.05, 0.10, 0.15
USER     TTY        FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
username pts/0      192.168.1.100    10:00    0.00s  0.05s  0.00s w

# 查看登录历史
$ last
$ last -n 10
$ last username

groups - 查看用户组 #

bash
# 查看当前用户所属组
$ groups

# 查看指定用户所属组
$ groups username

小结 #

通过本节学习,你应该掌握:

  1. 用户类型:超级用户、系统用户、普通用户
  2. useradd/usermod/userdel:用户创建、修改、删除
  3. passwd:密码管理
  4. 组管理:groupadd、groupmod、groupdel、gpasswd
  5. su/sudo:用户切换和权限提升
  6. 用户信息:id、whoami、who、w、groups

下一步,我们将学习磁盘管理命令。

最后更新:2026-04-11