14.8 グループ

グループとは、単にユーザを羅列したものです。 グループは、グループ名と gid (グループ ID) で識別されます。 FreeBSD (と他の Unix システムのほとんど) では、 あるプロセスが何かするのを許可するかどうかをカーネルが判断する際に利用する 2 つの因子は、ユーザ ID とそのユーザが所属するグループの一覧です。 ユーザ ID と異なり、プロセスはそのプロセスに関係付けられたグループの一覧を持ちます。 どこかで "グループ ID" に触れているのを聞くことがあるでしょうが、 ほとんどの場合は、これは単に一覧の最初のグループを指しています。

グループ名からグループ ID への写像は /etc/group にあります。 これは、コロンで区切られた 4 項目からなるテキストファイルです。 1 番目の項目はグループ名、 2 番目は暗号化されたパスワード、 3 番目がグループ ID、 4 番目がカンマで区切られたメンバの一覧です。 これは手で編集して問題ありません (もちろん、文法をまったく間違えない限りはですが)。 文法についての完全な説明は、group(5) をご覧ください。

/etc/group を手で編集したくなければ、 pw(8) コマンドを使ってグループの追加や編集をできます。 たとえば、teamtwo というグループを追加して、その存在を確認するには、 次のように使えばできます。

Example 14-7. pw(8) によるグループの追加

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

上記の 1100 という番号は、 teamtwo グループのグループ ID です。 この時点では、teamtwo にはメンバがおらず、あまり意味がありません。 jruteamtwo に参加させて、この状況を変えましょう。

Example 14-8. pw(8) によるグループへのユーザ追加

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

-M オプションの引数は、 カンマで区切られたグループに所属するユーザの一覧です。 前の節を読まれたなら、 パスワードファイルに各ユーザのグループが記載されていることをご存知でしょう。 パスワードファイルに記載されているグループは、 システムが自動的にグループ一覧に加えますので、pw(8) でグループのメンバ一覧を調べた時にはそのユーザは表示されません (し、表示されるべきではありません)。 あるユーザがどのグループに属しているかを調べたければ、 次のように id(1) プログラムが使えます。

Example 14-9. id(1) によるグループのメンバの確認

% id jru
uid=1001(jru) gid=1001(jru) groups=1001(jru), 1100(teamtwo)

見れば分かりますが、jrujru グループと teamtwo グループのメンバです。

pw(8) について詳しくはマニュアルページをご覧ください。 /etc/group のフォーマットの詳細については、 group(5) マニュアルページをご覧ください。

本文書、および他の文書は ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/ からダウンロードできます。

FreeBSD に関する質問がある場合には、ドキュメント を読んだ上で <questions@FreeBSD.org> まで (英語で) 連絡してください。
本文書に関する質問については、<doc@FreeBSD.org> まで電子メールを (英語で) 送ってください。