はじめる人のびぎねっと。

プライバシーポリシー

読み物

Linux基礎

グループとは?

LinuxはマルチユーザーOSであることは「ユーザー」の項目で解説しました。つまり、Linuxは多数のユーザーによって同時に使用されるわけです。

では、このユーザー達は全く別々でバラバラかというとそうではありません。「グループ」という概念でまとめて管理されています。「ユーザー」は「グループ」に「所属する」と考えます。

グループの役割

グループの役割とは一体なんなのでしょうか?最も大きな役割はファイル/ディレクトリのパーミッションとの対応です。

Linux操作のきほん 第10回 パーミッションの基本

ファイル/ディレクトリには所有ユーザーとは別に、それらを所有するグループに対して読み書き実行のパーミッションが設定されています。これにより、異なるユーザー同士でのファイル/ディレクトリの共有をコントロールすることができるのです。

グループの作成方法

例えば「users」というグループを作成するにはユーザーrootで以下のコマンドを実行してください。

# groupadd -g 1000 users

-gオプションで与えた数値は、グループIDという、Linuxが内部的に処理を行う際に使用する番号です。与えなかった場合には適当な数値が勝手に割り振られます。

エラーが表示されなければグループusersが作成されたはずです。グループの情報はファイル/etc/groupに書き込まれていますので、確認してみましょう。ここでは、ファイルの内容を後ろから表示してくれるtailコマンドを使ってみます。

表示された中に

users:x:1000:

という行はあったでしょうか?

メイングループ

各ユーザーは、最低1つ、どこかのグループに所属している必要があります。ユーザーが最初に所属するグループを「メイングループ」と呼びます。別の言い方をすると、ユーザーは所属するメイングループを必ず1つだけ持っています。

メイングループの指定は、例えばuseraddコマンドでユーザーを作成するときに、-gオプションでグループ名またはグループIDを与える事によって行うことができます。

例えば上で作成したグループusersに所属するユーザーbeginetを作成するには次のようなコマンドを実行します。

# useradd -g users beginet

作成されたユーザーの情報はファイル/etc/passwdに書き込まれていますので、確認してみましょう。ここではある特定の文字列をファイルの中から検索し、該当する文字列があった行を表示するコマンドgrepを利用してみます。

# grep beginet /etc/passwd

表示される結果は例えば次のようになります。

beginet:x:500:1000::/home/beginet:/bin/bash

様々な項目が:で区切られていますが、1000となっているのがこのユーザーのメイングループのグループIDです。その左の500はユーザーIDです。

サブグループ

ユーザーはメイングループを1つしか持つことができません。これではパーミッションの管理等に柔軟性を持たせることができないので、ユーザーは複数のグループに所属することができるようになっています。この、メイングループ以外にユーザーが所属しているグループを「サブグループ」と呼びます。サブグループへの所属は、ユーザー作成時に行うこともできます。useraddコマンドに-Gオプション(大文字の「G」であることに注意)でサブグループ名を与えることで行えます。

例えば、beginetを予めWeb管理グループであるグループwebadminに所属させておきたい場合には次のようなコマンドを実行します。

# useradd -g users -G webadmin beginet

もし既に作成してあるユーザーをサブグループに所属させたい場合には、ユーザーの状態を変更するコマンドusermodを使用します。既に存在するユーザーbeginetをグループwebadminに所属させたいのならば、次のようなコマンドを実行します。

# usermod -G webadmin beginet

ユーザーがどのメイングループに所属しているかを調べるには/etc/passwdを見ていましたが、サブグループは複数ある可能性があるため、/etc/passwdには入りきれません。サブグループの所属情報は/etc/groupに書き込まれています。例えば/etc/groupの中のwebadminに関する行を表示させてみましょう。

webadmin:x:1001:beginet

上に出てきたusersと比較して、最後の:の後にユーザー名らしきものが追加されています。これが、このグループに所属しているユーザーです。 ためしに、もう1つユーザーを所属させてみましょう。

# usermod -G webadmin shachou

すると、/etc/groupは次のように変化します。

webadmin:x:1001:beginet,shachou

このようにして、ユーザーを複数のグループに所属させることができます。

このページのTOPへ