ユーザー識別子 (UID) とグループ識別子 (GID)
Unix系システムでは、ユーザーと
グループを識別するために、それぞれユーザー識別子(UID)と
グループ識別子(GID)という数値が用いられます。これらの識別子は、システム内のファイルや
プロセスに対するアクセス権限を管理する上で非常に重要な役割を果たします。
ユーザー識別子 (UID)
ユーザー識別子(UID)は、システム内の各ユーザーを一意に識別するための番号です。UIDは、ユーザーが作成したファイルや
プロセスを識別し、それらに対するアクセス権限を決定するために使用されます。
- - UIDの値の範囲: システムによって異なりますが、一般的に0から32767以上の範囲を持ちます。
-
スーパーユーザー(root)のUIDは常に0です。
- "nobody"ユーザーには、伝統的に最大値である32767が割り当てられていましたが、最近ではシステム範囲内(1-100)や65530-65535の範囲が使われることが多くなっています。
- 1から100のUIDはシステム用途として予約されており、システムによっては499や999まで予約されている場合があります。
- - UIDの参照: ユーザーごとのUIDは `/etc/passwd` ファイルに記録され、シャドウパスワードファイルやNISでも参照されます。
- - UIDの重要性: UIDはファイルシステムやプロセスにおいて、所有者を示すために必須の情報です。
- - UIDのビット数: 16ビットのUIDを使用するシステムでは最大65535までの値が利用可能でしたが、最近の32ビットUIDをサポートするシステムでは、最大4,294,967,295 (2^32 - 1) までの値を使用できます。
- - idコマンド: `id` コマンドを使用すると、ユーザー名、UID、一次グループとそのGIDなど、アカウントに関する情報を表示できます。
UIDの種類
プロセスは複数のUIDを持ち、状況に応じて使い分けています。
- - 実効UID (effective UID, euid): ファイルの作成やアクセス権限の判断に使用されるUIDです。ファイル作成時には、作成したプロセスの実効UIDがファイルの所有者として設定されます。
- - 保存UID (saved UID, suid): プログラムが一時的に非特権的な操作を行う際に、元の特権的なUIDを保存するために使用されます。特権状態に戻る際に、保存UIDの値が実効UIDに戻されます。
- - ファイルシステムUID (file system UID, fsuid): Linuxカーネル特有のUIDで、ファイルシステムのアクセス制御に使われます。通常は実効UIDと同じですが、NFSサーバなどファイルシステムへのアクセス権を得たいが、実UIDや実効UIDを変更したくない場合に使用されます。
- - 実UID (real UID, ruid): プロセスの実際の所有者を示し、シグナル送信の権限に影響します。スーパーユーザー特権を持たないプロセスは、送信側と受信側の実UIDが一致する場合のみシグナルを送受信できます。
グループ識別子 (GID)
グループ識別子(GID)は、複数のユーザーを
グループとしてまとめ、ファイルやリソースへのアクセス権限を
グループ単位で管理するために用いられる番号です。これにより、ディスクやプリンターなどの
周辺機器へのアクセスを委任したり、
スーパーユーザーが管理タスクを一般ユーザーに委任したりすることができます。
- - GIDの値の範囲: システムによって異なりますが、一般的に0から32767以上の範囲を持ちます。
-
スーパーユーザーのログイン
グループは常にGID 0です。
- - GIDの参照: グループごとのGIDは `/etc/passwd` と `/etc/group` ファイルに記録され、シャドウパスワードファイルやNISでも参照されます。
- - GIDの重要性: GIDはファイルシステムやプロセスにおいて、所有グループを示すために必須の情報です。
- - GIDのビット数: 従来は16ビットの符号付き整数が使われていましたが、現在は符号なしの整数が使われるようになり、さらに32ビットの整数が使われるようになりました。これにより、GIDの範囲は0から4,294,967,295まで拡張されました。
GIDの種類
- - 一次GID (primary group ID): ユーザーが属するメイングループであり、`/etc/passwd` ファイルで定義されます。
- - 補助GID (supplementary group ID, 二次グループID): ユーザーが属する追加のグループであり、`/etc/group` ファイルで定義されます。補助GIDに属しているだけでは、グループのパーミッションによるアクセス権限は通常得られません。
- - 実効GID (effective GID): ファイルのアクセス権限を判断する際に使用されるGIDです。
- - 実GID (real GID): プロセスの実際のグループを示します。通常、実効GIDと同じ値ですが、setgidプロセスでは異なる値になります。
UIDとGIDのまとめ
UIDとGIDは、
Unix系システムにおけるセキュリティとリソース管理の基盤となる重要な概念です。これらの識別子を理解することで、ファイルや
プロセスに対するアクセス権限の制御、システムセキュリティの強化、効率的なリソース共有が可能になります。
参考情報