wiki/运维/操作系统/Linux/笔记/6.用户管理.md
2026-04-08 15:02:24 +08:00

6.1 KiB
Raw Blame History

1、用户管理概览

Linux 是多用户操作系统,因此用户和用户组管理是日常运维的基础能力。通常会涉及以下内容:

  • 查看当前登录用户和会话信息
  • 理解 UID、GID 的含义
  • 管理用户和用户组
  • 管理密码、锁定状态、过期时间
  • 切换身份执行命令

这些内容和权限控制、文件归属、服务运行身份都有直接关系。

2、查看当前登录信息

2.1 whoami

[root@tencentos ~]# whoami
root
  • whoami 用于查看当前有效用户名
  • 常用于快速确认自己正以哪个用户身份执行命令

2.2 who

[root@tencentos ~]# who
root     pts/0        2023-11-25 19:37 (111.201.149.21)
  • who 用于查看当前有哪些用户登录了系统
  • 能看到登录终端、登录时间、来源地址等信息

2.3 w

[root@tencentos ~]# w
 00:25:21 up 17:30,  1 user,  load average: 0.00, 0.00, 0.00
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
root     pts/0    111.201.149.21   19:37    0.00s  0.20s  0.00s w
  • w 会显示当前登录用户及其正在执行的命令
  • 排查“谁在登录系统、谁在跑什么”时很常用

3、用户与用户组基础概念

3.1 用户 User

Linux 中每个用户都由 UIDUser ID 唯一标识。

常见范围大致如下:

  • 0:超级管理员 root
  • 1-999:系统用户,通常供服务或守护进程使用
  • 1000+:普通登录用户(不同发行版可能略有差异)

3.2 用户组 Group

用户组通过 GIDGroup ID 唯一标识。

Linux 中一个用户通常会涉及两类组:

  • 主组:用户创建时默认所属的组
  • 附加组:额外加入的组,用于补充权限

3.3 查看用户身份信息

id

常见输出会包含:

  • 用户名
  • UID
  • 主组 GID
  • 所属附加组列表

id 是查看用户身份信息最直接的命令之一。

4、用户与用户组配置文件

Linux 中用户和组的核心配置文件主要有以下几个:

  • /etc/passwd:用户基本属性信息
  • /etc/shadow:用户密码及密码策略信息
  • /etc/group:用户组信息
  • /etc/gshadow:用户组密码及组安全信息

4.1 /etc/passwd

这个文件主要记录用户的基本属性,例如:

  • 用户名
  • 密码占位符(通常为 x
  • UID
  • GID
  • 注释信息GECOS
  • 家目录
  • 默认 shell

4.2 /etc/shadow

这个文件主要记录密码及密码过期策略,例如:

  • 登录名
  • 加密后的密码
  • 上次修改密码时间
  • 最短修改间隔
  • 最长有效期
  • 到期前提醒天数
  • 密码过期后锁定天数

4.3 /etc/group

这个文件主要记录:

  • 组名
  • 组密码占位符
  • GID
  • 附加组成员列表

5、用户管理命令

5.1 创建用户 useradd

useradd [options] LOGIN

常见选项:

  • -u:指定 UID
  • -g:指定主组 GID 或组名
  • -c:添加注释
  • -d:指定家目录
  • -s:指定默认 shell
  • -G:指定附加组
  • -r:创建系统用户
  • -M:不创建家目录

示例:

useradd -u 2001 -g developers -G wheel -c "dev user" -s /bin/bash lzc

5.2 修改用户 usermod

usermod [options] LOGIN

常见选项:

  • -u:修改 UID
  • -g:修改主组
  • -G:修改附加组
  • -s:修改 shell
  • -c:修改注释
  • -d:修改家目录
  • -l:修改用户名
  • -L:锁定用户
  • -U:解锁用户
  • -e:设置账户过期日期,格式如 YYYY-MM-DD
  • -f:设置密码过期后的宽限期

示例:

usermod -G wheel,devops -s /bin/bash lzc

5.3 删除用户 userdel

userdel [options] LOGIN

常见选项:

  • -f:强制删除
  • -r:删除用户时同时删除家目录和邮件目录

示例:

userdel -r lzc

6、切换用户身份 su

su [options] [-] USER

6.1 su usersu - user 的区别

su ubuntu
  • 非登录式切换
  • 通常不会完整加载目标用户登录环境
  • 当前工作目录通常保持不变
su - ubuntu
  • 登录式切换
  • 会读取目标用户的登录配置
  • 通常会切换到目标用户家目录
  • 更接近“真正以该用户重新登录一次”

6.2 切换后执行命令

su - root -c 'cat /etc/passwd'

这个用法表示切换到 root 后执行指定命令。

7、设置用户密码 passwd

passwd 用于设置或管理用户密码。

常见选项:

  • -d:删除指定用户密码
  • -l:锁定密码
  • -u:解锁密码
  • -e:强制用户下次登录时修改密码
  • -f:强制执行操作

示例:

passwd lzc

8、用户组管理命令

8.1 创建用户组 groupadd

常见选项:

  • -g:指定 GID

示例:

groupadd -g 3001 devops

8.2 修改用户组 groupmod

常见选项:

  • -n:修改组名
  • -g:修改 GID

示例:

groupmod -n ops devops

8.3 删除用户组 groupdel

用于删除指定组。

8.4 管理附加组成员 groupmems

常见选项:

  • -a:把用户加入组
  • -d:把用户从组中删除
  • -p:清空组成员
  • -l:显示组成员列表

9、常见运维场景

9.1 新建一个可登录用户

通常需要做这些事:

  • 创建用户
  • 指定 shell
  • 设置密码
  • 加入合适的附加组

9.2 禁止某个账户继续登录

常见做法:

  • 锁定密码:passwd -l USER
  • 锁定账户:usermod -L USER
  • 把 shell 改成 /sbin/nologin

9.3 删除离职用户

常见做法:

  • 确认是否有进程仍在运行
  • 备份家目录或重要数据
  • 使用 userdel -r USER 删除账户和家目录

10、小结

  • UID 标识用户,GID 标识用户组
  • /etc/passwd/etc/shadow/etc/group 是最核心的账户文件
  • useraddusermoduserdel 用于管理用户
  • groupaddgroupmodgroupdel 用于管理用户组
  • su - USER 比单独 su USER 更接近完整登录环境
  • 管理用户时要特别注意密码、过期时间、登录 shell 和附加组