在 Linux 系统管理中,用户与组的管理是基础且核心的操作,合理规划用户组有助于提升系统安全性、简化权限管理及实现资源控制,本文将详细介绍 Linux 系统中用户组的添加、管理及相关操作逻辑,帮助管理员高效完成用户组配置任务。

用户组的基本概念与作用
Linux 系统通过用户组(Group)实现对用户权限的批量管理,每个用户至少属于一个主组(Primary Group),并可同时加入多个附加组(Supplementary Groups),组的作用主要体现在三个方面:一是权限控制,通过为组分配文件或目录的读、写、执行权限,实现组内用户共享资源;二是简化管理,避免为每个用户单独配置权限,减少操作复杂度;三是安全隔离,通过不同组划分用户权限范围,限制非授权访问,将 Web 服务用户加入 www-data 组,可统一管理网站文件的访问权限。
添加用户组的常用命令
Linux 系统提供了多种管理用户组的命令,groupadd 是最基础且广泛使用的工具,此外还有 groupmod(修改组信息)、groupdel(删除组)等辅助命令。
使用 groupadd 添加新组
基本语法格式为:
groupadd [选项] 组名
常用选项包括:
-g:指定组 ID(GID),若不指定,系统会自动分配唯一 GID(通常从 1000 开始);-r:创建系统组,GID 会小于 1000,且用户信息会记录在/etc/group和/etc/gshadow文件中;-f:如果组已存在,则不报退并退出,避免重复创建错误。
示例:
- 创建普通组
developers:sudo groupadd developers
- 创建系统组
systemd-roots并指定 GID 为 999:sudo groupadd -r -g 999 systemd-roots
验证组是否创建成功
可通过以下命令查看组信息:
cat /etc/group:显示系统中所有组的基本信息,包括组名、GID和组成员列表;grep "组名" /etc/group:快速查询指定组的信息;getent group 组名:通过系统数据库查询组信息,优先读取/etc/group或 LDAP 等远程认证源的组数据。
验证 developers 组是否创建:

grep developers /etc/group
输出结果类似:developers:x:1001:,x 表示密码占位符(组密码通常不直接使用),1001 为自动分配的 GID。
用户与组的关联管理
添加组后,需将用户加入组才能实现权限共享,Linux 系统支持用户与多组关联,操作方式包括创建用户时指定组和修改用户所属组。
创建用户时指定组
使用 useradd 或 adduser 命令创建用户时,可通过 -g 指定主组,-G 指定附加组。
示例:
- 创建用户
user1并将其主组设为developers:sudo useradd -g developers user1
- 创建用户
user2,主组为users(默认组),附加组为developers和sudo:sudo useradd -G developers,sudo user2
修改用户所属组
对于已存在的用户,可通过 usermod 命令调整组信息:
-g:修改用户的主组;-G:修改用户的附加组(会覆盖原有附加组,若需保留原组,需使用-aG选项追加)。
示例:
- 将用户
user3的主组改为developers:sudo usermod -g developers user3
- 为用户
user1追加附加组sudo(不覆盖原附加组):sudo usermod -aG sudo user1
查看用户所属组
使用 groups 命令可快速查看当前用户或指定用户的组信息:

groups user1
输出结果:user1 : developers sudo,表示 user1 属于 developers(主组)和 sudo(附加组)。
高级组管理操作
修改组信息
使用 groupmod 命令可修改组名或 GID:
- 修改组名:
sudo groupmod -n 新组名 原组名 - 修改 GID:
sudo groupmod -g 新GID 组名
示例:将 developers 组名改为 dev-team:
sudo groupmod -n dev-team developers
删除用户组
使用 groupdel 命令删除组,需确保该组非任何用户的主组(否则需先修改用户主组):
sudo groupdel dev-team
管理组密码
Linux 系统允许为组设置密码(通过 gpasswd 命令),但实际应用中较少使用,常见操作包括:
- 为组添加管理员:
sudo gpasswd -a 用户名 组名 - 移除组管理员:
sudo gpasswd -d 用户名 组名 - 设置组密码:
sudo gpasswd 组名
注意事项
- 系统组与普通组区分:系统组(
-r选项创建)通常用于服务进程,不建议手动修改;普通组用于管理普通用户。 - GID 唯一性:手动指定 GID 时需确保不与现有组冲突,可通过
grep "GID" /etc/group检查。 - 文件权限继承:用户创建的文件默认所属其主组,修改主组会影响新创建文件的默认权限。
- 批量操作:需批量管理用户组时,可结合
useradd的-f选项或编写脚本实现自动化。
通过以上方法,可高效完成 Linux 系统中用户组的添加、修改及关联管理,为系统安全与权限控制奠定基础,管理员需根据实际需求合理规划组结构,避免权限过度集中或分散,确保系统既安全又易于维护。



















