Linux 用户与组管理及权限委派
Linux 用户与组管理及权限委派
一、用户与组的基本概念
1. 用户账号分类
Linux 系统中的用户账号分为三类,各自具有不同的权限和用途:
- 管理员用户(root):
- UID(用户 ID)固定为 0
- 拥有系统最高权限,可执行所有操作
- 普通用户:
- UID 范围为 1000+(CentOS 7 及以上默认从 1000 开始)
- 仅拥有自身权限范围内的操作权限,用于日常工作
- 程序用户(系统用户):
- UID 范围为 1-999
- 不用于登录系统,仅为系统服务或程序运行提供身份标识(如 nginx、mysql 用户)
2. 组账号分类
组账号用于将多个用户集合管理,便于权限统一分配:
- 基本组:用户创建时默认所属的组,每个用户至少属于一个基本组
- 附加组:用户除基本组外额外加入的组,一个用户可属于多个附加组
- GID(组 ID)规则:
- 管理员组(root 组)的 GID 固定为 0
- 普通组的 GID 范围为 1000-60000
二、用户与组的配置文件
1. 用户核心配置文件
文件名 | 作用 | 访问权限 |
/etc/passwd | 存储所有用户的基本信息 | 所有用户可读取 |
/etc/shadow | 存储用户密码及安全策略 | 仅 root 可读取 |
/etc/group | 存储所有组的基本信息 | 所有用户可读取 |
/etc/gshadow | 存储组密码及管理员信息 | 仅 root 可读取 |
2. 配置文件格式详解
(1)/etc/passwd 格式
每行代表一个用户,以冒号分隔 7 个字段:
用户名:密码占位符:UID:GID:用户描述:主目录:登录Shell
- 示例:zhangsan:x:1001:1001:张三:/home/zhangsan:/bin/bash
- 说明:x 表示密码存储在 /etc/shadow 中;/bin/bash 为可登录 Shell,/sbin/nologin 为禁止登录
(2)/etc/shadow 格式
每行对应 /etc/passwd 中的用户,以冒号分隔 9 个字段(密码安全相关):
用户名:加密密码:最近改密日期:密码不可改天数:密码有效期:警告天数:宽限天数:账号失效日期:保留字段
- 关键字段说明:
- 加密密码:采用 SHA-512 算法加密;* 或 !! 表示用户被锁定,无法登录;为空表示无需密码即可登录
- 最近改密日期:从 1970-01-01 到最近修改密码的天数
- 密码有效期:默认 99999(约 273 年),表示无强制过期
- 账号失效日期:格式同 “最近改密日期”,为空表示永久有效
(3)/etc/group 格式
每行代表一个组,以冒号分隔 4 个字段:
组名:密码占位符:GID:组内用户列表(附加组用户)
- 示例:dev:x:1005:zhangsan,lisi(dev 组的 GID 为 1005,附加用户为 zhangsan 和 lisi)
(4)/etc/gshadow 格式
每行对应 /etc/group 中的组,以冒号分隔 4 个字段:
组名:加密组密码:组管理员:组成员
- 说明:组密码通常为空或 !(表示无密码);组管理员可管理组内成员
3. 用户相关目录
目录路径 | 作用 |
/home/<用户名> | 普通用户的主目录,存储个人文件 |
/var/spool/mail/<用户名> | 用户的系统邮箱,接收系统通知 |
三、用户与组的管理命令
1. 用户管理命令
(1)useradd:创建用户
useradd [选项] 用户名
- 常用选项:
- -u <UID>:指定 UID(需未被使用)
- -d <目录>:指定主目录(默认 /home/用户名)
- -g <组名/GID>:指定基本组
- -G <组名/GID>:指定附加组(多个组用逗号分隔)
- -s <Shell>:指定登录 Shell(如 /bin/bash、/sbin/nologin)
- -c <描述>:添加用户描述信息
- 示例:创建一个 UID 为 1008、基本组为 dev、附加组为 admin 的用户 wangwu
useradd -u 1008 -g dev -G admin -c "王五" wangwu
(2)passwd:设置用户密码
passwd [选项] 用户名 # root 可指定用户,普通用户只能修改自身密码
- 常用选项:
- -d:清空密码(用户可无密码登录)
- -l:锁定用户账号(无法登录)
- -u:解锁用户账号
- -S:查看用户账号状态(是否锁定、密码过期信息等)
- 示例:锁定用户 wangwu 并查看状态
passwd -l wangwupasswd -S wangwu
(3)usermod:修改用户属性
usermod [选项] 用户名
- 常用选项(同 useradd,新增锁定相关):
- -L:锁定用户(同 passwd -l)
- -U:解锁用户(同 passwd -u)
- 示例:将用户 wangwu 的主目录改为 /home/wangwu_new,并添加附加组 test
usermod -d /home/wangwu_new -aG test wangwu # -a 表示追加附加组,避免覆盖原有组
(4)userdel:删除用户
userdel [选项] 用户名
- 常用选项:
- -r:彻底删除用户(包括主目录 /home/用户名 和邮箱 /var/spool/mail/用户名)
- 示例:彻底删除用户 wangwu
userdel -r wangwu
2. 组管理命令
(1)groupadd:创建组
groupadd [选项] 组名
- 常用选项:-g <GID> 指定组的 GID(需未被使用)
- 示例:创建 GID 为 1006 的组 test
groupadd -g 1006 test
(2)groupdel:删除组
groupdel 组名 # 需确保组不是任何用户的基本组,否则删除失败
(3)gpasswd:管理组成员及密码
gpasswd [选项] 组名
- 常用选项:
- -a <用户>:添加用户到组(附加组)
- -d <用户>:从组中移除用户
- 直接执行 gpasswd 组名:设置组密码(不推荐,通常不用组密码)
- 示例:将用户 zhangsan 添加到 dev 组,再移除
gpasswd -a zhangsan devgpasswd -d zhangsan dev
(4)groups:查看用户所属组
groups [用户名] # 不指定用户则查看当前用户所属组
- 示例:查看 zhangsan 所属的组
groups zhangsan
3. 密码策略管理(chage)
用于修改 /etc/shadow 中的密码过期相关设置:
chage [选项] 用户名# 直接执行 chage 用户名:进入交互式设置
- 常用选项:
- -M <天数>:设置密码最长有效期
- -m <天数>:设置密码最短修改间隔
- -E <日期>:设置账号失效日期(格式 YYYY-MM-DD)
- 示例:设置 zhangsan 的密码 90 天过期,过期前 10 天警告
chage -M 90 -W 10 zhangsan
四、权限委派(sudo)
sudo 允许普通用户以 root 或其他用户身份执行特定命令,实现权限精细化管理。
1. 配置文件
- 主配置文件:/etc/sudoers(需通过 visudo 编辑,自动语法检查)
- 子配置目录:/etc/sudoers.d/(推荐在此目录创建文件,无需修改主配置)
2. 配置格式
基本格式:
用户/组 主机=(身份) 可执行命令列表
- 示例:允许 admin 用户在所有主机以 root 身份执行用户管理命令
admin ALL=(root) /usr/sbin/useradd, /usr/sbin/usermod, /usr/sbin/userdel
3. 配置步骤
(1)通过 /etc/sudoers.d/ 配置(推荐)
visudo -f /etc/sudoers.d/user-admin # 创建并编辑配置文件
添加内容:
admin ALL=(ALL) /usr/sbin/useradd, /usr/sbin/usermod, /usr/sbin/userdel
保存退出(visudo 会自动验证语法)。
(2)使用命令别名(简化配置)
在 sudoers 中定义命令别名,便于批量管理:
visudo # 编辑主配置文件
添加内容:
Cmnd_Alias USER_MANAGE = /usr/sbin/useradd, /usr/sbin/usermod, /usr/sbin/userdeladmin ALL=(ALL) USER_MANAGE
4. 使用方法
普通用户执行授权命令时,需在命令前加 sudo:
sudo useradd tom # admin 用户创建 tom 用户
首次执行会要求输入当前用户的密码(验证身份)。
总结
- 用户与组:通过 UID/GID 区分身份,核心配置文件集中在 /etc 目录,管理命令包括 useradd、groupadd 等。
- 权限委派:通过 sudo 实现普通用户对特定命令的临时授权,配置灵活且安全,推荐使用 /etc/sudoers.d/ 目录管理子配置。
掌握用户与组的管理,是 Linux 系统权限控制和安全运维的基础。