gpasswd
命令用于管理系统中的用户组,包括设置组密码、管理组成员和组管理员等。每个组可以有管理员、成员和密码。
基本语法
gpasswd [选项] 组名
选项
选项 | 说明 |
---|---|
-a, --add 用户名 | 将用户添加到指定组中。 |
-d, --delete 用户名 | 从指定组中删除用户。 |
-h, --help | 显示帮助信息并退出。 |
-Q, --root CHROOT_DIR | 在 CHROOT_DIR 目录中应用更改,并使用该目录中的配置文件。 |
-r, --remove-password | 移除组密码。组密码为空后,只有组成员可通过 newgrp 加入该组。 |
-R, --restrict | 限制组的访问权限。将组密码设为 "!" ,只有组成员(且已设置密码)才能通过 newgrp 加入该组。 |
-A, --administrators 用户名,… | 设置组的管理员列表。管理员可添加/删除成员或修改密码。 |
-M, --members 用户名,… | 设置组的成员列表(会覆盖现有成员)。 |
选项使用限制
- 除
-A
和-M
外,其他选项不能组合使用。
配置参数
gpasswd
的行为受 /etc/login.defs
中的配置变量影响:
配置项 | 作用 |
---|---|
ENCRYPT_METHOD | 定义密码加密算法,默认为 DES ,支持 MD5 、SHA256 、SHA512 。 |
MAX_MEMBERS_PER_GROUP | 限制每行组成员数量(默认 0 ,无限制)。若超过限制,会创建新的组条目(相同名称、密码和 GID)。 |
MD5_CRYPT_ENAB | 已弃用,建议使用 ENCRYPT_METHOD 替代。 |
SHA_CRYPT_MIN_ROUNDS / SHA_CRYPT_MAX_ROUNDS | 当加密算法为 SHA256 或 SHA512 时,定义哈希迭代次数。数值越大,破解难度越高,但认证耗时增加。默认值为 5000 。 |
相关文件
-
/etc/group
- 存储组账户信息,格式为:
group_name:password:GID:user_list
- 示例:
developers:x:1001:alice,bob
- 存储组账户信息,格式为:
-
/etc/gshadow
- 存储组的密码信息和管理员信息,格式为:
group_name:encrypted_password:administrators_list:members_list
- 示例:
developers:$6$hash...:admin1,admin2:member1,member2
- 存储组的密码信息和管理员信息,格式为:
使用示例
1. 添加用户到组
sudo gpasswd -a john developers
- 将用户
john
添加到developers
组。
2. 从组中删除用户
sudo gpasswd -d john developers
- 将用户
john
从developers
组中删除。
3. 设置组密码
sudo gpasswd developers
- 系统会提示输入并确认组密码。设置后,非组成员需输入密码才能加入该组。
4. 移除组密码
sudo gpasswd -r developers
- 组密码被移除后,只有组成员可通过
newgrp
加入该组。
5. 限制组访问
sudo gpasswd -R developers
- 将组密码设为
"!"
,仅允许组成员(且已设置密码)使用newgrp
加入该组。
6. 设置组管理员
sudo gpasswd -A alice,bob developers
- 将
alice
和bob
设置为developers
组的管理员,可管理成员和密码。
7. 设置组成员列表
sudo gpasswd -M alice,bob,charlie developers
- 将
developers
组的成员替换为alice
、bob
和charlie
。
常见问题与解决方法
-
问题:
gpasswd
报错“Group does not exist”- 原因:指定的组不存在。
- 解决方法:使用
groupadd
创建组后再操作。
-
问题:权限不足无法执行
gpasswd
- 原因:未以
root
或sudo
身份运行。 - 解决方法:添加
sudo
或切换到root
用户。
- 原因:未以
-
问题:组密码设置后无法加入组
- 原因:未正确输入密码或组权限设置错误。
- 解决方法:检查
/etc/gshadow
中的密码哈希是否正确,或使用gpasswd -R
限制访问。
-
问题:NIS/LDAP 组无法管理
- 原因:
gpasswd
仅支持本地组。 - 解决方法:在 NIS/LDAP 服务器上修改组信息。
- 原因:
注意事项
-
组密码的安全性
- 组密码允许多人共享,存在安全隐患(如密码泄露)。建议仅在需要协作的场景中使用。
- 非组成员需输入密码才能加入组,而组成员无需密码即可使用
newgrp
切换到该组。
-
权限要求
- 执行
gpasswd
需要管理员权限(root
或sudo
)。 - 组管理员可执行部分操作(如修改密码、添加/删除成员)。
- 执行
-
NIS/LDAP 限制
gpasswd
仅操作本地文件/etc/group
和/etc/gshadow
,无法管理 NIS 或 LDAP 组。远程组需在对应服务器上修改。