6.1 KiB
6.1 KiB
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 中每个用户都由 UID(User ID) 唯一标识。
常见范围大致如下:
0:超级管理员root1-999:系统用户,通常供服务或守护进程使用1000+:普通登录用户(不同发行版可能略有差异)
3.2 用户组 Group
用户组通过 GID(Group 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 user 与 su - 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是最核心的账户文件useradd、usermod、userdel用于管理用户groupadd、groupmod、groupdel用于管理用户组su - USER比单独su USER更接近完整登录环境- 管理用户时要特别注意密码、过期时间、登录 shell 和附加组