"Group password" 的缩写,是一个用于管理用户组的密码、成员和管理员权限的命令行工具,扩展了基础组管理功能,支持添加/删除组成员、设置组管理员及组密码,适用于Linux系统中用户组权限精细化管理。
该命令可以灵活配置用户组的访问控制,允许指定用户管理组成员,或通过密码临时加入组,适用于多用户协作场景中共享资源的权限控制。
gpasswd [选项] <组名>常用选项
-a <用户名>:"add user",将指定用户添加到目标组,例如sudo gpasswd -a alice developers将alice加入developers组,使其获得该组权限。-d <用户名>:"delete user",将指定用户从目标组中移除,例如sudo gpasswd -d bob developers从developers组中删除bob,收回其组权限。-A <用户1,用户2,...>:"administrators",指定一个或多个用户作为组管理员(无需root权限即可管理组成员),例如sudo gpasswd -A charlie,dave developers让charlie和dave管理developers组的成员。-M <用户1,用户2,...>:"members",批量设置组的成员列表(覆盖现有成员),例如sudo gpasswd -M alice,bob,charlie team将team组的成员强制设为这三个用户。-r:"remove password",删除组的密码,禁止用户通过newgrp临时加入该组,例如sudo gpasswd -r project清除project组的密码。-R:"restrict",限制组的访问,仅允许组管理员和root添加成员,普通用户即使知道组密码也无法加入,例如sudo gpasswd -R secret限制secret组的访问。
参考示例
示例1:添加用户到组 执行
sudo gpasswd -a tom design,将用户tom加入design组,使其能够访问该组的共享文件(如/var/design/目录)。示例2:从组中移除用户 执行
sudo gpasswd -d jerry test,将jerry从test组中移除,使其失去该组的相关权限(如无法修改组内文件)。示例3:设置组管理员 执行
sudo gpasswd -A lisa dev_team,指定lisa为dev_team组的管理员,lisa无需root权限即可执行gpasswd -a mike dev_team等操作管理成员。示例4:批量初始化组成员 执行
sudo gpasswd -M anna,ben,carl research,将research组的成员设置为anna、ben、carl(覆盖原有成员),适合新组创建后的成员配置。示例5:为组设置密码并临时加入
执行
sudo gpasswd shared为shared组设置密码;普通用户执行
newgrp shared并输入密码,临时切换到shared组(获得组权限,退出终端后失效),适合临时访问组资源的场景。
示例6:删除组密码并限制访问 执行
sudo gpasswd -r -R project,删除project组的密码并限制访问,确保只有管理员可添加成员,增强组安全性。示例7:在脚本中批量管理组成员 脚本中执行:
GROUP="operations" USERS="alice bob charlie" # 先清空组现有成员 sudo gpasswd -M "" $GROUP # 批量添加用户 for user in $USERS; do sudo gpasswd -a $user $GROUP done重置
operations组的成员并批量添加指定用户,适合团队成员调整时的批量操作。
注意:
非管理员用户仅能管理自己作为管理员的组,其他操作需root权限(使用
sudo)。组密码存储在
/etc/gshadow中,建议仅对需要临时权限共享的组设置密码,避免密码泄露。使用
-M选项会覆盖现有成员,操作前建议通过grep <组名> /etc/group备份成员信息。