在Linux系统中,用户组(Group)是管理系统权限和资源访问的重要机制。它通过将多个用户归类到同一逻辑单元,简化了权限分配和共享资源的管理。以下是关于Linux用户组的核心要点和扩展知识:
1. 基本概念
- 每个用户至少属于一个主组(Primary Group),创建文件时默认继承该组的权限。
- 用户可以加入多个附加组(Supplementary Group),通过组成员身份获取额外的权限(如访问特定设备或目录)。
2. 用户组的核心作用
- 权限控制:文件/目录的组权限(读、写、执行)决定了组成员的操作范围。
- 资源共享:例如开发团队成员通过共享组权限协作编辑同一目录下的代码。
- 最小权限原则:通过组细分权限,避免直接赋予用户过高权限。
3. 用户组相关文件
- `/etc/group`:存储组信息,格式为`组名:组密码占位符:GID:组成员列表`。
- `/etc/gshadow`:保存加密的组密码(极少使用)。
- `/etc/passwd`中用户条目的GID字段指向用户的主组。
4. 关键命令
- `groupadd`:创建新组(如`groupadd -g 1005 developers`)。
- `usermod -aG`:将用户添加到附加组(避免覆盖原组需加`-a`参数)。
- `groups`:查看用户所属组列表。
- `chgrp`:修改文件/目录的所属组。
5. 特殊用户组
- 系统组:GID通常小于1000,用于服务或系统进程(如`sys`、`adm`)。
- wheel组:在部分发行版中允许组成员通过`sudo`提权。
6. 高级特性
- 私有组机制:用户默认主组为同名的私有组,增强隔离性。
- SGID位:目录设置`chmod g+s`后,新建文件自动继承父目录的组,便于协作。
- ACL扩展:当组权限不足时,可使用`setfacl`为特定用户/组定义精细权限。
理解用户组机制是Linux系统管理的基础,合理的组规划能显著提升多用户环境的安全性和管理效率。