ユーザープライベートグループ

 Red Hat LinuxはユーザープライベートグループUPG)体系を使用してUNIXのグループを使いやすくしています。 UPG体系は、標準的なUNIXのグループ処理を変更したり何かを追加したりするものではありません。グループ処理に関する新しい取り決めを提供するだけです。 デフォルトでは、新しいユーザーを作成した場合、そのユーザーは必ず一意のグループに属します。 UPG体系は以下のように機能します。

ユーザープライベートグループ

各ユーザーはプライマリグループに属し、それぞれのユーザーのみがそのグループのメンバーとなります。

umask = 002

伝統的に、UNIXシステムではumaskは022なので、あるユーザーのファイルをそのユーザーのプライマリグループの他のメンバーや他のユーザーが修正することはできません。 UPG体系では、すべてのユーザーが独自のプライベートグループを持つので、この「グループ保護機能」は必要ありません。 umask 002によって、ユーザーが他のユーザーのプライベートファイルを修正することは禁止されます。 umaskの設定は/etc/profileで行われます。

ディレクトリのsetgidビット

ディレクトリにsetgidビットを設定(chmod g+s directoryによって)すると、そのディレクトリの中に作成されるファイルのグループとして、ディレクトリのグループが設定されることになります。

 ほとんどのIT組織は、主要プロジェクトごとにグループを作成し、そのグループのファイルにアクセスする必要のある人をグループに割り当てることを好みます。 このような伝統的な体系では、誰かがファイルを作成した場合に、作成者の属するプライマリグループがそのファイルの所有者になるため、ファイルの管理が困難でした。 1人の人間が複数のプロジェクトに従事する場合、正しいファイルを正しいグループと関連付けるのは難しくなります。 UPG体系では、グループはそのディレクトリで作成されたファイルに自動的に割り当てられるため、ディレクトリを共有するグループプロジェクトの管理が非常に簡単になります。

 develという大きなプロジェクトがあり、大勢の人がdevelディレクトリ内のdevelファイルを編集しているとします。 develという名前のグループを作成し、, develディレクトリを develグループにchgrpし、develプロジェクトに関係するすべてのユーザーをdevelグループに追加します。

 グループにユーザーを追加するには、Linuxconfオフィシャル Red Hat Linux カスタマイズガイドを参照)を使用します。 コマンドラインを使用する場合は、/usr/sbin/groupadd groupnameコマンドでグループを作成します。 /usr/bin/gpasswd -a loginname groupnameコマンドを実行すると、ユーザーのグループへのloginnameが追加されます。 (各コマンドのオプションについての詳細は、groupaddgpasswdのmanページを参照してください。) /etc/groupファイルには、システムに対するグループ情報が記載されています。

 develグループを作成してユーザーを追加し、develディレクトリに対するグループをdevelグループに変更し、develディレクトリにsetgidビットを設定すると、すべてのdevelユーザーはdevelファイルを編集したり、このディレクトリ内に新しいファイルを作成したりすることができるようになります。 作成されるファイルは常にdevelグループを保持するため、常に他のdevelプロジェクトのユーザーもそれらのファイルの編集を行うことができます。

 また、このようなプロジェクトがいくつかあり、複数のプロジェクトに従事するユーザーがいる場合、それらのユーザーがプロジェクト間を移動する際に、umaskまたはグループを変更する必要がなくなります。 各プロジェクトのメインディレクトリのsetgidビットが適切に設定されていれば、そのディレクトリで作成されるすべてのファイルに対して適切なグループが「選択」されます。

 各ユーザーのホームディレクトリは、そのユーザーと、ユーザーのプライベートグループによって所有されるので、ホームディレクトリにsetgidビットを設定しておくのが安全です。 ただし、デフォルトではファイルがユーザーのプライマリグループによって作成されるので、setgidビットは冗長になります。

ユーザープライベートグループの論理的根拠

 UPGはRed Hat Linuxにとって新しいものではありませんが、多くの人は依然として、なぜUPGが必要なのかといった疑問を持っています。 以下にUPG体系の論理的根拠を示します。

 これで、デフォルトのumask 002を作成してすべての人にプライベートグループを与えることによって、ユーザーが利用できるグループを簡単にセットアップすることができ、ユーザーがグループの共有ディレクトリにファイルの書き込みを行うたびに追加作業をする必要はなくなります。 単純にグループを作成し、ユーザーを追加し、グループのディレクトリについて上記のchownchmodを実行すればよいのです。