グループとは、単にユーザを羅列したものです。 グループは、グループ名と GID (グループ ID) で識別されます。 FreeBSD (と他の UNIX® システムのほとんど) では、 あるプロセスが何かするのを許可するかどうかをカーネルが判断する際に利用する 2 つの因子は、ユーザ ID とそのユーザが所属するグループの一覧です。 ユーザ ID と異なり、プロセスはそのプロセスに関係付けられたグループの一覧を持ちます。 どこかで “グループ ID” に触れているのを聞くことがあるでしょうが、 ほとんどの場合は、これは単に一覧の最初のグループを指しています。
グループ名からグループ ID への写像は /etc/group にあります。 これは、コロンで区切られた 4 項目からなるテキストファイルです。 1 番目の項目はグループ名、 2 番目は暗号化されたパスワード、 3 番目がグループ ID、 4 番目がカンマで区切られたメンバの一覧です。 これは手で編集して問題ありません (もちろん、文法をまったく間違えない限りはですが)。 文法についての完全な説明は、group(5) をご覧ください。
/etc/group を手で編集したくなければ、 pw(8) コマンドを使ってグループの追加や編集をできます。 たとえば、teamtwo というグループを追加して、その存在を確認するには、 次のように使えばできます。
上記の 1100 という番号は、 teamtwo グループのグループ ID です。 この時点では、teamtwo にはメンバがおらず、あまり意味がありません。 jru を teamtwo に参加させて、この状況を変えましょう。
例 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)
見れば分かりますが、jru は jru グループと teamtwo グループのメンバです。
pw(8) について詳しくはマニュアルページをご覧ください。 /etc/group のフォーマットの詳細については、 group(5) マニュアルページをご覧ください。
本文書、および他の文書は ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/ からダウンロードできます。
FreeBSD に関する質問がある場合には、ドキュメント を読んだ上で <questions@FreeBSD.org> まで (英語で)
連絡してください。
本文書に関する質問については、<doc@FreeBSD.org> まで電子メールを (英語で)
送ってください。