LinuxのグループID(GID)とは?仕組みと役割を初心者向けに徹底解説!
生徒
「Linuxの設定を見ていると『GID』という言葉が出てきたのですが、これは何のことですか?」
先生
「GIDは『Group IDentifier』の略で、Linuxがユーザーのグループを識別するための背番号のようなものですよ。」
生徒
「背番号ですか?名前じゃなくて数字で管理されているということでしょうか?」
先生
「その通りです!コンピューターにとっては名前よりも数字の方が扱いやすいんです。今日はGIDの仕組みを詳しく見ていきましょう。」
1. GID(グループID)の基本概念
Linuxというオペレーティングシステム(OS)は、複数の人が同時に使うことを前提に作られています。そのため、誰がどのファイルを使えるのかを管理する「ユーザー管理」と、複数のユーザーをひとまとめにする「グループ管理」という仕組みがあります。
GID(Group IDentifier)は、このグループ一つひとつに割り振られた固有の識別番号です。人間は「developers(開発チーム)」や「sales(営業チーム)」といった名前でグループを認識しますが、Linuxシステム内部では「1001番」や「1002番」といった数字で判断しています。
学校で例えるなら、「1年A組」というクラス名がグループ名で、出席番号やクラスコードがGIDにあたります。先生が名簿を確認するとき、名前だけでなく番号で管理すると間違いが少ないのと同じ理屈です。
2. なぜ名前ではなく「ID」が必要なのか
パソコンを触ったことがない方には、「わざわざ数字にする必要はあるの?」と不思議に思うかもしれません。しかし、コンピューターの世界では数字による管理がとても重要です。
例えば、グループ名を後から変更したい場面を想像してください。もしシステムが名前だけで管理していたら、名前を変えるたびに関連するすべての設定を書き換えなければならず、非常に大変な作業になります。しかし、「1001番というID」に紐付いた名前として管理していれば、名前を変えてもIDさえ変わらなければ、システムは混乱せずに済みます。
また、数字はデータの処理速度が速く、メモリというパソコンの記憶領域を節約できるというメリットもあります。私たちが普段目にするのは「グループ名」ですが、その裏側では常に「GID」が中心となって動いているのです。
3. GIDの種類と割り当てルール
GIDの数字には、使い道によっていくつかの決まったルールがあります。これを「予約された番号」と呼びます。一般的なLinuxシステムでは以下のような分け方がされています。
| GIDの範囲 | 役割・種類 |
|---|---|
| 0 | root(特権ユーザー)用。システムで最も強い権限を持つ特別なIDです。 |
| 1 ~ 999 | システムグループ用。OSが内部的に使用するプログラムやサービスが利用します。 |
| 1000 ~ | 一般ユーザー用。私たちが作成する通常のグループに割り当てられます。 |
初心者の皆さんが新しくグループを作る際は、通常1000番以降の数字が自動的に割り振られます。「0番」は王様のような特別な番号なので、勝手に使うことはできないようになっています。
4. 自分のGIDを確認してみよう
実際に自分がどのグループに属していて、そのGIDが何番なのかを確認してみましょう。これにはidというコマンドを使います。黒い画面(ターミナル)を開いて、以下のコマンドを入力してみてください。
id
uid=1000(taro) gid=1000(taro) groups=1000(taro),27(sudo),46(plugdev)
表示された結果の中にgid=1000(taro)という部分がありますね。これが、あなたのメイングループ(プライマリグループ)のIDです。括弧の中にはグループ名が表示されています。
また、groups=...のあとには、あなたが所属しているすべてのグループが表示されます。Linuxでは、一人のユーザーが複数のグループ(部活動の兼部のようなイメージ)に所属することができるため、複数のGIDが表示されることが一般的です。
5. ファイルの所有権とGIDの関係
GIDの最も重要な役割は、ファイルのアクセス制限(パーミッション)です。Linux上のすべてのファイルやフォルダには、「どのユーザーのものか」という所有者の情報と、「どのグループのものか」という所有グループの情報がセットになっています。
例えば、あるファイルの所有グループが「1001番(developers)」に設定されているとします。すると、GIDが1001番のグループに所属している人だけがそのファイルを読んだり、編集したりできるように設定することが可能です。これにより、チーム内では共有したいけれど、他のチームの人には見せたくない、といった機密情報の保護が実現できます。
ファイルの詳細を確認するls -lコマンドを使うと、そのファイルの所有グループを名前で確認できますが、システム内部ではここでもGIDが照合されています。
6. /etc/groupファイルの中身を見てみる
Linuxシステムにあるグループの一覧と、それぞれのGIDがどのように紐付いているかは、/etc/groupというファイルに保存されています。中身を覗いてみると、仕組みがより明確になります。以下のコマンドで最初の方だけを表示してみましょう。
head -n 5 /etc/group
root:x:0:
daemon:x:1:
bin:x:2:
sys:x:3:
adm:x:4:syslog,taro
このファイルは「:(コロン)」で区切られており、左から「グループ名」「パスワード(通常はx)」「GID」「所属するユーザー名」という順番で並んでいます。例えば一番上の行を見ると、rootというグループのGIDが0であることがはっきりと分かりますね。
このように、テキストファイルとして設定が保存されているのがLinuxの特徴です。直接このファイルを編集することは稀ですが、ここにすべてのGIDの定義が記されているということを知っておくだけでも、理解がぐっと深まります。
7. 新しいグループを作成してGIDを指定する
通常、グループを作成するとGIDは自動で決まりますが、手動で番号を指定することもできます。ここでは管理者(root)の権限を使って、特定のGIDを持つグループを作ってみましょう。groupaddコマンドを使います。
groupadd -g 2000 myteam
grep "myteam" /etc/group
myteam:x:2000:
-g 2000というオプションを付けることで、GIDを2000番に指定して「myteam」というグループを作成しました。grepコマンドで確認すると、指定通り2000番で登録されていることが確認できます。
なぜ手動で指定する必要があるのかというと、複数のサーバーを運用する場合などに、サーバー間で「このグループは2000番」と番号を統一しておかないと、データの移行時に誰のファイルか分からなくなってしまうトラブルを防ぐためです。プロの現場では、このGIDの管理はとても慎重に行われます。
8. プライマリグループとサブグループの違い
先ほどのidコマンドの説明で少し触れましたが、GIDには大きく分けて2つの役割があります。ここを混同しないように整理しておきましょう。
- プライマリグループ(主グループ): ユーザーがログインした直後に所属しているメインのグループです。新しくファイルを作成したとき、そのファイルの所有グループは自動的にこのGIDになります。
- サブグループ(補助グループ): 複数のプロジェクトに参加する場合など、追加で所属するグループです。特定のフォルダにアクセスするためだけに一時的に加入するようなイメージです。
ユーザーがどのGIDをメインに持ち、どのGIDを補助として持っているかによって、できることが変わってきます。例えば、「人事部(プライマリ)」に所属しながら「社内イベント実行委員会(サブ)」にも所属するといった使い分けがされています。
9. GIDを変更する場合の注意点
もし既存のグループのGIDを変更したい場合は、groupmodコマンドを使用します。しかし、これは初心者の方には少し注意が必要です。
groupmod -g 3000 myteam
tail -n 1 /etc/group
myteam:x:3000:
コマンド自体は簡単ですが、GIDを変更すると、それまでに「GID 2000」の持ち物として作られたファイルの所有権が迷子になってしまいます。システムは名前ではなくGIDで判断しているため、IDが変わると「前の2000番って誰?」となってしまうのです。
そのため、GIDの変更を行った後は、古いIDがついているファイルの所有権を新しいIDに書き換える作業もセットで行う必要があります。Linuxの世界では、番号一つが非常に重い意味を持っていることがよく分かりますね。
10. GIDに関するまとめと次のステップ
これまで見てきたように、GID(グループID)はLinuxのユーザー管理において欠かせない「整理整頓のルール」です。単なる数字の羅列ではなく、セキュリティを守り、チームでの作業を円滑にするための大切な役割を担っています。
最初は難しく感じるかもしれませんが、「Linuxの中ではグループは数字で管理されている」「その数字でファイルの閲覧制限をかけている」という2点だけを覚えておけば、初心者としては合格点です。これからはls -lやidコマンドを使ったときに、表示される数字を少しだけ意識してみてください。
グループの仕組みが分かると、次は「権限(パーミッション)」についても理解しやすくなります。Linuxの操作に慣れてきたら、ぜひ自分の思い通りにアクセス制限をかけられるように練習してみましょう。