From 5310c1774c454cb06f498bdfcac52ecfcb4fef3f Mon Sep 17 00:00:00 2001 From: yibajianghudao Date: Wed, 26 Nov 2025 17:43:01 +0800 Subject: [PATCH] update groupmod command --- command/groupmod.md | 74 ++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 67 insertions(+), 7 deletions(-) diff --git a/command/groupmod.md b/command/groupmod.md index 2c30da4397d..58df9d6b1ee 100644 --- a/command/groupmod.md +++ b/command/groupmod.md @@ -1,28 +1,88 @@ groupmod === -更改群组识别码或名称 +修改系统上的组定义 ## 补充说明 -**groupmod命令** 更改群组识别码或名称。需要更改群组的识别码或名称时,可用groupmod指令来完成这项工作。 +**groupmod命令** 通过修改组数据库( /etc/group 与 /etc/gshadow )的相应条目来更改指定组的定义,例如GID,组成员,组名称,组密码等。 ### 语法 ```shell -groupmod(选项)(参数) +groupmod (选项) (参数) ``` ### 选项 ```shell --g<群组识别码>:设置欲使用的群组识别码; --o:重复使用群组识别码; --n<新群组名称>:设置欲使用的群组名称。 +-a, --append: 与 -U 选项配合使用,将指定用户追加到现有成员列表,而不是采用默认的覆盖方式。 +-g, --gid GID: 将组修改为指定值,必须是非负整数且唯一(除非同时使用 -o 选项),以该组为主要组的成员会自动更新以保持该组。 +-n, --new-name 新组名称: 设置要修改为的组名称。 +-o: 可以设置重复的gid; +-p, --password 密码: 设置组密码(也可以直接修改 /etc/gshadow 文件),密码必须是 crypt 加密后的密文,用于配合 newgrp 命令让非组成员临时切换到该组,但该机制在现代系统中已不推荐使用。 +-U, --users user1,user2...: 以逗号分隔的用户列表,将组成员覆盖为该列表;若同时指定 -a 选项,则改为追加到现有成员列表中。 ``` ### 参数 -组名:指定要修改的工作的组名。 +组名:指定要修改的组。 +### 实例 +修改 group1 的GID + +```shell +groupmod -g 1003 group1 +``` + +修改 group2 的GID为重复的gid 1003 + +``` shell +groupmod -g 1003 -o group2 +``` + +修改 group2 名称为 group3 + +```shell +groupmod -n group3 group2 +``` + +覆盖 group3 的组成员为 user1 + +```shell +groupmod -U user1 group3 +``` + +追加 user2 user3 到 group3 + +```shell +groupmod -a -U user2,user3 group3 +``` + +### 说明 + +部分系统(如 Ubuntu 22.04)上的`groupmod`命令可能不支持 -a 和 -U 选项,可以使用`gpasswd`命令代替。 + +```shell +groupmod -U user1,user2 groupname +``` + +等价于 + +```shell +gpasswd -M "" groupname +gpasswd -M user1,user2 groupname +``` + +```shell +groupmod -a -U user1,user2,user3 groupname +``` + +等价于 + +```shell +gpasswd -a user1 groupname +gpasswd -a user2 groupname +gpasswd -a user3 groupname +```