用户管理 #
一、用户与用户组 #
1.1 用户分类 #
| 类型 | UID 范围 | 说明 |
|---|---|---|
| 超级用户 | 0 | root 用户 |
| 系统用户 | 1-999 | 系统服务用户 |
| 普通用户 | 1000+ | 普通登录用户 |
1.2 用户配置文件 #
/etc/passwd - 用户信息
text
username:x:uid:gid:comment:home:shell
| 字段 | 说明 |
|---|---|
| username | 用户名 |
| x | 密码占位符 |
| uid | 用户 ID |
| gid | 主组 ID |
| comment | 注释信息 |
| home | 主目录 |
| shell | 默认 Shell |
/etc/shadow - 密码信息
text
username:encrypted:lastchg:min:max:warn:inactive:expire:flag
| 字段 | 说明 |
|---|---|
| username | 用户名 |
| encrypted | 加密密码 |
| lastchg | 上次修改日期 |
| min | 最小修改间隔 |
| max | 最大有效天数 |
| warn | 警告天数 |
| inactive | 不活动天数 |
| expire | 过期日期 |
/etc/group - 组信息
text
groupname:x:gid:members
| 字段 | 说明 |
|---|---|
| groupname | 组名 |
| x | 密码占位符 |
| gid | 组 ID |
| members | 组成员列表 |
1.3 查看用户信息 #
bash
# 查看当前用户
whoami
# 查看用户 ID
id
id username
# 查看用户信息
finger username
# 查看登录用户
who
w
users
# 查看用户组
groups
groups username
二、用户管理 #
2.1 useradd - 创建用户 #
bash
# 基本创建
sudo useradd username
# 创建用户并创建主目录
sudo useradd -m username
# 指定主目录
sudo useradd -m -d /home/custom username
# 指定 Shell
sudo useradd -m -s /bin/bash username
# 指定用户组
sudo useradd -m -g developers username
# 指定附加组
sudo useradd -m -G sudo,docker username
# 指定 UID
sudo useradd -m -u 2000 username
# 指定注释
sudo useradd -m -c "John Doe" username
# 指定过期日期
sudo useradd -m -e 2024-12-31 username
# 完整示例
sudo useradd -m -s /bin/bash -g developers -G sudo,docker -c "John Doe" john
2.2 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 -c "New Comment" username
# 修改 UID
sudo usermod -u 2001 username
# 锁定用户
sudo usermod -L username
# 解锁用户
sudo usermod -U username
# 设置过期日期
sudo usermod -e 2024-12-31 username
2.3 userdel - 删除用户 #
bash
# 删除用户
sudo userdel username
# 删除用户和主目录
sudo userdel -r username
# 删除用户和所有文件
sudo userdel -r -f username
2.4 passwd - 密码管理 #
bash
# 设置密码
sudo passwd username
# 修改自己的密码
passwd
# 锁定密码
sudo passwd -l username
# 解锁密码
sudo passwd -u username
# 删除密码
sudo passwd -d username
# 查看密码状态
sudo passwd -S username
# 强制下次登录修改密码
sudo passwd -e username
2.5 chage - 密码过期管理 #
bash
# 查看密码过期信息
sudo chage -l username
# 设置最大有效天数
sudo chage -M 90 username
# 设置最小修改间隔
sudo chage -m 7 username
# 设置警告天数
sudo chage -W 7 username
# 设置不活动天数
sudo chage -I 30 username
# 设置过期日期
sudo chage -E 2024-12-31 username
# 设置上次修改日期
sudo chage -d 0 username
三、用户组管理 #
3.1 groupadd - 创建组 #
bash
# 创建组
sudo groupadd groupname
# 指定 GID
sudo groupadd -g 2000 groupname
# 创建系统组
sudo groupadd -r systemgroup
3.2 groupmod - 修改组 #
bash
# 修改组名
sudo groupmod -n newname oldname
# 修改 GID
sudo groupmod -g 2001 groupname
3.3 groupdel - 删除组 #
bash
# 删除组
sudo groupdel groupname
# 强制删除(如果有用户)
sudo groupdel -f groupname
3.4 gpasswd - 组密码管理 #
bash
# 设置组密码
sudo gpasswd groupname
# 添加用户到组
sudo gpasswd -a username groupname
# 从组中删除用户
sudo gpasswd -d username groupname
# 设置组管理员
sudo gpasswd -A admin groupname
# 设置组成员
sudo gpasswd -M user1,user2 groupname
3.5 newgrp - 切换组 #
bash
# 切换到新组
newgrp groupname
# 切换到指定组
newgrp - groupname
四、用户切换 #
4.1 su - 切换用户 #
bash
# 切换到 root
su
su -
# 切换到指定用户
su username
su - username
# 以指定用户执行命令
su -c "command" username
# 切换并保持环境
su -p username
4.2 sudo - 以 root 执行 #
bash
# 以 root 执行命令
sudo command
# 以指定用户执行
sudo -u username command
# 以 root 身份打开 Shell
sudo -i
sudo -s
# 编辑文件
sudoedit /etc/hosts
# 查看权限
sudo -l
# 验证密码
sudo -v
# 清除密码缓存
sudo -k
4.3 sudo 配置 #
/etc/sudoers 文件:
bash
# 使用 visudo 编辑
sudo visudo
# 基本语法
user host=(runas) commands
# 示例
# 用户可以执行所有命令
john ALL=(ALL) ALL
# 用户可以无密码执行命令
john ALL=(ALL) NOPASSWD: ALL
# 用户只能执行特定命令
john ALL=(ALL) /usr/bin/apt, /usr/bin/systemctl
# 组权限
%wheel ALL=(ALL) ALL
%sudo ALL=(ALL:ALL) ALL
# 别名定义
User_Alias ADMINS = john, jane
Cmnd_Alias SOFTWARE = /usr/bin/apt, /usr/bin/dpkg
ADMINS ALL=(ALL) SOFTWARE
五、用户查询 #
5.1 查看登录用户 #
bash
# who - 查看登录用户
who
who -b # 系统启动时间
who -H # 显示标题
who -a # 显示所有信息
# w - 查看登录用户和活动
w
w username
# users - 查看登录用户名
users
# last - 查看登录历史
last
last -n 10 # 最近 10 条
last -x # 显示系统关机重启
last -f /var/log/wtmp.1 # 指定文件
# lastb - 查看失败登录
sudo lastb
sudo lastb -n 10
# lastlog - 查看所有用户最后登录
lastlog
lastlog -u username
5.2 查看用户信息 #
bash
# id - 查看用户 ID
id
id username
id -u username # 只显示 UID
id -g username # 只显示 GID
id -G username # 显示所有组 ID
# groups - 查看用户组
groups
groups username
# finger - 查看用户详细信息
finger username
# getent - 查询数据库
getent passwd username
getent group groupname
六、批量用户管理 #
6.1 newusers - 批量创建用户 #
bash
# 准备用户文件
cat > users.txt << EOF
user1:x:1001:1001:User One:/home/user1:/bin/bash
user2:x:1002:1002:User Two:/home/user2:/bin/bash
user3:x:1003:1003:User Three:/home/user3:/bin/bash
EOF
# 批量创建
sudo newusers users.txt
6.2 chpasswd - 批量修改密码 #
bash
# 准备密码文件
cat > passwords.txt << EOF
user1:password1
user2:password2
user3:password3
EOF
# 批量修改
sudo chpasswd < passwords.txt
6.3 批量管理脚本 #
bash
#!/bin/bash
# 批量创建用户脚本
for i in {1..10}; do
username="user$i"
useradd -m -s /bin/bash $username
echo "$username:password$i" | chpasswd
echo "Created user: $username"
done
七、用户资源限制 #
7.1 ulimit - 资源限制 #
bash
# 查看所有限制
ulimit -a
# 查看特定限制
ulimit -n # 打开文件数
ulimit -u # 用户进程数
ulimit -v # 虚拟内存
# 设置限制(临时)
ulimit -n 65535
ulimit -u 4096
7.2 /etc/security/limits.conf #
bash
# 编辑限制配置
sudo vim /etc/security/limits.conf
# 语法
# <domain> <type> <item> <value>
# 示例
* soft nofile 65535
* hard nofile 65535
* soft nproc 4096
* hard nproc 4096
@developers soft nofile 100000
@developers hard nofile 100000
八、实践练习 #
8.1 练习一:用户创建 #
bash
# 1. 创建用户
sudo useradd -m -s /bin/bash testuser
# 2. 设置密码
sudo passwd testuser
# 3. 查看用户信息
id testuser
finger testuser
# 4. 切换用户
su - testuser
# 5. 退出
exit
8.2 练习二:用户组管理 #
bash
# 1. 创建组
sudo groupadd developers
# 2. 将用户加入组
sudo usermod -aG developers testuser
# 3. 查看用户组
groups testuser
# 4. 切换组
su - testuser
newgrp developers
# 5. 删除组
sudo groupdel developers
8.3 练习三:sudo 配置 #
bash
# 1. 查看当前用户权限
sudo -l
# 2. 编辑 sudoers
sudo visudo
# 3. 添加用户权限
# testuser ALL=(ALL) ALL
# 4. 测试 sudo
su - testuser
sudo whoami
8.4 练习四:用户删除 #
bash
# 1. 锁定用户
sudo usermod -L testuser
# 2. 查看状态
sudo passwd -S testuser
# 3. 删除用户
sudo userdel -r testuser
# 4. 确认删除
id testuser
九、小结 #
本章学习了 Linux 用户和用户组管理的核心命令,包括创建、修改、删除用户和组。
关键要点:
/etc/passwd存储用户信息,/etc/shadow存储密码useradd/usermod/userdel用于用户管理groupadd/groupmod/groupdel用于组管理sudo提供安全的权限提升机制- 使用
visudo编辑 sudo 配置
下一章预告: 磁盘管理 - 学习磁盘分区、文件系统和存储管理。
最后更新:2026-03-27