14.8. 组

组简单的讲就是一个用户列表. 组通过组名和GID (组 ID) 来识别。 在 FreeBSD (以及绝大多数其他 UNIX® 系统) 中, 内核用以决定一个进程是能够完成一项动作的两个因素是它所属的用户 ID 和组 ID。 与用户 ID 不同, 每个进程都有一个和它相关联的组的列表。 您可能听说过用户或进程的 组 ID; 大多数情况下, 这表示列表中的第一个组。

与组ID对应的组名在/etc/group中。 这是一个由冒号来界定的文本文件。 第一部分是组名, 第二部分是加密后的口令, 第三部分是组ID, 第四部分是以逗号相隔的成员列表。 它可以用手工方式进行编辑 (当然, 如果您能保证不出语法错误的话!)。 对于更完整的语法描述, 参见 group(5) 联机手册.

如果不想手工编辑 /etc/group, 也可以使用 pw(8) 添加和编辑组。 例如, 要添加一个叫 teamtwo 的组, 确定它存在:

例 14.7. 使用pw(8)添加一个组
# pw groupadd teamtwo # pw groupshow teamtwo teamtwo:*:1100:

上面的数字 1100 是组 teamtwo 的组 ID。 目前, teamtwo 还没有成员, 因此也就没有多大用处。 接下来, 把 jru 加入到 teamtwo 组。

例 14.8. 使用 pw(8) 设置组的成员列表
# pw groupmod teamtwo -M jru # pw groupshow teamtwo teamtwo:*:1100:jru

-M 所需的参数是一个用逗号分隔的组中将要成为成员的用户列表。 前面我们已经知道, 口令文件中, 每个用户已经指定了一个所属组。 之后用户被自动地添加到组列表里; 当我们使用 groupshow 命令时 pw(8) 用户列表不被显示出来。 但当通过 id(1) 或者类似工具查看时, 就会看到用户列表。 换言之, pw(8) 命令只能读取 /etc/group 文件; 它从不尝试从 /etc/passwd 文件读取更多信息。

例 14.9. 使用 pw(8) 为组添加新的成员
# pw groupmod teamtwo -m db # pw groupshow teamtwo teamtwo:*:1100:jru,db

-m 选项的参数是一个由逗号分隔的即将被添加进组的用户列表。 与先前那个例子的不同之处在于, 这个列表中的用户将被添加进组而非取代组中的现有用户。

例 14.10. 使用id(1)来决定组成员
% id jru uid=1001(jru) gid=1001(jru) groups=1001(jru), 1100(teamtwo)

正如您所看到的, jru 是组 jru 和组 teamtwo的成员.

有关pw(8)的更多信息, 请参看其它联机手册。 更多的关于 /etc/group 文件格式的信息, 请参考 group(5) 联机手册。

本文档和其它文档可从这里下载: ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

如果对于FreeBSD有问题,请先阅读 文档,如不能解决再联系 <questions@FreeBSD.org>.

关于本文档的问题请发信联系 <doc@FreeBSD.org>.