在 CentOS 7 中,用户与用户组的关系是权限管理的核心机制,通过组机制可高效分配系统资源访问权限。
用户与组的关系类型
- 主要组(Primary Group)
- 每个用户必须属于一个主要组(默认与用户名同名)。
- 用户创建文件时,文件的默认属组即用户的主要组。
- 示例:用户 user1 的主要组为 user1,新建文件属组自动为 user1。
- 附加组(Supplementary Group)
- 用户可加入多个附加组,继承这些组的权限。
- 示例:开发人员 dev1 加入 developers 组后,可访问该组共享目录。
- 关系模型
- 一对一:用户仅属于一个组(如系统服务账户)。
- 一对多:用户属于多个组(常见于权限分层场景)。
- 多对一:多个用户同属一个组(如团队共享资源)。
- 多对多:用户跨多个组,组包含多个用户(复杂权限管理)。
用户组管理关键命令
- groupadd创建新组:groupadd developers如图1所示
- usermod -aG添加用户到附加组(不覆盖原组):usermod -aG developers dev1如图2所示
- gpasswd -a添加用户到组(支持组管理员操作):gpasswd -a dev1 developers如图3所示
- gpasswd -d从组中移除用户:gpasswd -d dev1 testers如图4所示
- groups查看用户所属组:groups dev1如图5所示
- id显示用户UID、GID及组列表:id dev1如图6所示
典型操作示例
场景1:创建组并添加用户
- 创建开发组groupadd deve如图7所示
- 添加用户dev1到developers组(同时保留原组)usermod -aG developers dev1如图8所示
- 验证组成员groups dev1如图9所示
场景2:多用户共享资源组
- 创建项目资源组groupadd project-alpha如图10所示
- 批量添加开发与测试人员
usermod -aG project-alpha dev1如图11所示
usermod -aG project-alpha tester1如图11所示
- 查看组内用户getent group project-alpha如图11所示
场景3:移除用户或删除组
- 从组中移除用户gpasswd -d dev1 project-alpha如图12所示
- 删除空组(需先移除成员)groupdel project-alpha如图13所示
文件权限与用户组的协同
通过组权限控制文件访问,避免逐用户授权:如图14所示
# 创建共享目录并设组为developers
mkdir /var/dev-share
chown :developers /var/dev-share # 修改属组
chmod 770 /var/dev-share # 组内用户可读写执行
# 验证:dev1用户可在目录中创建文件
su - dev1 -c "touch /var/dev-share/test.txt"总结
用户与组的关系在 CentOS 7 中通过 主要组(必须) 和 附加组(可选) 实现权限分层管理,核心操作包括:
1 用 groupadd/groupdel 管理组生命周期;
2 用 usermod -aG 或 gpasswd -a 动态调整用户组归属;
3 结合 chown 和 chmod 设置组权限目录,实现资源安全共享。
通过组机制,可大幅简化多用户环境下的权限分配,提升系统管理效率与安全性。
