Home -- Michael's Blog :: Just Do IT -- Manuals

13.9. 组

组简单的讲就是一个用户列表. 组通过组名和GID (Group ID)来识别. 在FreeBSD(和其它绝大多数 UNIX® 系统)中, 这两个因素通常被内核用来决定一个被允许执行的进程是否是他的用户ID, 一个进程有一个和它相关联的组的列表. 你可能听说过一些一个用户或进程的``组 ID''的事情; 大多数情况下, 这只意味着在列表中的第一个组.

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

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

例子 13-8. 使用pw(8)添加一个组

# pw groupadd teamtwo # pw groupshow teamtwo teamtwo:*:1100:

上面的数字1100是组teamtwo的组ID. 在这里,teamtwo 没有成员, 它也就没有多大用处. 让我们把jru用户加入到teamtwo组.

例子 13-9. 使用pw(8)在组中添加用户

# pw groupmod teamtwo -M jru # pw groupshow teamtwo teamtwo:*:1100:jru

使用-M参数是为了用逗号划分一个组成员中的用户列表. 在前面的部分, 我们知道口令文件也会为每个用户包含一个组. 后来用户被自动的添加到组列表里; 当我们使用groupshow 命令时pw(8)用户列表不被显示出来. 但是当我们通过queriedid(1) 或者类似工具查看时,用户列表会被显示. 换句话说, pw(8) 命令只能读取/etc/group 文件; 它从不尝试从/etc/passwd文件读取更多信息.

例子 13-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) 联机手册.

Michael's Blog :: Just Do IT -- manuals