用户管理 #
用户和组基础 #
用户类型 #
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
小结 #
通过本节学习,你应该掌握:
- 用户类型:超级用户、系统用户、普通用户
- useradd/usermod/userdel:用户创建、修改、删除
- passwd:密码管理
- 组管理:groupadd、groupmod、groupdel、gpasswd
- su/sudo:用户切换和权限提升
- 用户信息:id、whoami、who、w、groups
下一步,我们将学习磁盘管理命令。
最后更新:2026-04-11