200字
gpasswd
2025-10-10
2025-10-10

"Group password" 的缩写,是一个用于管理用户组的密码、成员和管理员权限的命令行工具,扩展了基础组管理功能,支持添加/删除组成员、设置组管理员及组密码,适用于Linux系统中用户组权限精细化管理。

该命令可以灵活配置用户组的访问控制,允许指定用户管理组成员,或通过密码临时加入组,适用于多用户协作场景中共享资源的权限控制。

 gpasswd [选项] <组名>

常用选项

  • -a <用户名>:"add user",将指定用户添加到目标组,例如 sudo gpasswd -a alice developersalice 加入 developers 组,使其获得该组权限。

  • -d <用户名>:"delete user",将指定用户从目标组中移除,例如 sudo gpasswd -d bob developersdevelopers 组中删除 bob,收回其组权限。

  • -A <用户1,用户2,...>:"administrators",指定一个或多个用户作为组管理员(无需root权限即可管理组成员),例如 sudo gpasswd -A charlie,dave developerscharliedave 管理 developers 组的成员。

  • -M <用户1,用户2,...>"members",批量设置组的成员列表(覆盖现有成员),例如 sudo gpasswd -M alice,bob,charlie teamteam 组的成员强制设为这三个用户。

  • -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,将 jerrytest 组中移除,使其失去该组的相关权限(如无法修改组内文件)。

  • 示例3:设置组管理员 执行 sudo gpasswd -A lisa dev_team,指定 lisadev_team 组的管理员,lisa 无需root权限即可执行 gpasswd -a mike dev_team 等操作管理成员。

  • 示例4:批量初始化组成员 执行 sudo gpasswd -M anna,ben,carl research,将 research 组的成员设置为 annabencarl(覆盖原有成员),适合新组创建后的成员配置。

  • 示例5:为组设置密码并临时加入

    1. 执行 sudo gpasswd sharedshared 组设置密码;

    2. 普通用户执行 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 组的成员并批量添加指定用户,适合团队成员调整时的批量操作。

注意

  1. 非管理员用户仅能管理自己作为管理员的组,其他操作需root权限(使用 sudo)。

  2. 组密码存储在 /etc/gshadow 中,建议仅对需要临时权限共享的组设置密码,避免密码泄露。

  3. 使用 -M 选项会覆盖现有成员,操作前建议通过 grep <组名> /etc/group 备份成员信息。

评论