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 というグループを追加して、その存在を確認するには、 次のように使えばできます。

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

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

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

例 14-8. pw(8) によるグループメンバ一覧の設定

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

-M オプションの引数は、 カンマで区切られたグループに所属するユーザの一覧です。 前の節から、 パスワードファイルに各ユーザのグループが記載されていることがわかります。 前者 (ユーザ) は、システムが自動的にグループ一覧に追加します。 pw(8)groupshow コマンドを使った時は、 そのユーザはグループの一員として表示されませんが、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)

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

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

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

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