/etc/group 为支持某些系统范围任务(例如打印、网络管理或者电子邮件)的系统组定义默认系统组条目。
其中许多组在 /etc/passwd 文件中都有相应的条目。
由于大多数linux系统使用UPG方案,当添加新用户时,会自动在/etc/group中创建一个新条目。
组名与用户名相同。
groups命令
groups 命令显示用户所属的组。
下面的例子说明用户oracle属于两个组,oracle(主要组)和students(次要组):
# grep oracle /etc/passwd oracle:x:1000:1000:Oracle DBA:/home/oracle/bin/bash
# grep oracle /etc/group oracle:x:1000: students:x:1056:student1,student2,oracle
groups 命令(以 oracle 身份登录)验证这些组成员身份。
$ whoami oracle $ groups oracle students
/etc/group 文件条目解释
下图提供了默认 /etc/group 文件条目的示例。
/etc/group 文件中的每个条目都包含四个字段。
冒号分隔每个字段。
以下是条目的格式:
groupname:group-password:GID:username-list
/etc/group 文件中的每个条目包含四个字段: 每个字段的描述和要求如下:
字段 | 作用 |
---|---|
groupname | 包含分配给组的名称。 |
group-password (x) | 此字段中的 x 表示使用影子密码。 |
GID | 包含组的 GID 号。 |
username-list | 作为组成员的用户列表 |
每个组可以有多个用户。
用户也可以属于多个组。
存储在 /etc/passwd 中用户条目中的 GID 是用户的主要组。
集团账户管理
- 使用 groupadd 命令添加群组帐号:
# groupadd [options] group_name
示例:将用户 (tom) 添加到组 (students):
# gpasswd -a tom students
- 使用 groupmod 命令修改组帐号:
# groupmod [options] group_name
- 使用 gpasswd 命令管理组帐户:
# gpasswd [options] group_name
- 使用 groupdel 命令删除组帐户。
语法是:
# groupdel group_name
即使组中有成员,我们也可以删除组。
我们不能删除任何现有用户的主要组。
我们必须先删除用户,然后才能删除组。
- 使用 gpasswd 命令管理 /etc/group 和 /etc/gshadow。
每个组都可以有管理员、成员和密码。
语法是:
# gpasswd [options] group_name
newgrp 命令
newgrp 命令执行一个新的 shell 并更改用户的真实组标识。
以下示例说明了运行命令之前和之后的组 ID。
它还说明了一个新的 shell 被执行。
$ id uid=1000(oracle) gid=1000(oracle) groups=1000(oracle),1066(students)...
请注意,gid 等于 1000(oracle)。
$ ps PID TTY TIME CMD 20279 pts/0 00:00:00 bash 20411 pts/0 00:00:00 ps
$ newgrp students
$ id uid=1000(oracle) gid=1066(students) groups=1000(oracle),1066(students)...
请注意,gid 现在等于 1066(学生)。
另请注意,执行了一个新的 shell:
$ ps PID TTY TIME CMD 20279 pts/0 00:00:00 bash 20464 pts/0 00:00:00 bash 20486 pts/0 00:00:00 ps
注意:newgrp 命令无法识别组 ID 号,我们只能将真实的组名更改为我们所属的组。
运行不带参数的命令会将实际组标识设置为用户的主要组。