32.5. ユーザープライベートグループ
Red Hat Enterprise Linux では ユーザープライベートグループ (UPG)スキームが使用されているため、UNIX グループの管理が容易になります。
UPG は、新規ユーザーがシステムに追加されるたびに作成されます。UPG は、作成したユーザーと同じ名前で、そのユーザーが UPG の唯一のメンバーになります。
UPG を使用すると、新規に作成したファイルまたはディレクトリーに対して確実にデフォルトのパーミッションを設定できます。これにより、ユーザーと そのユーザーのグループ の両方がファイルまたはディレクトリーを修正できるようになります。
新規に作成するファイルまたはディレクトリーに適用される権限を決定する設定は umask と呼ばれ、
/etc/bashrc
ファイルで設定します。従来の UNIX システムでは、umask は 022 に設定されており、ファイルまたはディレクトリーを作成したユーザーしか変更できませんでした。このスキームでは、作成者の グループのメンバーなど、他の ユーザーは変更できません。ただし、UPG スキームでは、すべてのユーザーがそれぞれプライベートグループを持つため、この「グループ保護」は必須ではなくなりました。
32.5.1. グループディレクトリー
多くの IT 組織では、主要なプロジェクトに対してグループを作成し、そのプロジェクトのファイルにアクセスする必要がある場合に、そのユーザーをグループに割り当てます。この従来のスキームを使用すると、ファイルの管理は困難でした。ユーザーがファイルを作成すると、そのファイルが属するプライマリーグループに関連付けられます。1 人のユーザーが複数のプロジェクトで作業を行う場合は、正しいファイルを適切なグループに関連付けることは困難です。ただし、UPG スキームを使用すると、グループは setgid ビットセットを持つディレクトリーに作成されたファイルに自動的に割り当てられます。setgid ビットを使用すると、共通ディレクトリーを共有するグループプロジェクトを非常に簡単に管理できます。これは、ユーザーがディレクトリー内で作成するすべてのファイルは、そのディレクトリーを所有するグループによって所有されるためです。
たとえば、あるグループが
/usr/share/emacs/site-lisp/
ディレクトリーのファイルで作業する必要があるとします。ディレクトリーの修正を信頼できる人もありますが、誰もが信頼されているわけではありません。まず、以下のコマンドのように emacs
グループを作成します。
/usr/sbin/groupadd emacs
ディレクトリーの内容を
emacs
グループに関連付けるには、以下を入力します。
chown -R root.emacs /usr/share/emacs/site-lisp
gpasswd コマンドを使用して、適切なユーザーをグループに追加できるようになりました。
/usr/bin/gpasswd -a <username> emacs
ユーザーがディレクトリーにファイルを作成できるようにするには、次のコマンドを使用します。
chmod 775 /usr/share/emacs/site-lisp
ユーザーが新しいファイルを作成すると、そのユーザーのデフォルトプライベートグループのグループが割り当てられます。次に setgid ビットを設定します。このビットは、ディレクトリー自体と同じグループパーミッション(
emacs
)に作成されたものをすべて割り当てます。以下のコマンドを使用します。
chmod 2775 /usr/share/emacs/site-lisp
この時点で、各ユーザーのデフォルトの umask は 002 であるため、
emacs
グループのすべてのメンバーは、ユーザーが新しいファイルを書き込むたびにファイルを変更しなくても、/usr/share/emacs/site-lisp/
ディレクトリーにファイルを作成および編集できます。