Unix系システムでは、複数のユーザーをグループにまとめることができます。POSIXおよび従来のUnixファイルシステムのパーミッションは、ユーザー、グループ、その他という3つのクラスに分類されます。グループを使用することで、ディスク、プリンタ、その他の周辺機器へのアクセスなど、追加の権限を体系的に委任できます。この方法により、スーパーユーザーは、Microsoft Windows NTとその派生版のAdministratorsグループと同様に、一部の管理タスクを一般ユーザーに委任することも可能です。
グループ識別子(略称GID)は、特定のグループを表すために使用される数値です。[ 1 ] GIDの値の範囲はシステムによって異なりますが、少なくともGIDは0から32,767までで、1つの制限があります。スーパーユーザーのログイングループはGID 0でなければなりません。この数値は、ファイルやファイル、/etc/passwdまたは/etc/groupそれらに相当するファイル内のグループを参照するために使用されます。シャドウパスワードファイルやネットワーク情報サービスも数値GIDを参照します。グループ識別子は、Unixファイルシステムとプロセスの必須コンポーネントです。
POSIX規格では、特権プロセスが動的に異なる役割を担えるように、プロセス記述子テーブルに3つの異なるGIDフィールドをサポートしています。
egidプロセスの実効GID( )はファイルアクセスチェックに使用され、使用されている特定のカーネル実装のセマンティクスや、場合によっては使用されているマウントオプションによっては、ファイルの作成にも影響を与える可能性があります。BSD Unixのセマンティクスによれば、新しく作成されたファイルに与えられるグループ所有権は、それが作成されたディレクトリのグループ所有権から無条件に継承されます。AT &T UNIX System Vのセマンティクス( Linuxの派生版でも採用されています)によれば、新しく作成されたファイルには通常、そのファイルを作成するプロセスのによって指定されたグループ所有権が与えられますegid。ほとんどのファイルシステムは、新しく作成されたファイルのグループ所有権に関してBSDセマンティクスとAT&Tセマンティクスのどちらを使用するかを選択する方法を実装しています。S_ISGID(s-gid)パーミッションが設定されている場合、特定のディレクトリに対してBSDセマンティクスが選択されます。[ 2 ]
実際のGID(rgid)は、プロセスの実際のグループ所有者を識別します。
保存されたグループ ID は、特権昇格で実行されているプログラムが一時的に特権のない作業を行う必要がある場合に使用されます。egid特権値 (通常は0) から特権のない値 (特権値以外の値) に変更すると、特権値が に保存されますsgid。その後、プログラムのegidを に保存された値に戻すことで、特権昇格を復元できます。特権のないプロセスは、 を の値、 の値、 の値のいずれか 3 つの値にsgid設定できます。egidrgidsgidegid
すべてのユーザーは、少なくとも 1 つのグループ (プライマリ グループ) のメンバーである必要があります。プライマリ グループとは、passwd データベース内のユーザーのエントリの数値 GID で識別されるグループです。この GID は、コマンドgetent passwd(通常は/etc/passwdまたはLDAPに保存されています) を使用して表示できます。このグループはプライマリ グループ IDと呼ばれます。ユーザーは、グループ データベース内の関連エントリに追加のグループのメンバーとしてリストされる場合があります。このエントリは、コマンドgetent group(通常は/etc/groupまたはLDAPに保存されています) を使用して表示できます。これらのグループの ID は補助グループ IDと呼ばれます。
当初は符号付き16ビット整数が使用されていました。符号は不要であったため(負の数は有効なグループIDにならないため)、現在は符号なし整数が使用され、0から65,535までのグループIDが使用可能になっています。最新のオペレーティングシステムでは通常、符号なし32ビット整数が使用され、0から4,294,967,295までのグループIDが使用可能です。
多くのLinuxシステムでは、静的に割り当てられるグループ用にGID番号の範囲0~99が予約されており、インストール後のスクリプトでシステムによって動的に割り当てられるグループ用に100~499または100~999が予約されています。これらの範囲は/etc/login.defs、やuseradd、groupaddなどのツールで指定されることがよくあります。
FreeBSDでは、パッケージにGIDが必要なポーターは、50から999の範囲から空いているGIDを選択し、この静的割り当てをports/GIDsに登録できます。[ 3 ]
(gid_t) -1、省略された引数を識別するために POSIX によって予約されています。[ 4 ]多くのシステム管理者は、各ユーザーに、ユーザーのログイン名と同じ名前で、多くの場合ユーザーの UID と同じ数値 GID を持つ個人プライマリグループも割り当てます。このような個人グループには他のメンバーはおらず、ユーザーが習慣的に操作できるようにすることで、共有ディレクトリで他のユーザーとのコラボレーションが容易になりますumask 0002。このようにして、新しく作成されたファイルには、グループメンバーに対してデフォルトで書き込み権限が有効になります。これは通常、個人グループのメンバー、つまりファイルの所有者のみに書き込みアクセスを許可するためです。ただし、別のグループに属し、setgidビットが設定されている共有ディレクトリにファイルが作成されると、作成されたファイルは自動的にそのディレクトリのグループのメンバーにも書き込み可能になります。
多くのLinuxシステムでは、USERGROUPS_ENAB変数によって、やなど/etc/login.defsのコマンドが関連付けられた個人グループを自動的に追加または削除するかどうかが制御されます。useradduserdel