Red Hat Linuxはユーザープライベートグループ(UPG)体系を 使用してUNIXのグループを使いやすくしています。
UPGは新規のユーザーがシステムに追加される度に、生成されます。UPGはそれが生成される 元であるユーザーと同名を持っており、そのユーザーのみがUPGのメンバーです。
UPGの使用により、新規のファイルやディレクトリに対し安全にデフォルトの権限を設定する ことが可能なため、ユーザーとそのユーザーのグループは それらのファイルやディレクトリを自由に修正出来るようになります。
新規に作成されたファイルやディレクトリに対してどの権限を与えるかを決定する設定は umaskと呼ばれ、/etc/bashrcファイル内に 設定されています。伝統的にUNIXシステムでは、そのumaskは022に設定されています。 この設定では、ファイル又はディレクトリを作成したユーザー本人のみが変更できます。 この体系下では、他のユーザーとユーザーグループのメンバーでも そのユーザーのファイルは変更出来ません。しかしUPG体系の中では、各ユーザーが自己の プライベートグループを持つことから、このグループ保護は必要ではありません。
ほとんどのIT組織は、主要プロジェクトごとにグループを作成し、そのグループのファイルにアクセスする必要の ある人をグループに割り当てることを好みます。このような伝統的な体系では、誰かがファイルを作成した場合に、 作成者の属するプライマリグループがそのファイルの所有者になるため、ファイルの管理が困難でした。1人の人間が 複数のプロジェクトに従事する場合、正しいファイルを正しいグループと関連付けるのは難しくなります。 UPG体系では、グループはsetgidビットセットを持つディレクトリで作成されたファイルに自動的に割り当てられるため、 ディレクトリを共有するグループプロジェクトの管理が非常に簡単になります。
例としてあげると、あるグループが/usr/lib/emacs/site-lisp/ディレクトリ内の ファイルで作業をしている場合、幾らかの人々はディレクトリの修正をさせる信頼がありますが、全ての 人がそうではありません。そこで先ず、以下のようなコマンドを使用してemacs グループを作成します:
/usr/sbin/groupadd emacs |
そのディレクトリの内容をemacsグループと 関連づけるには次のように入力します:
chown -R root.emacs /usr/lib/emacs/site-lisp |
ここでgpasswdコマンドを使用してこのグループに 正式なユーザーを追加することが可能になります:
/usr/bin/gpasswd -a <username> emacs |
以下のコマンドで、このディレクトリ内に実際にファイルを作成する権限をユーザーに与えます。
chmod 775 /usr/lib/emacs/site-lisp |
ユーザーが新しいファイルを作成すると、そのファイルのグループとしてユーザーのデフォルトである プライベートグループが割り当てられます。次にsetgidビットを設定して、そのディレクトリに作成 された全てにディレクトリ自身(emacs)と同じグループ権限を 割り当てます。次のコマンドを使用します:
chmod 2775 /usr/lib/emacs/site-lisp |
この時点で各ユーザーのデフォルトumaskが002である為に、ユーザーが新しいファイルを書き込む度に 管理者がファイルの権限を変更することなく、emacsグループの 全てのメンバーは/usr/lib/emacs/site-lisp/ディレクトリ内でファイルを作成 及び編集することができます。