用户和组管理
一、用户和组的配置文件
-
用户账号分类
- 超级用户:
root
(UID=0),拥有系统最高权限,仅限系统管理,维护任务时使用,日常操作建议使用普通用户。 - 普通用户:由管理员创建(UID≥1000),权限受限,仅对用户自己的家目录有完整控制权。
- 程序用户(服务用户):UID 范围为 1-999,用于运行系统服务或应用程序,禁止登录系统(如
nginx
、mysql
)。
- 超级用户:
-
组账号
- 由于某种联系将多个用户集合在一起,就构成了一个用户组。
- 每个用户必须属于一个基本组(主组),可加入多个附加组(辅助组)。
- 组机制用于批量分配权限(如共享文件访问权)。
-
UID 与 GID
类型 范围 说明 UID 0 root
用户1–999 程序用户(系统保留) 1000–60000 普通用户 GID 0 root
组1–999 系统组 1000–60000 普通组
二、核心配置文件
-
/etc/passwd
-
作用:存储用户基本信息(用户名、UID、家目录、Shell 等)。
-
格式(7 个冒号分隔字段):
用户名:密码占位符(x):UID:GID:用户全名(描述信息):主目录:登录Shell
-
示例:
alice:x:1001:1001:Alice Chen:/home/alice:/bin/bash
-
基于系统运行和管理的需要,所有的用户都能访问/etc/passwd文件的内容,但是只有root用户能进行修改
早期的时候账号和密码信息是保存在passwd文件中的,不法用户可以获取密码字符串进行暴力破解,存在不安全性,因此后来将密码转存到专门的shadow文件中,而passwd文件的密码用“x”表示。
-
/etc/shadow(影子文件)
-
权限:仅
root
可读写,增强密码安全性。 -
格式(9 个冒号分隔字段):
用户名:加密密码:最后修改密码天数:最小修改间隔:密码有效期:警告期:宽限期:账号失效日:保留字段
-
关键字段说明:
- 密码字段:
*
或!!
:账号被锁定,禁止登录。- 空:无需密码即可登录(危险!)。
- 时间计算基准:1970 年 1 月 1 日(UNIX 时间)。
- 密码字段:
-
-
/etc/group
-
作用:存储组信息。
-
格式:
组名:组密码占位符(x):GID:组成员列表(逗号分隔)
-
-
/etc/gshadow
-
作用:存储组密码和管理信息。
-
格式:
组名:加密密码:组管理员:组成员
-
密码字段:
- 空或
!
:无密码。 - 加密字符串:允许非成员通过密码临时加入组(
newgrp
命令)。
- 空或
-
三、用户与组管理命令
命令 | 功能 | 常用选项 | 示例 |
---|---|---|---|
useradd | 创建用户 | -u UID 、-d /home/dir 、-g 主组 、-G 附加组 、-s /bin/bash 、-c "备注" | useradd -u 1002 -d /data/bob -g dev -G admin bob |
usermod | 修改用户属性 | -L (锁定)、-U (解锁)、-aG (追加附加组) | usermod -aG docker alice |
userdel | 删除用户 | -r (同时删除家目录和邮件) | userdel -r bob |
passwd | 管理密码 | -l (锁定)、-u (解锁)、-S (查看状态) | passwd -l alice |
groupadd | 创建组 | -g GID | groupadd -g 2000 dev |
groupdel | 删除组 | —— | groupdep dev |
gpasswd | 管理组成员 | -a 用户 (添加)、-d 用户 (移除) | gpasswd -a bob dev |
chage | 修改密码策略 | -m 天数 (最小间隔)、-M 天数 (有效期)、-W 天数 (警告期) | chage -M 90 -W 7 alice |
安全提示:
- 使用
-r
删除用户时,会同步删除/home/用户名
和/var/mail/用户名
。- 程序用户需用
-s /sbin/nologin
禁止登录。
四、权限委派(sudo)
-
配置流程:
-
编辑配置文件:
visudo
(安全编辑/etc/sudoers
)。 -
添加授权规则:
# 语法:用户 主机=(可切换身份) 允许的命令 alice ALL=(root) /usr/sbin/useradd, /usr/sbin/userdel
-
或使用别名简化:
Cmnd_Alias USER_CMDS = /usr/sbin/useradd, /usr/sbin/userdel %admin ALL=(root) USER_CMDS # %admin 表示 admin 组
-
-
普通用户使用 sudo:
sudo useradd tom # 输入用户自己的密码验证
注意:
- 命令需写完整路径(通过
which useradd
查询)。- 首次使用
sudo
需输入当前用户密码,默认缓存 15 分钟。
关键补充说明
-
UID/GID 分配规则:
- 普通用户 UID 从 1000 开始(由
/etc/login.defs
的UID_MIN
定义)。 - 系统自动分配 UID 时,会选择当前最小未使用的值。
- 普通用户 UID 从 1000 开始(由
-
查看用户信息:
id alice # 查看 UID/GID 及所属组 groups alice # 查看用户所在组 getent passwd bob # 查询 passwd 条目
-
密码策略示例(
chage
):chage -m 7 -M 90 -W 7 -E 2025-12-31 alice # 强制每 90 天改密,到期前 7 天警告,2025 年底失效
-
安全实践:
- 禁用 root 远程登录,改用普通用户 +
sudo
。 - 为服务程序创建专属程序用户(如
useradd -r -s /sbin/nologin mysql
)。
- 禁用 root 远程登录,改用普通用户 +
-
切换用户
su - 用户名