用户管理 #

一、用户与用户组 #

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 用户和用户组管理的核心命令,包括创建、修改、删除用户和组。

关键要点:

  1. /etc/passwd 存储用户信息,/etc/shadow 存储密码
  2. useradd/usermod/userdel 用于用户管理
  3. groupadd/groupmod/groupdel 用于组管理
  4. sudo 提供安全的权限提升机制
  5. 使用 visudo 编辑 sudo 配置

下一章预告: 磁盘管理 - 学习磁盘分区、文件系统和存储管理。

最后更新:2026-03-27